<?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>237601</bug_id>
          
          <creation_ts>2022-03-08 05:59:36 -0800</creation_ts>
          <short_desc>[GTK][WPE] Web Inspector: make it possible to use the remote inspector from other browsers</short_desc>
          <delta_ts>2022-06-14 05:01:47 -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</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=172966</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=237708</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=237753</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=240792</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=241594</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>clopez</cc>
    
    <cc>fujii</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>loic.yhuel</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>olivier.blin</cc>
    
    <cc>pangle</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1849225</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-08 05:59:36 -0800</bug_when>
    <thetext>This is no longer possible since we switched to the new remote inspector. We don&apos;t want to bring the legacy remote inspector back, but it should be possible to use a mixed approach, using a WebSocket for the inspector protocol communication, but still using the new remote inspector code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849231</commentid>
    <comment_count>1</comment_count>
      <attachid>454114</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-08 06:30:30 -0800</bug_when>
    <thetext>Created attachment 454114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849281</commentid>
    <comment_count>2</comment_count>
      <attachid>454114</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-03-08 08:43:08 -0800</bug_when>
    <thetext>Comment on attachment 454114
Patch

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

Cool.

&gt; Source/WebKit/UIProcess/API/glib/WebKitInitialize.cpp:78
&gt; +        g_setenv(&quot;WEBKIT_INSPECTOR_SERVER&quot;, inspectorAddress.get(), TRUE);

Careful: this function is called inside std::call_once, which uses threads, so it&apos;s too late to modify the environment.

IMO you are insufficiently fearful of setenv. It&apos;s not just a theoretical problem: remember we have documented cases where this broke gnome-session (https://bugzilla.gnome.org/show_bug.cgi?id=754951) and also gnome-initial-setup (downstream fork).

&gt; Source/WebKit/UIProcess/Inspector/glib/RemoteInspectorHTTPServer.cpp:50
&gt; +        g_warning(&quot;Failed to start remote inspector HTTP server on %s:%u: invalid address\n&quot;, address, port);

Oops: should be no trailing \n here

Also: if address is an IPv6 address, then %s:%u will be an invalid URI: it should be [%s]:%u in that case. I suppose that&apos;s an edge case that&apos;s probably not worth handling manually, but there is a g_inet_address_to_string() you might be able to use to avoid it.

&gt; Source/WebKit/UIProcess/Inspector/glib/RemoteInspectorHTTPServer.cpp:56
&gt; +        g_warning(&quot;Failed to start remote inspector HTTP server on %s:%u: %s\n&quot;, address, port, error-&gt;message);

Ditto

&gt; Source/WebKit/UIProcess/Inspector/glib/RemoteInspectorHTTPServer.cpp:157
&gt; +    g_signal_handlers_disconnect_by_data(webSocketConnection.get(), this);

Good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849379</commentid>
    <comment_count>3</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-03-08 12:59:25 -0800</bug_when>
    <thetext>This reminds me the previous discussion (Bug 172966).
Does the current WebInspectorUI work nicely with non-WebKit browsers?
If not, do you have a plan to change WebInspectorUI for non-WebKit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849566</commentid>
    <comment_count>4</comment_count>
      <attachid>454114</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-09 00:37:06 -0800</bug_when>
    <thetext>Comment on attachment 454114
Patch

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

&gt;&gt; Source/WebKit/UIProcess/Inspector/glib/RemoteInspectorHTTPServer.cpp:50
&gt;&gt; +        g_warning(&quot;Failed to start remote inspector HTTP server on %s:%u: invalid address\n&quot;, address, port);
&gt; 
&gt; Oops: should be no trailing \n here
&gt; 
&gt; Also: if address is an IPv6 address, then %s:%u will be an invalid URI: it should be [%s]:%u in that case. I suppose that&apos;s an edge case that&apos;s probably not worth handling manually, but there is a g_inet_address_to_string() you might be able to use to avoid it.

This can&apos;t be IPv6 at the moment. We plan to add support for IPv6 soon, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849569</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-09 00:40:14 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #3)
&gt; This reminds me the previous discussion (Bug 172966).
&gt; Does the current WebInspectorUI work nicely with non-WebKit browsers?
&gt; If not, do you have a plan to change WebInspectorUI for non-WebKit?

No, it doesn&apos;t work with non-WebKit browsers. Note that being able to use Safari on MacOS to inspect WPE is already a huge improvement. We still plan to try to make it work at least in chrome, and at least the basic functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849586</commentid>
    <comment_count>6</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2022-03-09 02:07:52 -0800</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #5)
&gt; (In reply to Fujii Hironori from comment #3)
&gt; &gt; This reminds me the previous discussion (Bug 172966).
&gt; &gt; Does the current WebInspectorUI work nicely with non-WebKit browsers?
&gt; &gt; If not, do you have a plan to change WebInspectorUI for non-WebKit?
&gt; 
&gt; No, it doesn&apos;t work with non-WebKit browsers. Note that being able to use
&gt; Safari on MacOS to inspect WPE is already a huge improvement. We still plan
&gt; to try to make it work at least in chrome, and at least the basic
&gt; functionality.

Making things work in Chromium is not much work, I have made a small patch
that seems to get the job done (I didn&apos;t do a lot of testing, there may be
still other changes needed, YMMV):

  https://o.perezdecastro.org/inspector-chromium.diff

The issue is that the inspector uses CSSStyleDeclaration.getPropertyCSSValue(),
which according to MDN is deprecated and implemented only in WebKit; the patch
linked above switches over to use Element.computedStyleMap() which the other
web engines implement (it&apos;s part of CSS Typed OM level 2).

In the case of Firefox, I have a small patch that adds a polyfill for
Element.scrollIntoViewIfNeeded() by using the “options” parameter to
Element.scrollIntoView() to achieve the same effect (this is part of
CSS OM View module): 

  https://o.perezdecastro.org/inspector-firefox.diff

While the patch above gets the inspector loaded in Firefox and many
things more or less working okay, there are still features that do not
work (I haven&apos;t looked at them yet) and in some places a few obvious
graphical glitches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849591</commentid>
    <comment_count>7</comment_count>
      <attachid>454114</attachid>
    <who name="Loïc Yhuel">loic.yhuel</who>
    <bug_when>2022-03-09 02:29:35 -0800</bug_when>
    <thetext>Comment on attachment 454114
Patch

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

&gt; Source/WebKit/ChangeLog:13
&gt; +        started when the env var WEBKIT_INSPECTOR_HTTPS_SERVER is present, and the inspector server is started for the

WEBKIT_INSPECTOR_HTTP_SERVER (same below)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849617</commentid>
    <comment_count>8</comment_count>
      <attachid>454114</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-09 04:03:27 -0800</bug_when>
    <thetext>Comment on attachment 454114
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/glib/WebKitInitialize.cpp:78
&gt;&gt; +        g_setenv(&quot;WEBKIT_INSPECTOR_SERVER&quot;, inspectorAddress.get(), TRUE);
&gt; 
&gt; Careful: this function is called inside std::call_once, which uses threads, so it&apos;s too late to modify the environment.
&gt; 
&gt; IMO you are insufficiently fearful of setenv. It&apos;s not just a theoretical problem: remember we have documented cases where this broke gnome-session (https://bugzilla.gnome.org/show_bug.cgi?id=754951) and also gnome-initial-setup (downstream fork).

You are right, it shouldn&apos;t be a problem after https://bugs.webkit.org/show_bug.cgi?id=237646</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849668</commentid>
    <comment_count>9</comment_count>
      <attachid>454232</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-09 06:02:09 -0800</bug_when>
    <thetext>Created attachment 454232
Patch for landing

Patch addressing review comments. Please do not cq+ this until Patrick or Devin approve the WebInspectorUI changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849772</commentid>
    <comment_count>10</comment_count>
      <attachid>454232</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2022-03-09 10:46:21 -0800</bug_when>
    <thetext>Comment on attachment 454232
Patch for landing

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

&gt; Source/WebInspectorUI/UserInterface/Base/BrowserInspectorFrontendHost.js:1
&gt; +if (!window.InspectorFrontendHost) {

I&apos;d expect a copyright header in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849777</commentid>
    <comment_count>11</comment_count>
      <attachid>454232</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-03-09 11:10:13 -0800</bug_when>
    <thetext>Comment on attachment 454232
Patch for landing

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

WebInspectorUI changes look fine to me - but please make sure to add a license header as joepeck mentioned.

&gt; Source/WebInspectorUI/Scripts/copy-user-interface-resources.pl:188
&gt; +my $shouldIncludeInspectorFrontendHost = defined $ENV{&apos;INCLUDE_INSPECTOR_FRONTEND_HOST&apos;} &amp;&amp; ($ENV{&apos;INCLUDE_INSPECTOR_FRONTEND_HOST&apos;} eq &apos;YES&apos;);

Nit: Can we call this `$shouldIncludeBrowserInspectorFrontendHost` so its clearer what the setting actually does/relates to?

&gt; Source/WebInspectorUI/UserInterface/Base/BrowserInspectorFrontendHost.js:213
&gt; +            // FIXME: Create a Blob from the content, get an object URL, open it to trigger a download.

Should this throw an exception since call sites should be checking if `canSave` is true first anyways?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849985</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2022-03-10 00:58:11 -0800</bug_when>
    <thetext>Committed r291093 (248255@trunk): &lt;https://commits.webkit.org/248255@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849986</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-10 00:59:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/90085144&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454114</attachid>
            <date>2022-03-08 06:30:30 -0800</date>
            <delta_ts>2022-03-09 06:02:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-remote-inspector-mixed.diff</filename>
            <type>text/plain</type>
            <size>57607</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGJkYWI0YjdmYTMxMi4uMzA0Mjg3MTJmZTM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMy0wOCAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11b
V1BFXSBXZWIgSW5zcGVjdG9yOiBtYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSB0aGUgcmVtb3RlIGlu
c3BlY3RvciBmcm9tIG90aGVyIGJyb3dzZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc2MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHN0YXJ0IHRoZSBpbnNwZWN0
b3Igc2VydmVyIHdpdGggMCBwb3J0LCBtZWFuaW5nIGFueSBmcmVlIG9uZSB3aWxsIGJlIHVzZWQu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVy
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzdGFydCk6
IFBhc3MgdGhlIGVmZmVjdGl2ZSBhZGRyZXNzIHRvIGdfc29ja2V0X2xpc3RlbmVyX2FkZF9hZGRy
ZXNzIGFuZCBnZXQgdGhlIHBvcnQuCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGliL1Jl
bW90ZUluc3BlY3RvclNlcnZlci5oOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JTZXJ2ZXI6OnBvcnQgY29uc3QpOiBSZXR1cm4gdGhlIHBvcnQgdGhlIHNlcnZlciBpcyBsaXN0
ZW5pbmcgdG8uCisKIDIwMjItMDMtMDEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBhIHN3aXRjaCB0byBjb250cm9sIHdoZXRo
ZXIgYnJlYWtwb2ludCBldmFsdWF0aW9ucyAoY29uZGl0aW9uLCBpZ25vcmUgY291bnQsIGFjdGlv
bnMpIGFyZSBhbHNvIGFmZmVjdGVkIGJ5IHNjcmlwdCBibGFja2JveGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0
b3JTZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xp
Yi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IDMwMDE3NDYzNTdmOS4uZDgwM2U0YWRk
NjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9n
bGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCkBAIC0xODgs
MTIgKzE4OCwxNSBAQCBib29sIFJlbW90ZUluc3BlY3RvclNlcnZlcjo6c3RhcnQoY29uc3QgY2hh
ciogYWRkcmVzcywgdW5zaWduZWQgcG9ydCkKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fc2Vydmlj
ZS5nZXQoKSwgImluY29taW5nIiwgR19DQUxMQkFDSyhpbmNvbWluZ0Nvbm5lY3Rpb25DYWxsYmFj
ayksIHRoaXMpOwogCiAgICAgR1JlZlB0cjxHU29ja2V0QWRkcmVzcz4gc29ja2V0QWRkcmVzcyA9
IGFkb3B0R1JlZihnX2luZXRfc29ja2V0X2FkZHJlc3NfbmV3X2Zyb21fc3RyaW5nKGFkZHJlc3Ms
IHBvcnQpKTsKKyAgICBHUmVmUHRyPEdTb2NrZXRBZGRyZXNzPiBlZmZlY3RpdmVBZGRyZXNzOwog
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKLSAgICBpZiAoIWdfc29ja2V0X2xpc3Rl
bmVyX2FkZF9hZGRyZXNzKEdfU09DS0VUX0xJU1RFTkVSKG1fc2VydmljZS5nZXQoKSksIHNvY2tl
dEFkZHJlc3MuZ2V0KCksIEdfU09DS0VUX1RZUEVfU1RSRUFNLCBHX1NPQ0tFVF9QUk9UT0NPTF9U
Q1AsIG51bGxwdHIsIG51bGxwdHIsICZlcnJvci5vdXRQdHIoKSkpIHsKKyAgICBpZiAoIWdfc29j
a2V0X2xpc3RlbmVyX2FkZF9hZGRyZXNzKEdfU09DS0VUX0xJU1RFTkVSKG1fc2VydmljZS5nZXQo
KSksIHNvY2tldEFkZHJlc3MuZ2V0KCksIEdfU09DS0VUX1RZUEVfU1RSRUFNLCBHX1NPQ0tFVF9Q
Uk9UT0NPTF9UQ1AsIG51bGxwdHIsICZlZmZlY3RpdmVBZGRyZXNzLm91dFB0cigpLCAmZXJyb3Iu
b3V0UHRyKCkpKSB7CiAgICAgICAgIGdfd2FybmluZygiRmFpbGVkIHRvIHN0YXJ0IHJlbW90ZSBp
bnNwZWN0b3Igc2VydmVyIG9uICVzOiV1OiAlc1xuIiwgYWRkcmVzcywgcG9ydCwgZXJyb3ItPm1l
c3NhZ2UpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgbV9wb3J0ID0gZ19p
bmV0X3NvY2tldF9hZGRyZXNzX2dldF9wb3J0KEdfSU5FVF9TT0NLRVRfQUREUkVTUyhlZmZlY3Rp
dmVBZGRyZXNzLmdldCgpKSk7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0
b3JTZXJ2ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIv
UmVtb3RlSW5zcGVjdG9yU2VydmVyLmgKaW5kZXggYjNmNWJlODllNDExLi5mNGM5OTMxNTBmODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIv
UmVtb3RlSW5zcGVjdG9yU2VydmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaApAQCAtNDUsNiArNDUsNyBA
QCBwdWJsaWM6CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHN0YXJ0KGNvbnN0IGNoYXIq
IGFkZHJlc3MsIHVuc2lnbmVkIHBvcnQpOwogICAgIGJvb2wgaXNSdW5uaW5nKCkgY29uc3QgeyBy
ZXR1cm4gISFtX3NlcnZpY2U7IH0KKyAgICB1aW50MTZfdCBwb3J0KCkgY29uc3QgeyByZXR1cm4g
bV9wb3J0OyB9CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGdib29sZWFuIGluY29taW5nQ29ubmVj
dGlvbkNhbGxiYWNrKEdTb2NrZXRTZXJ2aWNlKiwgR1NvY2tldENvbm5lY3Rpb24qLCBHT2JqZWN0
KiwgUmVtb3RlSW5zcGVjdG9yU2VydmVyKik7CkBAIC02MSw2ICs2Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzdGFydEF1dG9tYXRpb25TZXNzaW9uKFNvY2tldENvbm5lY3Rpb24mLCBjb25zdCBj
aGFyKiBzZXNzaW9uSUQsIGNvbnN0IFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50OjpTZXNzaW9uQ2Fw
YWJpbGl0aWVzJik7CiAKICAgICBHUmVmUHRyPEdTb2NrZXRTZXJ2aWNlPiBtX3NlcnZpY2U7Cisg
ICAgdWludDE2X3QgbV9wb3J0IHsgMCB9OwogICAgIEhhc2hTZXQ8UmVmUHRyPFNvY2tldENvbm5l
Y3Rpb24+PiBtX2Nvbm5lY3Rpb25zOwogICAgIEhhc2hNYXA8U29ja2V0Q29ubmVjdGlvbiosIHVp
bnQ2NF90PiBtX3JlbW90ZUluc3BlY3RvckNvbm5lY3Rpb25Ub0lETWFwOwogICAgIEhhc2hNYXA8
dWludDY0X3QsIFNvY2tldENvbm5lY3Rpb24qPiBtX2lkVG9SZW1vdGVJbnNwZWN0b3JDb25uZWN0
aW9uTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NNYWtlTGlzdHMudHh0CmluZGV4IDE4ZjRjYWRmYWM5
NC4uNzQ1MWQ3YThkZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NNYWtlTGlzdHMudHh0CkBAIC03
MCwxMyArNzAsMTcgQEAgaWYgKE5PVCBERUZJTkVEIENPTUJJTkVfVEVTVF9SRVNPVVJDRVMpCiAg
ICAgZW5kaWYgKCkKIGVuZGlmICgpCiAKK2lmIChOT1QgREVGSU5FRCBJTkNMVURFX0lOU1BFQ1RP
Ul9GUk9OVEVORF9IT1NUKQorICAgIHNldChJTkNMVURFX0lOU1BFQ1RPUl9GUk9OVEVORF9IT1NU
IE5PKQorZW5kaWYgKCkKKwogYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0NNQUtF
X0JJTkFSWV9ESVJ9L2luc3BlY3Rvci1yZXNvdXJjZXMuc3RhbXAKICAgICBERVBFTkRTICR7SW5z
cGVjdG9yRmlsZXNEZXBlbmRlbmNpZXN9CiAgICAgICAgICAgICAke0luc3BlY3RvclJlc291cmNl
U2NyaXB0c30KICAgICAgICAgICAgICR7V2ViSW5zcGVjdG9yVUlfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0vVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMKICAg
ICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY29weSAke1dlYkluc3BlY3RvclVJX0RFUklW
RURfU09VUkNFU19ESVJ9L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZENv
bW1hbmRzLmpzICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L0luc3BlY3RvckJhY2tlbmRD
b21tYW5kcy5qcwotICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlbnYgIkRFUklWRURf
U09VUkNFU19ESVI9JHtXZWJJbnNwZWN0b3JVSV9ERVJJVkVEX1NPVVJDRVNfRElSfSIgIlNSQ1JP
T1Q9JHtXRUJJTlNQRUNUT1JVSV9ESVJ9IiAiSkFWQVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJT
X0RJUj0ke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfSIgIlRBUkdFVF9CVUlMRF9ESVI9JHtX
ZWJJbnNwZWN0b3JVSV9SRVNPVVJDRVNfRElSfSIgIlVOTE9DQUxJWkVEX1JFU09VUkNFU19GT0xE
RVJfUEFUSD1XZWJJbnNwZWN0b3JVSSIgIkNPTUJJTkVfSU5TUEVDVE9SX1JFU09VUkNFUz0ke0NP
TUJJTkVfSU5TUEVDVE9SX1JFU09VUkNFU30iICJDT01CSU5FX1RFU1RfUkVTT1VSQ0VTPSR7Q09N
QklORV9URVNUX1JFU09VUkNFU30iIFBZVEhPTj0ke1BZVEhPTl9FWEVDVVRBQkxFfSAke1BFUkxf
RVhFQ1VUQUJMRX0gJHtXRUJJTlNQRUNUT1JVSV9ESVJ9L1NjcmlwdHMvY29weS11c2VyLWludGVy
ZmFjZS1yZXNvdXJjZXMucGwKKyAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZW52ICJE
RVJJVkVEX1NPVVJDRVNfRElSPSR7V2ViSW5zcGVjdG9yVUlfREVSSVZFRF9TT1VSQ0VTX0RJUn0i
ICJTUkNST09UPSR7V0VCSU5TUEVDVE9SVUlfRElSfSIgIkpBVkFTQ1JJUFRDT1JFX1BSSVZBVEVf
SEVBREVSU19ESVI9JHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0iICJUQVJHRVRfQlVJTERf
RElSPSR7V2ViSW5zcGVjdG9yVUlfUkVTT1VSQ0VTX0RJUn0iICJVTkxPQ0FMSVpFRF9SRVNPVVJD
RVNfRk9MREVSX1BBVEg9V2ViSW5zcGVjdG9yVUkiICJDT01CSU5FX0lOU1BFQ1RPUl9SRVNPVVJD
RVM9JHtDT01CSU5FX0lOU1BFQ1RPUl9SRVNPVVJDRVN9IiAiQ09NQklORV9URVNUX1JFU09VUkNF
Uz0ke0NPTUJJTkVfVEVTVF9SRVNPVVJDRVN9IiAiSU5DTFVERV9JTlNQRUNUT1JfRlJPTlRFTkRf
SE9TVD0ke0lOQ0xVREVfSU5TUEVDVE9SX0ZST05URU5EX0hPU1R9IiBQWVRIT049JHtQWVRIT05f
RVhFQ1VUQUJMRX0gJHtQRVJMX0VYRUNVVEFCTEV9ICR7V0VCSU5TUEVDVE9SVUlfRElSfS9TY3Jp
cHRzL2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnBsCiAgICAgQ09NTUFORCAke0NNQUtF
X0NPTU1BTkR9IC1FIG1ha2VfZGlyZWN0b3J5ICR7V2ViSW5zcGVjdG9yVUlfTE9DQUxJWkVEX1NU
UklOR1NfRElSfQogICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBjb3B5ICIke1dFQklO
U1BFQ1RPUlVJX0RJUn0vTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpz
IiAke1dlYkluc3BlY3RvclVJX0xPQ0FMSVpFRF9TVFJJTkdTX0RJUn0vbG9jYWxpemVkU3RyaW5n
cy5qcwogICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSB0b3VjaCAke0NNQUtFX0JJTkFS
WV9ESVJ9L2luc3BlY3Rvci1yZXNvdXJjZXMuc3RhbXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmlu
ZGV4IGQ5OGVhMzQwZTBkYi4uZjg2YzNmYTNhN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw3NyBAQAorMjAyMi0wMy0wOCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFw
ZXJlekBpZ2FsaWEuY29tPiBhbmQgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS11bV1BFXSBXZWIgSW5zcGVjdG9yOiBtYWtlIGl0IHBvc3Np
YmxlIHRvIHVzZSB0aGUgcmVtb3RlIGluc3BlY3RvciBmcm9tIG90aGVyIGJyb3dzZXJzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc2MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQmFzZS9Ccm93
c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LmpzIHRvIGJlIHVzZWQgd2hlbiBpbnNwZWN0b3IgaXMg
cnVuIGFuZCBJbnNwZWN0b3JGcm9udGVuZEhvc3QgaXMgbm90CisgICAgICAgIGRlZmluZWQgaW4g
d2luZG93LiBUaGlzIG5ldyBmaWxlIGlzIG9ubHkgaW5jbHVkZWQgaW4gdGhlIGluc3BlY3RvciBz
b3VyY2VzIGZvciBHVEsgYW5kIFdQRSBwb3J0cy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIFBsYXRmb3JtV1BFOiBBZGRlZAorICAgICAgICAqIFBsYXRmb3JtR1RLOgor
ICAgICAgICAqIFNjcmlwdHMvY29tYmluZS1yZXNvdXJjZXMucGw6IEFkZCAtLWlucHV0LXNjcmlw
dC1uYW1lIHRvIGJlIGFibGUgdG8gc2tpcCBpbmRpdmlkdWFsIHNjcmlwdHMgdG9vLgorICAgICAg
ICAqIFNjcmlwdHMvY29weS11c2VyLWludGVyZmFjZS1yZXNvdXJjZXMucGw6IElmIGluc3BlY3Rv
ciBmcm9udGVuZCBob3N0IHNob3VsZCBub3QgYmUgaW5jbHVkZWQsIHJlbW92ZSB0aGUgc2NyaXB0
CisgICAgICAgIGZyb20gZ2VuZXJhdGVkIGZpbGVzLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
QmFzZS9Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LmpzOiBBZGRlZC4KKyAgICAgICAgKHdp
bmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9z
dCk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNw
ZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLmdldCBzdXBwb3J0c1Nob3dDZXJ0aWZpY2F0ZSk6
CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0
b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLmdldCBpc1JlbW90ZSk6CisgICAgICAgICh3aW5kb3cu
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJv
dG90eXBlLmdldCBpbnNwZWN0aW9uTGV2ZWwpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZy
b250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5nZXQg
ZGVidWdnYWJsZUluZm8pOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5X
SS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5nZXQgcG9ydCk6CisgICAg
ICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9u
dGVuZEhvc3QucHJvdG90eXBlLmdldCBwbGF0Zm9ybSk6CisgICAgICAgICh3aW5kb3cuSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBl
LmdldCBwbGF0Zm9ybVZlcnNpb25OYW1lKToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuZ2V0IHN1
cHBvcnRzRGlhZ25vc3RpY0xvZ2dpbmcpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250
ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5nZXQgc3Vw
cG9ydHNXZWJFeHRlbnNpb25zKToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhv
c3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuY29ubmVjdCk6Cisg
ICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JG
cm9udGVuZEhvc3QucHJvdG90eXBlLmxvYWRlZCk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLmNs
b3NlV2luZG93KToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJv
d3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUucmVvcGVuKToKKyAgICAgICAgKHdp
bmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9z
dC5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9z
dC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5icmluZ1RvRnJvbnQp
OgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVj
dG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5pbnNwZWN0ZWRVUkxDaGFuZ2VkKToKKyAgICAgICAg
KHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5k
SG9zdC5wcm90b3R5cGUuc2hvd0NlcnRpZmljYXRlKToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0
b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUu
c2V0Wm9vbUZhY3Rvcik6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJ
LkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLnpvb21GYWN0b3IpOgorICAg
ICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJv
bnRlbmRIb3N0LnByb3RvdHlwZS5zZXRGb3JjZWRBcHBlYXJhbmNlKToKKyAgICAgICAgKHdpbmRv
dy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5w
cm90b3R5cGUudXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbik6CisgICAgICAgICh3aW5kb3cu
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJv
dG90eXBlLnN1cHBvcnRzRG9ja1NpZGUpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250
ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5yZXF1ZXN0
RG9ja1NpZGUpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93
c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5zZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dCk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNw
ZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLnNldEF0dGFjaGVkV2luZG93V2lkdGgpOgorICAg
ICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJv
bnRlbmRIb3N0LnByb3RvdHlwZS5zZXRTaGVldFJlY3QpOgorICAgICAgICAod2luZG93Lkluc3Bl
Y3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlw
ZS5zdGFydFdpbmRvd0RyYWcpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9z
dC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5tb3ZlV2luZG93Qnkp
OgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVj
dG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5jb3B5VGV4dCk6CisgICAgICAgICh3aW5kb3cuSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90
eXBlLmtpbGxUZXh0KToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0ku
QnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUub3BlblVSTEV4dGVybmFsbHkp
OgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVj
dG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5jYW5TYXZlKToKKyAgICAgICAgKHdpbmRvdy5JbnNw
ZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5
cGUuc2F2ZSk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dz
ZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLmFwcGVuZCk6CisgICAgICAgICh3aW5k
b3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3Qu
cHJvdG90eXBlLmNsb3NlKToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
V0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuc2hvd0NvbnRleHRNZW51
KToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3Bl
Y3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuZGlzcGF0Y2hFdmVudEFzQ29udGV4dE1lbnVFdmVu
dCk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNw
ZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLnNlbmRNZXNzYWdlVG9CYWNrZW5kKToKKyAgICAg
ICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250
ZW5kSG9zdC5wcm90b3R5cGUudW5idWZmZXJlZExvZyk6CisgICAgICAgICh3aW5kb3cuSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBl
LmlzVW5kZXJUZXN0KToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0ku
QnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuaXNFeHBlcmltZW50YWxCdWls
ZCk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNw
ZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLmJlZXApOgorICAgICAgICAod2luZG93Lkluc3Bl
Y3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlw
ZS5pbnNwZWN0SW5zcGVjdG9yKToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhv
c3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuaXNCZWluZ0luc3Bl
Y3RlZCk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJ
bnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLnNldEFsbG93c0luc3BlY3RpbmdJbnNwZWN0
b3IpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5z
cGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5sb2dEaWFnbm9zdGljRXZlbnQpOgorICAgICAg
ICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRl
bmRIb3N0LnByb3RvdHlwZS5kaWRTaG93RXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKHdpbmRvdy5J
bnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90
b3R5cGUuZGlkSGlkZUV4dGVuc2lvblRhYik6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLmRpZE5h
dmlnYXRlRXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhv
c3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuaW5zcGVjdGVkUGFn
ZURpZE5hdmlnYXRlKToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0ku
QnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuZXZhbHVhdGVTY3JpcHRJbkV4
dGVuc2lvblRhYik6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJy
b3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLl9zZW5kUGVuZGluZ01lc3NhZ2Vz
VG9CYWNrZW5kSWZOZWVkZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpz
OgorICAgICAgICAoV0kubG9hZGVkKTogQ29ubmVjdCB0aGUgaW5zcGVjdG9yIGhvc3QgaWYgbmVl
ZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOiBBZGQgQmFzZS9Ccm93c2Vy
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmpzLgorCiAyMDIyLTAzLTAxICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgYSBzd2l0Y2gg
dG8gY29udHJvbCB3aGV0aGVyIGJyZWFrcG9pbnQgZXZhbHVhdGlvbnMgKGNvbmRpdGlvbiwgaWdu
b3JlIGNvdW50LCBhY3Rpb25zKSBhcmUgYWxzbyBhZmZlY3RlZCBieSBzY3JpcHQgYmxhY2tib3hp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9QbGF0Zm9ybUdUSy5jbWFrZSBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBiNjZlZDQ0Yjky
OWMuLjdlYjI0MTE0ZTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1BsYXRm
b3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9QbGF0Zm9ybUdUSy5jbWFr
ZQpAQCAtMSwzICsxLDQgQEAKIHNldChXZWJJbnNwZWN0b3JVSV9SRVNPVVJDRVNfRElSICIke1dl
YktpdDJHdGtfREVSSVZFRF9TT1VSQ0VTX0RJUn0vSW5zcGVjdG9yUmVzb3VyY2VzIikKIHNldChX
ZWJJbnNwZWN0b3JVSV9MT0NBTElaRURfU1RSSU5HU19ESVIgIiR7V2ViSW5zcGVjdG9yVUlfUkVT
T1VSQ0VTX0RJUn0vV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvaiIpCiAKK3Nl
dChJTkNMVURFX0lOU1BFQ1RPUl9GUk9OVEVORF9IT1NUIFlFUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9QbGF0Zm9ybVdQRS5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLmIzMTdlOTBmNjY3NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMCwwICsxIEBACitzZXQoSU5DTFVERV9JTlNQRUNUT1Jf
RlJPTlRFTkRfSE9TVCBZRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvU2Ny
aXB0cy9jb21iaW5lLXJlc291cmNlcy5wbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9TY3JpcHRz
L2NvbWJpbmUtcmVzb3VyY2VzLnBsCmluZGV4IDE4MTEzMGZlOTdkMC4uNzNkZmQwMTc0M2QzIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvU2NyaXB0cy9jb21iaW5lLXJlc291cmNl
cy5wbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvU2NyaXB0cy9jb21iaW5lLXJlc291cmNl
cy5wbApAQCAtMzAsNiArMzAsNyBAQCB1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2UgRmlsZTo6UGF0
aDsKIAogb3VyICRpbnB1dERpcmVjdG9yeTsKK291ciAkaW5wdXRTY3JpcHROYW1lOwogb3VyICRv
dXRwdXREaXJlY3Rvcnk7CiBvdXIgJG91dHB1dFNjcmlwdE5hbWU7CiBvdXIgJG91dHB1dFN0eWxl
c2hlZXROYW1lOwpAQCAtNDcsNiArNDgsNyBAQCBHZXRPcHRpb25zKCdvdXRwdXQtZGlyPXMnID0+
IFwkb3V0cHV0RGlyZWN0b3J5LAogICAgICAgICAgICAnaW5wdXQtZGlyPXMnID0+IFwkaW5wdXRE
aXJlY3RvcnksCiAgICAgICAgICAgICdpbnB1dC1odG1sLWRpcj1zJyA9PiBcJGh0bWxEaXJlY3Rv
cnksCiAgICAgICAgICAgICdpbnB1dC1odG1sPXMnID0+IFwkaHRtbEZpbGUsCisgICAgICAgICAg
ICdpbnB1dC1zY3JpcHQtbmFtZT1zJyA9PiBcJGlucHV0U2NyaXB0TmFtZSwKICAgICAgICAgICAg
J3ZlcmJvc2UnID0+IFwkdmVyYm9zZSwKICAgICAgICAgICAgJ3N0cmlwJyA9PiBcJHN0cmlwLAog
ICAgICAgICAgICAnc2tpcC1jb25jYXRlbmF0ZS10YWcnID0+IFwkc2tpcENvbmNhdGVuYXRlVGFn
KTsKQEAgLTEyMSw3ICsxMjMsMTMgQEAgc3ViIHN0cmlwSW5jbHVkZWRGaWxlc01hdGNoaW5nUGF0
dGVybigkKQogfQogCiBteSAkaW5wdXREaXJlY3RvcnlQYXR0ZXJuID0gIig/IVdlYktpdEFkZGl0
aW9uc1wvKSg/IUV4dGVybmFsXC8pKD8hV29ya2Vyc1wvKSg/IU5vbk1pbmlmaWVkXC8pW15cIl0q
IjsKLSRpbnB1dERpcmVjdG9yeVBhdHRlcm4gPSAkaW5wdXREaXJlY3RvcnkgLiAiXC9bXlwiXSoi
IGlmICRpbnB1dERpcmVjdG9yeTsKK2lmICgkaW5wdXREaXJlY3RvcnkpIHsKKyAgICBpZiAoJGlu
cHV0U2NyaXB0TmFtZSkgeworICAgICAgICAkaW5wdXREaXJlY3RvcnlQYXR0ZXJuID0gJGlucHV0
RGlyZWN0b3J5IC4gIlwvIiAuICRpbnB1dFNjcmlwdE5hbWU7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgJGlucHV0RGlyZWN0b3J5UGF0dGVybiA9ICRpbnB1dERpcmVjdG9yeSAuICJcL1teXCJdKiI7
CisgICAgfQorfQogCiBpZiAoZGVmaW5lZCgkc3RyaXApKSB7CiAgICAgc3RyaXBJbmNsdWRlZEZp
bGVzTWF0Y2hpbmdQYXR0ZXJuKCI8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj1cIigkaW5w
dXREaXJlY3RvcnlQYXR0ZXJuKVwiPiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1NjcmlwdHMvY29weS11c2VyLWludGVyZmFjZS1yZXNvdXJjZXMucGwgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvU2NyaXB0cy9jb3B5LXVzZXItaW50ZXJmYWNlLXJlc291cmNlcy5wbAppbmRl
eCA2NTA4MDNiMDA0ZjMuLmExNDdkYTkzMjljYyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1NjcmlwdHMvY29weS11c2VyLWludGVyZmFjZS1yZXNvdXJjZXMucGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1NjcmlwdHMvY29weS11c2VyLWludGVyZmFjZS1yZXNvdXJjZXMu
cGwKQEAgLTE4NSw2ICsxODUsNyBAQCBjb3B5KEZpbGU6OlNwZWMtPmNhdGZpbGUoJEVOVnsnSkFW
QVNDUklQVENPUkVfUFJJVkFURV9IRUFERVJTX0RJUid9LCAnSW5zcGVjdG9yQgogbXkgJGZvcmNl
VG9vbEluc3RhbGwgPSBkZWZpbmVkICRFTlZ7J0ZPUkNFX1RPT0xfSU5TVEFMTCd9ICYmICgkRU5W
eydGT1JDRV9UT09MX0lOU1RBTEwnfSBlcSAnWUVTJyk7CiBteSAkc2hvdWxkQ29tYmluZU1haW4g
PSBkZWZpbmVkICRFTlZ7J0NPTUJJTkVfSU5TUEVDVE9SX1JFU09VUkNFUyd9ICYmICgkRU5WeydD
T01CSU5FX0lOU1BFQ1RPUl9SRVNPVVJDRVMnfSBlcSAnWUVTJyk7CiBteSAkc2hvdWxkQ29tYmlu
ZVRlc3QgPSBkZWZpbmVkICRFTlZ7J0NPTUJJTkVfVEVTVF9SRVNPVVJDRVMnfSAmJiAoJEVOVnsn
Q09NQklORV9URVNUX1JFU09VUkNFUyd9IGVxICdZRVMnKTsKK215ICRzaG91bGRJbmNsdWRlSW5z
cGVjdG9yRnJvbnRlbmRIb3N0ID0gZGVmaW5lZCAkRU5WeydJTkNMVURFX0lOU1BFQ1RPUl9GUk9O
VEVORF9IT1NUJ30gJiYgKCRFTlZ7J0lOQ0xVREVfSU5TUEVDVE9SX0ZST05URU5EX0hPU1QnfSBl
cSAnWUVTJyk7CiBteSAkY29tYmluZVJlc291cmNlc0NtZCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUo
JHNjcmlwdHNSb290LCAnY29tYmluZS1yZXNvdXJjZXMucGwnKTsKIAogaWYgKCRmb3JjZVRvb2xJ
bnN0YWxsKSB7CkBAIC0yMDEsNiArMjAyLDEwIEBAIGlmICghJHNob3VsZENvbWJpbmVNYWluKSB7
CiAgICAgIyBLZWVwIHRoZSBmaWxlcyBzZXBhcmF0ZSBmb3IgZW5naW5lZXJpbmcgYnVpbGRzLiBD
b3B5IHRoZXNlIGJlZm9yZSBhbHRlcmluZyBNYWluLmh0bWwKICAgICAjIGluIG90aGVyIHdheXMs
IHN1Y2ggYXMgY29tYmluaW5nIGZvciBXZWJLaXRBZGRpdGlvbnMgb3IgaW5saW5pbmcgZmlsZXMu
CiAgICAgZGl0dG8oJHVpUm9vdCwgJHRhcmdldFJlc291cmNlUGF0aCk7CisKKyAgICBpZiAoISRz
aG91bGRJbmNsdWRlSW5zcGVjdG9yRnJvbnRlbmRIb3N0KSB7CisgICAgICAgIHVubGluayBGaWxl
OjpTcGVjLT5jYXRmaWxlKCR0YXJnZXRSZXNvdXJjZVBhdGgsICdCYXNlJywgJ0Jyb3dzZXJJbnNw
ZWN0b3JGcm9udGVuZEhvc3QuanMnKTsKKyAgICB9CiB9CiAKICMgQWx3YXlzIHJlZmVyIHRvIHRo
ZSBjb3B5IGluIGRlcml2ZWQgc291cmNlcyBzbyB0aGUgb3JkZXIgb2YgcmVwbGFjZW1lbnRzIGRv
ZXMgbm90IG1hdHRlci4KQEAgLTIwOCw2ICsyMTMsMTcgQEAgbWFrZV9wYXRoKCRkZXJpdmVkU291
cmNlc0Rpcik7CiBteSAkZGVyaXZlZFNvdXJjZXNNYWluSFRNTCA9IEZpbGU6OlNwZWMtPmNhdGZp
bGUoJGRlcml2ZWRTb3VyY2VzRGlyLCAnTWFpbi5odG1sJyk7CiBjb3B5KEZpbGU6OlNwZWMtPmNh
dGZpbGUoJHVpUm9vdCwgJ01haW4uaHRtbCcpLCBGaWxlOjpTcGVjLT5jYXRmaWxlKCRkZXJpdmVk
U291cmNlc0RpciwgJ01haW4uaHRtbCcpKSBvciBkaWUgIkNvcHkgZmFpbGVkOiAkISI7CiAKK2lm
ICghJHNob3VsZEluY2x1ZGVJbnNwZWN0b3JGcm9udGVuZEhvc3QpIHsKKyAgICBzeXN0ZW0oJHBl
cmwsICRjb21iaW5lUmVzb3VyY2VzQ21kLAorICAgICAgICAnLS1pbnB1dC1kaXInLCAnQmFzZScs
CisgICAgICAgICctLWlucHV0LWh0bWwnLCAkZGVyaXZlZFNvdXJjZXNNYWluSFRNTCwKKyAgICAg
ICAgJy0taW5wdXQtaHRtbC1kaXInLCAkdWlSb290LAorICAgICAgICAnLS1pbnB1dC1zY3JpcHQt
bmFtZScsICdCcm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LmpzJywKKyAgICAgICAgJy0tZGVy
aXZlZC1zb3VyY2VzLWRpcicsICRkZXJpdmVkU291cmNlc0RpciwKKyAgICAgICAgJy0tb3V0cHV0
LWRpcicsICRkZXJpdmVkU291cmNlc0RpciwKKyAgICAgICAgJy0tc3RyaXAnKTsKK30KKwogc3Vi
IHdlYkluc3BlY3RvclVJQWRkaXRpb25zRGlyKCkgewogICAgIG15ICR3ZWJraXRBZGRpdGlvbnNE
aXI7CiAgICAgaWYgKGRlZmluZWQgJEVOVnsnQlVJTFRfUFJPRFVDVFNfRElSJ30pIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvQnJvd3Nlcklu
c3BlY3RvckZyb250ZW5kSG9zdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Jhc2UvQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZkYzMyNTYxOGY3NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvQnJvd3Nlckluc3BlY3Rv
ckZyb250ZW5kSG9zdC5qcwpAQCAtMCwwICsxLDMyNiBAQAoraWYgKCF3aW5kb3cuSW5zcGVjdG9y
RnJvbnRlbmRIb3N0KSB7CisgICAgV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdCA9IGNs
YXNzIEJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QgeworCisgICAgICAgIGNvbnN0cnVjdG9y
KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fcGVuZGluZ01lc3NhZ2VzID0gbnVsbDsK
KyAgICAgICAgICAgIHRoaXMuX3NvY2tldCA9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICAv
LyBQdWJsaWMKKworICAgICAgICBnZXQgc3VwcG9ydHNTaG93Q2VydGlmaWNhdGUoKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBnZXQg
aXNSZW1vdGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorCisgICAgICAgIGdldCBpbnNwZWN0aW9uTGV2ZWwoKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgICAgIGdldCBkZWJ1Z2dhYmxlSW5mbygpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAgICAgZGVidWdnYWJs
ZVR5cGU6ICJ3ZWItcGFnZSIsCisgICAgICAgICAgICAgICAgdGFyZ2V0UGxhdGZvcm1OYW1lOiB1
bmRlZmluZWQsCisgICAgICAgICAgICAgICAgdGFyZ2V0QnVpbGRWZXJzaW9uOiB1bmRlZmluZWQs
CisgICAgICAgICAgICAgICAgdGFyZ2V0UHJvZHVjdFZlcnNpb246IHVuZGVmaW5lZCwKKyAgICAg
ICAgICAgICAgICB0YXJnZXRJc1NpbXVsYXRvcjogZmFsc2UsCisgICAgICAgICAgICB9OworICAg
ICAgICB9CisKKyAgICAgICAgZ2V0IHBvcnQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gInVua25vd24iOworICAgICAgICB9CisKKyAgICAgICAgZ2V0IHBsYXRmb3JtKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBuYXZpZ2F0b3IucGxhdGZvcm0ubWF0Y2go
L21hY3x3aW58bGludXgvaSk7CisgICAgICAgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgICAg
ICAgICBjb25zdCBwbGF0Zm9ybSA9IG1hdGNoWzBdLnRvTG93ZXJDYXNlKCk7CisgICAgICAgICAg
ICAgICAgaWYgKHBsYXRmb3JtID09ICJ3aW4iKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
IndpbmRvd3MiOworICAgICAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiAidW5rbm93biI7CisgICAgICAgIH0KKworICAgICAgICBn
ZXQgcGxhdGZvcm1WZXJzaW9uTmFtZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAi
IjsKKyAgICAgICAgfQorCisgICAgICAgIGdldCBzdXBwb3J0c0RpYWdub3N0aWNMb2dnaW5nKCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAg
ICAgZ2V0IHN1cHBvcnRzV2ViRXh0ZW5zaW9ucygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbm5lY3QoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHBhcnNlUXVlcnlTdHJpbmcod2luZG93Lmxv
Y2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSkpOworICAgICAgICAgICAgbGV0IHVybCA9ICJ3cyIg
aW4gcXVlcnlQYXJhbXMgPyAid3M6Ly8iICsgcXVlcnlQYXJhbXMud3MgOiBudWxsOworICAgICAg
ICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBj
b25zdCBzb2NrZXQgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgICAgICAgICBzb2NrZXQuYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIG1lc3NhZ2UgPT4gSW5zcGVjdG9yQmFja2VuZC5kaXNw
YXRjaChtZXNzYWdlLmRhdGEpKTsKKyAgICAgICAgICAgIHNvY2tldC5hZGRFdmVudExpc3RlbmVy
KCJlcnJvciIsIGNvbnNvbGUuZXJyb3IpOworICAgICAgICAgICAgc29ja2V0LmFkZEV2ZW50TGlz
dGVuZXIoIm9wZW4iLCAoKSA9PiB7IHRoaXMuX3NvY2tldCA9IHNvY2tldDsgfSk7CisgICAgICAg
ICAgICBzb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcigiY2xvc2UiLCAoKSA9PiB7CisgICAgICAgICAg
ICAgICAgdGhpcy5fc29ja2V0ID0gbnVsbDsKKyAgICAgICAgICAgICAgICB3aW5kb3cuY2xvc2Uo
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgbG9hZGVkKCkKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICAgICAgY2xvc2VXaW5kb3coKQorICAgICAgICB7CisgICAg
ICAgICAgICB0aGlzLl93aW5kb3dWaXNpYmxlID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAg
ICByZW9wZW4oKQorICAgICAgICB7CisgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2Fk
KCk7CisgICAgICAgIH0KKworICAgICAgICByZXNldCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHRoaXMucmVvcGVuKCk7CisgICAgICAgIH0KKworICAgICAgICBicmluZ1RvRnJvbnQoKQorICAg
ICAgICB7CisgICAgICAgICAgICB0aGlzLl93aW5kb3dWaXNpYmxlID0gdHJ1ZTsKKyAgICAgICAg
fQorCisgICAgICAgIGluc3BlY3RlZFVSTENoYW5nZWQodGl0bGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRvY3VtZW50LnRpdGxlID0gdGl0bGU7CisgICAgICAgIH0KKworICAgICAgICBzaG93
Q2VydGlmaWNhdGUoY2VydGlmaWNhdGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRocm93ICJ1
bmltcGxlbWVudGVkIjsKKyAgICAgICAgfQorCisgICAgICAgIHNldFpvb21GYWN0b3Ioem9vbSkK
KyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgem9vbUZhY3RvcigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisKKyAgICAgICAgc2V0Rm9yY2VkQXBw
ZWFyYW5jZShhcHBlYXJhbmNlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB1c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
ICJsdHIiOworICAgICAgICB9CisKKyAgICAgICAgc3VwcG9ydHNEb2NrU2lkZShzaWRlKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBy
ZXF1ZXN0RG9ja1NpZGUoc2lkZSkKKyAgICAgICAgeworICAgICAgICAgICAgdGhyb3cgInVuaW1w
bGVtZW50ZWQiOworICAgICAgICB9CisKKyAgICAgICAgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQo
aGVpZ2h0KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBzZXRBdHRhY2hlZFdpbmRv
d1dpZHRoKHdpZHRoKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBzZXRTaGVldFJl
Y3QoeCwgeSwgd2lkdGgsIGhlaWdodCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAg
c3RhcnRXaW5kb3dEcmFnKCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgbW92ZVdp
bmRvd0J5KHgsIHkpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGNvcHlUZXh0KHRl
eHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMua2lsbFRleHQodGV4dCwgZmFsc2UsIHRy
dWUpOworICAgICAgICB9CisKKyAgICAgICAga2lsbFRleHQodGV4dCwgc2hvdWxkUHJlcGVuZFRv
S2lsbFJpbmcsIHNob3VsZFN0YXJ0TmV3U2VxdWVuY2UpCisgICAgICAgIHsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiByZXN0b3JlIGZvY3VzIHRvIHByZXZpb3VzbHkgZm9jdXNlZCBlbGVtZW50Lgor
ICAgICAgICAgICAgbGV0IHRleHRhcmVhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFy
ZWEiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGV4dGFyZWEpOwor
CisgICAgICAgICAgICBpZiAoc2hvdWxkU3RhcnROZXdTZXF1ZW5jZSkgeworICAgICAgICAgICAg
ICAgIHRleHRhcmVhLnRleHRDb250ZW50ID0gdGV4dDsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgdGV4dGFyZWEuc2VsZWN0KCk7CisgICAgICAgICAgICAgICAgaWYgKCFk
b2N1bWVudC5leGVjQ29tbWFuZCgicGFzdGUiKSkKKyAgICAgICAgICAgICAgICAgICAgY29uc29s
ZS5lcnJvcigiQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5raWxsVGV4dDogY291bGQgbm90
IHBhc3RlIGZyb20gY2xpcGJvYXJkIik7CisKKyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkUHJl
cGVuZFRvS2lsbFJpbmcpCisgICAgICAgICAgICAgICAgICAgIHRleHRhcmVhLnRleHRDb250ZW50
ID0gdGV4dCArIHRleHRhcmVhLnRleHRDb250ZW50OworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgdGV4dGFyZWEudGV4dENvbnRlbnQgPSB0ZXh0YXJlYS50ZXh0Q29u
dGVudCArIHRleHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRleHRhcmVhLnNlbGVj
dCgpOworCisgICAgICAgICAgICBpZiAoIWRvY3VtZW50LmV4ZWNDb21tYW5kKCJjb3B5IikpCisg
ICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9z
dC5jb3B5VGV4dDogY291bGQgbm90IGNvcHkgdG8gY2xpcGJvYXJkIik7CisKKyAgICAgICAgICAg
IGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dGFyZWEpOworICAgICAgICB9CisKKyAgICAg
ICAgb3BlblVSTEV4dGVybmFsbHkodXJsKQorICAgICAgICB7CisgICAgICAgICAgICB3aW5kb3cu
b3Blbih1cmwsICJfYmxhbmsiKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhblNhdmUoKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBz
YXZlKHVybCwgY29udGVudCwgYmFzZTY0ZW5jb2RlZCwgZm9yY2VTYXZlQXMpCisgICAgICAgIHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiBDcmVhdGUgYSBCbG9iIGZyb20gdGhlIGNvbnRlbnQsIGdl
dCBhbiBvYmplY3QgVVJMLCBvcGVuIGl0IHRvIHRyaWdnZXIgYSBkb3dubG9hZC4KKyAgICAgICAg
fQorCisgICAgICAgIGFwcGVuZCh1cmwsIGNvbnRlbnQpCisgICAgICAgIHsKKyAgICAgICAgfQor
CisgICAgICAgIGNsb3NlKHVybCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgc2hv
d0NvbnRleHRNZW51KGV2ZW50LCBpdGVtcykKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5f
Y29udGV4dE1lbnUgPSBXSS5Tb2Z0Q29udGV4dE1lbnUoaXRlbXMpOworICAgICAgICAgICAgdGhp
cy5fY29udGV4dE1lbnUuc2hvdyhldmVudCk7CisgICAgICAgIH0KKworICAgICAgICBkaXNwYXRj
aEV2ZW50QXNDb250ZXh0TWVudUV2ZW50KGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAodGhpcy5fY29udGV4dE1lbnUpCisgICAgICAgICAgICAgICAgdGhpcy5fY29udGV4dE1lbnUu
c2hvdyhldmVudCk7CisgICAgICAgIH0KKworICAgICAgICBzZW5kTWVzc2FnZVRvQmFja2VuZCht
ZXNzYWdlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX3NvY2tldCkgeworICAg
ICAgICAgICAgICAgIGlmICghdGhpcy5fcGVuZGluZ01lc3NhZ2VzKQorICAgICAgICAgICAgICAg
ICAgICB0aGlzLl9wZW5kaW5nTWVzc2FnZXMgPSBbXTsKKyAgICAgICAgICAgICAgICB0aGlzLl9w
ZW5kaW5nTWVzc2FnZXMucHVzaChtZXNzYWdlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgdGhpcy5fc2VuZFBlbmRpbmdNZXNzYWdlc1RvQmFja2VuZElmTmVlZGVkKCk7
CisgICAgICAgICAgICAgICAgdGhpcy5fc29ja2V0LnNlbmQobWVzc2FnZSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICB1bmJ1ZmZlcmVkTG9nKG1lc3NhZ2UpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpOworICAgICAgICB9CisKKyAgICAg
ICAgaXNVbmRlclRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKworICAgICAgICBpc0V4cGVyaW1lbnRhbEJ1aWxkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgYmVlcCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdXNpbmcgQXVkaW8vQXVkaW9D
b250ZXh0LgorICAgICAgICB9CisKKyAgICAgICAgaW5zcGVjdEluc3BlY3RvcigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHRocm93ICJ1bmltcGxlbWVudGVkIjsKKyAgICAgICAgfQorCisgICAg
ICAgIGlzQmVpbmdJbnNwZWN0ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKworICAgICAgICBzZXRBbGxvd3NJbnNwZWN0aW5nSW5zcGVjdG9yKGFs
bG93KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBsb2dEaWFnbm9zdGljRXZlbnQo
ZXZlbnROYW1lLCBjb250ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB0aHJvdyAidW5pbXBs
ZW1lbnRlZCI7CisgICAgICAgIH0KKworICAgICAgICBkaWRTaG93RXh0ZW5zaW9uVGFiKGV4dGVu
c2lvbklELCBleHRlbnNpb25UYWJJRCwgZXh0ZW5zaW9uRnJhbWUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHRocm93ICJ1bmltcGxlbWVudGVkIjsKKyAgICAgICAgfQorCisgICAgICAgIGRpZEhp
ZGVFeHRlbnNpb25UYWIoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklEKQorICAgICAgICB7Cisg
ICAgICAgICAgICB0aHJvdyAidW5pbXBsZW1lbnRlZCI7CisgICAgICAgIH0KKworICAgICAgICBk
aWROYXZpZ2F0ZUV4dGVuc2lvblRhYihleHRlbnNpb25JRCwgZXh0ZW5zaW9uVGFiSUQsIG5ld1VS
TCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhyb3cgInVuaW1wbGVtZW50ZWQiOworICAgICAg
ICB9CisKKyAgICAgICAgaW5zcGVjdGVkUGFnZURpZE5hdmlnYXRlKG5ld1VSTCkKKyAgICAgICAg
eworICAgICAgICAgICAgdGhyb3cgInVuaW1wbGVtZW50ZWQiOworICAgICAgICB9CisKKyAgICAg
ICAgZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihleHRlbnNpb25GcmFtZSwgc2NyaXB0U291
cmNlKQorICAgICAgICB7CisgICAgICAgICAgICB0aHJvdyAidW5pbXBsZW1lbnRlZCI7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBQcml2YXRlCisKKyAgICAgICAgX3NlbmRQZW5kaW5nTWVzc2Fn
ZXNUb0JhY2tlbmRJZk5lZWRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9w
ZW5kaW5nTWVzc2FnZXMpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nTWVzc2FnZXMu
Zm9yRWFjaChtZXNzYWdlID0+IHRoaXMuX3NvY2tldC5zZW5kKG1lc3NhZ2UpKTsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9wZW5kaW5nTWVzc2FnZXMgPSBudWxsOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfTsKKworICAgIEluc3BlY3RvckZyb250ZW5kSG9zdCA9IG5ldyBXSS5Ccm93
c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0KCk7CisKKyAgICBXSS5kb250TG9jYWxpemVVc2VySW50
ZXJmYWNlID0gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0Jhc2UvTWFpbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0Jhc2UvTWFpbi5qcwppbmRleCA4OWQ4NTJjOTYwMDguLmIyNTUyNGFkOGRkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAt
NTAsNiArNTAsOSBAQCBXSS5MYXlvdXREaXJlY3Rpb24gPSB7CiAKIFdJLmxvYWRlZCA9IGZ1bmN0
aW9uKCkKIHsKKyAgICBpZiAoSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNvbm5lY3QpCisgICAgICAg
IEluc3BlY3RvckZyb250ZW5kSG9zdC5jb25uZWN0KCk7CisKICAgICAvLyBSZWdpc3RlciBvYnNl
cnZlcnMgZm9yIGV2ZW50cyBmcm9tIHRoZSBJbnNwZWN0b3JCYWNrZW5kLgogICAgIGlmIChJbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQW5pbWF0aW9uRGlzcGF0Y2hlcikKICAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC5yZWdpc3RlckFuaW1hdGlvbkRpc3BhdGNoZXIoV0kuQW5pbWF0aW9uT2JzZXJ2
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFp
bi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmlu
ZGV4IDZkZTU4MGVhOTZmNC4uNjlkYWY2MzViMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0zMDcsNiArMzA3LDcgQEAKICAgICA8c2Ny
aXB0IHNyYz0iRXh0ZXJuYWwvdGhyZWUuanMvT3JiaXRDb250cm9scy5qcyI+PC9zY3JpcHQ+CiAK
ICAgICA8c2NyaXB0IHNyYz0iQmFzZS9XZWJJbnNwZWN0b3IuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJCYXNlL0Jyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL1BsYXRmb3JtLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQmFzZS9EZWJvdW5jZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJC
YXNlL0RlYnVnZ2FibGVUeXBlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2ZjYTZjNGZlNjdm
Li5kNTgwMTJiYzE5ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjItMDMtMDggIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtd
W1dQRV0gV2ViIEluc3BlY3RvcjogbWFrZSBpdCBwb3NzaWJsZSB0byB1c2UgdGhlIHJlbW90ZSBp
bnNwZWN0b3IgZnJvbSBvdGhlciBicm93c2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBubyBsb25nZXIgcG9zc2libGUgc2luY2Ugd2Ug
c3dpdGNoZWQgdG8gdGhlIG5ldyByZW1vdGUgaW5zcGVjdG9yLiBXZSBkb24ndCB3YW50IHRvIGJy
aW5nIHRoZSBsZWdhY3kKKyAgICAgICAgcmVtb3RlIGluc3BlY3RvciBiYWNrLCBidXQgaXQgc2hv
dWxkIGJlIHBvc3NpYmxlIHRvIHVzZSBhIG1peGVkIGFwcHJvYWNoLCB1c2luZyBhIFdlYlNvY2tl
dCBmb3IgdGhlIGluc3BlY3RvcgorICAgICAgICBwcm90b2NvbCBjb21tdW5pY2F0aW9uLCBidXQg
c3RpbGwgdXNpbmcgdGhlIG5ldyByZW1vdGUgaW5zcGVjdG9yIGNvZGUuIFRoaXMgcGF0Y2ggYWRk
cyBhIHNpbXBsZSBIVFRQIGJyb3dzZXIgdG8KKyAgICAgICAgc2VydmVyIHRoZSBpbnNwZWN0b3Ig
cmVzb3VyY2VzIGFuZCBvcGVuIFdlYlNvY2tldCBjb25uZWN0aW9uIHRvIHRoZSBpbnNwZWN0b3Iu
IEl0IHByZXRlbmRzIHRvIGJlIGEgcmVtb3RlCisgICAgICAgIGluc3BlY3RvciBjbGllbnQsIHNv
IHdlIGRvbid0IG5lZWQgYW55IGNoYW5nZSBpbiB0aGUgY3VycmVudCByZW1vdGUgaW5zcGVjdG9y
IGltcGxlbWVudGF0aW9uLiBUaGUgc2VydmVyIGlzIG9ubHkKKyAgICAgICAgc3RhcnRlZCB3aGVu
IHRoZSBlbnYgdmFyIFdFQktJVF9JTlNQRUNUT1JfSFRUUFNfU0VSVkVSIGlzIHByZXNlbnQsIGFu
ZCB0aGUgaW5zcGVjdG9yIHNlcnZlciBpcyBzdGFydGVkIGZvciB0aGUKKyAgICAgICAgc2FtZSBo
b3N0IGJ1dCB1c2luZyBhIGZyZWUgcG9ydC4KKworICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtl
OgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0Ogor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbml0aWFsaXplLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6aW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcik6IFN0YXJ0IHRoZSBI
VFRQIHNlcnZlciBpZiB0aGUgZW52IHZhciBXRUJLSVRfSU5TUEVDVE9SX0hUVFBTX1NFUlZFUiBp
cyBwcmVzZW50LgorICAgICAgICAoV2ViS2l0Ojp3ZWJraXRJbml0aWFsaXplKTogSnVzdCBjYWxs
IGluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIoKS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3Qp
OiBVc2UgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpidWlsZFRhcmdldExpc3RQYWdlKCkuCisgICAg
ICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCk6IE9ubHkg
Y2FsbCBSZW1vdGVJbnNwZWN0b3JQcm94eTo6bG9hZCgpIGZvciBVSSBpbnNwZWN0b3IgdHlwZS4K
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpidWlsZFRhcmdldExpc3RQ
YWdlIGNvbnN0KTogQnVpbGQgdGhlIHRhcmdldCBsaXN0IHBhZ2UsIHVzaW5nIG1lc3NhZ2UgaGFu
ZGxlcnMKKyAgICAgICAgZm9yIFVJIGluc3BlY3RvciBhbmQgd2luZG93Lm9wZW4gZm9yIHRoZSBI
VFRQIGluc3BlY3Rvci4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3Rl
SW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvckNsaWVu
dDo6dGFyZ2V0cyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rv
ci9nbGliL1JlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlcjo6c2luZ2xldG9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlci5oOiBBZGRl
ZC4KKwogMjAyMi0wMy0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEFkZCBTUEkgX1dLRGF0YVRhc2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtl
CmluZGV4IDUyOTY0NDY1NWUwMS4uOTAzYTFlMGM3YTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XUEUuY21h
a2UKQEAgLTI5Nyw2ICsyOTcsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvZ2xpYiIKICAgICAiJHtXRUJL
SVRfRElSfS9VSVByb2Nlc3MvQVBJL3dwZSIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcyIKKyAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvSW5zcGVj
dG9yL2dsaWIiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL2dlb2NsdWUiCiAgICAgIiR7
V0VCS0lUX0RJUn0vVUlQcm9jZXNzL2dzdHJlYW1lciIKICAgICAiJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvbGludXgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAppbmRleCA3ZTc0MDhlNWFmYzAuLmMwYmEyZDQw
MTIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CkBAIC0yMjYsNiArMjI2LDcgQEAgVUlQcm9jZXNzL0dh
bWVwYWQvbWFuZXR0ZS9VSUdhbWVwYWRQcm92aWRlck1hbmV0dGUuY3BwCiBVSVByb2Nlc3MvZ2Vv
Y2x1ZS9HZW9jbHVlR2VvbG9jYXRpb25Qcm92aWRlci5jcHAKIAogVUlQcm9jZXNzL0luc3BlY3Rv
ci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKK1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xp
Yi9SZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVyLmNwcAogCiBVSVByb2Nlc3MvSW5zcGVjdG9yL2d0
ay9SZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcAogVUlQcm9jZXNzL0luc3BlY3Rvci9n
dGsvV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CmluZGV4IDk3ZmVk
ZDQ0MDljZS4uMjA3ZTUyMDk0ZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNX
UEUudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKQEAgLTIwNyw2ICsyMDcs
OSBAQCBVSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCiBVSVByb2Nlc3MvZ2xp
Yi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9y
ZUdMaWIuY3BwIEBuby11bmlmeQogCitVSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5z
cGVjdG9yQ2xpZW50LmNwcAorVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3Rv
ckhUVFBTZXJ2ZXIuY3BwCisKIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hl
ckdMaWIuY3BwCiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3Bw
CiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9GbGF0cGFrTGF1bmNoZXIuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbml0aWFsaXplLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluaXRpYWxpemUuY3BwCmlu
ZGV4IDZiYWFhNjZmNjJkZi4uNjJjN2IxM2NmOTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbml0aWFsaXplLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbml0aWFsaXplLmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdEluaXRpYWxpemUuaCIK
IAorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJL
aXQySW5pdGlhbGl6ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rv
clNlcnZlci5oPgogI2luY2x1ZGUgPG11dGV4PgpAQCAtMzQsMjYgKzM1LDQ5IEBACiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQotc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcihjb25zdCBjaGFyKiBhZGRyZXNzKQorc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcigpCiB7Ci0gICAgaWYgKElu
c3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKS5pc1J1bm5pbmcoKSkK
KyAgICBjb25zdCBjaGFyKiBhZGRyZXNzID0gZ19nZXRlbnYoIldFQktJVF9JTlNQRUNUT1JfU0VS
VkVSIik7CisgICAgY29uc3QgY2hhciogaHR0cEFkZHJlc3MgPSBnX2dldGVudigiV0VCS0lUX0lO
U1BFQ1RPUl9IVFRQX1NFUlZFUiIpOworICAgIGlmICghYWRkcmVzcyAmJiAhaHR0cEFkZHJlc3Mp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghYWRkcmVzc1swXSkKKyAgICBpZiAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnNpbmdsZXRvbigpLmlzUnVubmluZygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBHVW5pcXVlUHRyPGNoYXI+IGluc3BlY3RvckFkZHJlc3MoZ19z
dHJkdXAoYWRkcmVzcykpOwotICAgIGNoYXIqIHBvcnRQdHIgPSBnX3N0cnJzdHIoaW5zcGVjdG9y
QWRkcmVzcy5nZXQoKSwgIjoiKTsKLSAgICBpZiAoIXBvcnRQdHIpCisgICAgYXV0byBwYXJzZUFk
ZHJlc3MgPSBbXShjb25zdCBjaGFyKiBhZGRyZXNzLCBndWludDY0JiBwb3J0KSAtPiBHVW5pcXVl
UHRyPGNoYXI+IHsKKyAgICAgICAgaWYgKCFhZGRyZXNzIHx8ICFhZGRyZXNzWzBdKQorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbnNwZWN0
b3JBZGRyZXNzKGdfc3RyZHVwKGFkZHJlc3MpKTsKKyAgICAgICAgY2hhciogcG9ydFB0ciA9IGdf
c3RycnN0cihpbnNwZWN0b3JBZGRyZXNzLmdldCgpLCAiOiIpOworICAgICAgICBpZiAoIXBvcnRQ
dHIpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAqcG9ydFB0ciA9ICdc
MCc7CisgICAgICAgIHBvcnRQdHIrKzsKKyAgICAgICAgcG9ydCA9IGdfYXNjaWlfc3RydG91bGwo
cG9ydFB0ciwgbnVsbHB0ciwgMTApOworICAgICAgICBpZiAoIXBvcnQpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gaW5zcGVjdG9yQWRkcmVzczsKKyAgICB9
OworCisgICAgZ3VpbnQ2NCBpbnNwZWN0b3JIVFRQUG9ydDsKKyAgICBhdXRvIGluc3BlY3RvckhU
VFBBZGRyZXNzID0gcGFyc2VBZGRyZXNzKGh0dHBBZGRyZXNzLCBpbnNwZWN0b3JIVFRQUG9ydCk7
CisgICAgZ3VpbnQ2NCBpbnNwZWN0b3JQb3J0OworICAgIGF1dG8gaW5zcGVjdG9yQWRkcmVzcyA9
ICFodHRwQWRkcmVzcyA/IHBhcnNlQWRkcmVzcyhhZGRyZXNzLCBpbnNwZWN0b3JQb3J0KSA6IEdV
bmlxdWVQdHI8Y2hhcj4oKTsKKyAgICBpZiAoIWluc3BlY3RvckhUVFBBZGRyZXNzICYmICFpbnNw
ZWN0b3JBZGRyZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICAqcG9ydFB0ciA9ICdcMCc7Ci0g
ICAgcG9ydFB0cisrOwotICAgIGd1aW50NjQgcG9ydCA9IGdfYXNjaWlfc3RydG91bGwocG9ydFB0
ciwgbnVsbHB0ciwgMTApOwotICAgIGlmICghcG9ydCkKKyAgICBpZiAoIUluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKS5zdGFydChpbnNwZWN0b3JBZGRyZXNzID8g
aW5zcGVjdG9yQWRkcmVzcy5nZXQoKSA6IGluc3BlY3RvckhUVFBBZGRyZXNzLmdldCgpLCBpbnNw
ZWN0b3JBZGRyZXNzID8gaW5zcGVjdG9yUG9ydCA6IDApKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9uKCkuc3RhcnQoaW5z
cGVjdG9yQWRkcmVzcy5nZXQoKSwgcG9ydCk7CisgICAgaWYgKGh0dHBBZGRyZXNzKSB7CisgICAg
ICAgIGluc3BlY3RvckFkZHJlc3MucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCIlczoldSIsIGluc3Bl
Y3RvckhUVFBBZGRyZXNzLmdldCgpLCBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6
c2luZ2xldG9uKCkucG9ydCgpKSk7CisgICAgICAgIGdfc2V0ZW52KCJXRUJLSVRfSU5TUEVDVE9S
X1NFUlZFUiIsIGluc3BlY3RvckFkZHJlc3MuZ2V0KCksIFRSVUUpOworICAgICAgICBSZW1vdGVJ
bnNwZWN0b3JIVFRQU2VydmVyOjpzaW5nbGV0b24oKS5zdGFydChpbnNwZWN0b3JIVFRQQWRkcmVz
cy5nZXQoKSwgaW5zcGVjdG9ySFRUUFBvcnQsIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2Vy
dmVyOjpzaW5nbGV0b24oKS5wb3J0KCkpOworICAgIH0KIH0KICNlbmRpZgogCkBAIC02NCw4ICs4
OCw3IEBAIHZvaWQgd2Via2l0SW5pdGlhbGl6ZSgpCiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZs
YWcsIFtdIHsKICAgICAgICAgSW5pdGlhbGl6ZVdlYktpdDIoKTsKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKLSAgICAgICAgaWYgKGNvbnN0IGNoYXIqIGFkZHJlc3MgPSBnX2dldGVudigi
V0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIiKSkKLSAgICAgICAgICAgIGluaXRpYWxpemVSZW1vdGVJ
bnNwZWN0b3JTZXJ2ZXIoYWRkcmVzcyk7CisgICAgICAgIGluaXRpYWxpemVSZW1vdGVJbnNwZWN0
b3JTZXJ2ZXIoKTsKICNlbmRpZgogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IDQ4Mzg4ZDY5MTBlMy4uNjdiOWZlZGU2YTM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUlu
c3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC0xMjQs
NDEgKzEyNCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVS
ZXF1ZXN0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlCiAgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTC5ob3N0KCkudXRmOCgpLmRh
dGEoKSwgcmVxdWVzdFVSTC5wb3J0KCkudmFsdWUoKSwgKnRoaXMpOwogICAgIH0pLml0ZXJhdG9y
LT52YWx1ZS5nZXQoKTsKIAotICAgIEdTdHJpbmcqIGh0bWwgPSBnX3N0cmluZ19uZXcoCi0gICAg
ICAgICI8aHRtbD48aGVhZD48dGl0bGU+UmVtb3RlIGluc3BlY3RvcjwvdGl0bGU+IgotICAgICAg
ICAiPG1ldGEgaHR0cC1lcXVpdj1cIkNvbnRlbnQtVHlwZVwiIGNvbnRlbnQ9XCJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLThcIiAvPiIKLSAgICAgICAgIjxzdHlsZT4iCi0gICAgICAgICIgIGgxIHsg
Y29sb3I6ICNiYWJkYjY7IHRleHQtc2hhZG93OiAwIDFweCAwIHdoaXRlOyBtYXJnaW4tYm90dG9t
OiAwOyB9IgotICAgICAgICAiICBodG1sIHsgZm9udC1mYW1pbHk6IC13ZWJraXQtc3lzdGVtLWZv
bnQ7IGZvbnQtc2l6ZTogMTFwdDsgY29sb3I6ICMyZTM0MzY7IHBhZGRpbmc6IDIwcHggMjBweCAw
IDIwcHg7IGJhY2tncm91bmQtY29sb3I6ICNmNmY2ZjQ7ICIKLSAgICAgICAgIiAgICAgICAgIGJh
Y2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBi
b3R0b20sIGNvbG9yLXN0b3AoMCwgI2VlZWVlYyksIGNvbG9yLXN0b3AoMSwgI2Y2ZjZmNCkpOyIK
LSAgICAgICAgIiAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMTAwJSA1ZW07IGJhY2tncm91bmQt
cmVwZWF0OiBuby1yZXBlYXQ7IH0iCi0gICAgICAgICIgIHRhYmxlIHsgd2lkdGg6IDEwMCU7IGJv
cmRlci1jb2xsYXBzZTogY29sbGFwc2U7IH0iCi0gICAgICAgICIgIHRhYmxlLCB0ZCB7IGJvcmRl
cjogMXB4IHNvbGlkICNkM2Q3Y2Y7IGJvcmRlci1sZWZ0OiBub25lOyBib3JkZXItcmlnaHQ6IG5v
bmU7IH0iCi0gICAgICAgICIgIHAgeyBtYXJnaW4tYm90dG9tOiAzMHB4OyB9IgotICAgICAgICAi
ICB0ZCB7IHBhZGRpbmc6IDE1cHg7IH0iCi0gICAgICAgICIgIHRkLmRhdGEgeyB3aWR0aDogMjAw
cHg7IH0iCi0gICAgICAgICIgIC50YXJnZXRuYW1lIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0iCi0g
ICAgICAgICIgIC50YXJnZXR1cmwgeyBjb2xvcjogI2JhYmRiNjsgfSIKLSAgICAgICAgIiAgdGQu
aW5wdXQgeyB3aWR0aDogNjRweDsgfSIKLSAgICAgICAgIiAgaW5wdXQgeyB3aWR0aDogMTAwJTsg
cGFkZGluZzogOHB4OyB9IgotICAgICAgICAiPC9zdHlsZT4iCi0gICAgICAgICI8L2hlYWQ+PGJv
ZHk+PGgxPkluc3BlY3RhYmxlIHRhcmdldHM8L2gxPiIpOwotICAgIGlmIChjbGllbnQtPnRhcmdl
dHMoKS5pc0VtcHR5KCkpCi0gICAgICAgIGdfc3RyaW5nX2FwcGVuZChodG1sLCAiPHA+Tm8gdGFy
Z2V0cyBmb3VuZDwvcD4iKTsKLSAgICBlbHNlIHsKLSAgICAgICAgZ19zdHJpbmdfYXBwZW5kKGh0
bWwsICI8dGFibGU+Iik7Ci0gICAgICAgIGZvciAoYXV0byBjb25uZWN0aW9uSUQgOiBjbGllbnQt
PnRhcmdldHMoKS5rZXlzKCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgdGFyZ2V0IDogY2xp
ZW50LT50YXJnZXRzKCkuZ2V0KGNvbm5lY3Rpb25JRCkpIHsKLSAgICAgICAgICAgICAgICBnX3N0
cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsCi0gICAgICAgICAgICAgICAgICAgICI8dGJvZHk+PHRy
PiIKLSAgICAgICAgICAgICAgICAgICAgIjx0ZCBjbGFzcz1cImRhdGFcIj48ZGl2IGNsYXNzPVwi
dGFyZ2V0bmFtZVwiPiVzPC9kaXY+PGRpdiBjbGFzcz1cInRhcmdldHVybFwiPiVzPC9kaXY+PC90
ZD4iCi0gICAgICAgICAgICAgICAgICAgICI8dGQgY2xhc3M9XCJpbnB1dFwiPjxpbnB1dCB0eXBl
PVwiYnV0dG9uXCIgdmFsdWU9XCJJbnNwZWN0XCIgb25jbGljaz1cIndpbmRvdy53ZWJraXQubWVz
c2FnZUhhbmRsZXJzLmluc3BlY3Rvci5wb3N0TWVzc2FnZSgnJSIgR19HVUlOVDY0X0ZPUk1BVCAi
OiUiIEdfR1VJTlQ2NF9GT1JNQVQgIjolcycpO1wiPjwvdGQ+IgotICAgICAgICAgICAgICAgICAg
ICAiPC90cj48L3Rib2R5PiIsIHRhcmdldC5uYW1lLmRhdGEoKSwgdGFyZ2V0LnVybC5kYXRhKCks
IGNvbm5lY3Rpb25JRCwgdGFyZ2V0LmlkLCB0YXJnZXQudHlwZS5kYXRhKCkpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIGdfc3RyaW5nX2FwcGVuZChodG1sLCAiPC90YWJsZT4i
KTsKLSAgICB9Ci0gICAgZ19zdHJpbmdfYXBwZW5kKGh0bWwsICI8L2JvZHk+PC9odG1sPiIpOwor
ICAgIGF1dG8qIGh0bWwgPSBjbGllbnQtPmJ1aWxkVGFyZ2V0TGlzdFBhZ2UoUmVtb3RlSW5zcGVj
dG9yQ2xpZW50OjpJbnNwZWN0b3JUeXBlOjpVSSk7CiAgICAgZ3NpemUgc3RyZWFtTGVuZ3RoID0g
aHRtbC0+bGVuOwogICAgIEdSZWZQdHI8R0lucHV0U3RyZWFtPiBzdHJlYW0gPSBhZG9wdEdSZWYo
Z19tZW1vcnlfaW5wdXRfc3RyZWFtX25ld19mcm9tX2RhdGEoZ19zdHJpbmdfZnJlZShodG1sLCBG
QUxTRSksIHN0cmVhbUxlbmd0aCwgZ19mcmVlKSk7CiAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVx
dWVzdF9maW5pc2gocmVxdWVzdCwgc3RyZWFtLmdldCgpLCBzdHJlYW1MZW5ndGgsICJ0ZXh0L2h0
bWwiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGli
L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDllODAxYmE3MTVhMS4u
OWUwNzJiNWEyODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgIkFQSURlYnVnZ2FibGVJbmZvLmgiCiAjaW5jbHVkZSAiQVBJ
SW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvckhUVFBT
ZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5LmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yVXRpbHMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0luc3BlY3RvckRlYnVnZ2FibGVUeXBlLmg+CkBAIC00NCwyMiArNDUsMjUgQEAgY2xhc3Mg
UmVtb3RlSW5zcGVjdG9yUHJveHkgZmluYWwgOiBwdWJsaWMgUmVtb3RlV2ViSW5zcGVjdG9yVUlQ
cm94eUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoKTsKIHB1YmxpYzoKICAg
ICBSZW1vdGVJbnNwZWN0b3JQcm94eShSZW1vdGVJbnNwZWN0b3JDbGllbnQmIGluc3BlY3RvckNs
aWVudCwgdWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJnZXRJRCkKLSAgICAgICAg
OiBtX3Byb3h5KFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OmNyZWF0ZSgpKQotICAgICAgICAs
IG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKKyAgICAgICAgOiBtX2luc3BlY3Rv
ckNsaWVudChpbnNwZWN0b3JDbGllbnQpCiAgICAgICAgICwgbV9jb25uZWN0aW9uSUQoY29ubmVj
dGlvbklEKQogICAgICAgICAsIG1fdGFyZ2V0SUQodGFyZ2V0SUQpCiAgICAgewotICAgICAgICBt
X3Byb3h5LT5zZXRDbGllbnQodGhpcyk7CiAgICAgfQogCiAgICAgflJlbW90ZUluc3BlY3RvclBy
b3h5KCkKICAgICB7Ci0gICAgICAgIG1fcHJveHktPnNldENsaWVudChudWxscHRyKTsKLSAgICAg
ICAgbV9wcm94eS0+aW52YWxpZGF0ZSgpOworICAgICAgICBpZiAobV9wcm94eSkgeworICAgICAg
ICAgICAgbV9wcm94eS0+c2V0Q2xpZW50KG51bGxwdHIpOworICAgICAgICAgICAgbV9wcm94eS0+
aW52YWxpZGF0ZSgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFJlbW90ZUluc3BlY3Rv
ckhUVFBTZXJ2ZXI6OnNpbmdsZXRvbigpLnRhcmdldERpZENsb3NlKG1fY29ubmVjdGlvbklELCBt
X3RhcmdldElEKTsKICAgICB9CiAKICAgICB2b2lkIGxvYWQoSW5zcGVjdG9yOjpEZWJ1Z2dhYmxl
VHlwZSBkZWJ1Z2dhYmxlVHlwZSkKICAgICB7CisgICAgICAgIG1fcHJveHkgPSBSZW1vdGVXZWJJ
bnNwZWN0b3JVSVByb3h5OjpjcmVhdGUoKTsKKyAgICAgICAgbV9wcm94eS0+c2V0Q2xpZW50KHRo
aXMpOwogICAgICAgICAvLyBGSVhNRSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjA1NTM2PjogdGhp
cyBzaG91bGQgaW5mZXIgbW9yZSB1c2VmdWwgZGF0YSBhYm91dCB0aGUgZGVidWcgdGFyZ2V0Lgog
ICAgICAgICBSZWY8QVBJOjpEZWJ1Z2dhYmxlSW5mbz4gZGVidWdnYWJsZUluZm8gPSBBUEk6OkRl
YnVnZ2FibGVJbmZvOjpjcmVhdGUoRGVidWdnYWJsZUluZm9EYXRhOjplbXB0eSgpKTsKICAgICAg
ICAgZGVidWdnYWJsZUluZm8tPnNldERlYnVnZ2FibGVUeXBlKGRlYnVnZ2FibGVUeXBlKTsKQEAg
LTY4LDEzICs3MiwxNSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNob3coKQogICAgIHsKLSAgICAg
ICAgbV9wcm94eS0+c2hvdygpOworICAgICAgICBpZiAobV9wcm94eSkKKyAgICAgICAgICAgIG1f
cHJveHktPnNob3coKTsKICAgICB9CiAKICAgICB2b2lkIHNldFRhcmdldE5hbWUoY29uc3QgQ1N0
cmluZyYgbmFtZSkKICAgICB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICBtX3Byb3h5LT51
cGRhdGVXaW5kb3dUaXRsZShuYW1lKTsKKyAgICAgICAgaWYgKG1fcHJveHkpCisgICAgICAgICAg
ICBtX3Byb3h5LT51cGRhdGVXaW5kb3dUaXRsZShuYW1lKTsKICNlbmRpZgogICAgIH0KIApAQCAt
ODIsNyArODgsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIHsKLSAgICAgICAgbV9wcm94eS0+c2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKG1lc3NhZ2UpOworICAgICAgICBpZiAobV9wcm94eSkKKyAgICAgICAgICAg
IG1fcHJveHktPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlcjo6c2luZ2xldG9uKCkuc2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKG1fY29ubmVjdGlvbklELCBtX3RhcmdldElELCBtZXNzYWdlKTsKICAg
ICB9CiAKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkgb3ZlcnJpZGUKQEAgLTEwMSw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIFJlZjxSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5PiBtX3Byb3h5OworICAgIFJlZlB0
cjxSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5PiBtX3Byb3h5OwogICAgIFJlbW90ZUluc3BlY3Rv
ckNsaWVudCYgbV9pbnNwZWN0b3JDbGllbnQ7CiAgICAgdWludDY0X3QgbV9jb25uZWN0aW9uSUQ7
CiAgICAgdWludDY0X3QgbV90YXJnZXRJRDsKQEAgLTIyMCw3ICsyMjksNyBAQCBzdGF0aWMgSW5z
cGVjdG9yOjpEZWJ1Z2dhYmxlVHlwZSBkZWJ1Z2dhYmxlVHlwZShjb25zdCBTdHJpbmcmIHRhcmdl
dFR5cGUpCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBSZW1v
dGVJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3QodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRf
dCB0YXJnZXRJRCwgY29uc3QgU3RyaW5nJiB0YXJnZXRUeXBlKQordm9pZCBSZW1vdGVJbnNwZWN0
b3JDbGllbnQ6Omluc3BlY3QodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJnZXRJ
RCwgY29uc3QgU3RyaW5nJiB0YXJnZXRUeXBlLCBJbnNwZWN0b3JUeXBlIGluc3BlY3RvclR5cGUp
CiB7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2luc3BlY3RvclByb3h5TWFwLmVuc3VyZShzdGQ6
Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHRhcmdldElEKSwgW3RoaXMsIGNvbm5lY3Rpb25JRCwg
dGFyZ2V0SURdIHsKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yUHJv
eHk+KCp0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElEKTsKQEAgLTIzMSw3ICsyNDAsOCBAQCB2
b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6aW5zcGVjdCh1aW50NjRfdCBjb25uZWN0aW9uSUQs
IHVpbnQ2NF90IHRhcmdldElELCBjbwogICAgIH0KIAogICAgIG1fc29ja2V0Q29ubmVjdGlvbi0+
c2VuZE1lc3NhZ2UoIlNldHVwIiwgZ192YXJpYW50X25ldygiKHR0KSIsIGNvbm5lY3Rpb25JRCwg
dGFyZ2V0SUQpKTsKLSAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5sb2FkKGRlYnVnZ2Fi
bGVUeXBlKHRhcmdldFR5cGUpKTsKKyAgICBpZiAoaW5zcGVjdG9yVHlwZSA9PSBJbnNwZWN0b3JU
eXBlOjpVSSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+bG9hZChkZWJ1Z2dh
YmxlVHlwZSh0YXJnZXRUeXBlKSk7CiB9CiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50Ojpz
ZW5kTWVzc2FnZVRvQmFja2VuZCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdl
dElELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0yODAsNiArMjkwLDYyIEBAIHZvaWQgUmVt
b3RlSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQodWludDY0X3QgY29ubmVj
dGlvbklELCB1aW50NjRfCiAgICAgcHJveHktPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChTdHJpbmc6
OmZyb21VVEY4KG1lc3NhZ2UpKTsKIH0KIAorR1N0cmluZyogUmVtb3RlSW5zcGVjdG9yQ2xpZW50
OjpidWlsZFRhcmdldExpc3RQYWdlKEluc3BlY3RvclR5cGUgaW5zcGVjdG9yVHlwZSkgY29uc3QK
K3sKKyAgICBHU3RyaW5nKiBodG1sID0gZ19zdHJpbmdfbmV3KAorICAgICAgICAiPGh0bWw+PGhl
YWQ+PHRpdGxlPlJlbW90ZSBpbnNwZWN0b3I8L3RpdGxlPiIKKyAgICAgICAgIjxtZXRhIGh0dHAt
ZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
XCIgLz4iCisgICAgICAgICI8c3R5bGU+IgorICAgICAgICAiICBoMSB7IGNvbG9yOiAjYmFiZGI2
OyB0ZXh0LXNoYWRvdzogMCAxcHggMCB3aGl0ZTsgbWFyZ2luLWJvdHRvbTogMDsgfSIKKyAgICAg
ICAgIiAgaHRtbCB7IGZvbnQtZmFtaWx5OiAtd2Via2l0LXN5c3RlbS1mb250OyBmb250LXNpemU6
IDExcHQ7IGNvbG9yOiAjMmUzNDM2OyBwYWRkaW5nOiAyMHB4IDIwcHggMCAyMHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiAjZjZmNmY0OyAiCisgICAgICAgICIgICAgICAgICBiYWNrZ3JvdW5kLWltYWdl
OiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1z
dG9wKDAsICNlZWVlZWMpLCBjb2xvci1zdG9wKDEsICNmNmY2ZjQpKTsiCisgICAgICAgICIgICAg
ICAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgNWVtOyBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVw
ZWF0OyB9IgorICAgICAgICAiICB0YWJsZSB7IHdpZHRoOiAxMDAlOyBib3JkZXItY29sbGFwc2U6
IGNvbGxhcHNlOyB9IgorICAgICAgICAiICB0YWJsZSwgdGQgeyBib3JkZXI6IDFweCBzb2xpZCAj
ZDNkN2NmOyBib3JkZXItbGVmdDogbm9uZTsgYm9yZGVyLXJpZ2h0OiBub25lOyB9IgorICAgICAg
ICAiICBwIHsgbWFyZ2luLWJvdHRvbTogMzBweDsgfSIKKyAgICAgICAgIiAgdGQgeyBwYWRkaW5n
OiAxNXB4OyB9IgorICAgICAgICAiICB0ZC5kYXRhIHsgd2lkdGg6IDIwMHB4OyB9IgorICAgICAg
ICAiICAudGFyZ2V0bmFtZSB7IGZvbnQtd2VpZ2h0OiBib2xkOyB9IgorICAgICAgICAiICAudGFy
Z2V0dXJsIHsgY29sb3I6ICNiYWJkYjY7IH0iCisgICAgICAgICIgIHRkLmlucHV0IHsgd2lkdGg6
IDY0cHg7IH0iCisgICAgICAgICIgIGlucHV0IHsgd2lkdGg6IDEwMCU7IHBhZGRpbmc6IDhweDsg
fSIKKyAgICAgICAgIjwvc3R5bGU+IgorICAgICAgICAiPC9oZWFkPjxib2R5PjxoMT5JbnNwZWN0
YWJsZSB0YXJnZXRzPC9oMT4iKTsKKyAgICBpZiAobV90YXJnZXRzLmlzRW1wdHkoKSkKKyAgICAg
ICAgZ19zdHJpbmdfYXBwZW5kKGh0bWwsICI8cD5ObyB0YXJnZXRzIGZvdW5kPC9wPiIpOworICAg
IGVsc2UgeworICAgICAgICBnX3N0cmluZ19hcHBlbmQoaHRtbCwgIjx0YWJsZT4iKTsKKyAgICAg
ICAgZm9yIChhdXRvIGNvbm5lY3Rpb25JRCA6IG1fdGFyZ2V0cy5rZXlzKCkpIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byYgdGFyZ2V0IDogbV90YXJnZXRzLmdldChjb25uZWN0aW9uSUQpKSB7Cisg
ICAgICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihodG1sLAorICAgICAgICAgICAg
ICAgICAgICAiPHRib2R5Pjx0cj4iCisgICAgICAgICAgICAgICAgICAgICI8dGQgY2xhc3M9XCJk
YXRhXCI+PGRpdiBjbGFzcz1cInRhcmdldG5hbWVcIj4lczwvZGl2PjxkaXYgY2xhc3M9XCJ0YXJn
ZXR1cmxcIj4lczwvZGl2PjwvdGQ+IgorICAgICAgICAgICAgICAgICAgICAiPHRkIGNsYXNzPVwi
aW5wdXRcIj48aW5wdXQgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiSW5zcGVjdFwiIG9uY2xpY2s9
IiwKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Lm5hbWUuZGF0YSgpLCB0YXJnZXQudXJsLmRh
dGEoKSk7CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGluc3BlY3RvclR5cGUpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIEluc3BlY3RvclR5cGU6OlVJOgorICAgICAgICAgICAgICAgICAgICBn
X3N0cmluZ19hcHBlbmRfcHJpbnRmKGh0bWwsICJcIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRs
ZXJzLmluc3BlY3Rvci5wb3N0TWVzc2FnZSgnJSIgR19HVUlOVDY0X0ZPUk1BVCAiOiUiIEdfR1VJ
TlQ2NF9GT1JNQVQgIjolcycpO1wiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b25JRCwgdGFyZ2V0LmlkLCB0YXJnZXQudHlwZS5kYXRhKCkpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEluc3BlY3RvclR5cGU6OkhUVFA6CisgICAg
ICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICJcIndpbmRvdy5vcGVuKCdNYWluLmh0bWw/d3M9JyArIHdpbmRvdy5sb2Nh
dGlvbi5ob3N0ICsgJy9zb2NrZXQvJSIgR19HVUlOVDY0X0ZPUk1BVCAiLyUiIEdfR1VJTlQ2NF9G
T1JNQVQgIi8lcycsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICInX2JsYW5rJywgJ2xvY2F0
aW9uPW5vLG1lbnViYXI9bm8sc3RhdHVzPW5vLHRvb2xiYXI9bm8nKTtcIiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uSUQsIHRhcmdldC5pZCwgdGFyZ2V0LnR5cGUuZGF0YSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kKGh0bWwsICI+PC90ZD48L3RyPjwvdGJvZHk+Iik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZ19zdHJpbmdfYXBwZW5kKGh0bWws
ICI8L3RhYmxlPiIpOworICAgIH0KKyAgICBnX3N0cmluZ19hcHBlbmQoaHRtbCwgIjwvYm9keT48
L2h0bWw+Iik7CisKKyAgICByZXR1cm4gaHRtbDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKICNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9y
Q2xpZW50LmgKaW5kZXggYjk0N2YxOTFjNDQ0Li5jOTY3ZmE3ZTZmZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUlu
c3BlY3RvckNsaWVudC5oCkBAIC01NCwxOSArNTQsMTIgQEAgcHVibGljOgogICAgIFJlbW90ZUlu
c3BlY3RvckNsaWVudChjb25zdCBjaGFyKiBhZGRyZXNzLCB1bnNpZ25lZCBwb3J0LCBSZW1vdGVJ
bnNwZWN0b3JPYnNlcnZlciYpOwogICAgIH5SZW1vdGVJbnNwZWN0b3JDbGllbnQoKTsKIAotICAg
IHN0cnVjdCBUYXJnZXQgewotICAgIHB1YmxpYzoKLSAgICAgICAgdWludDY0X3QgaWQ7Ci0gICAg
ICAgIENTdHJpbmcgdHlwZTsKLSAgICAgICAgQ1N0cmluZyBuYW1lOwotICAgICAgICBDU3RyaW5n
IHVybDsKLSAgICB9OwotCi0gICAgY29uc3QgSGFzaE1hcDx1aW50NjRfdCwgVmVjdG9yPFRhcmdl
dD4+JiB0YXJnZXRzKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRzOyB9CiAgICAgY29uc3QgU3Ry
aW5nJiBob3N0QW5kUG9ydCgpIGNvbnN0IHsgcmV0dXJuIG1faG9zdEFuZFBvcnQ7IH0KICAgICBj
b25zdCBTdHJpbmcmIGJhY2tlbmRDb21tYW5kc1VSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2Vu
ZENvbW1hbmRzVVJMOyB9CiAKLSAgICB2b2lkIGluc3BlY3QodWludDY0X3QgY29ubmVjdGlvbklE
LCB1aW50NjRfdCB0YXJnZXRJRCwgY29uc3QgU3RyaW5nJiB0YXJnZXRUeXBlKTsKKyAgICBlbnVt
IGNsYXNzIEluc3BlY3RvclR5cGUgeyBVSSwgSFRUUCB9OworICAgIEdTdHJpbmcqIGJ1aWxkVGFy
Z2V0TGlzdFBhZ2UoSW5zcGVjdG9yVHlwZSkgY29uc3Q7CisgICAgdm9pZCBpbnNwZWN0KHVpbnQ2
NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0
VHlwZSwgSW5zcGVjdG9yVHlwZSA9IEluc3BlY3RvclR5cGU6OlVJKTsKICAgICB2b2lkIHNlbmRN
ZXNzYWdlVG9CYWNrZW5kKHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQs
IGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY2xvc2VGcm9tRnJvbnRlbmQodWludDY0X3QgY29u
bmVjdGlvbklELCB1aW50NjRfdCB0YXJnZXRJRCk7CiAKQEAgLTc1LDYgKzY4LDEzIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzZXR1cENvbm5lY3Rpb24oUmVmPFNvY2tldENvbm5lY3Rpb24+JiYpOwog
ICAgIHZvaWQgY29ubmVjdGlvbkRpZENsb3NlKCk7CiAKKyAgICBzdHJ1Y3QgVGFyZ2V0IHsKKyAg
ICAgICAgdWludDY0X3QgaWQ7CisgICAgICAgIENTdHJpbmcgdHlwZTsKKyAgICAgICAgQ1N0cmlu
ZyBuYW1lOworICAgICAgICBDU3RyaW5nIHVybDsKKyAgICB9OworCiAgICAgdm9pZCBzZXRCYWNr
ZW5kQ29tbWFuZHMoY29uc3QgY2hhciopOwogICAgIHZvaWQgc2V0VGFyZ2V0TGlzdCh1aW50NjRf
dCBjb25uZWN0aW9uSUQsIFZlY3RvcjxUYXJnZXQ+JiYpOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQsIGNvbnN0
IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9n
bGliL1JlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYzA0ZTM5YmQwZmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNw
ZWN0b3JIVFRQU2VydmVyLmNwcApAQCAtMCwwICsxLDE4MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVyLmgiCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BF
Q1RPUikKKworI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvU291cFZlcnNpb25pbmcuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2lu
Y2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitSZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVyJiBSZW1vdGVJbnNw
ZWN0b3JIVFRQU2VydmVyOjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBSZW1vdGVJbnNwZWN0
b3JIVFRQU2VydmVyIHNlcnZlcjsKKyAgICByZXR1cm4gc2VydmVyOworfQorCitib29sIFJlbW90
ZUluc3BlY3RvckhUVFBTZXJ2ZXI6OnN0YXJ0KGNvbnN0IGNoYXIqIGFkZHJlc3MsIHVuc2lnbmVk
IHBvcnQsIHVuc2lnbmVkIGluc3BlY3RvclBvcnQpCit7CisgICAgbV9zZXJ2ZXIgPSBhZG9wdEdS
ZWYoc291cF9zZXJ2ZXJfbmV3KCJzZXJ2ZXItaGVhZGVyIiwgIldlYktpdEluc3BlY3RvckhUVFBT
ZXJ2ZXIgIiwgbnVsbHB0cikpOworICAgIEdSZWZQdHI8R1NvY2tldEFkZHJlc3M+IHNvY2tldEFk
ZHJlc3MgPSBhZG9wdEdSZWYoZ19pbmV0X3NvY2tldF9hZGRyZXNzX25ld19mcm9tX3N0cmluZyhh
ZGRyZXNzLCBwb3J0KSk7CisgICAgaWYgKCFzb2NrZXRBZGRyZXNzKSB7CisgICAgICAgIGdfd2Fy
bmluZygiRmFpbGVkIHRvIHN0YXJ0IHJlbW90ZSBpbnNwZWN0b3IgSFRUUCBzZXJ2ZXIgb24gJXM6
JXU6IGludmFsaWQgYWRkcmVzc1xuIiwgYWRkcmVzcywgcG9ydCk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CisgICAgaWYg
KCFzb3VwX3NlcnZlcl9saXN0ZW4obV9zZXJ2ZXIuZ2V0KCksIHNvY2tldEFkZHJlc3MuZ2V0KCks
IHN0YXRpY19jYXN0PFNvdXBTZXJ2ZXJMaXN0ZW5PcHRpb25zPigwKSwgJmVycm9yLm91dFB0cigp
KSkgeworICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBzdGFydCByZW1vdGUgaW5zcGVjdG9y
IEhUVFAgc2VydmVyIG9uICVzOiV1OiAlc1xuIiwgYWRkcmVzcywgcG9ydCwgZXJyb3ItPm1lc3Nh
Z2UpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc291cF9zZXJ2ZXJfYWRk
X2hhbmRsZXIobV9zZXJ2ZXIuZ2V0KCksIG51bGxwdHIsCisjaWYgVVNFKFNPVVAyKQorICAgICAg
ICBbXShTb3VwU2VydmVyKiwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgs
IEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyIHVzZXJEYXRhKSB7Cisj
ZWxzZQorICAgICAgICBbXShTb3VwU2VydmVyKiwgU291cFNlcnZlck1lc3NhZ2UqIG1lc3NhZ2Us
IGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBncG9pbnRlciB1c2VyRGF0YSkgeworI2Vu
ZGlmCisgICAgICAgICAgICBhdXRvJiBodHRwU2VydmVyID0gKnN0YXRpY19jYXN0PFJlbW90ZUlu
c3BlY3RvckhUVFBTZXJ2ZXIqPih1c2VyRGF0YSk7CisgICAgICAgICAgICBhdXRvIHN0YXR1cyA9
IGh0dHBTZXJ2ZXIuaGFuZGxlUmVxdWVzdChwYXRoLCBzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9y
ZXNwb25zZV9oZWFkZXJzKG1lc3NhZ2UpLCBzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNwb25z
ZV9ib2R5KG1lc3NhZ2UpKTsKKyAgICAgICAgICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0
YXR1cyhtZXNzYWdlLCBzdGF0dXMsIG51bGxwdHIpOworICAgICAgICB9LCB0aGlzLCBudWxscHRy
KTsKKworICAgIHNvdXBfc2VydmVyX2FkZF93ZWJzb2NrZXRfaGFuZGxlcihtX3NlcnZlci5nZXQo
KSwgIi9zb2NrZXQiLCBudWxscHRyLCBudWxscHRyLAorI2lmIFVTRShTT1VQMikKKyAgICAgICAg
W10oU291cFNlcnZlciosIFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25z
dCBjaGFyKiBwYXRoLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVyIHVzZXJEYXRhKSB7Cisj
ZWxzZQorICAgICAgICBbXShTb3VwU2VydmVyKiwgU291cFNlcnZlck1lc3NhZ2UqLCBjb25zdCBj
aGFyKiBwYXRoLCBTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgZ3BvaW50ZXIg
dXNlckRhdGEpIHsKKyNlbmRpZgorICAgICAgICAgICAgYXV0byYgaHR0cFNlcnZlciA9ICpzdGF0
aWNfY2FzdDxSZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVyKj4odXNlckRhdGEpOworICAgICAgICAg
ICAgaHR0cFNlcnZlci5oYW5kbGVXZWJTb2NrZXQocGF0aCwgY29ubmVjdGlvbik7CisgICAgICAg
IH0sIHRoaXMsIG51bGxwdHIpOworCisgICAgbV9jbGllbnQgPSBtYWtlVW5pcXVlPFJlbW90ZUlu
c3BlY3RvckNsaWVudD4oYWRkcmVzcywgaW5zcGVjdG9yUG9ydCwgKnRoaXMpOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3Vuc2lnbmVkIFJlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXI6OmhhbmRs
ZVJlcXVlc3QoY29uc3QgY2hhciogcGF0aCwgU291cE1lc3NhZ2VIZWFkZXJzKiByZXNwb25zZUhl
YWRlcnMsIFNvdXBNZXNzYWdlQm9keSogcmVzcG9uc2VCb2R5KSBjb25zdAoreworICAgIGlmIChn
X3N0cl9lcXVhbChwYXRoLCAiLyIpKSB7CisgICAgICAgIGF1dG8qIGh0bWwgPSBtX2NsaWVudC0+
YnVpbGRUYXJnZXRMaXN0UGFnZShSZW1vdGVJbnNwZWN0b3JDbGllbnQ6Okluc3BlY3RvclR5cGU6
OkhUVFApOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQocmVzcG9uc2VIZWFk
ZXJzLCAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIpOworICAgICAgICBnc2l6ZSBib2R5TGVu
Z3RoID0gaHRtbC0+bGVuOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVzcG9u
c2VCb2R5LCBTT1VQX01FTU9SWV9UQUtFLCBnX3N0cmluZ19mcmVlKGh0bWwsIEZBTFNFKSwgYm9k
eUxlbmd0aCk7CisgICAgICAgIHJldHVybiBTT1VQX1NUQVRVU19PSzsKKyAgICB9CisKKyAgICBH
VW5pcXVlUHRyPGNoYXI+IHJlc291cmNlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKCIvb3JnL3dlYmtp
dC9pbnNwZWN0b3IvVXNlckludGVyZmFjZSIsIHBhdGgsIG51bGxwdHIpKTsKKworICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9w
dEdSZWYoZ19yZXNvdXJjZXNfbG9va3VwX2RhdGEocmVzb3VyY2VQYXRoLmdldCgpLCBHX1JFU09V
UkNFX0xPT0tVUF9GTEFHU19OT05FLCAmZXJyb3Iub3V0UHRyKCkpKTsKKyAgICBpZiAoYnl0ZXMp
IHsKKyAgICAgICAgZ3NpemUgZGF0YVNpemU7CisgICAgICAgIGNvbnN0IGF1dG8qIGRhdGEgPSBz
dGF0aWNfY2FzdDxjb25zdCBndWNoYXIqPihnX2J5dGVzX2dldF9kYXRhKGJ5dGVzLmdldCgpLCAm
ZGF0YVNpemUpKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBmaWxlTmFtZShnX3BhdGhfZ2V0
X2Jhc2VuYW1lKHJlc291cmNlUGF0aC5nZXQoKSkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+
IGNvbnRlbnRUeXBlKGdfY29udGVudF90eXBlX2d1ZXNzKGZpbGVOYW1lLmdldCgpLCBkYXRhLCBk
YXRhU2l6ZSwgbnVsbHB0cikpOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQo
cmVzcG9uc2VIZWFkZXJzLCAiQ29udGVudC1UeXBlIiwgY29udGVudFR5cGUuZ2V0KCkpOworICAg
ICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9D
T1BZLCBkYXRhLCBkYXRhU2l6ZSk7CisgICAgICAgIHJldHVybiBTT1VQX1NUQVRVU19PSzsKKyAg
ICB9CisKKyAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBsb2FkIGluc3BlY3RvciByZXNvdXJjZSAl
czogJXMiLCByZXNvdXJjZVBhdGguZ2V0KCksIGVycm9yLT5tZXNzYWdlKTsKKworICAgIHJldHVy
biBTT1VQX1NUQVRVU19OT1RfRk9VTkQ7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9ySFRUUFNl
cnZlcjo6aGFuZGxlV2ViU29ja2V0KGNvbnN0IGNoYXIqIHBhdGgsIFNvdXBXZWJzb2NrZXRDb25u
ZWN0aW9uKiBjb25uZWN0aW9uKQoreworICAgIGF1dG8gaXRlbXMgPSBTdHJpbmc6OmZyb21VVEY4
KHBhdGgpLnNwbGl0KCcvJyk7CisgICAgaWYgKGl0ZW1zLnNpemUoKSAhPSA0KQorICAgICAgICBy
ZXR1cm47CisKKyAgICB1aW50NjRfdCBjb25uZWN0aW9uSUQgPSBpdGVtc1sxXS50b0RvdWJsZSgp
OworICAgIHVpbnQ2NF90IHRhcmdldElEID0gaXRlbXNbMl0udG9Eb3VibGUoKTsKKyAgICBtX3dl
YlNvY2tldENvbm5lY3Rpb25NYXAuc2V0KHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgdGFy
Z2V0SUQpLCBjb25uZWN0aW9uKTsKKyAgICBtX3dlYlNvY2tldENvbm5lY3Rpb25Ub1RhcmdldE1h
cC5zZXQoY29ubmVjdGlvbiwgc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCkp
OworICAgIGdfc2lnbmFsX2Nvbm5lY3QoY29ubmVjdGlvbiwgIm1lc3NhZ2UiLCBHX0NBTExCQUNL
KCtbXShTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgU291cFdlYnNvY2tldERh
dGFUeXBlIG1lc3NhZ2VUeXBlLCBHQnl0ZXMqIG1lc3NhZ2UsIGdwb2ludGVyIHVzZXJEYXRhKSB7
CisgICAgICAgIGF1dG8mIGh0dHBTZXJ2ZXIgPSAqc3RhdGljX2Nhc3Q8UmVtb3RlSW5zcGVjdG9y
SFRUUFNlcnZlcio+KHVzZXJEYXRhKTsKKyAgICAgICAgZ3NpemUgZGF0YVNpemU7CisgICAgICAg
IGNvbnN0IGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZ19ieXRlc19nZXRf
ZGF0YShtZXNzYWdlLCAmZGF0YVNpemUpKTsKKyAgICAgICAgaHR0cFNlcnZlci5zZW5kTWVzc2Fn
ZVRvQmFja2VuZChjb25uZWN0aW9uLCBTdHJpbmc6OmZyb21VVEY4KGRhdGEsIGRhdGFTaXplKSk7
CisgICAgfSksIHRoaXMpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoY29ubmVjdGlvbiwgImNsb3Nl
ZCIsIEdfQ0FMTEJBQ0soK1tdKFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBn
cG9pbnRlciB1c2VyRGF0YSkgeworICAgICAgICBhdXRvJiBodHRwU2VydmVyID0gKnN0YXRpY19j
YXN0PFJlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIqPih1c2VyRGF0YSk7CisgICAgICAgIGh0dHBT
ZXJ2ZXIuZGlkQ2xvc2VXZWJTb2NrZXQoY29ubmVjdGlvbik7CisgICAgfSksIHRoaXMpOworCisg
ICAgbV9jbGllbnQtPmluc3BlY3QoY29ubmVjdGlvbklELCB0YXJnZXRJRCwgaXRlbXNbM10sIFJl
bW90ZUluc3BlY3RvckNsaWVudDo6SW5zcGVjdG9yVHlwZTo6SFRUUCk7Cit9CisKK3ZvaWQgUmVt
b3RlSW5zcGVjdG9ySFRUUFNlcnZlcjo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKHVpbnQ2NF90IGNv
bm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgY29u
c3QKK3sKKyAgICBhdXRvKiB3ZWJTb2NrZXRDb25uZWN0aW9uID0gbV93ZWJTb2NrZXRDb25uZWN0
aW9uTWFwLmdldChzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSUQsIHRhcmdldElEKSk7CisgICAg
aWYgKCF3ZWJTb2NrZXRDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHV0
ZjggPSBtZXNzYWdlLnV0ZjgoKTsKKyAgICAvLyBTb3VwIGlzIGdvaW5nIHRvIGNvcHkgdGhlIGRh
dGEgaW1tZWRpYXRlbHksIHNvIHdlIGNhbiB1c2UgZ19ieXRlc19uZXdfc3RhdGljKCkgaGVyZSB0
byBhdm9pZCBtb3JlIGRhdGEgY29waWVzLgorICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFk
b3B0R1JlZihnX2J5dGVzX25ld19zdGF0aWModXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpKTsK
KyAgICBzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX3NlbmRfbWVzc2FnZSh3ZWJTb2NrZXRDb25u
ZWN0aW9uLCBTT1VQX1dFQlNPQ0tFVF9EQVRBX1RFWFQsIGJ5dGVzLmdldCgpKTsKK30KKwordm9p
ZCBSZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVyOjp0YXJnZXREaWRDbG9zZSh1aW50NjRfdCBjb25u
ZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElEKQoreworICAgIGF1dG8gd2ViU29ja2V0Q29ubmVj
dGlvbiA9IG1fd2ViU29ja2V0Q29ubmVjdGlvbk1hcC50YWtlKHN0ZDo6bWFrZV9wYWlyKGNvbm5l
Y3Rpb25JRCwgdGFyZ2V0SUQpKTsKKyAgICBpZiAoIXdlYlNvY2tldENvbm5lY3Rpb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZGF0YSh3
ZWJTb2NrZXRDb25uZWN0aW9uLmdldCgpLCB0aGlzKTsKKyAgICBzb3VwX3dlYnNvY2tldF9jb25u
ZWN0aW9uX2Nsb3NlKHdlYlNvY2tldENvbm5lY3Rpb24uZ2V0KCksIFNPVVBfV0VCU09DS0VUX0NM
T1NFX0dPSU5HX0FXQVksICJUYXJnZXQgY2xvc2VkIik7CisgICAgbV93ZWJTb2NrZXRDb25uZWN0
aW9uVG9UYXJnZXRNYXAucmVtb3ZlKHdlYlNvY2tldENvbm5lY3Rpb24uZ2V0KCkpOworfQorCit2
b2lkIFJlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXI6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKFNvdXBX
ZWJzb2NrZXRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGNv
bnN0Cit7CisgICAgYXV0byBbY29ubmVjdGlvbklELCB0YXJnZXRJRF0gPSBtX3dlYlNvY2tldENv
bm5lY3Rpb25Ub1RhcmdldE1hcC5nZXQoY29ubmVjdGlvbik7CisgICAgaWYgKGNvbm5lY3Rpb25J
RCAmJiB0YXJnZXRJRCkKKyAgICAgICAgbV9jbGllbnQtPnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNv
bm5lY3Rpb25JRCwgdGFyZ2V0SUQsIG1lc3NhZ2UpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3Rv
ckhUVFBTZXJ2ZXI6OmRpZENsb3NlV2ViU29ja2V0KFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uKiBj
b25uZWN0aW9uKQoreworICAgIGF1dG8gY29ubmVjdGlvbkFuZFRhcmdldCA9IG1fd2ViU29ja2V0
Q29ubmVjdGlvblRvVGFyZ2V0TWFwLnRha2UoY29ubmVjdGlvbik7CisgICAgaWYgKCFjb25uZWN0
aW9uQW5kVGFyZ2V0LmZpcnN0IHx8ICFjb25uZWN0aW9uQW5kVGFyZ2V0LnNlY29uZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKGNv
bm5lY3Rpb24sIHRoaXMpOworICAgIG1fd2ViU29ja2V0Q29ubmVjdGlvbk1hcC5yZW1vdmUoY29u
bmVjdGlvbkFuZFRhcmdldCk7CisgICAgbV9jbGllbnQtPmNsb3NlRnJvbUZyb250ZW5kKGNvbm5l
Y3Rpb25BbmRUYXJnZXQuZmlyc3QsIGNvbm5lY3Rpb25BbmRUYXJnZXQuc2Vjb25kKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1Jl
bW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmYyNTM3NWFlNWE3YgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckhUVFBT
ZXJ2ZXIuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIElnYWxp
YSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RP
UikKKworI2luY2x1ZGUgIlJlbW90ZUluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFJlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIgZmluYWwgOiBwdWJsaWMg
UmVtb3RlSW5zcGVjdG9yT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZW1vdGVJbnNw
ZWN0b3JIVFRQU2VydmVyJiBzaW5nbGV0b24oKTsKKyAgICB+UmVtb3RlSW5zcGVjdG9ySFRUUFNl
cnZlcigpID0gZGVmYXVsdDsKKworICAgIGJvb2wgc3RhcnQoY29uc3QgY2hhciogYWRkcmVzcywg
dW5zaWduZWQgcG9ydCwgdW5zaWduZWQgaW5zcGVjdG9yUG9ydCk7CisgICAgYm9vbCBpc1J1bm5p
bmcoKSBjb25zdCB7IHJldHVybiAhIW1fc2VydmVyOyB9CisKKyAgICB2b2lkIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElELCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpIGNvbnN0OworICAgIHZvaWQgdGFyZ2V0RGlkQ2xvc2UodWludDY0
X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJnZXRJRCk7CisKK3ByaXZhdGU6CisgICAgdW5z
aWduZWQgaGFuZGxlUmVxdWVzdChjb25zdCBjaGFyKiwgU291cE1lc3NhZ2VIZWFkZXJzKiwgU291
cE1lc3NhZ2VCb2R5KikgY29uc3Q7CisgICAgdm9pZCBoYW5kbGVXZWJTb2NrZXQoY29uc3QgY2hh
ciosIFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uKik7CisKKyAgICB2b2lkIHNlbmRNZXNzYWdlVG9C
YWNrZW5kKFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uKiwgY29uc3QgU3RyaW5nJikgY29uc3Q7Cisg
ICAgdm9pZCBkaWRDbG9zZVdlYlNvY2tldChTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiopOworCisg
ICAgdm9pZCB0YXJnZXRMaXN0Q2hhbmdlZChSZW1vdGVJbnNwZWN0b3JDbGllbnQmKSBvdmVycmlk
ZSB7IH0KKyAgICB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoUmVtb3RlSW5zcGVjdG9yQ2xpZW50Jikg
b3ZlcnJpZGUgeyB9CisKKyAgICBHUmVmUHRyPFNvdXBTZXJ2ZXI+IG1fc2VydmVyOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVJbnNwZWN0b3JDbGllbnQ+IG1fY2xpZW50OworICAgIEhhc2hN
YXA8c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4sIEdSZWZQdHI8U291cFdlYnNvY2tldENv
bm5lY3Rpb24+PiBtX3dlYlNvY2tldENvbm5lY3Rpb25NYXA7CisgICAgSGFzaE1hcDxTb3VwV2Vi
c29ja2V0Q29ubmVjdGlvbiosIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+PiBtX3dlYlNv
Y2tldENvbm5lY3Rpb25Ub1RhcmdldE1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCg==
</data>
<flag name="review"
          id="481681"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
    <flag name="commit-queue"
          id="481687"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454232</attachid>
            <date>2022-03-09 06:02:09 -0800</date>
            <delta_ts>2022-03-10 00:58:57 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk-remote-inspector-http-server.diff</filename>
            <type>text/plain</type>
            <size>57596</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDIyMWEwMmNmMjc1MS4uYzNlMTI4Njk0ZDVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMy0wOCAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11b
V1BFXSBXZWIgSW5zcGVjdG9yOiBtYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSB0aGUgcmVtb3RlIGlu
c3BlY3RvciBmcm9tIG90aGVyIGJyb3dzZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc2MDEKKworICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVs
IENhdGFuemFyby4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHN0YXJ0IHRoZSBpbnNw
ZWN0b3Igc2VydmVyIHdpdGggMCBwb3J0LCBtZWFuaW5nIGFueSBmcmVlIG9uZSB3aWxsIGJlIHVz
ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2Vy
dmVyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzdGFy
dCk6IFBhc3MgdGhlIGVmZmVjdGl2ZSBhZGRyZXNzIHRvIGdfc29ja2V0X2xpc3RlbmVyX2FkZF9h
ZGRyZXNzIGFuZCBnZXQgdGhlIHBvcnQuCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9nbGli
L1JlbW90ZUluc3BlY3RvclNlcnZlci5oOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXI6OnBvcnQgY29uc3QpOiBSZXR1cm4gdGhlIHBvcnQgdGhlIHNlcnZlciBpcyBs
aXN0ZW5pbmcgdG8uCisKIDIwMjItMDMtMDkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gU3RvcCB1c2luZyB0aGUgZW52IHZh
ciBXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiB0byBjb25uZWN0IHRvIHRoZSBpbnNwZWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVt
b3RlSW5zcGVjdG9yU2VydmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNwcAppbmRleCAzMDAxNzQ2MzU3Zjku
LmQ4MDNlNGFkZDY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvZ2xpYi9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmNw
cApAQCAtMTg4LDEyICsxODgsMTUgQEAgYm9vbCBSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6OnN0YXJ0
KGNvbnN0IGNoYXIqIGFkZHJlc3MsIHVuc2lnbmVkIHBvcnQpCiAgICAgZ19zaWduYWxfY29ubmVj
dChtX3NlcnZpY2UuZ2V0KCksICJpbmNvbWluZyIsIEdfQ0FMTEJBQ0soaW5jb21pbmdDb25uZWN0
aW9uQ2FsbGJhY2spLCB0aGlzKTsKIAogICAgIEdSZWZQdHI8R1NvY2tldEFkZHJlc3M+IHNvY2tl
dEFkZHJlc3MgPSBhZG9wdEdSZWYoZ19pbmV0X3NvY2tldF9hZGRyZXNzX25ld19mcm9tX3N0cmlu
ZyhhZGRyZXNzLCBwb3J0KSk7CisgICAgR1JlZlB0cjxHU29ja2V0QWRkcmVzcz4gZWZmZWN0aXZl
QWRkcmVzczsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgaWYgKCFnX3Nv
Y2tldF9saXN0ZW5lcl9hZGRfYWRkcmVzcyhHX1NPQ0tFVF9MSVNURU5FUihtX3NlcnZpY2UuZ2V0
KCkpLCBzb2NrZXRBZGRyZXNzLmdldCgpLCBHX1NPQ0tFVF9UWVBFX1NUUkVBTSwgR19TT0NLRVRf
UFJPVE9DT0xfVENQLCBudWxscHRyLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKSB7CisgICAg
aWYgKCFnX3NvY2tldF9saXN0ZW5lcl9hZGRfYWRkcmVzcyhHX1NPQ0tFVF9MSVNURU5FUihtX3Nl
cnZpY2UuZ2V0KCkpLCBzb2NrZXRBZGRyZXNzLmdldCgpLCBHX1NPQ0tFVF9UWVBFX1NUUkVBTSwg
R19TT0NLRVRfUFJPVE9DT0xfVENQLCBudWxscHRyLCAmZWZmZWN0aXZlQWRkcmVzcy5vdXRQdHIo
KSwgJmVycm9yLm91dFB0cigpKSkgewogICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBzdGFy
dCByZW1vdGUgaW5zcGVjdG9yIHNlcnZlciBvbiAlczoldTogJXNcbiIsIGFkZHJlc3MsIHBvcnQs
IGVycm9yLT5tZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIG1f
cG9ydCA9IGdfaW5ldF9zb2NrZXRfYWRkcmVzc19nZXRfcG9ydChHX0lORVRfU09DS0VUX0FERFJF
U1MoZWZmZWN0aXZlQWRkcmVzcy5nZXQoKSkpOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVt
b3RlSW5zcGVjdG9yU2VydmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oCmluZGV4IGIzZjViZTg5ZTQxMS4uZjRj
OTkzMTUwZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Jl
bW90ZS9nbGliL1JlbW90ZUluc3BlY3RvclNlcnZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2dsaWIvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmgKQEAgLTQ1
LDYgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzdGFydChj
b25zdCBjaGFyKiBhZGRyZXNzLCB1bnNpZ25lZCBwb3J0KTsKICAgICBib29sIGlzUnVubmluZygp
IGNvbnN0IHsgcmV0dXJuICEhbV9zZXJ2aWNlOyB9CisgICAgdWludDE2X3QgcG9ydCgpIGNvbnN0
IHsgcmV0dXJuIG1fcG9ydDsgfQogCiBwcml2YXRlOgogICAgIHN0YXRpYyBnYm9vbGVhbiBpbmNv
bWluZ0Nvbm5lY3Rpb25DYWxsYmFjayhHU29ja2V0U2VydmljZSosIEdTb2NrZXRDb25uZWN0aW9u
KiwgR09iamVjdCosIFJlbW90ZUluc3BlY3RvclNlcnZlciopOwpAQCAtNjEsNiArNjIsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgc3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihTb2NrZXRDb25uZWN0aW9u
JiwgY29uc3QgY2hhciogc2Vzc2lvbklELCBjb25zdCBSZW1vdGVJbnNwZWN0b3I6OkNsaWVudDo6
U2Vzc2lvbkNhcGFiaWxpdGllcyYpOwogCiAgICAgR1JlZlB0cjxHU29ja2V0U2VydmljZT4gbV9z
ZXJ2aWNlOworICAgIHVpbnQxNl90IG1fcG9ydCB7IDAgfTsKICAgICBIYXNoU2V0PFJlZlB0cjxT
b2NrZXRDb25uZWN0aW9uPj4gbV9jb25uZWN0aW9uczsKICAgICBIYXNoTWFwPFNvY2tldENvbm5l
Y3Rpb24qLCB1aW50NjRfdD4gbV9yZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uVG9JRE1hcDsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBTb2NrZXRDb25uZWN0aW9uKj4gbV9pZFRvUmVtb3RlSW5zcGVj
dG9yQ29ubmVjdGlvbk1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DTWFrZUxpc3RzLnR4dAppbmRleCAx
OGY0Y2FkZmFjOTQuLjc0NTFkN2E4ZGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DTWFrZUxpc3Rz
LnR4dApAQCAtNzAsMTMgKzcwLDE3IEBAIGlmIChOT1QgREVGSU5FRCBDT01CSU5FX1RFU1RfUkVT
T1VSQ0VTKQogICAgIGVuZGlmICgpCiBlbmRpZiAoKQogCitpZiAoTk9UIERFRklORUQgSU5DTFVE
RV9JTlNQRUNUT1JfRlJPTlRFTkRfSE9TVCkKKyAgICBzZXQoSU5DTFVERV9JTlNQRUNUT1JfRlJP
TlRFTkRfSE9TVCBOTykKK2VuZGlmICgpCisKIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBPVVRQ
VVQgJHtDTUFLRV9CSU5BUllfRElSfS9pbnNwZWN0b3ItcmVzb3VyY2VzLnN0YW1wCiAgICAgREVQ
RU5EUyAke0luc3BlY3RvckZpbGVzRGVwZW5kZW5jaWVzfQogICAgICAgICAgICAgJHtJbnNwZWN0
b3JSZXNvdXJjZVNjcmlwdHN9CiAgICAgICAgICAgICAke1dlYkluc3BlY3RvclVJX0RFUklWRURf
U09VUkNFU19ESVJ9L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZENvbW1h
bmRzLmpzCiAgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGNvcHkgJHtXZWJJbnNwZWN0
b3JVSV9ERVJJVkVEX1NPVVJDRVNfRElSfS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rv
ckJhY2tlbmRDb21tYW5kcy5qcyAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9JbnNwZWN0
b3JCYWNrZW5kQ29tbWFuZHMuanMKLSAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZW52
ICJERVJJVkVEX1NPVVJDRVNfRElSPSR7V2ViSW5zcGVjdG9yVUlfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0iICJTUkNST09UPSR7V0VCSU5TUEVDVE9SVUlfRElSfSIgIkpBVkFTQ1JJUFRDT1JFX1BSSVZB
VEVfSEVBREVSU19ESVI9JHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0iICJUQVJHRVRfQlVJ
TERfRElSPSR7V2ViSW5zcGVjdG9yVUlfUkVTT1VSQ0VTX0RJUn0iICJVTkxPQ0FMSVpFRF9SRVNP
VVJDRVNfRk9MREVSX1BBVEg9V2ViSW5zcGVjdG9yVUkiICJDT01CSU5FX0lOU1BFQ1RPUl9SRVNP
VVJDRVM9JHtDT01CSU5FX0lOU1BFQ1RPUl9SRVNPVVJDRVN9IiAiQ09NQklORV9URVNUX1JFU09V
UkNFUz0ke0NPTUJJTkVfVEVTVF9SRVNPVVJDRVN9IiBQWVRIT049JHtQWVRIT05fRVhFQ1VUQUJM
RX0gJHtQRVJMX0VYRUNVVEFCTEV9ICR7V0VCSU5TUEVDVE9SVUlfRElSfS9TY3JpcHRzL2NvcHkt
dXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnBsCisgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9
IC1FIGVudiAiREVSSVZFRF9TT1VSQ0VTX0RJUj0ke1dlYkluc3BlY3RvclVJX0RFUklWRURfU09V
UkNFU19ESVJ9IiAiU1JDUk9PVD0ke1dFQklOU1BFQ1RPUlVJX0RJUn0iICJKQVZBU0NSSVBUQ09S
RV9QUklWQVRFX0hFQURFUlNfRElSPSR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9IiAiVEFS
R0VUX0JVSUxEX0RJUj0ke1dlYkluc3BlY3RvclVJX1JFU09VUkNFU19ESVJ9IiAiVU5MT0NBTEla
RURfUkVTT1VSQ0VTX0ZPTERFUl9QQVRIPVdlYkluc3BlY3RvclVJIiAiQ09NQklORV9JTlNQRUNU
T1JfUkVTT1VSQ0VTPSR7Q09NQklORV9JTlNQRUNUT1JfUkVTT1VSQ0VTfSIgIkNPTUJJTkVfVEVT
VF9SRVNPVVJDRVM9JHtDT01CSU5FX1RFU1RfUkVTT1VSQ0VTfSIgIklOQ0xVREVfSU5TUEVDVE9S
X0ZST05URU5EX0hPU1Q9JHtJTkNMVURFX0lOU1BFQ1RPUl9GUk9OVEVORF9IT1NUfSIgUFlUSE9O
PSR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQklOU1BFQ1RPUlVJ
X0RJUn0vU2NyaXB0cy9jb3B5LXVzZXItaW50ZXJmYWNlLXJlc291cmNlcy5wbAogICAgIENPTU1B
TkQgJHtDTUFLRV9DT01NQU5EfSAtRSBtYWtlX2RpcmVjdG9yeSAke1dlYkluc3BlY3RvclVJX0xP
Q0FMSVpFRF9TVFJJTkdTX0RJUn0KICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY29w
eSAiJHtXRUJJTlNQRUNUT1JVSV9ESVJ9L0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcyIgJHtXZWJJbnNwZWN0b3JVSV9MT0NBTElaRURfU1RSSU5HU19ESVJ9L2xvY2Fs
aXplZFN0cmluZ3MuanMKICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgdG91Y2ggJHtD
TUFLRV9CSU5BUllfRElSfS9pbnNwZWN0b3ItcmVzb3VyY2VzLnN0YW1wCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZwppbmRleCAxZDE4MzA3ZjczODEuLjJhNjE4MDZmM2FlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjItMDMtMDggIEFkcmlhbiBQZXJleiBkZSBD
YXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4gYW5kIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gV2ViIEluc3BlY3RvcjogbWFr
ZSBpdCBwb3NzaWJsZSB0byB1c2UgdGhlIHJlbW90ZSBpbnNwZWN0b3IgZnJvbSBvdGhlciBicm93
c2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3
NjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBDYXRhbnphcm8uCisKKyAgICAgICAg
QWRkIEJhc2UvQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5qcyB0byBiZSB1c2VkIHdoZW4g
aW5zcGVjdG9yIGlzIHJ1biBhbmQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0IGlzIG5vdAorICAgICAg
ICBkZWZpbmVkIGluIHdpbmRvdy4gVGhpcyBuZXcgZmlsZSBpcyBvbmx5IGluY2x1ZGVkIGluIHRo
ZSBpbnNwZWN0b3Igc291cmNlcyBmb3IgR1RLIGFuZCBXUEUgcG9ydHMuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQbGF0Zm9ybVdQRTogQWRkZWQKKyAgICAgICAgKiBQ
bGF0Zm9ybUdUSzoKKyAgICAgICAgKiBTY3JpcHRzL2NvbWJpbmUtcmVzb3VyY2VzLnBsOiBBZGQg
LS1pbnB1dC1zY3JpcHQtbmFtZSB0byBiZSBhYmxlIHRvIHNraXAgaW5kaXZpZHVhbCBzY3JpcHRz
IHRvby4KKyAgICAgICAgKiBTY3JpcHRzL2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnBs
OiBJZiBpbnNwZWN0b3IgZnJvbnRlbmQgaG9zdCBzaG91bGQgbm90IGJlIGluY2x1ZGVkLCByZW1v
dmUgdGhlIHNjcmlwdAorICAgICAgICBmcm9tIGdlbmVyYXRlZCBmaWxlcy4KKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0Jhc2UvQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5qczogQWRkZWQu
CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0
b3JGcm9udGVuZEhvc3QpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5X
SS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5nZXQgc3VwcG9ydHNTaG93
Q2VydGlmaWNhdGUpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5C
cm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5nZXQgaXNSZW1vdGUpOgorICAg
ICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJv
bnRlbmRIb3N0LnByb3RvdHlwZS5nZXQgaW5zcGVjdGlvbkxldmVsKToKKyAgICAgICAgKHdpbmRv
dy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5w
cm90b3R5cGUuZ2V0IGRlYnVnZ2FibGVJbmZvKToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JG
cm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuZ2V0
IHBvcnQpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2Vy
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5nZXQgcGxhdGZvcm0pOgorICAgICAgICAo
d2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRI
b3N0LnByb3RvdHlwZS5nZXQgcGxhdGZvcm1WZXJzaW9uTmFtZSk6CisgICAgICAgICh3aW5kb3cu
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJv
dG90eXBlLmdldCBzdXBwb3J0c0RpYWdub3N0aWNMb2dnaW5nKToKKyAgICAgICAgKHdpbmRvdy5J
bnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90
b3R5cGUuZ2V0IHN1cHBvcnRzV2ViRXh0ZW5zaW9ucyk6CisgICAgICAgICh3aW5kb3cuSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBl
LmNvbm5lY3QpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93
c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5sb2FkZWQpOgorICAgICAgICAod2lu
ZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0
LnByb3RvdHlwZS5jbG9zZVdpbmRvdyk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLnJlb3Blbik6
CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0
b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0
b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUu
YnJpbmdUb0Zyb250KToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0ku
QnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuaW5zcGVjdGVkVVJMQ2hhbmdl
ZCk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNw
ZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLnNob3dDZXJ0aWZpY2F0ZSk6CisgICAgICAgICh3
aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhv
c3QucHJvdG90eXBlLnNldFpvb21GYWN0b3IpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZy
b250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS56b29t
RmFjdG9yKToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nl
ckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuc2V0Rm9yY2VkQXBwZWFyYW5jZSk6Cisg
ICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JG
cm9udGVuZEhvc3QucHJvdG90eXBlLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOgorICAg
ICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJv
bnRlbmRIb3N0LnByb3RvdHlwZS5zdXBwb3J0c0RvY2tTaWRlKToKKyAgICAgICAgKHdpbmRvdy5J
bnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90
b3R5cGUucmVxdWVzdERvY2tTaWRlKToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuc2V0QXR0YWNo
ZWRXaW5kb3dIZWlnaHQpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5X
SS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5zZXRBdHRhY2hlZFdpbmRv
d1dpZHRoKToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nl
ckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuc2V0U2hlZXRSZWN0KToKKyAgICAgICAg
KHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5k
SG9zdC5wcm90b3R5cGUuc3RhcnRXaW5kb3dEcmFnKToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0
b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUu
bW92ZVdpbmRvd0J5KToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0ku
QnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuY29weVRleHQpOgorICAgICAg
ICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRl
bmRIb3N0LnByb3RvdHlwZS5raWxsVGV4dCk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLm9wZW5V
UkxFeHRlcm5hbGx5KToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0ku
QnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuY2FuU2F2ZSk6CisgICAgICAg
ICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVu
ZEhvc3QucHJvdG90eXBlLnNhdmUpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5k
SG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5hcHBlbmQpOgor
ICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9y
RnJvbnRlbmRIb3N0LnByb3RvdHlwZS5jbG9zZSk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLnNo
b3dDb250ZXh0TWVudSk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJ
LkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLmRpc3BhdGNoRXZlbnRBc0Nv
bnRleHRNZW51RXZlbnQpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5X
SS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5zZW5kTWVzc2FnZVRvQmFj
a2VuZCk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJ
bnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLnVuYnVmZmVyZWRMb2cpOgorICAgICAgICAo
d2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRI
b3N0LnByb3RvdHlwZS5pc1VuZGVyVGVzdCk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLmlzRXhw
ZXJpbWVudGFsQnVpbGQpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdC5X
SS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5iZWVwKToKKyAgICAgICAg
KHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5k
SG9zdC5wcm90b3R5cGUuaW5zcGVjdEluc3BlY3Rvcik6CisgICAgICAgICh3aW5kb3cuSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBl
LmlzQmVpbmdJbnNwZWN0ZWQpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9z
dC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5zZXRBbGxvd3NJbnNw
ZWN0aW5nSW5zcGVjdG9yKToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
V0kuQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUubG9nRGlhZ25vc3RpY0V2
ZW50KToKKyAgICAgICAgKHdpbmRvdy5JbnNwZWN0b3JGcm9udGVuZEhvc3QuV0kuQnJvd3Nlcklu
c3BlY3RvckZyb250ZW5kSG9zdC5wcm90b3R5cGUuZGlkU2hvd0V4dGVuc2lvblRhYik6CisgICAg
ICAgICh3aW5kb3cuSW5zcGVjdG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9u
dGVuZEhvc3QucHJvdG90eXBlLmRpZEhpZGVFeHRlbnNpb25UYWIpOgorICAgICAgICAod2luZG93
Lkluc3BlY3RvckZyb250ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnBy
b3RvdHlwZS5kaWROYXZpZ2F0ZUV4dGVuc2lvblRhYik6CisgICAgICAgICh3aW5kb3cuSW5zcGVj
dG9yRnJvbnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBl
Lmluc3BlY3RlZFBhZ2VEaWROYXZpZ2F0ZSk6CisgICAgICAgICh3aW5kb3cuSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LldJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QucHJvdG90eXBlLmV2YWx1
YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIpOgorICAgICAgICAod2luZG93Lkluc3BlY3RvckZyb250
ZW5kSG9zdC5XSS5Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LnByb3RvdHlwZS5fc2VuZFBl
bmRpbmdNZXNzYWdlc1RvQmFja2VuZElmTmVlZGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKFdJLmxvYWRlZCk6IENvbm5lY3QgdGhlIGluc3BlY3Rv
ciBob3N0IGlmIG5lZWRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDogQWRk
IEJhc2UvQnJvd3Nlckluc3BlY3RvckZyb250ZW5kSG9zdC5qcy4KKwogMjAyMi0wMy0wMiAgTWlj
aGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3B5IFdlYktpdCBm
cmFtZXdvcmtzIGFuZCBYUEMgcHJvY2Vzc2VzIHRvIFNlY29uZGFyeSBQYXRoCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggYjY2ZWQ0NGI5MjljLi43ZWIyNDExNGUz
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEsMyArMSw0
IEBACiBzZXQoV2ViSW5zcGVjdG9yVUlfUkVTT1VSQ0VTX0RJUiAiJHtXZWJLaXQyR3RrX0RFUklW
RURfU09VUkNFU19ESVJ9L0luc3BlY3RvclJlc291cmNlcyIpCiBzZXQoV2ViSW5zcGVjdG9yVUlf
TE9DQUxJWkVEX1NUUklOR1NfRElSICIke1dlYkluc3BlY3RvclVJX1JFU09VUkNFU19ESVJ9L1dl
Ykluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2oiKQogCitzZXQoSU5DTFVERV9JTlNQ
RUNUT1JfRlJPTlRFTkRfSE9TVCBZRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvUGxhdGZvcm1XUEUu
Y21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iMzE3ZTkwZjY2
NzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvUGxhdGZvcm1XUEUu
Y21ha2UKQEAgLTAsMCArMSBAQAorc2V0KElOQ0xVREVfSU5TUEVDVE9SX0ZST05URU5EX0hPU1Qg
WUVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1NjcmlwdHMvY29tYmluZS1y
ZXNvdXJjZXMucGwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvU2NyaXB0cy9jb21iaW5lLXJlc291
cmNlcy5wbAppbmRleCAxODExMzBmZTk3ZDAuLjczZGZkMDE3NDNkMyAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1NjcmlwdHMvY29tYmluZS1yZXNvdXJjZXMucGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1NjcmlwdHMvY29tYmluZS1yZXNvdXJjZXMucGwKQEAgLTMwLDYg
KzMwLDcgQEAgdXNlIEZpbGU6OkJhc2VuYW1lOwogdXNlIEZpbGU6OlBhdGg7CiAKIG91ciAkaW5w
dXREaXJlY3Rvcnk7CitvdXIgJGlucHV0U2NyaXB0TmFtZTsKIG91ciAkb3V0cHV0RGlyZWN0b3J5
Owogb3VyICRvdXRwdXRTY3JpcHROYW1lOwogb3VyICRvdXRwdXRTdHlsZXNoZWV0TmFtZTsKQEAg
LTQ3LDYgKzQ4LDcgQEAgR2V0T3B0aW9ucygnb3V0cHV0LWRpcj1zJyA9PiBcJG91dHB1dERpcmVj
dG9yeSwKICAgICAgICAgICAgJ2lucHV0LWRpcj1zJyA9PiBcJGlucHV0RGlyZWN0b3J5LAogICAg
ICAgICAgICAnaW5wdXQtaHRtbC1kaXI9cycgPT4gXCRodG1sRGlyZWN0b3J5LAogICAgICAgICAg
ICAnaW5wdXQtaHRtbD1zJyA9PiBcJGh0bWxGaWxlLAorICAgICAgICAgICAnaW5wdXQtc2NyaXB0
LW5hbWU9cycgPT4gXCRpbnB1dFNjcmlwdE5hbWUsCiAgICAgICAgICAgICd2ZXJib3NlJyA9PiBc
JHZlcmJvc2UsCiAgICAgICAgICAgICdzdHJpcCcgPT4gXCRzdHJpcCwKICAgICAgICAgICAgJ3Nr
aXAtY29uY2F0ZW5hdGUtdGFnJyA9PiBcJHNraXBDb25jYXRlbmF0ZVRhZyk7CkBAIC0xMjEsNyAr
MTIzLDEzIEBAIHN1YiBzdHJpcEluY2x1ZGVkRmlsZXNNYXRjaGluZ1BhdHRlcm4oJCkKIH0KIAog
bXkgJGlucHV0RGlyZWN0b3J5UGF0dGVybiA9ICIoPyFXZWJLaXRBZGRpdGlvbnNcLykoPyFFeHRl
cm5hbFwvKSg/IVdvcmtlcnNcLykoPyFOb25NaW5pZmllZFwvKVteXCJdKiI7Ci0kaW5wdXREaXJl
Y3RvcnlQYXR0ZXJuID0gJGlucHV0RGlyZWN0b3J5IC4gIlwvW15cIl0qIiBpZiAkaW5wdXREaXJl
Y3Rvcnk7CitpZiAoJGlucHV0RGlyZWN0b3J5KSB7CisgICAgaWYgKCRpbnB1dFNjcmlwdE5hbWUp
IHsKKyAgICAgICAgJGlucHV0RGlyZWN0b3J5UGF0dGVybiA9ICRpbnB1dERpcmVjdG9yeSAuICJc
LyIgLiAkaW5wdXRTY3JpcHROYW1lOworICAgIH0gZWxzZSB7CisgICAgICAgICRpbnB1dERpcmVj
dG9yeVBhdHRlcm4gPSAkaW5wdXREaXJlY3RvcnkgLiAiXC9bXlwiXSoiOworICAgIH0KK30KIAog
aWYgKGRlZmluZWQoJHN0cmlwKSkgewogICAgIHN0cmlwSW5jbHVkZWRGaWxlc01hdGNoaW5nUGF0
dGVybigiPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCIoJGlucHV0RGlyZWN0b3J5UGF0
dGVybilcIj4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9TY3JpcHRzL2Nv
cHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnBsIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Nj
cmlwdHMvY29weS11c2VyLWludGVyZmFjZS1yZXNvdXJjZXMucGwKaW5kZXggNjUwODAzYjAwNGYz
Li5hMTQ3ZGE5MzI5Y2MgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9TY3JpcHRz
L2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnBsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9TY3JpcHRzL2NvcHktdXNlci1pbnRlcmZhY2UtcmVzb3VyY2VzLnBsCkBAIC0xODUsNiAr
MTg1LDcgQEAgY29weShGaWxlOjpTcGVjLT5jYXRmaWxlKCRFTlZ7J0pBVkFTQ1JJUFRDT1JFX1BS
SVZBVEVfSEVBREVSU19ESVInfSwgJ0luc3BlY3RvckIKIG15ICRmb3JjZVRvb2xJbnN0YWxsID0g
ZGVmaW5lZCAkRU5WeydGT1JDRV9UT09MX0lOU1RBTEwnfSAmJiAoJEVOVnsnRk9SQ0VfVE9PTF9J
TlNUQUxMJ30gZXEgJ1lFUycpOwogbXkgJHNob3VsZENvbWJpbmVNYWluID0gZGVmaW5lZCAkRU5W
eydDT01CSU5FX0lOU1BFQ1RPUl9SRVNPVVJDRVMnfSAmJiAoJEVOVnsnQ09NQklORV9JTlNQRUNU
T1JfUkVTT1VSQ0VTJ30gZXEgJ1lFUycpOwogbXkgJHNob3VsZENvbWJpbmVUZXN0ID0gZGVmaW5l
ZCAkRU5WeydDT01CSU5FX1RFU1RfUkVTT1VSQ0VTJ30gJiYgKCRFTlZ7J0NPTUJJTkVfVEVTVF9S
RVNPVVJDRVMnfSBlcSAnWUVTJyk7CitteSAkc2hvdWxkSW5jbHVkZUluc3BlY3RvckZyb250ZW5k
SG9zdCA9IGRlZmluZWQgJEVOVnsnSU5DTFVERV9JTlNQRUNUT1JfRlJPTlRFTkRfSE9TVCd9ICYm
ICgkRU5WeydJTkNMVURFX0lOU1BFQ1RPUl9GUk9OVEVORF9IT1NUJ30gZXEgJ1lFUycpOwogbXkg
JGNvbWJpbmVSZXNvdXJjZXNDbWQgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRzY3JpcHRzUm9vdCwg
J2NvbWJpbmUtcmVzb3VyY2VzLnBsJyk7CiAKIGlmICgkZm9yY2VUb29sSW5zdGFsbCkgewpAQCAt
MjAxLDYgKzIwMiwxMCBAQCBpZiAoISRzaG91bGRDb21iaW5lTWFpbikgewogICAgICMgS2VlcCB0
aGUgZmlsZXMgc2VwYXJhdGUgZm9yIGVuZ2luZWVyaW5nIGJ1aWxkcy4gQ29weSB0aGVzZSBiZWZv
cmUgYWx0ZXJpbmcgTWFpbi5odG1sCiAgICAgIyBpbiBvdGhlciB3YXlzLCBzdWNoIGFzIGNvbWJp
bmluZyBmb3IgV2ViS2l0QWRkaXRpb25zIG9yIGlubGluaW5nIGZpbGVzLgogICAgIGRpdHRvKCR1
aVJvb3QsICR0YXJnZXRSZXNvdXJjZVBhdGgpOworCisgICAgaWYgKCEkc2hvdWxkSW5jbHVkZUlu
c3BlY3RvckZyb250ZW5kSG9zdCkgeworICAgICAgICB1bmxpbmsgRmlsZTo6U3BlYy0+Y2F0Zmls
ZSgkdGFyZ2V0UmVzb3VyY2VQYXRoLCAnQmFzZScsICdCcm93c2VySW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmpzJyk7CisgICAgfQogfQogCiAjIEFsd2F5cyByZWZlciB0byB0aGUgY29weSBpbiBkZXJp
dmVkIHNvdXJjZXMgc28gdGhlIG9yZGVyIG9mIHJlcGxhY2VtZW50cyBkb2VzIG5vdCBtYXR0ZXIu
CkBAIC0yMDgsNiArMjEzLDE3IEBAIG1ha2VfcGF0aCgkZGVyaXZlZFNvdXJjZXNEaXIpOwogbXkg
JGRlcml2ZWRTb3VyY2VzTWFpbkhUTUwgPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRkZXJpdmVkU291
cmNlc0RpciwgJ01haW4uaHRtbCcpOwogY29weShGaWxlOjpTcGVjLT5jYXRmaWxlKCR1aVJvb3Qs
ICdNYWluLmh0bWwnKSwgRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGVyaXZlZFNvdXJjZXNEaXIsICdN
YWluLmh0bWwnKSkgb3IgZGllICJDb3B5IGZhaWxlZDogJCEiOwogCitpZiAoISRzaG91bGRJbmNs
dWRlSW5zcGVjdG9yRnJvbnRlbmRIb3N0KSB7CisgICAgc3lzdGVtKCRwZXJsLCAkY29tYmluZVJl
c291cmNlc0NtZCwKKyAgICAgICAgJy0taW5wdXQtZGlyJywgJ0Jhc2UnLAorICAgICAgICAnLS1p
bnB1dC1odG1sJywgJGRlcml2ZWRTb3VyY2VzTWFpbkhUTUwsCisgICAgICAgICctLWlucHV0LWh0
bWwtZGlyJywgJHVpUm9vdCwKKyAgICAgICAgJy0taW5wdXQtc2NyaXB0LW5hbWUnLCAnQnJvd3Nl
ckluc3BlY3RvckZyb250ZW5kSG9zdC5qcycsCisgICAgICAgICctLWRlcml2ZWQtc291cmNlcy1k
aXInLCAkZGVyaXZlZFNvdXJjZXNEaXIsCisgICAgICAgICctLW91dHB1dC1kaXInLCAkZGVyaXZl
ZFNvdXJjZXNEaXIsCisgICAgICAgICctLXN0cmlwJyk7Cit9CisKIHN1YiB3ZWJJbnNwZWN0b3JV
SUFkZGl0aW9uc0RpcigpIHsKICAgICBteSAkd2Via2l0QWRkaXRpb25zRGlyOwogICAgIGlmIChk
ZWZpbmVkICRFTlZ7J0JVSUxUX1BST0RVQ1RTX0RJUid9KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0Jyb3dzZXJJbnNwZWN0b3JGcm9udGVu
ZEhvc3QuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0Jyb3dz
ZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi42ZGMzMjU2MThmNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0Jyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3Qu
anMKQEAgLTAsMCArMSwzMjYgQEAKK2lmICghd2luZG93Lkluc3BlY3RvckZyb250ZW5kSG9zdCkg
eworICAgIFdJLkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QgPSBjbGFzcyBCcm93c2VySW5z
cGVjdG9yRnJvbnRlbmRIb3N0IHsKKworICAgICAgICBjb25zdHJ1Y3RvcigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdNZXNzYWdlcyA9IG51bGw7CisgICAgICAgICAgICB0
aGlzLl9zb2NrZXQgPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgLy8gUHVibGljCisKKyAg
ICAgICAgZ2V0IHN1cHBvcnRzU2hvd0NlcnRpZmljYXRlKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgZ2V0IGlzUmVtb3RlKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBn
ZXQgaW5zcGVjdGlvbkxldmVsKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIDE7Cisg
ICAgICAgIH0KKworICAgICAgICBnZXQgZGVidWdnYWJsZUluZm8oKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAgIGRlYnVnZ2FibGVUeXBlOiAid2ViLXBh
Z2UiLAorICAgICAgICAgICAgICAgIHRhcmdldFBsYXRmb3JtTmFtZTogdW5kZWZpbmVkLAorICAg
ICAgICAgICAgICAgIHRhcmdldEJ1aWxkVmVyc2lvbjogdW5kZWZpbmVkLAorICAgICAgICAgICAg
ICAgIHRhcmdldFByb2R1Y3RWZXJzaW9uOiB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgdGFy
Z2V0SXNTaW11bGF0b3I6IGZhbHNlLAorICAgICAgICAgICAgfTsKKyAgICAgICAgfQorCisgICAg
ICAgIGdldCBwb3J0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICJ1bmtub3duIjsK
KyAgICAgICAgfQorCisgICAgICAgIGdldCBwbGF0Zm9ybSgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnN0IG1hdGNoID0gbmF2aWdhdG9yLnBsYXRmb3JtLm1hdGNoKC9tYWN8d2lufGxpbnV4
L2kpOworICAgICAgICAgICAgaWYgKG1hdGNoKSB7CisgICAgICAgICAgICAgICAgY29uc3QgcGxh
dGZvcm0gPSBtYXRjaFswXS50b0xvd2VyQ2FzZSgpOworICAgICAgICAgICAgICAgIGlmIChwbGF0
Zm9ybSA9PSAid2luIikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ3aW5kb3dzIjsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm07CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICByZXR1cm4gInVua25vd24iOworICAgICAgICB9CisKKyAgICAgICAgZ2V0IHBsYXRmb3JtVmVy
c2lvbk5hbWUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0K
KworICAgICAgICBnZXQgc3VwcG9ydHNEaWFnbm9zdGljTG9nZ2luZygpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGdldCBzdXBwb3J0
c1dlYkV4dGVuc2lvbnMoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKworICAgICAgICBjb25uZWN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgY29u
c3QgcXVlcnlQYXJhbXMgPSBwYXJzZVF1ZXJ5U3RyaW5nKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gu
c3Vic3RyaW5nKDEpKTsKKyAgICAgICAgICAgIGxldCB1cmwgPSAid3MiIGluIHF1ZXJ5UGFyYW1z
ID8gIndzOi8vIiArIHF1ZXJ5UGFyYW1zLndzIDogbnVsbDsKKyAgICAgICAgICAgIGlmICghdXJs
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgY29uc3Qgc29ja2V0ID0g
bmV3IFdlYlNvY2tldCh1cmwpOworICAgICAgICAgICAgc29ja2V0LmFkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLCBtZXNzYWdlID0+IEluc3BlY3RvckJhY2tlbmQuZGlzcGF0Y2gobWVzc2FnZS5k
YXRhKSk7CisgICAgICAgICAgICBzb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCBjb25z
b2xlLmVycm9yKTsKKyAgICAgICAgICAgIHNvY2tldC5hZGRFdmVudExpc3RlbmVyKCJvcGVuIiwg
KCkgPT4geyB0aGlzLl9zb2NrZXQgPSBzb2NrZXQ7IH0pOworICAgICAgICAgICAgc29ja2V0LmFk
ZEV2ZW50TGlzdGVuZXIoImNsb3NlIiwgKCkgPT4geworICAgICAgICAgICAgICAgIHRoaXMuX3Nv
Y2tldCA9IG51bGw7CisgICAgICAgICAgICAgICAgd2luZG93LmNsb3NlKCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGxvYWRlZCgpCisgICAgICAgIHsKKyAgICAgICAg
fQorCisgICAgICAgIGNsb3NlV2luZG93KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5f
d2luZG93VmlzaWJsZSA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmVvcGVuKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOworICAgICAgICB9
CisKKyAgICAgICAgcmVzZXQoKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLnJlb3Blbigp
OworICAgICAgICB9CisKKyAgICAgICAgYnJpbmdUb0Zyb250KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdGhpcy5fd2luZG93VmlzaWJsZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBp
bnNwZWN0ZWRVUkxDaGFuZ2VkKHRpdGxlKQorICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVu
dC50aXRsZSA9IHRpdGxlOworICAgICAgICB9CisKKyAgICAgICAgc2hvd0NlcnRpZmljYXRlKGNl
cnRpZmljYXRlKQorICAgICAgICB7CisgICAgICAgICAgICB0aHJvdyAidW5pbXBsZW1lbnRlZCI7
CisgICAgICAgIH0KKworICAgICAgICBzZXRab29tRmFjdG9yKHpvb20pCisgICAgICAgIHsKKyAg
ICAgICAgfQorCisgICAgICAgIHpvb21GYWN0b3IoKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgICAgIHNldEZvcmNlZEFwcGVhcmFuY2UoYXBwZWFy
YW5jZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAibHRyIjsKKyAgICAg
ICAgfQorCisgICAgICAgIHN1cHBvcnRzRG9ja1NpZGUoc2lkZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmVxdWVzdERvY2tTaWRl
KHNpZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRocm93ICJ1bmltcGxlbWVudGVkIjsKKyAg
ICAgICAgfQorCisgICAgICAgIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCkKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICAgICAgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCkK
KyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgc2V0U2hlZXRSZWN0KHgsIHksIHdpZHRo
LCBoZWlnaHQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXJ0V2luZG93RHJh
ZygpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIG1vdmVXaW5kb3dCeSh4LCB5KQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBjb3B5VGV4dCh0ZXh0KQorICAgICAgICB7
CisgICAgICAgICAgICB0aGlzLmtpbGxUZXh0KHRleHQsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAg
fQorCisgICAgICAgIGtpbGxUZXh0KHRleHQsIHNob3VsZFByZXBlbmRUb0tpbGxSaW5nLCBzaG91
bGRTdGFydE5ld1NlcXVlbmNlKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBGSVhNRTogcmVz
dG9yZSBmb2N1cyB0byBwcmV2aW91c2x5IGZvY3VzZWQgZWxlbWVudC4KKyAgICAgICAgICAgIGxl
dCB0ZXh0YXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIik7CisgICAgICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRhcmVhKTsKKworICAgICAgICAgICAg
aWYgKHNob3VsZFN0YXJ0TmV3U2VxdWVuY2UpIHsKKyAgICAgICAgICAgICAgICB0ZXh0YXJlYS50
ZXh0Q29udGVudCA9IHRleHQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHRleHRhcmVhLnNlbGVjdCgpOworICAgICAgICAgICAgICAgIGlmICghZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoInBhc3RlIikpCisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkJyb3dz
ZXJJbnNwZWN0b3JGcm9udGVuZEhvc3Qua2lsbFRleHQ6IGNvdWxkIG5vdCBwYXN0ZSBmcm9tIGNs
aXBib2FyZCIpOworCisgICAgICAgICAgICAgICAgaWYgKHNob3VsZFByZXBlbmRUb0tpbGxSaW5n
KQorICAgICAgICAgICAgICAgICAgICB0ZXh0YXJlYS50ZXh0Q29udGVudCA9IHRleHQgKyB0ZXh0
YXJlYS50ZXh0Q29udGVudDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHRleHRhcmVhLnRleHRDb250ZW50ID0gdGV4dGFyZWEudGV4dENvbnRlbnQgKyB0ZXh0Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZXh0YXJlYS5zZWxlY3QoKTsKKworICAgICAg
ICAgICAgaWYgKCFkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpKQorICAgICAgICAgICAgICAg
IGNvbnNvbGUuZXJyb3IoIkJyb3dzZXJJbnNwZWN0b3JGcm9udGVuZEhvc3QuY29weVRleHQ6IGNv
dWxkIG5vdCBjb3B5IHRvIGNsaXBib2FyZCIpOworCisgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LnJlbW92ZUNoaWxkKHRleHRhcmVhKTsKKyAgICAgICAgfQorCisgICAgICAgIG9wZW5VUkxFeHRl
cm5hbGx5KHVybCkKKyAgICAgICAgeworICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLCAiX2Js
YW5rIik7CisgICAgICAgIH0KKworICAgICAgICBjYW5TYXZlKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgc2F2ZSh1cmwsIGNvbnRl
bnQsIGJhc2U2NGVuY29kZWQsIGZvcmNlU2F2ZUFzKQorICAgICAgICB7CisgICAgICAgICAgICAv
LyBGSVhNRTogQ3JlYXRlIGEgQmxvYiBmcm9tIHRoZSBjb250ZW50LCBnZXQgYW4gb2JqZWN0IFVS
TCwgb3BlbiBpdCB0byB0cmlnZ2VyIGEgZG93bmxvYWQuCisgICAgICAgIH0KKworICAgICAgICBh
cHBlbmQodXJsLCBjb250ZW50KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBjbG9z
ZSh1cmwpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHNob3dDb250ZXh0TWVudShl
dmVudCwgaXRlbXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRleHRNZW51ID0g
V0kuU29mdENvbnRleHRNZW51KGl0ZW1zKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRleHRNZW51
LnNob3coZXZlbnQpOworICAgICAgICB9CisKKyAgICAgICAgZGlzcGF0Y2hFdmVudEFzQ29udGV4
dE1lbnVFdmVudChldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRl
eHRNZW51KQorICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRleHRNZW51LnNob3coZXZlbnQpOwor
ICAgICAgICB9CisKKyAgICAgICAgc2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKCF0aGlzLl9zb2NrZXQpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXRoaXMuX3BlbmRpbmdNZXNzYWdlcykKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVu
ZGluZ01lc3NhZ2VzID0gW107CisgICAgICAgICAgICAgICAgdGhpcy5fcGVuZGluZ01lc3NhZ2Vz
LnB1c2gobWVzc2FnZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRo
aXMuX3NlbmRQZW5kaW5nTWVzc2FnZXNUb0JhY2tlbmRJZk5lZWRlZCgpOworICAgICAgICAgICAg
ICAgIHRoaXMuX3NvY2tldC5zZW5kKG1lc3NhZ2UpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgdW5idWZmZXJlZExvZyhtZXNzYWdlKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb25zb2xlLmxvZyhtZXNzYWdlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlzVW5kZXJUZXN0
KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAg
ICAgICAgaXNFeHBlcmltZW50YWxCdWlsZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGJlZXAoKQorICAgICAgICB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHVzaW5nIEF1ZGlvL0F1ZGlvQ29udGV4dC4KKyAgICAg
ICAgfQorCisgICAgICAgIGluc3BlY3RJbnNwZWN0b3IoKQorICAgICAgICB7CisgICAgICAgICAg
ICB0aHJvdyAidW5pbXBsZW1lbnRlZCI7CisgICAgICAgIH0KKworICAgICAgICBpc0JlaW5nSW5z
cGVjdGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgc2V0QWxsb3dzSW5zcGVjdGluZ0luc3BlY3RvcihhbGxvdykKKyAgICAgICAg
eworICAgICAgICB9CisKKyAgICAgICAgbG9nRGlhZ25vc3RpY0V2ZW50KGV2ZW50TmFtZSwgY29u
dGVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhyb3cgInVuaW1wbGVtZW50ZWQiOworICAg
ICAgICB9CisKKyAgICAgICAgZGlkU2hvd0V4dGVuc2lvblRhYihleHRlbnNpb25JRCwgZXh0ZW5z
aW9uVGFiSUQsIGV4dGVuc2lvbkZyYW1lKQorICAgICAgICB7CisgICAgICAgICAgICB0aHJvdyAi
dW5pbXBsZW1lbnRlZCI7CisgICAgICAgIH0KKworICAgICAgICBkaWRIaWRlRXh0ZW5zaW9uVGFi
KGV4dGVuc2lvbklELCBleHRlbnNpb25UYWJJRCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhy
b3cgInVuaW1wbGVtZW50ZWQiOworICAgICAgICB9CisKKyAgICAgICAgZGlkTmF2aWdhdGVFeHRl
bnNpb25UYWIoZXh0ZW5zaW9uSUQsIGV4dGVuc2lvblRhYklELCBuZXdVUkwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHRocm93ICJ1bmltcGxlbWVudGVkIjsKKyAgICAgICAgfQorCisgICAgICAg
IGluc3BlY3RlZFBhZ2VEaWROYXZpZ2F0ZShuZXdVUkwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHRocm93ICJ1bmltcGxlbWVudGVkIjsKKyAgICAgICAgfQorCisgICAgICAgIGV2YWx1YXRlU2Ny
aXB0SW5FeHRlbnNpb25UYWIoZXh0ZW5zaW9uRnJhbWUsIHNjcmlwdFNvdXJjZSkKKyAgICAgICAg
eworICAgICAgICAgICAgdGhyb3cgInVuaW1wbGVtZW50ZWQiOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gUHJpdmF0ZQorCisgICAgICAgIF9zZW5kUGVuZGluZ01lc3NhZ2VzVG9CYWNrZW5kSWZO
ZWVkZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodGhpcy5fcGVuZGluZ01lc3NhZ2Vz
KSB7CisgICAgICAgICAgICAgICAgdGhpcy5fcGVuZGluZ01lc3NhZ2VzLmZvckVhY2gobWVzc2Fn
ZSA9PiB0aGlzLl9zb2NrZXQuc2VuZChtZXNzYWdlKSk7CisgICAgICAgICAgICAgICAgdGhpcy5f
cGVuZGluZ01lc3NhZ2VzID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07
CisKKyAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QgPSBuZXcgV0kuQnJvd3Nlckluc3BlY3RvckZy
b250ZW5kSG9zdCgpOworCisgICAgV0kuZG9udExvY2FsaXplVXNlckludGVyZmFjZSA9IHRydWU7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L01haW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4u
anMKaW5kZXggODlkODUyYzk2MDA4Li5iMjU1MjRhZDhkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTUwLDYgKzUwLDkgQEAg
V0kuTGF5b3V0RGlyZWN0aW9uID0gewogCiBXSS5sb2FkZWQgPSBmdW5jdGlvbigpCiB7CisgICAg
aWYgKEluc3BlY3RvckZyb250ZW5kSG9zdC5jb25uZWN0KQorICAgICAgICBJbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY29ubmVjdCgpOworCiAgICAgLy8gUmVnaXN0ZXIgb2JzZXJ2ZXJzIGZvciBldmVu
dHMgZnJvbSB0aGUgSW5zcGVjdG9yQmFja2VuZC4KICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckFuaW1hdGlvbkRpc3BhdGNoZXIpCiAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVn
aXN0ZXJBbmltYXRpb25EaXNwYXRjaGVyKFdJLkFuaW1hdGlvbk9ic2VydmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA2ZGU1ODBlYTk2
ZjQuLjY5ZGFmNjM1YjI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01haW4uaHRtbApAQCAtMzA3LDYgKzMwNyw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkV4dGVy
bmFsL3RocmVlLmpzL09yYml0Q29udHJvbHMuanMiPjwvc2NyaXB0PgogCiAgICAgPHNjcmlwdCBz
cmM9IkJhc2UvV2ViSW5zcGVjdG9yLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQmFz
ZS9Ccm93c2VySW5zcGVjdG9yRnJvbnRlbmRIb3N0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iQmFzZS9QbGF0Zm9ybS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkJhc2Uv
RGVib3VuY2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9EZWJ1Z2dhYmxl
VHlwZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkwYjYzNmQ0OGFmOS4uYWY5MDI2Mzg5ZTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIyLTAzLTA4ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFdlYiBJbnNw
ZWN0b3I6IG1ha2UgaXQgcG9zc2libGUgdG8gdXNlIHRoZSByZW1vdGUgaW5zcGVjdG9yIGZyb20g
b3RoZXIgYnJvd3NlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNzYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE1pY2hhZWwgQ2F0YW56YXJvLgor
CisgICAgICAgIFRoaXMgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHNpbmNlIHdlIHN3aXRjaGVkIHRv
IHRoZSBuZXcgcmVtb3RlIGluc3BlY3Rvci4gV2UgZG9uJ3Qgd2FudCB0byBicmluZyB0aGUgbGVn
YWN5CisgICAgICAgIHJlbW90ZSBpbnNwZWN0b3IgYmFjaywgYnV0IGl0IHNob3VsZCBiZSBwb3Nz
aWJsZSB0byB1c2UgYSBtaXhlZCBhcHByb2FjaCwgdXNpbmcgYSBXZWJTb2NrZXQgZm9yIHRoZSBp
bnNwZWN0b3IKKyAgICAgICAgcHJvdG9jb2wgY29tbXVuaWNhdGlvbiwgYnV0IHN0aWxsIHVzaW5n
IHRoZSBuZXcgcmVtb3RlIGluc3BlY3RvciBjb2RlLiBUaGlzIHBhdGNoIGFkZHMgYSBzaW1wbGUg
SFRUUCBicm93c2VyIHRvCisgICAgICAgIHNlcnZlciB0aGUgaW5zcGVjdG9yIHJlc291cmNlcyBh
bmQgb3BlbiBXZWJTb2NrZXQgY29ubmVjdGlvbiB0byB0aGUgaW5zcGVjdG9yLiBJdCBwcmV0ZW5k
cyB0byBiZSBhIHJlbW90ZQorICAgICAgICBpbnNwZWN0b3IgY2xpZW50LCBzbyB3ZSBkb24ndCBu
ZWVkIGFueSBjaGFuZ2UgaW4gdGhlIGN1cnJlbnQgcmVtb3RlIGluc3BlY3RvciBpbXBsZW1lbnRh
dGlvbi4gVGhlIHNlcnZlciBpcyBvbmx5CisgICAgICAgIHN0YXJ0ZWQgd2hlbiB0aGUgZW52IHZh
ciBXRUJLSVRfSU5TUEVDVE9SX0hUVFBfU0VSVkVSIGlzIHByZXNlbnQsIGFuZCB0aGUgaW5zcGVj
dG9yIHNlcnZlciBpcyBzdGFydGVkIGZvciB0aGUKKyAgICAgICAgc2FtZSBob3N0IGJ1dCB1c2lu
ZyBhIGZyZWUgcG9ydC4KKworICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAq
IFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIFNvdXJjZXNXUEUudHh0OgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbml0aWFsaXplLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
aW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcik6IFN0YXJ0IHRoZSBIVFRQIHNlcnZlciBp
ZiB0aGUgZW52IHZhciBXRUJLSVRfSU5TUEVDVE9SX0hUVFBfU0VSVkVSIGlzIHByZXNlbnQuCisg
ICAgICAgIChXZWJLaXQ6OndlYmtpdEluaXRpYWxpemUpOiBKdXN0IGNhbGwgaW5pdGlhbGl6ZVJl
bW90ZUluc3BlY3RvclNlcnZlcigpLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdCk6IFVzZSBSZW1vdGVJ
bnNwZWN0b3JDbGllbnQ6OmJ1aWxkVGFyZ2V0TGlzdFBhZ2UoKS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KTogT25seSBjYWxsIFJlbW90ZUlu
c3BlY3RvclByb3h5Ojpsb2FkKCkgZm9yIFVJIGluc3BlY3RvciB0eXBlLgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbnNwZWN0b3JDbGllbnQ6OmJ1aWxkVGFyZ2V0TGlzdFBhZ2UgY29uc3QpOiBC
dWlsZCB0aGUgdGFyZ2V0IGxpc3QgcGFnZSwgdXNpbmcgbWVzc2FnZSBoYW5kbGVycworICAgICAg
ICBmb3IgVUkgaW5zcGVjdG9yIGFuZCB3aW5kb3cub3BlbiBmb3IgdGhlIEhUVFAgaW5zcGVjdG9y
LgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGll
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50Ojp0YXJnZXRzIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3Rl
SW5zcGVjdG9ySFRUUFNlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJ
bnNwZWN0b3JIVFRQU2VydmVyOjpzaW5nbGV0b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVyLmg6IEFkZGVkLgorCiAyMDIyLTAz
LTA5ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXVtXUEVdIFN0b3AgdXNpbmcgdGhlIGVudiB2YXIgV0VCS0lUX0lOU1BFQ1RPUl9TRVJW
RVIgdG8gY29ubmVjdCB0byB0aGUgaW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRl
eCA1Mjk2NDQ2NTVlMDEuLjkwM2ExZTBjN2E4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV1BFLmNtYWtlCkBA
IC0yOTcsNiArMjk3LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMK
ICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2dsaWIiCiAgICAgIiR7V0VCS0lUX0RJ
Un0vVUlQcm9jZXNzL0FQSS93cGUiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MiCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0luc3BlY3Rvci9n
bGliIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9nZW9jbHVlIgogICAgICIke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9nc3RyZWFtZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNz
L2xpbnV4IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggYmU5MmE0NWRkNmI4Li5jYmM0YjVlMGEyYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtMjI1LDYgKzIyNSw3IEBAIFVJUHJvY2Vzcy9HYW1lcGFk
L21hbmV0dGUvVUlHYW1lcGFkUHJvdmlkZXJNYW5ldHRlLmNwcAogVUlQcm9jZXNzL2dlb2NsdWUv
R2VvY2x1ZUdlb2xvY2F0aW9uUHJvdmlkZXIuY3BwCiAKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xp
Yi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCitVSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVt
b3RlSW5zcGVjdG9ySFRUUFNlcnZlci5jcHAKIAogVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1dl
Ykluc3BlY3RvclVJUHJveHlHdGsuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAppbmRleCBlYmEwM2M4OGJj
NGQuLmNjNzg3NWU1MWEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CkBAIC0yMDYsNiArMjA2LDkgQEAg
VUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAogVUlQcm9jZXNzL2dsaWIvV2Vi
UHJvY2Vzc1Byb3h5R0xpYi5jcHAKIFVJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGli
LmNwcCBAbm8tdW5pZnkKIAorVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3Rv
ckNsaWVudC5jcHAKK1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JIVFRQ
U2VydmVyLmNwcAorCiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGli
LmNwcAogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAogVUlQ
cm9jZXNzL0xhdW5jaGVyL2dsaWIvRmxhdHBha0xhdW5jaGVyLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5pdGlhbGl6ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbml0aWFsaXplLmNwcAppbmRleCA5
YTMyNjcyNDJiNTguLjQ4NTc0Y2UxYWUyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5pdGlhbGl6ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5pdGlhbGl6ZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRJbml0aWFsaXplLmgiCiAKKyNp
bmNsdWRlICJSZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViS2l0Mklu
aXRpYWxpemUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JTZXJ2ZXIuaD4KQEAgLTM1
LDI5ICszNiw1MiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKLXN0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIoY29u
c3QgY2hhciogYWRkcmVzcykKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JT
ZXJ2ZXIoKQogewotICAgIGlmIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvclNlcnZlcjo6c2lu
Z2xldG9uKCkuaXNSdW5uaW5nKCkpCisgICAgY29uc3QgY2hhciogYWRkcmVzcyA9IGdfZ2V0ZW52
KCJXRUJLSVRfSU5TUEVDVE9SX1NFUlZFUiIpOworICAgIGNvbnN0IGNoYXIqIGh0dHBBZGRyZXNz
ID0gZ19nZXRlbnYoIldFQktJVF9JTlNQRUNUT1JfSFRUUF9TRVJWRVIiKTsKKyAgICBpZiAoIWFk
ZHJlc3MgJiYgIWh0dHBBZGRyZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWFkZHJl
c3NbMF0pCisgICAgaWYgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0
b24oKS5pc1J1bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgR1VuaXF1ZVB0cjxjaGFy
PiBpbnNwZWN0b3JBZGRyZXNzKGdfc3RyZHVwKGFkZHJlc3MpKTsKLSAgICBjaGFyKiBwb3J0UHRy
ID0gZ19zdHJyc3RyKGluc3BlY3RvckFkZHJlc3MuZ2V0KCksICI6Iik7Ci0gICAgaWYgKCFwb3J0
UHRyKQotICAgICAgICByZXR1cm47CisgICAgYXV0byBwYXJzZUFkZHJlc3MgPSBbXShjb25zdCBj
aGFyKiBhZGRyZXNzLCBndWludDY0JiBwb3J0KSAtPiBHVW5pcXVlUHRyPGNoYXI+IHsKKyAgICAg
ICAgaWYgKCFhZGRyZXNzIHx8ICFhZGRyZXNzWzBdKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbnNwZWN0b3JBZGRyZXNzKGdfc3RyZHVw
KGFkZHJlc3MpKTsKKyAgICAgICAgY2hhciogcG9ydFB0ciA9IGdfc3RycnN0cihpbnNwZWN0b3JB
ZGRyZXNzLmdldCgpLCAiOiIpOworICAgICAgICBpZiAoIXBvcnRQdHIpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgICpwb3J0UHRyID0gJ1wwJzsKLSAgICBwb3J0UHRyKys7Ci0g
ICAgZ3VpbnQ2NCBwb3J0ID0gZ19hc2NpaV9zdHJ0b3VsbChwb3J0UHRyLCBudWxscHRyLCAxMCk7
Ci0gICAgaWYgKCFwb3J0KQorICAgICAgICAqcG9ydFB0ciA9ICdcMCc7CisgICAgICAgIHBvcnRQ
dHIrKzsKKyAgICAgICAgcG9ydCA9IGdfYXNjaWlfc3RydG91bGwocG9ydFB0ciwgbnVsbHB0ciwg
MTApOworICAgICAgICBpZiAoIXBvcnQpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgICAgICByZXR1cm4gaW5zcGVjdG9yQWRkcmVzczsKKyAgICB9OworCisgICAgZ3VpbnQ2NCBp
bnNwZWN0b3JIVFRQUG9ydDsKKyAgICBhdXRvIGluc3BlY3RvckhUVFBBZGRyZXNzID0gcGFyc2VB
ZGRyZXNzKGh0dHBBZGRyZXNzLCBpbnNwZWN0b3JIVFRQUG9ydCk7CisgICAgZ3VpbnQ2NCBpbnNw
ZWN0b3JQb3J0OworICAgIGF1dG8gaW5zcGVjdG9yQWRkcmVzcyA9ICFodHRwQWRkcmVzcyA/IHBh
cnNlQWRkcmVzcyhhZGRyZXNzLCBpbnNwZWN0b3JQb3J0KSA6IEdVbmlxdWVQdHI8Y2hhcj4oKTsK
KyAgICBpZiAoIWluc3BlY3RvckhUVFBBZGRyZXNzICYmICFpbnNwZWN0b3JBZGRyZXNzKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoIUluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVy
OjpzaW5nbGV0b24oKS5zdGFydChpbnNwZWN0b3JBZGRyZXNzLmdldCgpLCBwb3J0KSkKKyAgICBp
ZiAoIUluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yU2VydmVyOjpzaW5nbGV0b24oKS5zdGFydChp
bnNwZWN0b3JBZGRyZXNzID8gaW5zcGVjdG9yQWRkcmVzcy5nZXQoKSA6IGluc3BlY3RvckhUVFBB
ZGRyZXNzLmdldCgpLCBpbnNwZWN0b3JBZGRyZXNzID8gaW5zcGVjdG9yUG9ydCA6IDApKQogICAg
ICAgICByZXR1cm47CiAKICAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6c2V0SW5zcGVj
dG9yU2VydmVyQWRkcmVzcyhhZGRyZXNzKTsKKworICAgIGlmIChodHRwQWRkcmVzcykgeworICAg
ICAgICBpbnNwZWN0b3JBZGRyZXNzLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiJXM6JXUiLCBpbnNw
ZWN0b3JIVFRQQWRkcmVzcy5nZXQoKSwgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JTZXJ2ZXI6
OnNpbmdsZXRvbigpLnBvcnQoKSkpOworICAgICAgICBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
cjo6c2V0SW5zcGVjdG9yU2VydmVyQWRkcmVzcyhpbnNwZWN0b3JBZGRyZXNzLmdldCgpKTsKKyAg
ICAgICAgUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlcjo6c2luZ2xldG9uKCkuc3RhcnQoaW5zcGVj
dG9ySFRUUEFkZHJlc3MuZ2V0KCksIGluc3BlY3RvckhUVFBQb3J0LCBJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvclNlcnZlcjo6c2luZ2xldG9uKCkucG9ydCgpKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OnNldEluc3BlY3RvclNlcnZlckFkZHJlc3Mo
YWRkcmVzcyk7CiB9CiAjZW5kaWYKIApAQCAtNjgsOCArOTIsNyBAQCB2b2lkIHdlYmtpdEluaXRp
YWxpemUoKQogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CiAgICAgICAgIEluaXRp
YWxpemVXZWJLaXQyKCk7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgICAgIGlm
IChjb25zdCBjaGFyKiBhZGRyZXNzID0gZ19nZXRlbnYoIldFQktJVF9JTlNQRUNUT1JfU0VSVkVS
IikpCi0gICAgICAgICAgICBpbml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKGFkZHJlc3Mp
OworICAgICAgICBpbml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKCk7CiAjZW5kaWYKICAg
ICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApp
bmRleCA0ODM4OGQ2OTEwZTMuLjY3YjlmZWRlNmEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5z
cGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtMTI0LDQxICsxMjQsNyBAQCB2b2lkIFJlbW90
ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0KiByZXF1ZQogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVJbnNwZWN0b3JD
bGllbnQ+KHJlcXVlc3RVUkwuaG9zdCgpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3RVUkwucG9ydCgp
LnZhbHVlKCksICp0aGlzKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiAKLSAgICBH
U3RyaW5nKiBodG1sID0gZ19zdHJpbmdfbmV3KAotICAgICAgICAiPGh0bWw+PGhlYWQ+PHRpdGxl
PlJlbW90ZSBpbnNwZWN0b3I8L3RpdGxlPiIKLSAgICAgICAgIjxtZXRhIGh0dHAtZXF1aXY9XCJD
b250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XCIgLz4iCi0g
ICAgICAgICI8c3R5bGU+IgotICAgICAgICAiICBoMSB7IGNvbG9yOiAjYmFiZGI2OyB0ZXh0LXNo
YWRvdzogMCAxcHggMCB3aGl0ZTsgbWFyZ2luLWJvdHRvbTogMDsgfSIKLSAgICAgICAgIiAgaHRt
bCB7IGZvbnQtZmFtaWx5OiAtd2Via2l0LXN5c3RlbS1mb250OyBmb250LXNpemU6IDExcHQ7IGNv
bG9yOiAjMmUzNDM2OyBwYWRkaW5nOiAyMHB4IDIwcHggMCAyMHB4OyBiYWNrZ3JvdW5kLWNvbG9y
OiAjZjZmNmY0OyAiCi0gICAgICAgICIgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0
LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBjb2xvci1zdG9wKDAsICNl
ZWVlZWMpLCBjb2xvci1zdG9wKDEsICNmNmY2ZjQpKTsiCi0gICAgICAgICIgICAgICAgICBiYWNr
Z3JvdW5kLXNpemU6IDEwMCUgNWVtOyBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyB9Igot
ICAgICAgICAiICB0YWJsZSB7IHdpZHRoOiAxMDAlOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNl
OyB9IgotICAgICAgICAiICB0YWJsZSwgdGQgeyBib3JkZXI6IDFweCBzb2xpZCAjZDNkN2NmOyBi
b3JkZXItbGVmdDogbm9uZTsgYm9yZGVyLXJpZ2h0OiBub25lOyB9IgotICAgICAgICAiICBwIHsg
bWFyZ2luLWJvdHRvbTogMzBweDsgfSIKLSAgICAgICAgIiAgdGQgeyBwYWRkaW5nOiAxNXB4OyB9
IgotICAgICAgICAiICB0ZC5kYXRhIHsgd2lkdGg6IDIwMHB4OyB9IgotICAgICAgICAiICAudGFy
Z2V0bmFtZSB7IGZvbnQtd2VpZ2h0OiBib2xkOyB9IgotICAgICAgICAiICAudGFyZ2V0dXJsIHsg
Y29sb3I6ICNiYWJkYjY7IH0iCi0gICAgICAgICIgIHRkLmlucHV0IHsgd2lkdGg6IDY0cHg7IH0i
Ci0gICAgICAgICIgIGlucHV0IHsgd2lkdGg6IDEwMCU7IHBhZGRpbmc6IDhweDsgfSIKLSAgICAg
ICAgIjwvc3R5bGU+IgotICAgICAgICAiPC9oZWFkPjxib2R5PjxoMT5JbnNwZWN0YWJsZSB0YXJn
ZXRzPC9oMT4iKTsKLSAgICBpZiAoY2xpZW50LT50YXJnZXRzKCkuaXNFbXB0eSgpKQotICAgICAg
ICBnX3N0cmluZ19hcHBlbmQoaHRtbCwgIjxwPk5vIHRhcmdldHMgZm91bmQ8L3A+Iik7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIGdfc3RyaW5nX2FwcGVuZChodG1sLCAiPHRhYmxlPiIpOwotICAgICAg
ICBmb3IgKGF1dG8gY29ubmVjdGlvbklEIDogY2xpZW50LT50YXJnZXRzKCkua2V5cygpKSB7Ci0g
ICAgICAgICAgICBmb3IgKGF1dG8mIHRhcmdldCA6IGNsaWVudC0+dGFyZ2V0cygpLmdldChjb25u
ZWN0aW9uSUQpKSB7Ci0gICAgICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihodG1s
LAotICAgICAgICAgICAgICAgICAgICAiPHRib2R5Pjx0cj4iCi0gICAgICAgICAgICAgICAgICAg
ICI8dGQgY2xhc3M9XCJkYXRhXCI+PGRpdiBjbGFzcz1cInRhcmdldG5hbWVcIj4lczwvZGl2Pjxk
aXYgY2xhc3M9XCJ0YXJnZXR1cmxcIj4lczwvZGl2PjwvdGQ+IgotICAgICAgICAgICAgICAgICAg
ICAiPHRkIGNsYXNzPVwiaW5wdXRcIj48aW5wdXQgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiSW5z
cGVjdFwiIG9uY2xpY2s9XCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5pbnNwZWN0b3Iu
cG9zdE1lc3NhZ2UoJyUiIEdfR1VJTlQ2NF9GT1JNQVQgIjolIiBHX0dVSU5UNjRfRk9STUFUICI6
JXMnKTtcIj48L3RkPiIKLSAgICAgICAgICAgICAgICAgICAgIjwvdHI+PC90Ym9keT4iLCB0YXJn
ZXQubmFtZS5kYXRhKCksIHRhcmdldC51cmwuZGF0YSgpLCBjb25uZWN0aW9uSUQsIHRhcmdldC5p
ZCwgdGFyZ2V0LnR5cGUuZGF0YSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBnX3N0cmluZ19hcHBlbmQoaHRtbCwgIjwvdGFibGU+Iik7Ci0gICAgfQotICAgIGdfc3RyaW5n
X2FwcGVuZChodG1sLCAiPC9ib2R5PjwvaHRtbD4iKTsKKyAgICBhdXRvKiBodG1sID0gY2xpZW50
LT5idWlsZFRhcmdldExpc3RQYWdlKFJlbW90ZUluc3BlY3RvckNsaWVudDo6SW5zcGVjdG9yVHlw
ZTo6VUkpOwogICAgIGdzaXplIHN0cmVhbUxlbmd0aCA9IGh0bWwtPmxlbjsKICAgICBHUmVmUHRy
PEdJbnB1dFN0cmVhbT4gc3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lucHV0X3N0cmVhbV9u
ZXdfZnJvbV9kYXRhKGdfc3RyaW5nX2ZyZWUoaHRtbCwgRkFMU0UpLCBzdHJlYW1MZW5ndGgsIGdf
ZnJlZSkpOwogICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoKHJlcXVlc3QsIHN0
cmVhbS5nZXQoKSwgc3RyZWFtTGVuZ3RoLCAidGV4dC9odG1sIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVj
dG9yQ2xpZW50LmNwcAppbmRleCA5ZTgwMWJhNzE1YTEuLjllMDcyYjVhMjg3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9y
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9S
ZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJB
UElEZWJ1Z2dhYmxlSW5mby5oIgogI2luY2x1ZGUgIkFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24u
aCIKKyNpbmNsdWRlICJSZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVyLmgiCiAjaW5jbHVkZSAiUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90
ZUluc3BlY3RvclV0aWxzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JEZWJ1Z2dhYmxl
VHlwZS5oPgpAQCAtNDQsMjIgKzQ1LDI1IEBAIGNsYXNzIFJlbW90ZUluc3BlY3RvclByb3h5IGZp
bmFsIDogcHVibGljIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHlDbGllbnQgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEKCk7CiBwdWJsaWM6CiAgICAgUmVtb3RlSW5zcGVjdG9yUHJveHko
UmVtb3RlSW5zcGVjdG9yQ2xpZW50JiBpbnNwZWN0b3JDbGllbnQsIHVpbnQ2NF90IGNvbm5lY3Rp
b25JRCwgdWludDY0X3QgdGFyZ2V0SUQpCi0gICAgICAgIDogbV9wcm94eShSZW1vdGVXZWJJbnNw
ZWN0b3JVSVByb3h5OjpjcmVhdGUoKSkKLSAgICAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNw
ZWN0b3JDbGllbnQpCisgICAgICAgIDogbV9pbnNwZWN0b3JDbGllbnQoaW5zcGVjdG9yQ2xpZW50
KQogICAgICAgICAsIG1fY29ubmVjdGlvbklEKGNvbm5lY3Rpb25JRCkKICAgICAgICAgLCBtX3Rh
cmdldElEKHRhcmdldElEKQogICAgIHsKLSAgICAgICAgbV9wcm94eS0+c2V0Q2xpZW50KHRoaXMp
OwogICAgIH0KIAogICAgIH5SZW1vdGVJbnNwZWN0b3JQcm94eSgpCiAgICAgewotICAgICAgICBt
X3Byb3h5LT5zZXRDbGllbnQobnVsbHB0cik7Ci0gICAgICAgIG1fcHJveHktPmludmFsaWRhdGUo
KTsKKyAgICAgICAgaWYgKG1fcHJveHkpIHsKKyAgICAgICAgICAgIG1fcHJveHktPnNldENsaWVu
dChudWxscHRyKTsKKyAgICAgICAgICAgIG1fcHJveHktPmludmFsaWRhdGUoKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBSZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVyOjpzaW5nbGV0b24o
KS50YXJnZXREaWRDbG9zZShtX2Nvbm5lY3Rpb25JRCwgbV90YXJnZXRJRCk7CiAgICAgfQogCiAg
ICAgdm9pZCBsb2FkKEluc3BlY3Rvcjo6RGVidWdnYWJsZVR5cGUgZGVidWdnYWJsZVR5cGUpCiAg
ICAgeworICAgICAgICBtX3Byb3h5ID0gUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eTo6Y3JlYXRl
KCk7CisgICAgICAgIG1fcHJveHktPnNldENsaWVudCh0aGlzKTsKICAgICAgICAgLy8gRklYTUUg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwNTUzNj46IHRoaXMgc2hvdWxkIGluZmVyIG1vcmUgdXNl
ZnVsIGRhdGEgYWJvdXQgdGhlIGRlYnVnIHRhcmdldC4KICAgICAgICAgUmVmPEFQSTo6RGVidWdn
YWJsZUluZm8+IGRlYnVnZ2FibGVJbmZvID0gQVBJOjpEZWJ1Z2dhYmxlSW5mbzo6Y3JlYXRlKERl
YnVnZ2FibGVJbmZvRGF0YTo6ZW1wdHkoKSk7CiAgICAgICAgIGRlYnVnZ2FibGVJbmZvLT5zZXRE
ZWJ1Z2dhYmxlVHlwZShkZWJ1Z2dhYmxlVHlwZSk7CkBAIC02OCwxMyArNzIsMTUgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBzaG93KCkKICAgICB7Ci0gICAgICAgIG1fcHJveHktPnNob3coKTsKKyAg
ICAgICAgaWYgKG1fcHJveHkpCisgICAgICAgICAgICBtX3Byb3h5LT5zaG93KCk7CiAgICAgfQog
CiAgICAgdm9pZCBzZXRUYXJnZXROYW1lKGNvbnN0IENTdHJpbmcmIG5hbWUpCiAgICAgewogI2lm
IFBMQVRGT1JNKEdUSykKLSAgICAgICAgbV9wcm94eS0+dXBkYXRlV2luZG93VGl0bGUobmFtZSk7
CisgICAgICAgIGlmIChtX3Byb3h5KQorICAgICAgICAgICAgbV9wcm94eS0+dXBkYXRlV2luZG93
VGl0bGUobmFtZSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTgyLDcgKzg4LDEwIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
ICAgICB7Ci0gICAgICAgIG1fcHJveHktPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKTsK
KyAgICAgICAgaWYgKG1fcHJveHkpCisgICAgICAgICAgICBtX3Byb3h5LT5zZW5kTWVzc2FnZVRv
RnJvbnRlbmQobWVzc2FnZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFJlbW90ZUluc3Bl
Y3RvckhUVFBTZXJ2ZXI6OnNpbmdsZXRvbigpLnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtX2Nvbm5l
Y3Rpb25JRCwgbV90YXJnZXRJRCwgbWVzc2FnZSk7CiAgICAgfQogCiAgICAgdm9pZCBzZW5kTWVz
c2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlCkBAIC0xMDEsNyAr
MTEwLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBSZWY8UmVtb3RlV2ViSW5z
cGVjdG9yVUlQcm94eT4gbV9wcm94eTsKKyAgICBSZWZQdHI8UmVtb3RlV2ViSW5zcGVjdG9yVUlQ
cm94eT4gbV9wcm94eTsKICAgICBSZW1vdGVJbnNwZWN0b3JDbGllbnQmIG1faW5zcGVjdG9yQ2xp
ZW50OwogICAgIHVpbnQ2NF90IG1fY29ubmVjdGlvbklEOwogICAgIHVpbnQ2NF90IG1fdGFyZ2V0
SUQ7CkBAIC0yMjAsNyArMjI5LDcgQEAgc3RhdGljIEluc3BlY3Rvcjo6RGVidWdnYWJsZVR5cGUg
ZGVidWdnYWJsZVR5cGUoY29uc3QgU3RyaW5nJiB0YXJnZXRUeXBlKQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNw
ZWN0KHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQsIGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0VHlwZSkKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0KHVpbnQ2
NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQsIGNvbnN0IFN0cmluZyYgdGFyZ2V0
VHlwZSwgSW5zcGVjdG9yVHlwZSBpbnNwZWN0b3JUeXBlKQogewogICAgIGF1dG8gYWRkUmVzdWx0
ID0gbV9pbnNwZWN0b3JQcm94eU1hcC5lbnN1cmUoc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklE
LCB0YXJnZXRJRCksIFt0aGlzLCBjb25uZWN0aW9uSUQsIHRhcmdldElEXSB7CiAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvclByb3h5PigqdGhpcywgY29ubmVjdGlvbklE
LCB0YXJnZXRJRCk7CkBAIC0yMzEsNyArMjQwLDggQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGll
bnQ6Omluc3BlY3QodWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJnZXRJRCwgY28K
ICAgICB9CiAKICAgICBtX3NvY2tldENvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKCJTZXR1cCIsIGdf
dmFyaWFudF9uZXcoIih0dCkiLCBjb25uZWN0aW9uSUQsIHRhcmdldElEKSk7Ci0gICAgYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS0+bG9hZChkZWJ1Z2dhYmxlVHlwZSh0YXJnZXRUeXBlKSk7Cisg
ICAgaWYgKGluc3BlY3RvclR5cGUgPT0gSW5zcGVjdG9yVHlwZTo6VUkpCisgICAgICAgIGFkZFJl
c3VsdC5pdGVyYXRvci0+dmFsdWUtPmxvYWQoZGVidWdnYWJsZVR5cGUodGFyZ2V0VHlwZSkpOwog
fQogCiB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQodWlu
dDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJnZXRJRCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQpAQCAtMjgwLDYgKzI5MCw2MiBAQCB2b2lkIFJlbW90ZUluc3BlY3RvckNsaWVudDo6c2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0XwogICAgIHBy
b3h5LT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQoU3RyaW5nOjpmcm9tVVRGOChtZXNzYWdlKSk7CiB9
CiAKK0dTdHJpbmcqIFJlbW90ZUluc3BlY3RvckNsaWVudDo6YnVpbGRUYXJnZXRMaXN0UGFnZShJ
bnNwZWN0b3JUeXBlIGluc3BlY3RvclR5cGUpIGNvbnN0Cit7CisgICAgR1N0cmluZyogaHRtbCA9
IGdfc3RyaW5nX25ldygKKyAgICAgICAgIjxodG1sPjxoZWFkPjx0aXRsZT5SZW1vdGUgaW5zcGVj
dG9yPC90aXRsZT4iCisgICAgICAgICI8bWV0YSBodHRwLWVxdWl2PVwiQ29udGVudC1UeXBlXCIg
Y29udGVudD1cInRleHQvaHRtbDsgY2hhcnNldD11dGYtOFwiIC8+IgorICAgICAgICAiPHN0eWxl
PiIKKyAgICAgICAgIiAgaDEgeyBjb2xvcjogI2JhYmRiNjsgdGV4dC1zaGFkb3c6IDAgMXB4IDAg
d2hpdGU7IG1hcmdpbi1ib3R0b206IDA7IH0iCisgICAgICAgICIgIGh0bWwgeyBmb250LWZhbWls
eTogLXdlYmtpdC1zeXN0ZW0tZm9udDsgZm9udC1zaXplOiAxMXB0OyBjb2xvcjogIzJlMzQzNjsg
cGFkZGluZzogMjBweCAyMHB4IDAgMjBweDsgYmFja2dyb3VuZC1jb2xvcjogI2Y2ZjZmNDsgIgor
ICAgICAgICAiICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5l
YXIsIGxlZnQgdG9wLCBsZWZ0IGJvdHRvbSwgY29sb3Itc3RvcCgwLCAjZWVlZWVjKSwgY29sb3It
c3RvcCgxLCAjZjZmNmY0KSk7IgorICAgICAgICAiICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAx
MDAlIDVlbTsgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgfSIKKyAgICAgICAgIiAgdGFi
bGUgeyB3aWR0aDogMTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgfSIKKyAgICAgICAg
IiAgdGFibGUsIHRkIHsgYm9yZGVyOiAxcHggc29saWQgI2QzZDdjZjsgYm9yZGVyLWxlZnQ6IG5v
bmU7IGJvcmRlci1yaWdodDogbm9uZTsgfSIKKyAgICAgICAgIiAgcCB7IG1hcmdpbi1ib3R0b206
IDMwcHg7IH0iCisgICAgICAgICIgIHRkIHsgcGFkZGluZzogMTVweDsgfSIKKyAgICAgICAgIiAg
dGQuZGF0YSB7IHdpZHRoOiAyMDBweDsgfSIKKyAgICAgICAgIiAgLnRhcmdldG5hbWUgeyBmb250
LXdlaWdodDogYm9sZDsgfSIKKyAgICAgICAgIiAgLnRhcmdldHVybCB7IGNvbG9yOiAjYmFiZGI2
OyB9IgorICAgICAgICAiICB0ZC5pbnB1dCB7IHdpZHRoOiA2NHB4OyB9IgorICAgICAgICAiICBp
bnB1dCB7IHdpZHRoOiAxMDAlOyBwYWRkaW5nOiA4cHg7IH0iCisgICAgICAgICI8L3N0eWxlPiIK
KyAgICAgICAgIjwvaGVhZD48Ym9keT48aDE+SW5zcGVjdGFibGUgdGFyZ2V0czwvaDE+Iik7Cisg
ICAgaWYgKG1fdGFyZ2V0cy5pc0VtcHR5KCkpCisgICAgICAgIGdfc3RyaW5nX2FwcGVuZChodG1s
LCAiPHA+Tm8gdGFyZ2V0cyBmb3VuZDwvcD4iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZ19zdHJp
bmdfYXBwZW5kKGh0bWwsICI8dGFibGU+Iik7CisgICAgICAgIGZvciAoYXV0byBjb25uZWN0aW9u
SUQgOiBtX3RhcmdldHMua2V5cygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHRhcmdldCA6
IG1fdGFyZ2V0cy5nZXQoY29ubmVjdGlvbklEKSkgeworICAgICAgICAgICAgICAgIGdfc3RyaW5n
X2FwcGVuZF9wcmludGYoaHRtbCwKKyAgICAgICAgICAgICAgICAgICAgIjx0Ym9keT48dHI+Igor
ICAgICAgICAgICAgICAgICAgICAiPHRkIGNsYXNzPVwiZGF0YVwiPjxkaXYgY2xhc3M9XCJ0YXJn
ZXRuYW1lXCI+JXM8L2Rpdj48ZGl2IGNsYXNzPVwidGFyZ2V0dXJsXCI+JXM8L2Rpdj48L3RkPiIK
KyAgICAgICAgICAgICAgICAgICAgIjx0ZCBjbGFzcz1cImlucHV0XCI+PGlucHV0IHR5cGU9XCJi
dXR0b25cIiB2YWx1ZT1cIkluc3BlY3RcIiBvbmNsaWNrPSIsCisgICAgICAgICAgICAgICAgICAg
IHRhcmdldC5uYW1lLmRhdGEoKSwgdGFyZ2V0LnVybC5kYXRhKCkpOworCisgICAgICAgICAgICAg
ICAgc3dpdGNoIChpbnNwZWN0b3JUeXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBJbnNwZWN0
b3JUeXBlOjpVSToKKyAgICAgICAgICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50Ziho
dG1sLCAiXCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5pbnNwZWN0b3IucG9zdE1lc3Nh
Z2UoJyUiIEdfR1VJTlQ2NF9GT1JNQVQgIjolIiBHX0dVSU5UNjRfRk9STUFUICI6JXMnKTtcIiIs
CisgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uSUQsIHRhcmdldC5pZCwgdGFyZ2V0
LnR5cGUuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSBJbnNwZWN0b3JUeXBlOjpIVFRQOgorICAgICAgICAgICAgICAgICAgICBnX3N0cmlu
Z19hcHBlbmRfcHJpbnRmKGh0bWwsCisgICAgICAgICAgICAgICAgICAgICAgICAiXCJ3aW5kb3cu
b3BlbignTWFpbi5odG1sP3dzPScgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvc29ja2V0LyUi
IEdfR1VJTlQ2NF9GT1JNQVQgIi8lIiBHX0dVSU5UNjRfRk9STUFUICIvJXMnLCAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAiJ19ibGFuaycsICdsb2NhdGlvbj1ubyxtZW51YmFyPW5vLHN0YXR1
cz1ubyx0b29sYmFyPW5vJyk7XCIiLAorICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlv
bklELCB0YXJnZXQuaWQsIHRhcmdldC50eXBlLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGdfc3RyaW5nX2Fw
cGVuZChodG1sLCAiPjwvdGQ+PC90cj48L3Rib2R5PiIpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGdfc3RyaW5nX2FwcGVuZChodG1sLCAiPC90YWJsZT4iKTsKKyAgICB9Cisg
ICAgZ19zdHJpbmdfYXBwZW5kKGh0bWwsICI8L2JvZHk+PC9odG1sPiIpOworCisgICAgcmV0dXJu
IGh0bWw7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5oCmluZGV4IGI5NDdmMTkx
YzQ0NC4uYzk2N2ZhN2U2ZmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuaApAQCAtNTQs
MTkgKzU0LDEyIEBAIHB1YmxpYzoKICAgICBSZW1vdGVJbnNwZWN0b3JDbGllbnQoY29uc3QgY2hh
ciogYWRkcmVzcywgdW5zaWduZWQgcG9ydCwgUmVtb3RlSW5zcGVjdG9yT2JzZXJ2ZXImKTsKICAg
ICB+UmVtb3RlSW5zcGVjdG9yQ2xpZW50KCk7CiAKLSAgICBzdHJ1Y3QgVGFyZ2V0IHsKLSAgICBw
dWJsaWM6Ci0gICAgICAgIHVpbnQ2NF90IGlkOwotICAgICAgICBDU3RyaW5nIHR5cGU7Ci0gICAg
ICAgIENTdHJpbmcgbmFtZTsKLSAgICAgICAgQ1N0cmluZyB1cmw7Ci0gICAgfTsKLQotICAgIGNv
bnN0IEhhc2hNYXA8dWludDY0X3QsIFZlY3RvcjxUYXJnZXQ+PiYgdGFyZ2V0cygpIGNvbnN0IHsg
cmV0dXJuIG1fdGFyZ2V0czsgfQogICAgIGNvbnN0IFN0cmluZyYgaG9zdEFuZFBvcnQoKSBjb25z
dCB7IHJldHVybiBtX2hvc3RBbmRQb3J0OyB9CiAgICAgY29uc3QgU3RyaW5nJiBiYWNrZW5kQ29t
bWFuZHNVUkwoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmRDb21tYW5kc1VSTDsgfQogCi0gICAg
dm9pZCBpbnNwZWN0KHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0SUQsIGNv
bnN0IFN0cmluZyYgdGFyZ2V0VHlwZSk7CisgICAgZW51bSBjbGFzcyBJbnNwZWN0b3JUeXBlIHsg
VUksIEhUVFAgfTsKKyAgICBHU3RyaW5nKiBidWlsZFRhcmdldExpc3RQYWdlKEluc3BlY3RvclR5
cGUpIGNvbnN0OworICAgIHZvaWQgaW5zcGVjdCh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2
NF90IHRhcmdldElELCBjb25zdCBTdHJpbmcmIHRhcmdldFR5cGUsIEluc3BlY3RvclR5cGUgPSBJ
bnNwZWN0b3JUeXBlOjpVSSk7CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZCh1aW50NjRf
dCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElELCBjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIGNsb3NlRnJvbUZyb250ZW5kKHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFy
Z2V0SUQpOwogCkBAIC03NSw2ICs2OCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBDb25u
ZWN0aW9uKFJlZjxTb2NrZXRDb25uZWN0aW9uPiYmKTsKICAgICB2b2lkIGNvbm5lY3Rpb25EaWRD
bG9zZSgpOwogCisgICAgc3RydWN0IFRhcmdldCB7CisgICAgICAgIHVpbnQ2NF90IGlkOworICAg
ICAgICBDU3RyaW5nIHR5cGU7CisgICAgICAgIENTdHJpbmcgbmFtZTsKKyAgICAgICAgQ1N0cmlu
ZyB1cmw7CisgICAgfTsKKwogICAgIHZvaWQgc2V0QmFja2VuZENvbW1hbmRzKGNvbnN0IGNoYXIq
KTsKICAgICB2b2lkIHNldFRhcmdldExpc3QodWludDY0X3QgY29ubmVjdGlvbklELCBWZWN0b3I8
VGFyZ2V0PiYmKTsKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9Gcm9udGVuZCh1aW50NjRfdCBjb25u
ZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElELCBjb25zdCBjaGFyKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JIVFRQ
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90
ZUluc3BlY3RvckhUVFBTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uYjUzMmMwNTUxMDc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlci5jcHAKQEAg
LTAsMCArMSwxODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVtb3RlSW5zcGVjdG9ySFRUUFNl
cnZlci5oIgorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNsdWRlICJSZW1v
dGVJbnNwZWN0b3JDbGllbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NvdXBWZXJzaW9uaW5nLmg+
CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5j
bHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVt
b3RlSW5zcGVjdG9ySFRUUFNlcnZlciYgUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlcjo6c2luZ2xl
dG9uKCkKK3sKKyAgICBzdGF0aWMgUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlciBzZXJ2ZXI7Cisg
ICAgcmV0dXJuIHNlcnZlcjsKK30KKworYm9vbCBSZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVyOjpz
dGFydChjb25zdCBjaGFyKiBhZGRyZXNzLCB1bnNpZ25lZCBwb3J0LCB1bnNpZ25lZCBpbnNwZWN0
b3JQb3J0KQoreworICAgIG1fc2VydmVyID0gYWRvcHRHUmVmKHNvdXBfc2VydmVyX25ldygic2Vy
dmVyLWhlYWRlciIsICJXZWJLaXRJbnNwZWN0b3JIVFRQU2VydmVyICIsIG51bGxwdHIpKTsKKyAg
ICBHUmVmUHRyPEdTb2NrZXRBZGRyZXNzPiBzb2NrZXRBZGRyZXNzID0gYWRvcHRHUmVmKGdfaW5l
dF9zb2NrZXRfYWRkcmVzc19uZXdfZnJvbV9zdHJpbmcoYWRkcmVzcywgcG9ydCkpOworICAgIGlm
ICghc29ja2V0QWRkcmVzcykgeworICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBzdGFydCBy
ZW1vdGUgaW5zcGVjdG9yIEhUVFAgc2VydmVyIG9uICVzOiV1OiBpbnZhbGlkIGFkZHJlc3MiLCBh
ZGRyZXNzLCBwb3J0KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICBpZiAoIXNvdXBfc2VydmVyX2xpc3RlbihtX3Nl
cnZlci5nZXQoKSwgc29ja2V0QWRkcmVzcy5nZXQoKSwgc3RhdGljX2Nhc3Q8U291cFNlcnZlckxp
c3Rlbk9wdGlvbnM+KDApLCAmZXJyb3Iub3V0UHRyKCkpKSB7CisgICAgICAgIGdfd2FybmluZygi
RmFpbGVkIHRvIHN0YXJ0IHJlbW90ZSBpbnNwZWN0b3IgSFRUUCBzZXJ2ZXIgb24gJXM6JXU6ICVz
IiwgYWRkcmVzcywgcG9ydCwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgc291cF9zZXJ2ZXJfYWRkX2hhbmRsZXIobV9zZXJ2ZXIuZ2V0KCksIG51
bGxwdHIsCisjaWYgVVNFKFNPVVAyKQorICAgICAgICBbXShTb3VwU2VydmVyKiwgU291cE1lc3Nh
Z2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29u
dGV4dCosIGdwb2ludGVyIHVzZXJEYXRhKSB7CisjZWxzZQorICAgICAgICBbXShTb3VwU2VydmVy
KiwgU291cFNlcnZlck1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFi
bGUqLCBncG9pbnRlciB1c2VyRGF0YSkgeworI2VuZGlmCisgICAgICAgICAgICBhdXRvJiBodHRw
U2VydmVyID0gKnN0YXRpY19jYXN0PFJlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIqPih1c2VyRGF0
YSk7CisgICAgICAgICAgICBhdXRvIHN0YXR1cyA9IGh0dHBTZXJ2ZXIuaGFuZGxlUmVxdWVzdChw
YXRoLCBzb3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNwb25zZV9oZWFkZXJzKG1lc3NhZ2UpLCBz
b3VwX3NlcnZlcl9tZXNzYWdlX2dldF9yZXNwb25zZV9ib2R5KG1lc3NhZ2UpKTsKKyAgICAgICAg
ICAgIHNvdXBfc2VydmVyX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBzdGF0dXMsIG51bGxw
dHIpOworICAgICAgICB9LCB0aGlzLCBudWxscHRyKTsKKworICAgIHNvdXBfc2VydmVyX2FkZF93
ZWJzb2NrZXRfaGFuZGxlcihtX3NlcnZlci5nZXQoKSwgIi9zb2NrZXQiLCBudWxscHRyLCBudWxs
cHRyLAorI2lmIFVTRShTT1VQMikKKyAgICAgICAgW10oU291cFNlcnZlciosIFNvdXBXZWJzb2Nr
ZXRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBwYXRoLCBTb3VwQ2xpZW50Q29u
dGV4dCosIGdwb2ludGVyIHVzZXJEYXRhKSB7CisjZWxzZQorICAgICAgICBbXShTb3VwU2VydmVy
KiwgU291cFNlcnZlck1lc3NhZ2UqLCBjb25zdCBjaGFyKiBwYXRoLCBTb3VwV2Vic29ja2V0Q29u
bmVjdGlvbiogY29ubmVjdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyNlbmRpZgorICAgICAg
ICAgICAgYXV0byYgaHR0cFNlcnZlciA9ICpzdGF0aWNfY2FzdDxSZW1vdGVJbnNwZWN0b3JIVFRQ
U2VydmVyKj4odXNlckRhdGEpOworICAgICAgICAgICAgaHR0cFNlcnZlci5oYW5kbGVXZWJTb2Nr
ZXQocGF0aCwgY29ubmVjdGlvbik7CisgICAgICAgIH0sIHRoaXMsIG51bGxwdHIpOworCisgICAg
bV9jbGllbnQgPSBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4oYWRkcmVzcywgaW5z
cGVjdG9yUG9ydCwgKnRoaXMpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Vuc2lnbmVkIFJl
bW90ZUluc3BlY3RvckhUVFBTZXJ2ZXI6OmhhbmRsZVJlcXVlc3QoY29uc3QgY2hhciogcGF0aCwg
U291cE1lc3NhZ2VIZWFkZXJzKiByZXNwb25zZUhlYWRlcnMsIFNvdXBNZXNzYWdlQm9keSogcmVz
cG9uc2VCb2R5KSBjb25zdAoreworICAgIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiLyIpKSB7Cisg
ICAgICAgIGF1dG8qIGh0bWwgPSBtX2NsaWVudC0+YnVpbGRUYXJnZXRMaXN0UGFnZShSZW1vdGVJ
bnNwZWN0b3JDbGllbnQ6Okluc3BlY3RvclR5cGU6OkhUVFApOworICAgICAgICBzb3VwX21lc3Nh
Z2VfaGVhZGVyc19hcHBlbmQocmVzcG9uc2VIZWFkZXJzLCAiQ29udGVudC1UeXBlIiwgInRleHQv
aHRtbCIpOworICAgICAgICBnc2l6ZSBib2R5TGVuZ3RoID0gaHRtbC0+bGVuOworICAgICAgICBz
b3VwX21lc3NhZ2VfYm9keV9hcHBlbmQocmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9UQUtFLCBn
X3N0cmluZ19mcmVlKGh0bWwsIEZBTFNFKSwgYm9keUxlbmd0aCk7CisgICAgICAgIHJldHVybiBT
T1VQX1NUQVRVU19PSzsKKyAgICB9CisKKyAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlUGF0
aChnX2J1aWxkX2ZpbGVuYW1lKCIvb3JnL3dlYmtpdC9pbnNwZWN0b3IvVXNlckludGVyZmFjZSIs
IHBhdGgsIG51bGxwdHIpKTsKKworICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAg
ICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19yZXNvdXJjZXNfbG9va3VwX2Rh
dGEocmVzb3VyY2VQYXRoLmdldCgpLCBHX1JFU09VUkNFX0xPT0tVUF9GTEFHU19OT05FLCAmZXJy
b3Iub3V0UHRyKCkpKTsKKyAgICBpZiAoYnl0ZXMpIHsKKyAgICAgICAgZ3NpemUgZGF0YVNpemU7
CisgICAgICAgIGNvbnN0IGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxjb25zdCBndWNoYXIqPihn
X2J5dGVzX2dldF9kYXRhKGJ5dGVzLmdldCgpLCAmZGF0YVNpemUpKTsKKyAgICAgICAgR1VuaXF1
ZVB0cjxjaGFyPiBmaWxlTmFtZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKHJlc291cmNlUGF0aC5nZXQo
KSkpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvbnRlbnRUeXBlKGdfY29udGVudF90eXBl
X2d1ZXNzKGZpbGVOYW1lLmdldCgpLCBkYXRhLCBkYXRhU2l6ZSwgbnVsbHB0cikpOworICAgICAg
ICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQocmVzcG9uc2VIZWFkZXJzLCAiQ29udGVudC1U
eXBlIiwgY29udGVudFR5cGUuZ2V0KCkpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBl
bmQocmVzcG9uc2VCb2R5LCBTT1VQX01FTU9SWV9DT1BZLCBkYXRhLCBkYXRhU2l6ZSk7CisgICAg
ICAgIHJldHVybiBTT1VQX1NUQVRVU19PSzsKKyAgICB9CisKKyAgICBnX3dhcm5pbmcoIkZhaWxl
ZCB0byBsb2FkIGluc3BlY3RvciByZXNvdXJjZSAlczogJXMiLCByZXNvdXJjZVBhdGguZ2V0KCks
IGVycm9yLT5tZXNzYWdlKTsKKworICAgIHJldHVybiBTT1VQX1NUQVRVU19OT1RfRk9VTkQ7Cit9
CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlcjo6aGFuZGxlV2ViU29ja2V0KGNvbnN0
IGNoYXIqIHBhdGgsIFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uKiBjb25uZWN0aW9uKQoreworICAg
IGF1dG8gaXRlbXMgPSBTdHJpbmc6OmZyb21VVEY4KHBhdGgpLnNwbGl0KCcvJyk7CisgICAgaWYg
KGl0ZW1zLnNpemUoKSAhPSA0KQorICAgICAgICByZXR1cm47CisKKyAgICB1aW50NjRfdCBjb25u
ZWN0aW9uSUQgPSBpdGVtc1sxXS50b0RvdWJsZSgpOworICAgIHVpbnQ2NF90IHRhcmdldElEID0g
aXRlbXNbMl0udG9Eb3VibGUoKTsKKyAgICBtX3dlYlNvY2tldENvbm5lY3Rpb25NYXAuc2V0KHN0
ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpLCBjb25uZWN0aW9uKTsKKyAgICBt
X3dlYlNvY2tldENvbm5lY3Rpb25Ub1RhcmdldE1hcC5zZXQoY29ubmVjdGlvbiwgc3RkOjptYWtl
X3BhaXIoY29ubmVjdGlvbklELCB0YXJnZXRJRCkpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoY29u
bmVjdGlvbiwgIm1lc3NhZ2UiLCBHX0NBTExCQUNLKCtbXShTb3VwV2Vic29ja2V0Q29ubmVjdGlv
biogY29ubmVjdGlvbiwgU291cFdlYnNvY2tldERhdGFUeXBlIG1lc3NhZ2VUeXBlLCBHQnl0ZXMq
IG1lc3NhZ2UsIGdwb2ludGVyIHVzZXJEYXRhKSB7CisgICAgICAgIGF1dG8mIGh0dHBTZXJ2ZXIg
PSAqc3RhdGljX2Nhc3Q8UmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlcio+KHVzZXJEYXRhKTsKKyAg
ICAgICAgZ3NpemUgZGF0YVNpemU7CisgICAgICAgIGNvbnN0IGF1dG8qIGRhdGEgPSBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShtZXNzYWdlLCAmZGF0YVNpemUpKTsK
KyAgICAgICAgaHR0cFNlcnZlci5zZW5kTWVzc2FnZVRvQmFja2VuZChjb25uZWN0aW9uLCBTdHJp
bmc6OmZyb21VVEY4KGRhdGEsIGRhdGFTaXplKSk7CisgICAgfSksIHRoaXMpOworICAgIGdfc2ln
bmFsX2Nvbm5lY3QoY29ubmVjdGlvbiwgImNsb3NlZCIsIEdfQ0FMTEJBQ0soK1tdKFNvdXBXZWJz
b2NrZXRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBncG9pbnRlciB1c2VyRGF0YSkgeworICAgICAg
ICBhdXRvJiBodHRwU2VydmVyID0gKnN0YXRpY19jYXN0PFJlbW90ZUluc3BlY3RvckhUVFBTZXJ2
ZXIqPih1c2VyRGF0YSk7CisgICAgICAgIGh0dHBTZXJ2ZXIuZGlkQ2xvc2VXZWJTb2NrZXQoY29u
bmVjdGlvbik7CisgICAgfSksIHRoaXMpOworCisgICAgbV9jbGllbnQtPmluc3BlY3QoY29ubmVj
dGlvbklELCB0YXJnZXRJRCwgaXRlbXNbM10sIFJlbW90ZUluc3BlY3RvckNsaWVudDo6SW5zcGVj
dG9yVHlwZTo6SFRUUCk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9ySFRUUFNlcnZlcjo6c2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKHVpbnQ2NF90IGNvbm5lY3Rpb25JRCwgdWludDY0X3QgdGFyZ2V0
SUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgY29uc3QKK3sKKyAgICBhdXRvKiB3ZWJTb2NrZXRD
b25uZWN0aW9uID0gbV93ZWJTb2NrZXRDb25uZWN0aW9uTWFwLmdldChzdGQ6Om1ha2VfcGFpcihj
b25uZWN0aW9uSUQsIHRhcmdldElEKSk7CisgICAgaWYgKCF3ZWJTb2NrZXRDb25uZWN0aW9uKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHV0ZjggPSBtZXNzYWdlLnV0ZjgoKTsKKyAgICAv
LyBTb3VwIGlzIGdvaW5nIHRvIGNvcHkgdGhlIGRhdGEgaW1tZWRpYXRlbHksIHNvIHdlIGNhbiB1
c2UgZ19ieXRlc19uZXdfc3RhdGljKCkgaGVyZSB0byBhdm9pZCBtb3JlIGRhdGEgY29waWVzLgor
ICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld19zdGF0aWMo
dXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpKTsKKyAgICBzb3VwX3dlYnNvY2tldF9jb25uZWN0
aW9uX3NlbmRfbWVzc2FnZSh3ZWJTb2NrZXRDb25uZWN0aW9uLCBTT1VQX1dFQlNPQ0tFVF9EQVRB
X1RFWFQsIGJ5dGVzLmdldCgpKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVy
Ojp0YXJnZXREaWRDbG9zZSh1aW50NjRfdCBjb25uZWN0aW9uSUQsIHVpbnQ2NF90IHRhcmdldElE
KQoreworICAgIGF1dG8qIHdlYlNvY2tldENvbm5lY3Rpb24gPSBtX3dlYlNvY2tldENvbm5lY3Rp
b25NYXAuZ2V0KHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JRCwgdGFyZ2V0SUQpKTsKKyAgICBp
ZiAoIXdlYlNvY2tldENvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNvdXBfd2Vi
c29ja2V0X2Nvbm5lY3Rpb25fY2xvc2Uod2ViU29ja2V0Q29ubmVjdGlvbiwgU09VUF9XRUJTT0NL
RVRfQ0xPU0VfR09JTkdfQVdBWSwgIlRhcmdldCBjbG9zZWQiKTsKK30KKwordm9pZCBSZW1vdGVJ
bnNwZWN0b3JIVFRQU2VydmVyOjpzZW5kTWVzc2FnZVRvQmFja2VuZChTb3VwV2Vic29ja2V0Q29u
bmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBjb25zdAoreworICAg
IGF1dG8gW2Nvbm5lY3Rpb25JRCwgdGFyZ2V0SURdID0gbV93ZWJTb2NrZXRDb25uZWN0aW9uVG9U
YXJnZXRNYXAuZ2V0KGNvbm5lY3Rpb24pOworICAgIGlmIChjb25uZWN0aW9uSUQgJiYgdGFyZ2V0
SUQpCisgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZVRvQmFja2VuZChjb25uZWN0aW9uSUQs
IHRhcmdldElELCBtZXNzYWdlKTsKK30KKwordm9pZCBSZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVy
OjpkaWRDbG9zZVdlYlNvY2tldChTb3VwV2Vic29ja2V0Q29ubmVjdGlvbiogY29ubmVjdGlvbikK
K3sKKyAgICBhdXRvIGNvbm5lY3Rpb25BbmRUYXJnZXQgPSBtX3dlYlNvY2tldENvbm5lY3Rpb25U
b1RhcmdldE1hcC50YWtlKGNvbm5lY3Rpb24pOworICAgIGlmICghY29ubmVjdGlvbkFuZFRhcmdl
dC5maXJzdCB8fCAhY29ubmVjdGlvbkFuZFRhcmdldC5zZWNvbmQpCisgICAgICAgIHJldHVybjsK
KworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZGF0YShjb25uZWN0aW9uLCB0
aGlzKTsKKyAgICBtX3dlYlNvY2tldENvbm5lY3Rpb25NYXAucmVtb3ZlKGNvbm5lY3Rpb25BbmRU
YXJnZXQpOworICAgIG1fY2xpZW50LT5jbG9zZUZyb21Gcm9udGVuZChjb25uZWN0aW9uQW5kVGFy
Z2V0LmZpcnN0LCBjb25uZWN0aW9uQW5kVGFyZ2V0LnNlY29uZCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0
b3JIVFRQU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9S
ZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5mMjUzNzVhZTVhN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVyLmgKQEAg
LTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisKKyNpbmNs
dWRlICJSZW1vdGVJbnNwZWN0b3JDbGllbnQuaCIKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4K
KyNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBSZW1vdGVJbnNwZWN0b3JIVFRQU2VydmVyIGZpbmFsIDogcHVibGljIFJlbW90ZUluc3Bl
Y3Rvck9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVtb3RlSW5zcGVjdG9ySFRUUFNl
cnZlciYgc2luZ2xldG9uKCk7CisgICAgflJlbW90ZUluc3BlY3RvckhUVFBTZXJ2ZXIoKSA9IGRl
ZmF1bHQ7CisKKyAgICBib29sIHN0YXJ0KGNvbnN0IGNoYXIqIGFkZHJlc3MsIHVuc2lnbmVkIHBv
cnQsIHVuc2lnbmVkIGluc3BlY3RvclBvcnQpOworICAgIGJvb2wgaXNSdW5uaW5nKCkgY29uc3Qg
eyByZXR1cm4gISFtX3NlcnZlcjsgfQorCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
dWludDY0X3QgY29ubmVjdGlvbklELCB1aW50NjRfdCB0YXJnZXRJRCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKSBjb25zdDsKKyAgICB2b2lkIHRhcmdldERpZENsb3NlKHVpbnQ2NF90IGNvbm5lY3Rp
b25JRCwgdWludDY0X3QgdGFyZ2V0SUQpOworCitwcml2YXRlOgorICAgIHVuc2lnbmVkIGhhbmRs
ZVJlcXVlc3QoY29uc3QgY2hhciosIFNvdXBNZXNzYWdlSGVhZGVycyosIFNvdXBNZXNzYWdlQm9k
eSopIGNvbnN0OworICAgIHZvaWQgaGFuZGxlV2ViU29ja2V0KGNvbnN0IGNoYXIqLCBTb3VwV2Vi
c29ja2V0Q29ubmVjdGlvbiopOworCisgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChTb3Vw
V2Vic29ja2V0Q29ubmVjdGlvbiosIGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIHZvaWQgZGlk
Q2xvc2VXZWJTb2NrZXQoU291cFdlYnNvY2tldENvbm5lY3Rpb24qKTsKKworICAgIHZvaWQgdGFy
Z2V0TGlzdENoYW5nZWQoUmVtb3RlSW5zcGVjdG9yQ2xpZW50Jikgb3ZlcnJpZGUgeyB9CisgICAg
dm9pZCBjb25uZWN0aW9uQ2xvc2VkKFJlbW90ZUluc3BlY3RvckNsaWVudCYpIG92ZXJyaWRlIHsg
fQorCisgICAgR1JlZlB0cjxTb3VwU2VydmVyPiBtX3NlcnZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PiBtX2NsaWVudDsKKyAgICBIYXNoTWFwPHN0ZDo6cGFp
cjx1aW50NjRfdCwgdWludDY0X3Q+LCBHUmVmUHRyPFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uPj4g
bV93ZWJTb2NrZXRDb25uZWN0aW9uTWFwOworICAgIEhhc2hNYXA8U291cFdlYnNvY2tldENvbm5l
Y3Rpb24qLCBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90Pj4gbV93ZWJTb2NrZXRDb25uZWN0
aW9uVG9UYXJnZXRNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>