<?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>164922</bug_id>
          
          <creation_ts>2016-11-18 06:16:12 -0800</creation_ts>
          <short_desc>[SOUP] Simplify custom protocols handler implementation</short_desc>
          <delta_ts>2016-11-27 13:16:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=165028</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</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>achristensen</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>darin</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252661</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-18 06:16:12 -0800</bug_when>
    <thetext>We are using too many classes for this and also the C API that is not needed, because both GTK+ and EFL have their own APIs and this is not used by WTR at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252663</commentid>
    <comment_count>1</comment_count>
      <attachid>295145</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-18 06:27:58 -0800</bug_when>
    <thetext>Created attachment 295145
Patch

Not asking r? yet because it won&apos;t build for EFL, I&apos;ll check EWS to try to fix the build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252664</commentid>
    <comment_count>2</comment_count>
      <attachid>295146</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-18 06:39:27 -0800</bug_when>
    <thetext>Created attachment 295146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252667</commentid>
    <comment_count>3</comment_count>
      <attachid>295148</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-18 06:46:43 -0800</bug_when>
    <thetext>Created attachment 295148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252677</commentid>
    <comment_count>4</comment_count>
      <attachid>295151</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-18 08:26:49 -0800</bug_when>
    <thetext>Created attachment 295151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252680</commentid>
    <comment_count>5</comment_count>
      <attachid>295152</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-18 08:33:20 -0800</bug_when>
    <thetext>Created attachment 295152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252685</commentid>
    <comment_count>6</comment_count>
      <attachid>295155</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-18 08:42:56 -0800</bug_when>
    <thetext>Created attachment 295155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252686</commentid>
    <comment_count>7</comment_count>
      <attachid>295156</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-18 08:48:31 -0800</bug_when>
    <thetext>Created attachment 295156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252687</commentid>
    <comment_count>8</comment_count>
      <attachid>295157</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-18 08:53:08 -0800</bug_when>
    <thetext>Created attachment 295157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252688</commentid>
    <comment_count>9</comment_count>
      <attachid>295158</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-18 09:03:08 -0800</bug_when>
    <thetext>Created attachment 295158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252691</commentid>
    <comment_count>10</comment_count>
      <attachid>295159</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-18 09:11:21 -0800</bug_when>
    <thetext>Created attachment 295159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252693</commentid>
    <comment_count>11</comment_count>
      <attachid>295159</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-18 09:16:35 -0800</bug_when>
    <thetext>Comment on attachment 295159
Patch

EFL EWS is green now, but of course the changes are not tested at all. If someone from EFL could try it out it would be great, otherwise I hope test bots will do their work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252742</commentid>
    <comment_count>12</comment_count>
      <attachid>295159</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-18 11:24:01 -0800</bug_when>
    <thetext>Comment on attachment 295159
Patch

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

r=me on the GTK+ and EFL changes. I think an owner should take a quick look at the CustomProtocolManagerProxy and WebProcessPool changes, even though the changes are all in #ifdefs, just in case of design objection.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_url_scheme_request_private.h:59
&gt; +    WebKit::CustomProtocolManagerProxy* manager() const { return m_wkRequestManager; }

The return value here should be a const pointer. If you need to return a non-const pointer, then you should add an overload that is not a const member function.

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:-170
&gt; -#if USE(SOUP)
&gt; -    , m_initialHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicyOnlyFromMainDocumentDomain)
&gt; -#endif

This patch is big and confusing enough that I would prefer to do this in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253157</commentid>
    <comment_count>13</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-20 16:02:26 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; The return value here should be a const pointer. If you need to return a
&gt; non-const pointer, then you should add an overload that is not a const
&gt; member function.

I mean this:

const WebKit::CustomProtocolManagerProxy*

(pointer to a const object... not technically a const pointer)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253227</commentid>
    <comment_count>14</comment_count>
      <attachid>295159</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-21 06:17:30 -0800</bug_when>
    <thetext>Comment on attachment 295159
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_url_scheme_request_private.h:59
&gt;&gt; +    WebKit::CustomProtocolManagerProxy* manager() const { return m_wkRequestManager; }
&gt; 
&gt; The return value here should be a const pointer. If you need to return a non-const pointer, then you should add an overload that is not a const member function.

This is EFL code I can&apos;t test, so I prefer to not change anything in this part, unless EFL guys confirm the change is ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253228</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-21 06:50:27 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 295159 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=295159&amp;action=review
&gt; 
&gt; r=me on the GTK+ and EFL changes. I think an owner should take a quick look
&gt; at the CustomProtocolManagerProxy and WebProcessPool changes, even though
&gt; the changes are all in #ifdefs, just in case of design objection.
&gt; 

Darin/Alex? The only cross-platform change I did was adding CustomProtocolManagerProxy::processDidClose() that is called from NetworkProcessProxy::didClose() and it&apos;s empty in CustomProtocolManagerProxyMac.mm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253231</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-21 07:05:52 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; This is EFL code I can&apos;t test, so I prefer to not change anything in this
&gt; part, unless EFL guys confirm the change is ok.

If it builds, it&apos;s OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253240</commentid>
    <comment_count>17</comment_count>
      <attachid>295159</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-21 08:47:24 -0800</bug_when>
    <thetext>Comment on attachment 295159
Patch

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

There’s s surprising amount of SOUP-specific #if in all these classes. As a direction for WebKit2 seems like a step in the wrong direction; would be nice to find a more elegant way of doing it.

But I approve of landing it as is.

&gt; Source/WebKit2/UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.h:67
&gt; +#if USE(SOUP)
&gt; +    void didReceiveResponse(uint64_t customProtocolID, const WebCore::ResourceResponse&amp;);
&gt; +    void didLoadData(uint64_t customProtocolID, const IPC::DataReference&amp;);
&gt; +    void didFailWithError(uint64_t customProtocolID, const WebCore::ResourceError&amp;);
&gt; +    void didFinishLoading(uint64_t customProtocolID);
&gt; +#endif

This doesn’t seem quite right to me; I don’t have strong objections to landing it, but it seems like the wrong direction long term. The people I would ask about alternatives are Sam and Anders.

&gt; Source/WebKit2/UIProcess/WebProcessPool.h:140
&gt; +    void setCustomProtocolManagerClient(std::unique_ptr&lt;API::CustomProtocolManagerClient&gt;);

A function like this should take unique_ptr&amp;&amp;, not just unique_ptr. See &lt;http://scottmeyers.blogspot.com/2014/07/should-move-only-types-ever-be-passed.html&gt; for one version of the rationale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253352</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-21 23:47:28 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Comment on attachment 295159 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=295159&amp;action=review
&gt; 
&gt; There’s s surprising amount of SOUP-specific #if in all these classes. As a
&gt; direction for WebKit2 seems like a step in the wrong direction; would be
&gt; nice to find a more elegant way of doing it.

Yes, I agree, but I would say platform-specific #if, not just soup, in general in custom protocols implementation. I think this is because the way it works and the way it&apos;s exposed to the API users is different between soup based ports and Apple ones. For example, in Cocoa custom protocols are always registered globally by WKBrowsingContextController, while soup based ports register the custom protocols per WebProcessPool, so I used ifdefs to save the registered protocols in each WebProcessPool to avoid having them duplicated in Cocoa, but there&apos;s nothing soup specific there. In any case, platform ifdefs can be reduced with just a few refactoring I think, I&apos;ll check it in more detail.

&gt; But I approve of landing it as is.

Thank you, I&apos;ll try to refactor it after the cleanup, because it will be easier.

&gt; &gt; Source/WebKit2/UIProcess/Network/CustomProtocols/CustomProtocolManagerProxy.h:67
&gt; &gt; +#if USE(SOUP)
&gt; &gt; +    void didReceiveResponse(uint64_t customProtocolID, const WebCore::ResourceResponse&amp;);
&gt; &gt; +    void didLoadData(uint64_t customProtocolID, const IPC::DataReference&amp;);
&gt; &gt; +    void didFailWithError(uint64_t customProtocolID, const WebCore::ResourceError&amp;);
&gt; &gt; +    void didFinishLoading(uint64_t customProtocolID);
&gt; &gt; +#endif
&gt; 
&gt; This doesn’t seem quite right to me; I don’t have strong objections to
&gt; landing it, but it seems like the wrong direction long term. The people I
&gt; would ask about alternatives are Sam and Anders.

This can be fixed for sure, I&apos;ll do it in a follow up.

&gt; &gt; Source/WebKit2/UIProcess/WebProcessPool.h:140
&gt; &gt; +    void setCustomProtocolManagerClient(std::unique_ptr&lt;API::CustomProtocolManagerClient&gt;);
&gt; 
&gt; A function like this should take unique_ptr&amp;&amp;, not just unique_ptr. See
&gt; &lt;http://scottmeyers.blogspot.com/2014/07/should-move-only-types-ever-be-
&gt; passed.html&gt; for one version of the rationale.

I followed the current pattern of all other clients in WebProcessPool, but I agree anyway, I&apos;ll change it. There&apos;s another side effect, though, to do it that way that is important to know when doing this, I learned it recently the hard way in bug #164631. When using the sink paramater there&apos;s no move constructor for the parameter so that when the value is moved the ownership is transferred, but the moved value is not set to nullptr, you have to use exchange or swap in that particular case if you need to ensure the value is nullptr after the move.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253353</commentid>
    <comment_count>19</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-21 23:50:18 -0800</bug_when>
    <thetext>Committed r208959: &lt;http://trac.webkit.org/changeset/208959&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253398</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-22 10:28:23 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; I learned it recently
&gt; the hard way in bug #164631. When using the sink paramater there&apos;s no move
&gt; constructor for the parameter so that when the value is moved the ownership
&gt; is transferred, but the moved value is not set to nullptr, you have to use
&gt; exchange or swap in that particular case if you need to ensure the value is
&gt; nullptr after the move.

I need to learn more about this. Could you show me a simple test program that demonstrates a moved value and a unique_ptr that is not set to nullptr after the value is moved out? I don’t think this exists, but a sample .cpp file could help me understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253444</commentid>
    <comment_count>21</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-22 23:26:13 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #18)
&gt; &gt; I learned it recently
&gt; &gt; the hard way in bug #164631. When using the sink paramater there&apos;s no move
&gt; &gt; constructor for the parameter so that when the value is moved the ownership
&gt; &gt; is transferred, but the moved value is not set to nullptr, you have to use
&gt; &gt; exchange or swap in that particular case if you need to ensure the value is
&gt; &gt; nullptr after the move.
&gt; 
&gt; I need to learn more about this. Could you show me a simple test program
&gt; that demonstrates a moved value and a unique_ptr that is not set to nullptr
&gt; after the value is moved out? I don’t think this exists, but a sample .cpp
&gt; file could help me understand.

Sure, check this:

http://people.igalia.com/cgarcia/unique-sink.cpp

There are 3 cases:

 * Pass by value: a new unique_ptr is created and the move constructor is used. The new unique_ptr takes ownership and the other one is cleared.

 * Pass sink parameter: one of the advantages of move over the old PassRefPtr is that we don&apos;t need to adopt it to not leak it. So in this case the new owner doesn&apos;t call move again, it simply uses the value. In this case no other unique_ptr is created, as explained in the link you shared, and therefore the move constructor is not called, the received unique_ptr is exactly the same as the passed one, so it can&apos;t be cleared.

 * Pass sink parameter, but in this case the function moves again. In this case a new unique_ptr is created locally and the move constructor is called, clearing the passed unique_ptr.

Check the output of the program:

$ ./unique-sink 
value: u(0x7ffda4ba2410) p(0x55c06b529c20) v(25)
f1: u(0x7ffda4ba2400) p((nil)), v(0)
sink: u(0x7ffda4ba23f0) p(0x55c06b529c20) v(50)
f2: u(0x7ffda4ba23f0) p(0x55c06b529c20) v(50)
sinkAndMove: u(0x7ffda4ba23e0) p(0x55c06b52a050) v(150)
f3: u(0x7ffda4ba23e0) p((nil)) v(0)

u: unique_ptr
p: pointer
v: value

So, this is only a problem when we move a unique_ptr and the receiver doesn&apos;t move again to unique_ptr (but not to another unique_ptr&amp;&amp;, of course). In such cases if we want to ensure the unique_ptr is cleared we need to either use a local variable to move first and then transfer that, or use std::exchange, but in both cases the effect would be the same as passing by value, because a new unique_ptr will be created. The only way I can think of to avoid the creation of the second unique_ptr would be to explicitly set to nullptr after the function call:

sink (std::move(f1));
f1 = nullptr;

Instead of relying on move clearing the unique_ptr. If the function doesn&apos;t move again, the value is not useful after the function call, so we can clear it manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253767</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-27 13:16:19 -0800</bug_when>
    <thetext>Yes, I understand now. Passing to a std::unique_ptr&amp;&amp; is &quot;might move&quot; operation whereas passing to a std::unique_ptr is a &quot;definitely move&quot; operation.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295145</attachid>
            <date>2016-11-18 06:27:58 -0800</date>
            <delta_ts>2016-11-18 06:39:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-custom-protocols-soup.diff</filename>
            <type>text/plain</type>
            <size>79838</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0Yjg5MTk0Li40ZmQ1ZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsODQg
QEAKIDIwMTYtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtTT1VQXSBTaW1wbGlmeSBjdXN0b20gcHJvdG9jb2xzIGhhbmRsZXIgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDkyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGFyZSB1c2luZyB0b28gbWFueSBjbGFzc2VzIGZvciB0aGlzIGFuZCBhbHNvIHRoZSBD
IEFQSSB0aGF0IGlzIG5vdCBuZWVkZWQsIGJlY2F1c2UgYm90aCBHVEsrIGFuZCBFRkwgaGF2ZQor
ICAgICAgICB0aGVpciBvd24gQVBJcyBhbmQgdGhpcyBpcyBub3QgdXNlZCBieSBXVFIgYXQgYWxs
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IFJlbW92ZSBmaWxlcyBmcm9tIGNvbXBp
bGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBT
aGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNl
U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmg6IFJlbW92ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5oOiBSZW1vdmVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9zb3Vw
L1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDogUmVtb3ZlIHVubmVl
ZGVkIGluY2x1ZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVf
cmVxdWVzdC5jcHA6IFVzZSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSBpbnN0ZWFkIG9mIFdL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYuCisgICAgICAgIChFd2tVcmxTY2hl
bWVSZXF1ZXN0OjpFd2tVcmxTY2hlbWVSZXF1ZXN0KToKKyAgICAgICAgKEV3a1VybFNjaGVtZVJl
cXVlc3Q6OmZpbmlzaCk6CisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3By
aXZhdGUuaDoKKyAgICAgICAgKEV3a1VybFNjaGVtZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAg
IChFd2tVcmxTY2hlbWVSZXF1ZXN0OjptYW5hZ2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHA6IFVzZSBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSBpbnN0ZWFkIG9mIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyLgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSk6CisgICAg
ICAgICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKToKKyAgICAgICAgKHdlYmtpdFVSSVNj
aGVtZVJlcXVlc3RHZXRNYW5hZ2VyKToKKyAgICAgICAgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RJ
bnZhbGlkYXRlKToKKyAgICAgICAgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2sp
OgorICAgICAgICAod2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAg
ICAgICh3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0V2ViQ29u
dGV4dERpc3Bvc2UpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9z
Y2hlbWUpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3Rv
Y29sKToKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRJbnZhbGlkYXRlQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0cyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFBy
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3Nl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKTogSW52YWxpZGF0ZSB0aGUgY2xp
ZW50LgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRM
b2FkaW5nKTogTm90aWZ5IHRoZSBjbGllbnQuCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKTogTm90aWZ5IHRo
ZSBuZXR3b3JrIHByb2Nlc3MuCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjpkaWRMb2FkRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eTo6ZGlkRmFpbFdpdGhFcnJvcik6IERpdHRvLgorICAgICAgICAoV2Vi
S2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkRmluaXNoTG9hZGluZyk6IERpdHRv
LgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5o
OiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZSk6
IE5vdGlmeSB0aGUgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OldlYlByb2Nlc3NQb29sKTogSW5pdGlhbGl6ZSB0aGUgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50IGFuZCByZW1vdmUgdGhlIGFsbCBzdXBwbGVtZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2wpOiBJ
biBjYXNlIG9mIHNvdXAgY2FjaGUgdGhlIGdpdmVuIHByb3RvY29sLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKTogSW4g
Y2FzZSBvZiBzb3VwIGRlbGV0ZSB0aGUgZ2l2ZW4gcHJvdG9jb2wgZnJvbSB0aGUgY2FjaGUuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5jcHA6IERvIG5vdCB1c2UgdGhlIEMgQVBJLCBi
dXQgQVBJOjpDdXN0b21Qcm9jb2xNYW5hZ2VyQ2xpZW50LgorICAgICAgICAoV2ViS2l0OjpSZXF1
ZXN0TWFuYWdlckNsaWVudEVmbDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwpOgorICAgICAgICAo
V2ViS2l0OjpSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKTogVXNlIG1fdXJsU2NoZW1l
c1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMgdG8KKyAgICAgICAgYnVpbGQgdGhlIGxpc3Qg
b2YgY3VzdG9tIHByb3RvY29scyB0byBzZW5kIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCisKKzIw
MTYtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAg
ICAgICAgIFJlbW92ZSBtX2N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGZyb20gV2ViUHJvY2Vz
c1Byb3h5CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjQ5MDgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA2ZTc3ZWU2Li4yMjI5MDFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzYsNyArNzYsNiBAQCBsaXN0KEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlld0VmbC5jcHAKIAog
ICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29va2llTWFuYWdlclNvdXAuY3BwCi0gICAgVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAK
IAogICAgIFVJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2Nl
bmUuY3BwCiAKQEAgLTEzMSw4ICsxMzAsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
ICAgICBVSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hlckVmbC5jcHAKIAogICAg
IFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5U291cC5jcHAKLSAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
c291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAKLSAgICBVSVByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlckNsaWVudC5jcHAKIAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2lu
SW5mb1N0b3JlVW5peC5jcHAKICAgICBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nl
c3NQcm94eVVuaXguY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5j
bWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDlmZDJkMTYuLjU5
NTRiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xMDEsNyArMTAxLDYgQEAgbGlz
dChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL2d0ay9XS1ZpZXcu
Y3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tpZU1hbmFnZXJTb3VwLmNwcAot
ICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9BUElXZWJzaXRlRGF0YVN0b3JlR3RrLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMTM0LDYgKzEz
Myw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDcmVkZW50aWFsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENyZWRlbnRpYWwu
aAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERlZmluZXMuaAogICAgIFVJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdERvd25sb2FkLmgKQEAgLTIxMCw4ICsyMTEsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmludE9wZXJhdGlvblByaXZhdGUu
aAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCi0gICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVx
dWVzdE1hbmFnZXJDbGllbnQuY3BwCi0gICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVz
dE1hbmFnZXJDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc3BvbnNlUG9s
aWN5RGVjaXNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xp
Y3lEZWNpc2lvbi5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVzcG9uc2VQb2xpY3lE
ZWNpc2lvblByaXZhdGUuaApAQCAtMjgzLDggKzI4Miw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJf
U09VUkNFUwogICAgIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVzc3VyZU1vbml0b3IuY3BwCiAK
ICAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eVNvdXAuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCi0gICAgVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1
Z2luSW5mb0NhY2hlLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKaW5kZXgg
OTQ4ZTE2MC4uMzJmYmM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApAQCAt
MzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlR3RrLmg+CiAjZW5kaWYKIAot
I2lmIGRlZmluZWQoVVNFX1NPVVApCi0jaW5jbHVkZSA8V2ViS2l0L1dLQmFzZVNvdXAuaD4KLSNl
bmRpZgotCiAjaWYgZGVmaW5lZChCVUlMRElOR19FRkxfXykKICNpbmNsdWRlIDxXZWJLaXQvV0tC
YXNlRWZsLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9zb3VwL1dLQmFzZVNvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9zb3VwL1dL
QmFzZVNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAwZjA4NS4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tCYXNlU291cF9oCi0jZGVmaW5lIFdLQmFz
ZVNvdXBfaAotCi0jaWZuZGVmIFdLQmFzZV9oCi0jZXJyb3IgIlBsZWFzZSAjaW5jbHVkZSBcIldL
QmFzZS5oXCIgaW5zdGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHkuIgotI2VuZGlmCi0KLXR5cGVk
ZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU291cFJlcXVlc3RNYW5hZ2VyKiBXS1NvdXBSZXF1ZXN0
TWFuYWdlclJlZjsKLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIqIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWY7
Ci0KLSNlbmRpZiAvKiBXS0Jhc2VTb3VwX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0FQSUNhc3QuaAppbmRleCA3YjRhNGQ1Li5mN2YzYTJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC01NTIsMTAgKzU1Miw2IEBAIGlubGlu
ZSBQcm94eWluZ1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiB0b0FQSShjb25zdCBXZWJDb3JlOjpH
cmFtbWFyRGV0YWlsJiBncmFtCiAjaW5jbHVkZSAiV0tBUElDYXN0R3RrLmgiCiAjZW5kaWYKIAot
I2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIldLQVBJQ2FzdFNvdXAuaCIKLSNlbmRpZgotCiAjaWYg
ZGVmaW5lZChCVUlMRElOR19FRkxfXykKICNpbmNsdWRlICJXS0FQSUNhc3RFZmwuaCIKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElD
YXN0U291cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0
U291cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGY2M2YyLi4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBQb3J0aW9ucyBDb3B5cmlnaHQg
KGMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0FQSUNhc3RTb3VwX2gK
LSNkZWZpbmUgV0tBUElDYXN0U291cF9oCi0KLSNpZm5kZWYgV0tBUElDYXN0X2gKLSNlcnJvciAi
UGxlYXNlICNpbmNsdWRlIFwiV0tBUElDYXN0LmhcIiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJl
Y3RseS4iCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOwotCi1XS19BRERfQVBJX01BUFBJTkcoV0tTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiwgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIpCi0KLX0KLQotI2VuZGlmIC8vIFdLQVBJQ2FzdFNvdXBfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDQyZjM5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBXS0NvbnRleHRTb3VwX2gKLSNkZWZpbmUgV0tDb250ZXh0U291cF9o
Ci0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dLU291cFJl
cXVlc3RNYW5hZ2VyLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5k
aWYKLQotV0tfRVhQT1JUIFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIFdLQ29udGV4dEdldFNvdXBS
ZXF1ZXN0TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1
cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS0NvbnRleHRTb3VwX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAv
V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ1ZDM2ZjYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEln
YWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCi0KLSNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgotCi11
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS1NvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCkKLXsKLSAgICByZXR1cm4gdG9BUEkoV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OkFQSVR5cGUpOwotfQotCi12b2lkIFdLU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIGNvbnN0IFdLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiB3a0NsaWVudCkKLXsKLSAgICB0b0ltcGwo
c291cFJlcXVlc3RNYW5hZ2VyUmVmKS0+aW5pdGlhbGl6ZUNsaWVudCh3a0NsaWVudCk7Ci19CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDgyMmE3NjIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXJfaAotI2RlZmluZSBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
X2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1l
eHRlcm4gIkMiIHsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKCpXS1NvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyU3RhcnRMb2FkaW5nQ2FsbGJhY2spKFdLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJSZWYgc291cE1hbmFnZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29s
SUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
LXR5cGVkZWYgdm9pZCAoKldLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTdG9wTG9h
ZGluZ0NhbGxiYWNrKShXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBN
YW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ckNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotfSBXS1NvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwIHsKLSAgICBXS1NvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAgICAgYmFzZTsKLQotICAgIFdL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTdGFydExvYWRpbmdDYWxsYmFjayBzdGFy
dExvYWRpbmc7Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclN0b3BMb2Fk
aW5nQ2FsbGJhY2sgIHN0b3BMb2FkaW5nOwotfSBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50VjA7Ci0KLVdLX0VYUE9SVCBXS1R5cGVJRCBXS1NvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9SVCB2b2lkIFdLU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNs
aWVudEJhc2UqKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8q
IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2Vy
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NjdlZGUuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS1NvdXBSZXF1ZXN0TWFuYWdlcl9o
Ci0jZGVmaW5lIFdLU291cFJlcXVlc3RNYW5hZ2VyX2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0Jh
c2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi10eXBl
ZGVmIHZvaWQgKCpXS1NvdXBSZXF1ZXN0TWFuYWdlckRpZFJlY2VpdmVVUklSZXF1ZXN0Q2FsbGJh
Y2spKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0TWFuYWdlclJlZiwgV0tVUkxS
ZWYgdXJsUmVmLCBXS1BhZ2VSZWYgcGFnZVJlZiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLU291cFJlcXVlc3RNYW5hZ2VyRGlk
RmFpbFRvTG9hZFVSSVJlcXVlc3RDYWxsYmFjaykoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYgc291
cFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwotCi10eXBlZGVmIHN0cnVjdCBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2Ug
ewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjbGllbnRJbmZvOwotfSBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2U7
Ci0KLXR5cGVkZWYgc3RydWN0IFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjAgewotICAgIFdL
U291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICBiYXNlOwot
Ci0gICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRSZWNlaXZlVVJJUmVxdWVzdENhbGxiYWNrICAg
IGRpZFJlY2VpdmVVUklSZXF1ZXN0OwotICAgIFdLU291cFJlcXVlc3RNYW5hZ2VyRGlkRmFpbFRv
TG9hZFVSSVJlcXVlc3RDYWxsYmFjayBkaWRGYWlsVG9Mb2FkVVJJUmVxdWVzdDsKLX0gV0tTb3Vw
UmVxdWVzdE1hbmFnZXJDbGllbnRWMDsKLQotV0tfRVhQT1JUIFdLVHlwZUlEIFdLU291cFJlcXVl
c3RNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9SVCB2b2lkIFdLU291cFJlcXVlc3RNYW5h
Z2VyU2V0Q2xpZW50KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBjb25zdCBXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2UqIGNsaWVudCk7Ci1XS19FWFBPUlQgdm9pZCBXS1NvdXBSZXF1ZXN0
TWFuYWdlclJlZ2lzdGVyVVJJU2NoZW1lKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS1N0cmlu
Z1JlZiBzY2hlbWVSZWYpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRI
YW5kbGVVUklSZXF1ZXN0KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS0RhdGFSZWYsIHVpbnQ2
NF90IGNvbnRlbnRMZW5ndGgsIFdLU3RyaW5nUmVmIG1pbWVUeXBlUmVmLCB1aW50NjRfdCByZXF1
ZXN0SUQpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRSZWNlaXZlVVJJ
UmVxdWVzdERhdGEoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdLRGF0YVJlZiwgdWludDY0X3Qg
cmVxdWVzdElEKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8q
IFdLU291cFJlcXVlc3RNYW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRleCAxNzk1MjY5Li5iNGVkZTllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC0y
Niw3ICsyNiw2IEBACiAjaW5jbHVkZSAiUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuaCIKICNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0NvbnRleHRQcml2YXRlLmgiCi0jaW5jbHVk
ZSAiV0tDb250ZXh0U291cC5oIgogI2luY2x1ZGUgIldLTnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tT
dHJpbmcuaCIKICNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5j
cHAKaW5kZXggOTg4Yjk5Ni4uZjU1NDg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHAKQEAgLTMx
LDE0ICszMSwxMyBAQAogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tVUkwuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5oIgogCiAjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9w
cml2YXRlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLUV3a1VybFNjaGVtZVJlcXVl
c3Q6OkV3a1VybFNjaGVtZVJlcXVlc3QoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
clJlZiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QsIHVpbnQ2NF90IHJlcXVl
c3RJRCkKLSAgICA6IG1fd2tSZXF1ZXN0TWFuYWdlcihtYW5hZ2VyKQorRXdrVXJsU2NoZW1lUmVx
dWVzdDo6RXdrVXJsU2NoZW1lUmVxdWVzdChDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFu
YWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1ZXN0SUQpCisg
ICAgOiBtX3drUmVxdWVzdE1hbmFnZXIoJm1hbmFnZXIpCiAgICAgLCBtX3JlcXVlc3RJRChyZXF1
ZXN0SUQpCiB7CiAgICAgV0tVUkxSZWYgdXJsID0gdG9Db3BpZWRVUkxBUEkodXJsUmVxdWVzdC0+
cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOwpAQCAtNjksNiArNjgsOSBAQCBjb25zdCBjaGFyKiBF
d2tVcmxTY2hlbWVSZXF1ZXN0OjpwYXRoKCkgY29uc3QKIAogdm9pZCBFd2tVcmxTY2hlbWVSZXF1
ZXN0OjpmaW5pc2goY29uc3Qgdm9pZCogY29udGVudERhdGEsIHVpbnQ2NF90IGNvbnRlbnRMZW5n
dGgsIGNvbnN0IGNoYXIqIG1pbWVUeXBlKQogeworICAgIGlmICghbV93a1JlcXVlc3RNYW5hZ2Vy
KQorICAgICAgICByZXR1cm47CisKICAgICBXS1JldGFpblB0cjxXS0RhdGFSZWY+IHdrRGF0YShB
ZG9wdFdLLCBXS0RhdGFDcmVhdGUoY29udGVudExlbmd0aCA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KGNvbnRlbnREYXRhKSA6IDAsIGNvbnRlbnRMZW5ndGgpKTsKICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNaW1lVHlwZSA9IG1pbWVUeXBlID8gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhtaW1lVHlwZSkpIDogMDsKIApAQCAtNzYs
MTAgKzc4LDE1IEBAIHZvaWQgRXdrVXJsU2NoZW1lUmVxdWVzdDo6ZmluaXNoKGNvbnN0IHZvaWQq
IGNvbnRlbnREYXRhLCB1aW50NjRfdCBjb250ZW50TGVuZ3RoCiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZShXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIFN0cmluZzo6
ZnJvbVVURjgobV91cmwpKSwKICAgICAgICAgU3RyaW5nOjpmcm9tVVRGOChtaW1lVHlwZSksIGNv
bnRlbnRMZW5ndGgsIGVtcHR5U3RyaW5nKCkpOwogCi0gICAgdG9JbXBsKG1fd2tSZXF1ZXN0TWFu
YWdlci5nZXQoKSktPmRpZFJlY2VpdmVSZXNwb25zZShtX3JlcXVlc3RJRCwgcmVzcG9uc2UpOwot
ICAgIHRvSW1wbChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5kaWRMb2FkRGF0YShtX3JlcXVl
c3RJRCwgdG9JbXBsKHdrRGF0YS5nZXQoKSkpOwotICAgIHRvSW1wbChtX3drUmVxdWVzdE1hbmFn
ZXIuZ2V0KCkpLT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVxdWVzdElEKTsKLSAgICB0b0ltcGwobV93
a1JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+c3RvcExvYWRpbmcobV9yZXF1ZXN0SUQpOworICAgIG1f
d2tSZXF1ZXN0TWFuYWdlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1fcmVxdWVzdElELCByZXNwb25z
ZSk7CisgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0YShtX3JlcXVlc3RJRCwgdG9J
bXBsKHdrRGF0YS5nZXQoKSktPmRhdGFSZWZlcmVuY2UoKSk7CisgICAgbV93a1JlcXVlc3RNYW5h
Z2VyLT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVxdWVzdElEKTsKKyAgICBtX3drUmVxdWVzdE1hbmFn
ZXItPnN0b3BMb2FkaW5nKG1fcmVxdWVzdElEKTsKK30KKwordm9pZCBFd2tVcmxTY2hlbWVSZXF1
ZXN0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX3drUmVxdWVzdE1hbmFnZXIgPSBudWxscHRyOwog
fQogCiBjb25zdCBjaGFyKiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3NjaGVtZV9nZXQoY29uc3Qg
RXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9w
cml2YXRlLmgKaW5kZXggYTM5ODkyYi4uZjU5ZDU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVz
dF9wcml2YXRlLmgKQEAgLTI2LDExICsyNiwxMSBAQAogI2lmbmRlZiBld2tfdXJsX3NjaGVtZV9y
ZXF1ZXN0X3ByaXZhdGVfaAogI2RlZmluZSBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGVf
aAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0Jhc2UuaCIKICNpbmNsdWRlICJXS0VpbmFTaGFyZWRT
dHJpbmcuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgotI2luY2x1ZGUgIldLU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJld2tfb2JqZWN0X3ByaXZhdGUu
aCIKIAogLyoqCkBAIC00MSw5ICs0MSw5IEBAIGNsYXNzIEV3a1VybFNjaGVtZVJlcXVlc3QgOiBw
dWJsaWMgRXdrT2JqZWN0IHsKIHB1YmxpYzoKICAgICBFV0tfT0JKRUNUX0RFQ0xBUkUoRXdrVXJs
U2NoZW1lUmVxdWVzdCkKIAotICAgIHN0YXRpYyBSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4g
Y3JlYXRlKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgbWFuYWdlciwgQVBJ
OjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1ZXN0SUQpCisgICAgc3RhdGlj
IFJlZlB0cjxFd2tVcmxTY2hlbWVSZXF1ZXN0PiBjcmVhdGUoV2ViS2l0OjpDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50
NjRfdCByZXF1ZXN0SUQpCiAgICAgewotICAgICAgICBpZiAoIW1hbmFnZXIgfHwgIXVybFJlcXVl
c3QpCisgICAgICAgIGlmICghdXJsUmVxdWVzdCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrVXJsU2NoZW1lUmVxdWVzdChtYW5h
Z2VyLCB1cmxSZXF1ZXN0LCByZXF1ZXN0SUQpKTsKQEAgLTU2LDEwICs1NiwxMyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGZpbmlzaChjb25zdCB2b2lkKiBjb250ZW50RGF0YSwgdWludDY0X3QgY29u
dGVudExlbmd0aCwgY29uc3QgY2hhciogbWltZVR5cGUpOwogCisgICAgV2ViS2l0OjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSogbWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fd2tSZXF1ZXN0
TWFuYWdlcjsgfQorICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCiBwcml2YXRlOgotICAgIEV3a1Vy
bFNjaGVtZVJlcXVlc3QoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBtYW5h
Z2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QsIHVpbnQ2NF90IHJlcXVlc3RJRCk7Cisg
ICAgRXdrVXJsU2NoZW1lUmVxdWVzdChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
JiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QsIHVpbnQ2NF90IHJlcXVlc3RJ
RCk7CiAKLSAgICBXS1JldGFpblB0cjxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
UmVmPiBtX3drUmVxdWVzdE1hbmFnZXI7CisgICAgV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eSogbV93a1JlcXVlc3RNYW5hZ2VyOwogICAgIFdLRWluYVNoYXJlZFN0cmluZyBtX3Vy
bDsKICAgICB1aW50NjRfdCBtX3JlcXVlc3RJRDsKICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgbV9z
Y2hlbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2
YXRlLmgKaW5kZXggNzVlOGM5ZS4uZDA3MmE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaApAQCAtMzksNyArMzksNiBAQAogI2luY2x1
ZGUgPFdlYktpdC9XS0luc3BlY3RvckNsaWVudEd0ay5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1Jl
dGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgot
I2luY2x1ZGUgPFdlYktpdC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmg+CiAj
aW5jbHVkZSA8V2ViS2l0L1dLU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Ml9DLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFu
YWdlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRS
ZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5
MTg5YzkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaCIKLQotI2luY2x1ZGUg
IldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0K
LXN0YXRpYyB2b2lkIHN0YXJ0TG9hZGluZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVz
dFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICB3ZWJraXRXZWJDb250ZXh0U3Rh
cnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV0VCS0lUX1dFQl9DT05URVhUKGNsaWVudEluZm8pLCBj
dXN0b21Qcm90b2NvbElELCB0b0ltcGwocmVxdWVzdFJlZikpOwotfQotCi1zdGF0aWMgdm9pZCBz
dG9wTG9hZGluZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHdlYmtp
dFdlYkNvbnRleHRTdG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKFdFQktJVF9XRUJfQ09OVEVYVChj
bGllbnRJbmZvKSwgY3VzdG9tUHJvdG9jb2xJRCk7Ci19Ci0KLXZvaWQgYXR0YWNoUmVxdWVzdE1h
bmFnZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKLXsKLSAg
ICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjAgd2tSZXF1ZXN0TWFu
YWdlckNsaWVudCA9IHsKLSAgICAgICAgewotICAgICAgICAgICAgMCwgLy8gdmVyc2lvbgotICAg
ICAgICAgICAgd2ViQ29udGV4dCAvLyBjbGllbnRJbmZvCi0gICAgICAgIH0sCi0gICAgICAgIHN0
YXJ0TG9hZGluZywKLSAgICAgICAgc3RvcExvYWRpbmcKLSAgICB9OwotICAgIFdLU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQodG9BUEkod2Via2l0V2ViQ29udGV4dEdl
dFJlcXVlc3RNYW5hZ2VyKHdlYkNvbnRleHQpKSwgJndrUmVxdWVzdE1hbmFnZXJDbGllbnQuYmFz
ZSk7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhMzY1NTk0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSwy
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYg
V2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnRfaAotI2RlZmluZSBXZWJLaXRSZXF1ZXN0TWFuYWdl
ckNsaWVudF9oCi0KLSNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCi0KLXZvaWQgYXR0YWNo
UmVxdWVzdE1hbmFnZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCopOwotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVS
SVNjaGVtZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKaW5kZXggODcyYTU2NC4uYWJhMWI5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogLyoqCiAgKiBTRUNUSU9OOiBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0CkBAIC01NCw3ICs1
NSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgZ1JlYWRCdWZmZXJTaXplID0gODE5MjsK
IAogc3RydWN0IF9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSB7CiAgICAgV2ViS2l0V2Vi
Q29udGV4dCogd2ViQ29udGV4dDsKLSAgICBSZWZQdHI8V2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXI+IHdlYlJlcXVlc3RNYW5hZ2VyOworICAgIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5KiBtYW5hZ2VyOwogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IGluaXRpYXRpbmdQYWdl
OwogICAgIHVpbnQ2NF90IHJlcXVlc3RJRDsKICAgICBDU3RyaW5nIHVyaTsKQEAgLTc0LDIxICs3
NSwzMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2NsYXNzX2luaXQo
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdENsYXNzKikKIHsKIH0KIAotV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdCogd2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRfdCByZXF1ZXN0SUQsIFdl
YktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIEFQSTo6VVJMUmVxdWVzdCogdXJsUmVxdWVzdCkK
K1dlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUodWlu
dDY0X3QgcmVxdWVzdElELCBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
IG1hbmFnZXIpCiB7Ci0gICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJ
VF9VUklfU0NIRU1FX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VSSV9TQ0hFTUVf
UkVRVUVTVCwgTlVMTCkpOworICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QgPSBX
RUJLSVRfVVJJX1NDSEVNRV9SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9VUklfU0NI
RU1FX1JFUVVFU1QsIG51bGxwdHIpKTsKICAgICByZXF1ZXN0LT5wcml2LT53ZWJDb250ZXh0ID0g
d2ViQ29udGV4dDsKLSAgICByZXF1ZXN0LT5wcml2LT53ZWJSZXF1ZXN0TWFuYWdlciA9IHdlYmtp
dFdlYkNvbnRleHRHZXRSZXF1ZXN0TWFuYWdlcih3ZWJDb250ZXh0KTsKLSAgICByZXF1ZXN0LT5w
cml2LT51cmkgPSB1cmxSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51
dGY4KCk7Ci0gICAgcmVxdWVzdC0+cHJpdi0+aW5pdGlhdGluZ1BhZ2UgPSBXZWJQcm9jZXNzUHJv
eHk6OndlYlBhZ2UodXJsUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkuaW5pdGlhdGluZ1BhZ2VJ
RCgpKTsKKyAgICByZXF1ZXN0LT5wcml2LT5tYW5hZ2VyID0gJm1hbmFnZXI7CisgICAgcmVxdWVz
dC0+cHJpdi0+dXJpID0gcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKTsKKyAg
ICByZXF1ZXN0LT5wcml2LT5pbml0aWF0aW5nUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFn
ZShyZXNvdXJjZVJlcXVlc3QuaW5pdGlhdGluZ1BhZ2VJRCgpKTsKICAgICByZXF1ZXN0LT5wcml2
LT5yZXF1ZXN0SUQgPSByZXF1ZXN0SUQ7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKIHZvaWQg
d2Via2l0VVJJU2NoZW1lUmVxdWVzdENhbmNlbChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1
ZXN0KQogewotICAgIGlmIChyZXF1ZXN0LT5wcml2LT5jYW5jZWxsYWJsZS5nZXQoKSkKLSAgICAg
ICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwocmVxdWVzdC0+cHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCkp
OworICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKHJlcXVlc3QtPnByaXYtPmNhbmNlbGxhYmxlLmdl
dCgpKTsKK30KKworQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqIHdlYmtpdFVSSVNjaGVtZVJl
cXVlc3RHZXRNYW5hZ2VyKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAg
cmV0dXJuIHJlcXVlc3QtPnByaXYtPm1hbmFnZXI7Cit9CisKK3ZvaWQgd2Via2l0VVJJU2NoZW1l
UmVxdWVzdEludmFsaWRhdGUoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAg
ICByZXF1ZXN0LT5wcml2LT5tYW5hZ2VyID0gbnVsbHB0cjsKKyAgICB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0Q2FuY2VsKHJlcXVlc3QpOwogfQogCiAvKioKQEAgLTE1OSw4ICsxNzAsMTQgQEAgV2Vi
S2l0V2ViVmlldyogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfd2ViX3ZpZXcoV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdCogcmUKIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RS
ZWFkQ2FsbGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jUmVzdWx0KiByZXN1
bHQsIFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHNjaGVtZVJlcXVlc3QpCiB7CiAgICAgR1JlZlB0
cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHNjaGVtZVJlcXVl
c3QpOworICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+
cHJpdjsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgZ3NzaXplIGJ5dGVz
UmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWRfZmluaXNoKGlucHV0U3RyZWFtLCByZXN1bHQsICZl
cnJvci5vdXRQdHIoKSk7CisgICAgaWYgKCFwcml2LT5tYW5hZ2VyKSB7CisgICAgICAgIHdlYmtp
dFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2wocHJpdi0+d2ViQ29udGV4
dCwgcHJpdi0+cmVxdWVzdElEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChi
eXRlc1JlYWQgPT0gLTEpIHsKICAgICAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5p
c2hfZXJyb3IocmVxdWVzdC5nZXQoKSwgZXJyb3IuZ2V0KCkpOwogICAgICAgICByZXR1cm47CkBA
IC0xNzEsMjIgKzE4OCwyMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVh
ZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogICAgIGlmICghcmVx
dWVzdC0+cHJpdi0+c3RyZWFtKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7Ci0gICAgUmVmPEFQSTo6RGF0
YT4gd2ViRGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KHByaXYtPnJlYWRCdWZmZXIpLCBieXRlc1JlYWQpOworICAgIGF1dG8gd2Vi
RGF0YSA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pihwcml2LT5yZWFkQnVmZmVyKSwgYnl0ZXNSZWFkKTsKICAgICBpZiAoIXByaXYtPmJ5dGVzUmVh
ZCkgewogICAgICAgICAvLyBGaXJzdCBjaHVuayByZWFkLiBJbiBjYXNlIG9mIGVtcHR5IHJlcGx5
IGFuIGVtcHR5IEFQSTo6RGF0YSBpcyBzZW50IHRvIHRoZSBuZXR3b3JraW5nIHByb2Nlc3MuCi0g
ICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoV2ViQ29yZTo6VVJMKFdl
YkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHByaXYtPnVyaSkpLCBTdHJpbmc6OmZyb21V
VEY4KHByaXYtPm1pbWVUeXBlLmRhdGEoKSksCisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UoVVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHByaXYtPnVyaSkpLCBTdHJpbmc6OmZy
b21VVEY4KHByaXYtPm1pbWVUeXBlLmRhdGEoKSksCiAgICAgICAgICAgICBwcml2LT5zdHJlYW1M
ZW5ndGgsIGVtcHR5U3RyaW5nKCkpOwotICAgICAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKHByaXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UpOwotICAgICAgICBw
cml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkTG9hZERhdGEocHJpdi0+cmVxdWVzdElELCB3ZWJE
YXRhLnB0cigpKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHBy
aXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRMb2Fk
RGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFk
IHx8ICghYnl0ZXNSZWFkICYmICFwcml2LT5zdHJlYW1MZW5ndGgpKSB7CiAgICAgICAgIC8vIFN1
YnNlcXVlbnQgY2h1bmsgcmVhZC4gV2Ugb25seSBzZW5kIGFuIGVtcHR5IEFQSTo6RGF0YSB0byB0
aGUgbmV0d29ya2luZyBwcm9jZXNzIHdoZW4gc3RyZWFtIGxlbmd0aCBpcyB1bmtub3duLgotICAg
ICAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkTG9hZERhdGEocHJpdi0+cmVxdWVzdElE
LCB3ZWJEYXRhLnB0cigpKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkTG9hZERhdGEocHJp
di0+cmVxdWVzdElELCB3ZWJEYXRhKTsKICAgICB9CiAKICAgICBpZiAoIWJ5dGVzUmVhZCkgewot
ICAgICAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyhyZXF1ZXN0
LT5wcml2LT5yZXF1ZXN0SUQpOwotICAgICAgICB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9h
ZGluZ0N1c3RvbVByb3RvY29sKHJlcXVlc3QtPnByaXYtPndlYkNvbnRleHQsIHJlcXVlc3QtPnBy
aXYtPnJlcXVlc3RJRCk7CisgICAgICAgIHByaXYtPm1hbmFnZXItPmRpZEZpbmlzaExvYWRpbmco
cHJpdi0+cmVxdWVzdElEKTsKKyAgICAgICAgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRp
bmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0SUQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzksNyArMjU1LDcgQEAgdm9pZCB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1
ZXN0LCBHRXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgcHJpdi0+c3RyZWFtID0gbnVsbHB0cjsK
LSAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJp
bmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9yKGVycm9yLT5jb2RlKSwgV2ViQ29yZTo6
VVJMKHByaXYtPnNvdXBVUkkuZ2V0KCkpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdl
KSk7Ci0gICAgcHJpdi0+d2ViUmVxdWVzdE1hbmFnZXItPmRpZEZhaWxXaXRoRXJyb3IocHJpdi0+
cmVxdWVzdElELCByZXNvdXJjZUVycm9yKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJy
b3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9yKGVycm9y
LT5jb2RlKSwgVVJMKHByaXYtPnNvdXBVUkkuZ2V0KCkpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9y
LT5tZXNzYWdlKSk7CisgICAgcHJpdi0+bWFuYWdlci0+ZGlkRmFpbFdpdGhFcnJvcihwcml2LT5y
ZXF1ZXN0SUQsIHJlc291cmNlRXJyb3IpOwogICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hM
b2FkaW5nQ3VzdG9tUHJvdG9jb2wocHJpdi0+d2ViQ29udGV4dCwgcHJpdi0+cmVxdWVzdElEKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVS
SVNjaGVtZVJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oCmluZGV4IGM3MmZhMTguLjQ3YmI4YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNj
aGVtZVJlcXVlc3RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaApAQCAtMjAsMTEgKzIwLDE1IEBACiAj
aWZuZGVmIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlX2gKICNkZWZpbmUgV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdFByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCi1XZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiB3
ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0V2Vi
Q29udGV4dCosIEFQSTo6VVJMUmVxdWVzdCopOworV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogd2Vi
a2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdFdlYkNv
bnRleHQqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJLaXQ6OkN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5Jik7CiB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwo
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdCopOworV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSogd2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIoV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdCopOwordm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0SW52YWxpZGF0ZShXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0Kik7CiAKICNlbmRpZiAvLyBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YkNvbnRleHQuY3BwCmluZGV4IDcyNTM1NTkuLjczODM0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMCw2
ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4
dC5oIgogCisjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlv
bi5oIgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgpAQCAtMzAsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29va2llTWFuYWdl
clByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJLaXREb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdERv
d25sb2FkUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUu
aCIKQEAgLTM4LDcgKzQwLDYgQEAKICNpbmNsdWRlICJXZWJLaXROb3RpZmljYXRpb25Qcm92aWRl
ci5oIgogI2luY2x1ZGUgIldlYktpdFBsdWdpblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRQ
cml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaCIKICNpbmNs
dWRlICJXZWJLaXRTZWN1cml0eU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0U2V0
dGluZ3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUu
aCIKQEAgLTExNSwxMiArMTE2LDYgQEAgZW51bSB7CiAKIGNsYXNzIFdlYktpdFVSSVNjaGVtZUhh
bmRsZXI6IHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+IHsKIHB1Ymxp
YzoKLSAgICBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKCkKLSAgICAgICAgOiBtX2NhbGxiYWNrKDAp
Ci0gICAgICAgICwgbV91c2VyRGF0YSgwKQotICAgICAgICAsIG1fZGVzdHJveU5vdGlmeSgwKQot
ICAgIHsKLSAgICB9CiAgICAgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihXZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhLCBHRGVzdHJveU5vdGlmeSBk
ZXN0cm95Tm90aWZ5KQogICAgICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgICAgICwg
bV91c2VyRGF0YSh1c2VyRGF0YSkKQEAgLTE0Nyw5ICsxNDIsOSBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayBtX2NhbGxiYWNr
OwotICAgIHZvaWQqIG1fdXNlckRhdGE7Ci0gICAgR0Rlc3Ryb3lOb3RpZnkgbV9kZXN0cm95Tm90
aWZ5OworICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayBtX2NhbGxiYWNrIHsgbnVs
bHB0ciB9OworICAgIHZvaWQqIG1fdXNlckRhdGEgeyBudWxscHRyIH07CisgICAgR0Rlc3Ryb3lO
b3RpZnkgbV9kZXN0cm95Tm90aWZ5IHsgbnVsbHB0ciB9OwogfTsKIAogdHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+ID4gVVJJU2NoZW1lSGFuZGxl
ck1hcDsKQEAgLTE2Miw3ICsxNTcsNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHRQcml2YXRl
IHsKICAgICBHUmVmUHRyPFdlYktpdENvb2tpZU1hbmFnZXI+IGNvb2tpZU1hbmFnZXI7CiAgICAg
R1JlZlB0cjxXZWJLaXRGYXZpY29uRGF0YWJhc2U+IGZhdmljb25EYXRhYmFzZTsKICAgICBHUmVm
UHRyPFdlYktpdFNlY3VyaXR5TWFuYWdlcj4gc2VjdXJpdHlNYW5hZ2VyOwotICAgIFJlZlB0cjxX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4gcmVxdWVzdE1hbmFnZXI7CiAgICAg
VVJJU2NoZW1lSGFuZGxlck1hcCB1cmlTY2hlbWVIYW5kbGVyczsKICAgICBVUklTY2hlbWVSZXF1
ZXN0TWFwIHVyaVNjaGVtZVJlcXVlc3RzOwogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKQEAgLTI3
NSw4ICsyNjksNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09i
amVjdCogb2JqZWN0KQogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyKQogICAgICAg
ICBwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0V2Vic2l0ZURhdGFN
YW5hZ2VyQ3JlYXRlKHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uRm9yV2ViUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKSk7CiAKLSAgICBwcml2LT5yZXF1ZXN0TWFu
YWdlciA9IHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyPigpOwotCiAgICAgcHJpdi0+dGxzRXJyb3JzUG9saWN5ID0gV0VCS0lU
X1RMU19FUlJPUlNfUE9MSUNZX0ZBSUw7CiAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldElnbm9y
ZVRMU0Vycm9ycyhmYWxzZSk7CiAKQEAgLTI4Nyw3ICsyNzksNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgYXR0YWNoSW5q
ZWN0ZWRCdW5kbGVDbGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7CiAgICAgYXR0YWNoRG93bmxv
YWRDbGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7Ci0gICAgYXR0YWNoUmVxdWVzdE1hbmFnZXJD
bGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7CisgICAgYXR0YWNoQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9O
KQogICAgIHByaXYtPmdlb2xvY2F0aW9uUHJvdmlkZXIgPSBXZWJLaXRHZW9sb2NhdGlvblByb3Zp
ZGVyOjpjcmVhdGUocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk+KCkpOwpAQCAtMzA0LDYgKzI5Niw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YkNvbnRleHREaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKICAgICAgICAgcHJpdi0+Y2xpZW50c0Rl
dGFjaGVkID0gdHJ1ZTsKICAgICAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVJbmpl
Y3RlZEJ1bmRsZUNsaWVudChudWxscHRyKTsKICAgICAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNl
dERvd25sb2FkQ2xpZW50KG51bGxwdHIpOworICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG51bGxwdHIpOwogICAgIH0KIAogICAgIEdfT0JK
RUNUX0NMQVNTKHdlYmtpdF93ZWJfY29udGV4dF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVj
dCk7CkBAIC04NDksOCArODQyLDkgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfcmVnaXN0ZXJf
dXJpX3NjaGVtZShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGEKICAgICBnX3Jl
dHVybl9pZl9mYWlsKGNhbGxiYWNrKTsKIAogICAgIFJlZlB0cjxXZWJLaXRVUklTY2hlbWVIYW5k
bGVyPiBoYW5kbGVyID0gYWRvcHRSZWYobmV3IFdlYktpdFVSSVNjaGVtZUhhbmRsZXIoY2FsbGJh
Y2ssIHVzZXJEYXRhLCBkZXN0cm95Tm90aWZ5KSk7Ci0gICAgY29udGV4dC0+cHJpdi0+dXJpU2No
ZW1lSGFuZGxlcnMuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKSwgaGFuZGxlci5nZXQoKSk7
Ci0gICAgY29udGV4dC0+cHJpdi0+cmVxdWVzdE1hbmFnZXItPnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2woU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpKTsKKyAgICBhdXRvIGFkZFJlc3Vs
dCA9IGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJzLnNldChTdHJpbmc6OmZyb21VVEY4
KHNjaGVtZSksIGhhbmRsZXIuZ2V0KCkpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkK
KyAgICAgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2woU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpKTsKIH0KIAogLyoqCkBAIC0xMjY2
LDE0ICsxMjYwLDkgQEAgV2ViUHJvY2Vzc1Bvb2wqIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNz
UG9vbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogICAgIHJldHVybiBjb250ZXh0LT5wcml2
LT5wcm9jZXNzUG9vbC5nZXQoKTsKIH0KIAotV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXIqIHdlYmtpdFdlYkNvbnRleHRHZXRSZXF1ZXN0TWFuYWdlcihXZWJLaXRXZWJDb250ZXh0
KiBjb250ZXh0KQotewotICAgIHJldHVybiBjb250ZXh0LT5wcml2LT5yZXF1ZXN0TWFuYWdlci5n
ZXQoKTsKLX0KLQotdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9j
b2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwg
QVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0KQordm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRM
b2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdWludDY0X3Qg
Y3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QsIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyKQogewotICAgIEdS
ZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRV
UklTY2hlbWVSZXF1ZXN0Q3JlYXRlKGN1c3RvbVByb3RvY29sSUQsIGNvbnRleHQsIHVybFJlcXVl
c3QpKTsKKyAgICBHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9w
dEdSZWYod2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZShjdXN0b21Qcm90b2NvbElELCBjb250
ZXh0LCByZXNvdXJjZVJlcXVlc3QsIG1hbmFnZXIpKTsKICAgICBTdHJpbmcgc2NoZW1lKFN0cmlu
Zzo6ZnJvbVVURjgod2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfc2NoZW1lKHJlcXVlc3Qu
Z2V0KCkpKSk7CiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+IGhhbmRsZXIgPSBj
b250ZXh0LT5wcml2LT51cmlTY2hlbWVIYW5kbGVycy5nZXQoc2NoZW1lKTsKICAgICBBU1NFUlQo
aGFuZGxlci5nZXQoKSk7CkBAIC0xMjkyLDYgKzEyODEsMTYgQEAgdm9pZCB3ZWJraXRXZWJDb250
ZXh0U3RvcExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1
aW50NjQKICAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKHJlcXVlc3QuZ2V0KCkpOwog
fQogCit2b2lkIHdlYmtpdFdlYkNvbnRleHRJbnZhbGlkYXRlQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
cyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYg
bWFuYWdlcikKK3sKKyAgICBWZWN0b3I8R1JlZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Pj4g
cmVxdWVzdHM7CisgICAgY29weVZhbHVlc1RvVmVjdG9yKGNvbnRleHQtPnByaXYtPnVyaVNjaGVt
ZVJlcXVlc3RzLCByZXF1ZXN0cyk7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVzdHMp
IHsKKyAgICAgICAgaWYgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RHZXRNYW5hZ2VyKHJlcXVlc3Qu
Z2V0KCkpID09ICZtYW5hZ2VyKQorICAgICAgICAgICAgd2Via2l0VVJJU2NoZW1lUmVxdWVzdElu
dmFsaWRhdGUocmVxdWVzdC5nZXQoKSk7CisgICAgfQorfQorCiB2b2lkIHdlYmtpdFdlYkNvbnRl
eHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsKICAgICBjb250ZXh0LT5wcml2LT51cmlT
Y2hlbWVSZXF1ZXN0cy5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUu
aAppbmRleCA3ZWU5NmIxLi42M2ViMjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKQEAgLTI2LDIx
ICsyNiwyMiBAQAogI2lmbmRlZiBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZV9oCiAjZGVmaW5lIFdl
YktpdFdlYkNvbnRleHRQcml2YXRlX2gKIAorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIldlYktpdFBy
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJLaXRXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNs
dWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqIHdlYmtp
dFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbChXZWJLaXRXZWJDb250ZXh0Kik7CiBXZWJLaXREb3du
bG9hZCogd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9h
ZFByb3h5Kik7CiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dFN0YXJ0RG93bmxvYWQo
V2ViS2l0V2ViQ29udGV4dCosIGNvbnN0IGNoYXIqIHVyaSwgV2ViS2l0OjpXZWJQYWdlUHJveHkq
KTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKFdlYktpdDo6RG93bmxvYWRQ
cm94eSopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0RG93bmxvYWRTdGFydGVkKFdlYktpdFdlYkNv
bnRleHQqLCBXZWJLaXREb3dubG9hZCopOwotV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlciogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKFdlYktpdFdl
YkNvbnRleHQqKTsKLXZvaWQgd2Via2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3Rv
Y29sKFdlYktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBBUEk6OlVS
TFJlcXVlc3QqKTsKK3ZvaWQgd2Via2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3Rv
Y29sKFdlYktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5Jik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRTdG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKFdl
YktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKK3ZvaWQgd2Via2l0
V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKFdlYktpdFdlYkNvbnRl
eHQqLCBXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Jik7CiB2b2lkIHdlYmtpdFdl
YkNvbnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCos
IHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwogYm9vbCB3ZWJraXRXZWJDb250ZXh0SXNMb2Fk
aW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3Rv
Y29sSUQpOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0
V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqLCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqLCBX
ZWJLaXRXZWJWaWV3Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eS5oCmluZGV4IGIzODc1ZjMuLjRjNzQzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCkBAIC0zNCw4ICszNCwx
NCBAQAogT0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sTG9hZGVyOwogI2VuZGlmCiAKK25hbWVz
cGFjZSBJUEMgeworY2xhc3MgRGF0YVJlZmVyZW5jZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFJl
c291cmNlUmVzcG9uc2U7CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNTEsNiArNTcsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRMb2FkaW5nKHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OwogICAgIHZvaWQgc3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiAKKyAg
ICB2b2lkIHByb2Nlc3NEaWRDbG9zZSgpOworCisjaWYgVVNFKFNPVVApCisgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBkaWRGYWls
V2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9D
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbQppbmRleCBhZDUzZTk4Li45NzliMGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHlNYWMubW0KQEAgLTE2MCw0ICsxNjAsOCBAQCB2b2lkIEN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogICAg
IG1fbG9hZGVyTWFwLnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsKIH0KIAordm9pZCBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKK3sKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29y
ay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAppbmRleCAwNTlmNDY1Li4zZmIzNDVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5U291cC5jcHAKQEAgLTIwLDEzICsyMCwxOSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAKKyNp
bmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRlICJDaGls
ZFByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
CisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+CisjZWxp
ZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNFZmwuaD4KKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OkN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5KENoaWxkUHJvY2Vzc1Byb3h5KiBjaGlsZFByb2Nlc3NQcm94
eSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQpAQCAtNDIsMTQgKzQ4LDQwIEBAIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5Ojp+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoKQogICAg
IG1fY2hpbGRQcm9jZXNzUHJveHktPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiB9CiAKK3Zv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCit7CisgICAg
bV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKS5pbnZhbGlkYXRlKCp0
aGlzKTsKK30KKwogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5n
KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKIHsKLSAgICBtX3Byb2Nlc3NQb29sLnN1cHBsZW1lbnQ8V2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI+KCktPnN0YXJ0TG9hZGluZyhjdXN0b21Qcm90b2NvbElE
LCByZXF1ZXN0KTsKKyAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wuY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KCkuc3RhcnRMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSkK
KyAgICAgICAgZGlkRmFpbFdpdGhFcnJvcihjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpjYW5u
b3RTaG93VVJMRXJyb3IocmVxdWVzdCkpOwogfQogCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewotICAgIG1f
cHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
cj4oKS0+c3RvcExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgbV9wcm9jZXNzUG9vbC5j
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKS5zdG9wTG9hZGluZygqdGhpcywgY3VzdG9tUHJv
dG9jb2xJRCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZFJlY2Vp
dmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZFJlY2VpdmVSZXNwb25zZShjdXN0
b21Qcm90b2NvbElELCByZXNwb25zZSwgMCksIDApOworfQorCit2b2lkIEN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5OjpkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+
c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRMb2FkRGF0YShjdXN0b21Q
cm90b2NvbElELCBkYXRhKSwgMCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHk6OmRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+
c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRGYWlsV2l0aEVycm9yKGN1
c3RvbVByb3RvY29sSUQsIGVycm9yKSwgMCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OmRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKK3sK
KyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OkRpZEZpbmlzaExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCksIDApOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3Rv
Y29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY1NWU0My4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKLQot
I2luY2x1ZGUgIkFQSURhdGEuaCIKLSNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNz
YWdlcy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLQotI2lmIFBMQVRGT1JNKEdUSykK
LSNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0d0ay5oPgotI2VsaWYgUExBVEZPUk0oRUZMKQotI2lu
Y2x1ZGUgPFdlYkNvcmUvRXJyb3JzRWZsLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLWNvbnN0IGNoYXIqIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdXBw
bGVtZW50TmFtZSgpCi17Ci0gICAgcmV0dXJuICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlciI7Ci19Ci0KLVJlZjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4g
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmNyZWF0ZShXZWJQcm9jZXNzUG9v
bCogcHJvY2Vzc1Bvb2wpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXIocHJvY2Vzc1Bvb2wpKTsKLX0KLQotV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKLSAgICA6IFdlYkNvbnRleHRTdXBwbGVt
ZW50KHByb2Nlc3NQb29sKQotewotfQotCi1XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlcjo6fldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKCkKLXsKLX0KLQotdm9p
ZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6aW5pdGlhbGl6ZUNsaWVudChj
b25zdCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSogY2xpZW50
KQotewotICAgIG1fY2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKLX0KLQotLy8gV2ViQ29udGV4
dFN1cHBsZW1lbnQKLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnBy
b2Nlc3NQb29sRGVzdHJveWVkKCkKLXsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopCi17Ci19Ci0K
LXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkKLXsKLSAgICBBUEk6Ok9iamVjdDo6cmVmKCk7Ci19Ci0KLXZvaWQgV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQo
KQotewotICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNv
bnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIEFTU0VSVCghc2NoZW1lLmlzTnVsbCgpKTsKLSAg
ICBpZiAobV9yZWdpc3RlcmVkU2NoZW1lcy5jb250YWlucyhzY2hlbWUpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHBy
b2Nlc3NQb29sKCktPnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woc2NoZW1lKTsKLQot
ICAgIG1fcmVnaXN0ZXJlZFNjaGVtZXMuYXBwZW5kKHNjaGVtZSk7Ci19Ci0KLXZvaWQgV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoIXByb2Nlc3NQb29sKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPnVucmVnaXN0ZXJTY2hlbWVG
b3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOwotCi0gICAgYm9vbCByZW1vdmVkID0gbV9yZWdpc3Rl
cmVkU2NoZW1lcy5yZW1vdmVGaXJzdChzY2hlbWUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVtb3Zl
ZCwgcmVtb3ZlZCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXI6OnN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5zdGFydExv
YWRpbmcodGhpcywgY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCkpCi0gICAgICAgIGRpZEZhaWxX
aXRoRXJyb3IoY3VzdG9tUHJvdG9jb2xJRCwgV2ViQ29yZTo6Y2Fubm90U2hvd1VSTEVycm9yKHJl
cXVlc3QpKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6
c3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKLXsKLSAgICBtX2NsaWVudC5z
dG9wTG9hZGluZyh0aGlzLCBjdXN0b21Qcm90b2NvbElEKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJv
Y2Vzc1Bvb2woKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKGN1c3RvbVByb3RvY29s
SUQsIHJlc3BvbnNlLCAwKSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXI6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0
IEFQSTo6RGF0YSogZGF0YSkKLXsKLSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPm5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKGN1c3Rv
bVByb3RvY29sSUQsIGRhdGEtPmRhdGFSZWZlcmVuY2UoKSksIDApOwotfQotCi12b2lkIFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQot
ewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vz
c1Bvb2woKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkN1
c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihjdXN0b21Qcm90b2NvbElELCBl
cnJvciksIDApOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
OjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCi17Ci0gICAgaWYg
KCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5u
ZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyOjpEaWRGaW5pc2hMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQpLCAwKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ3NzU2ZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0g
KgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyX2gKLSNkZWZpbmUgV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJfaAotCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiV2Vi
Q29udGV4dFN1cHBsZW1lbnQuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlckNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci1jbGFzcyBEYXRhOwotfQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwotY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLX0KLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLWNsYXNzIFdlYlByb2Nlc3NQb29sOwotCi1jbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlciA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRT
dXBwbGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5h
bWUoKTsKLQotICAgIHN0YXRpYyBSZWY8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXI+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOwotICAgIHZpcnR1YWwgfldlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyKCk7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29u
c3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqKTsKLQotICAg
IHZvaWQgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVt
ZSk7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3QgU3Ry
aW5nJiBzY2hlbWUpOwotCi0gICAgdm9pZCBzdGFydExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCBzdG9w
TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKLQotICAgIHZvaWQgZGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3Rv
Y29sSUQsIGNvbnN0IEFQSTo6RGF0YSopOwotICAgIHZvaWQgZGlkRmFpbFdpdGhFcnJvcih1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci0g
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotCi0g
ICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9j
b2xzKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RlcmVkU2NoZW1lczsgfQotCi0gICAgdXNpbmcg
QVBJOjpPYmplY3Q6OnJlZjsKLSAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7Ci0KLXByaXZh
dGU6Ci0gICAgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIoV2ViUHJvY2Vzc1Bv
b2wqKTsKLQotICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50Ci0gICAgdm9pZCBwcm9jZXNzUG9v
bERlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nl
c3NQcm94eSopIG92ZXJyaWRlOwotICAgIHZvaWQgcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsK
LQotICAgIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50IG1fY2xpZW50
OwotICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVnaXN0ZXJlZFNjaGVtZXM7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRkZWY2Mi4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ckNsaWVudC5oIgotCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWJvb2wgV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyhXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlciogc291cFJlcXVlc3RNYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgaWYg
KCFtX2NsaWVudC5zdGFydExvYWRpbmcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFJl
ZjxBUEk6OlVSTFJlcXVlc3Q+IHVybFJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShy
ZXF1ZXN0KTsKLSAgICBtX2NsaWVudC5zdGFydExvYWRpbmcodG9BUEkoc291cFJlcXVlc3RNYW5h
Z2VyKSwgY3VzdG9tUHJvdG9jb2xJRCwgdG9BUEkodXJsUmVxdWVzdC5wdHIoKSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQ6OnN0b3BMb2FkaW5nKFdlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiBzb3VwUmVxdWVzdE1hbmFnZXIsIHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQpCi17Ci0gICAgaWYgKG1fY2xpZW50LnN0b3BMb2FkaW5nKQotICAgICAg
ICBtX2NsaWVudC5zdG9wTG9hZGluZyh0b0FQSShzb3VwUmVxdWVzdE1hbmFnZXIpLCBjdXN0b21Q
cm90b2NvbElELCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
c291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWJiMjIxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRfaAotI2RlZmluZSBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9oCi0KLSNpbmNsdWRlICJBUElDbGllbnQu
aCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXS1NvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyLmgiCi0KLW5hbWVzcGFjZSBBUEkgewotCi10ZW1wbGF0ZTw+IHN0cnVj
dCBDbGllbnRUcmFpdHM8V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJh
c2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlckNsaWVudFYwPiBWZXJzaW9uczsKLX07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LWNsYXNzIFJlc291cmNlUmVxdWVzdDsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNz
IFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOwotCi1jbGFzcyBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZT4gewotcHVibGljOgotICAg
IGJvb2wgc3RhcnRMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiwg
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7Ci0gICAgdm9pZCBzdG9wTG9hZGluZyhXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlciosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNs
aWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGI5OTFiN2EuLjg4Y2NjYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC0yMTksNiArMjE5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mKQogewogICAgIGlmIChtX2Rvd25sb2FkUHJveHlNYXApCiAg
ICAgICAgIG1fZG93bmxvYWRQcm94eU1hcC0+cHJvY2Vzc0RpZENsb3NlKCk7CisgICAgbV9jdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eS5wcm9jZXNzRGlkQ2xvc2UoKTsKIAogICAgIG1fdG9rZW5G
b3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBiMGZiN2RjLi5mODE1MTI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5o
IgorI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUg
IkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQuaCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgpAQCAtOTAsMTAgKzkx
LDYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KICNlbmRp
ZgogCi0jaWYgVVNFKFNPVVApCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaCIKLSNlbmRpZgotCiAjaWYgT1MoTElOVVgpCiAjaW5jbHVkZSAiTWVtb3J5UHJl
c3N1cmVNb25pdG9yLmgiCiAjZW5kaWYKQEAgLTE1Nyw2ICsxNTQsOSBAQCBXZWJQcm9jZXNzUG9v
bDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3Vy
YXRpb24pCiAgICAgLCBtX2F1dG9tYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1
dG9tYXRpb25DbGllbnQ+KCkpCiAgICAgLCBtX2Rvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpEb3dubG9hZENsaWVudD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChzdGQ6Om1h
a2VfdW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCkpCisjaWYgVVNFKFNP
VVApCisgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKQorI2VuZGlmCiAgICAgLCBtX3Zp
c2l0ZWRMaW5rU3RvcmUoVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAgICAgLCBtX3Zpc2l0
ZWRMaW5rc1BvcHVsYXRlZChmYWxzZSkKICAgICAsIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIo
dGhpcykKQEAgLTE2NSw5ICsxNjUsNiBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wo
QVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX21l
bW9yeVNhbXBsZXJFbmFibGVkKGZhbHNlKQogICAgICwgbV9tZW1vcnlTYW1wbGVySW50ZXJ2YWwo
MTQwMC4wKQogICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+c2hvdWxk
SGF2ZUxlZ2FjeURhdGFTdG9yZSgpID8gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUobGVn
YWN5V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9uKSkucHRyKCkg
OiBudWxscHRyKQotI2lmIFVTRShTT1VQKQotICAgICwgbV9pbml0aWFsSFRUUENvb2tpZUFjY2Vw
dFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4p
Ci0jZW5kaWYKICAgICAsIG1fc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKGZhbHNlKQog
ICAgICwgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkKHRydWUpCiAgICAgLCBtX2NhbkhhbmRs
ZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKHRydWUpCkBAIC0xOTcsOSArMTk0LDYgQEAgV2Vi
UHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5
PigpOwogICAgIGFkZFN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CiAg
ICAgYWRkU3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCk7Ci0jaWYgVVNF
KFNPVVApCi0gICAgYWRkU3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlcj4oKTsKLSNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogICAgIGFkZFN1cHBs
ZW1lbnQ8V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPigpOwogI2VuZGlmCkBAIC0yOTksNiAr
MjkzLDE2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4KICAgICAgICAgbV9hdXRvbWF0aW9uQ2xp
ZW50ID0gV1RGTW92ZShhdXRvbWF0aW9uQ2xpZW50KTsKIH0KIAorI2lmIFVTRShTT1VQKQordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4gY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50KQoreworICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KQor
ICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7CisgICAgZWxzZQorICAgICAgICBt
X2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IFdURk1vdmUoY3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50KTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRNYXhpbXVt
TnVtYmVyT2ZQcm9jZXNzZXModW5zaWduZWQgbWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKQogewog
ICAgIC8vIEd1YXJkIGFnYWluc3QgQVBJIG1pc3VzZS4KQEAgLTEzNjQsMTEgKzEzNjgsMTcgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091
dEVudHJpZXNBZGRlZEFmdGVyVGltZSgKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJT
Y2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKKyNpZiBVU0Uo
U09VUCkKKyAgICBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFkZChz
Y2hlbWUpOworI2VuZGlmCiAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OkN1
c3RvbVByb3RvY29sTWFuYWdlcjo6UmVnaXN0ZXJTY2hlbWUoc2NoZW1lKSk7CiB9CiAKIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBT
dHJpbmcmIHNjaGVtZSkKIHsKKyNpZiBVU0UoU09VUCkKKyAgICBtX3VybFNjaGVtZXNSZWdpc3Rl
cmVkRm9yQ3VzdG9tUHJvdG9jb2xzLnJlbW92ZShzY2hlbWUpOworI2VuZGlmCiAgICAgc2VuZFRv
TmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6VW5yZWdp
c3RlclNjaGVtZShzY2hlbWUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAppbmRleCBmY2RlOWEwLi5kNWU0YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzAsNiArNzAsNyBAQCBPQkpDX0NMQVNTIE5TU3Ry
aW5nOwogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF1dG9tYXRpb25DbGllbnQ7CitjbGFzcyBD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKIGNsYXNz
IExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50OwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CkBA
IC0xMzUsNiArMTM2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4pOwogICAgIHZvaWQg
c2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+KTsK
ICAgICB2b2lkIHNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21h
dGlvbkNsaWVudD4pOworI2lmIFVTRShTT1VQKQorICAgIHZvaWQgc2V0Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudD4pOworI2VuZGlmCiAKICAgICB2b2lkIHNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyh1
bnNpZ25lZCk7IC8vIENhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBwcm9jZXNz
ZXMgcnVubmluZy4KICAgICB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoKSBjb25z
dCB7IHJldHVybiAhbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCkgPyBVSU5U
X01BWCA6IG1fY29uZmlndXJhdGlvbi0+bWF4aW11bVByb2Nlc3NDb3VudCgpOyB9CkBAIC0yMjUs
NiArMjI5LDEwIEBAIHB1YmxpYzoKICAgICBBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50
JiBoaXN0b3J5Q2xpZW50KCkgeyByZXR1cm4gKm1faGlzdG9yeUNsaWVudDsgfQogICAgIFdlYkNv
bnRleHRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKKyNpZiBVU0UoU09V
UCkKKyAgICBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCYgY3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gKm1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50OyB9CisjZW5kaWYKKwogICAgIFdlYkljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNlKCkgY29u
c3QgeyByZXR1cm4gbV9pY29uRGF0YWJhc2UuZ2V0KCk7IH0KIAogICAgIHN0cnVjdCBTdGF0aXN0
aWNzIHsKQEAgLTQ1NSw2ICs0NjMsOSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxB
UEk6OkF1dG9tYXRpb25DbGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9oaXN0b3J5Q2xpZW50
OworI2lmIFVTRShTT1VQKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CisjZW5kaWYKIAog
ICAgIFJlZlB0cjxXZWJBdXRvbWF0aW9uU2Vzc2lvbj4gbV9hdXRvbWF0aW9uU2Vzc2lvbjsKIApA
QCAtNDk5LDcgKzUxMCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29udGV4dFN1cHBsZW1lbnRNYXAg
bV9zdXBwbGVtZW50czsKIAogI2lmIFVTRShTT1VQKQotICAgIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeTsKKyAgICBIVFRQQ29va2llQWNjZXB0
UG9saWN5IG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3kgeyBIVFRQQ29va2llQWNjZXB0
UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4gfTsKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKQpAQCAtNTMwLDYgKzU0MSw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoU09VUCkKICAg
ICBib29sIG1faWdub3JlVExTRXJyb3JzIHsgdHJ1ZSB9OworICAgIEhhc2hTZXQ8U3RyaW5nLCBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Q
cm90b2NvbHM7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9tZW1vcnlDYWNoZURpc2FibGVkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsLmNwcAppbmRleCBiOWE2NTdmLi5lOTg4NDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcApAQCAt
MjYsNTIgKzI2LDU5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVxdWVzdE1h
bmFnZXJDbGllbnRFZmwuaCIKIAorI2luY2x1ZGUgIkFQSUN1c3RvbVByb2NvbE1hbmFnZXJDbGll
bnQuaCIKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUg
ImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0
X3ByaXZhdGUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBpbmxpbmUgUmVxdWVz
dE1hbmFnZXJDbGllbnRFZmwqIHRvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwoY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVxdWVzdE1hbmFnZXJDbGll
bnRFZmwqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci19Ci0KLVJlcXVlc3RNYW5h
Z2VyQ2xpZW50RWZsOjpSZXF1ZXN0TWFuYWdlckNsaWVudEVmbChXS0NvbnRleHRSZWYgY29udGV4
dCkKLXsKLSAgICBtX3JlcXVlc3RNYW5hZ2VyID0gdG9BUEkodG9JbXBsKGNvbnRleHQpLT5zdXBw
bGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigpKTsKLSAgICBBU1NF
UlQobV9yZXF1ZXN0TWFuYWdlcik7CitjbGFzcyBDdXN0b21Qcm9jb2xNYW5hZ2VyQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6Q3VzdG9tUHJvY29sTWFuYWdlckNsaWVudCB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgQ3VzdG9tUHJvY29sTWFuYWdlckNsaWVudChSZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbCogY2xpZW50KQorICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICB7CisgICAgfQog
Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwIHdrUmVxdWVz
dE1hbmFnZXJDbGllbnQ7Ci0gICAgbWVtc2V0KCZ3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LCAwLCBz
aXplb2YoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwKSk7Citwcml2
YXRlOgorICAgIGJvb2wgc3RhcnRMb2FkaW5nKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBt
YW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFJlZlB0cjxFd2tVcmxT
Y2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gRXdrVXJsU2NoZW1lUmVxdWVzdDo6Y3JlYXRlKG1hbmFn
ZXIsIHRvQVBJKEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSksIGN1c3Rv
bVByb3RvY29sSUQpOworICAgICAgICBTdHJpbmcgc2NoZW1lKFN0cmluZzo6ZnJvbVVURjgocmVx
dWVzdC5nZXQoKS0+c2NoZW1lKCkpKTsKKyAgICAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhh
bmRsZXI+IGhhbmRsZXIgPSAobV9jbGllbnQtPm1fdXJpU2NoZW1lSGFuZGxlcnMpLmdldChzY2hl
bWUpOworICAgICAgICBBU1NFUlQoaGFuZGxlci5nZXQoKSk7CisgICAgICAgIGlmICghaGFuZGxl
ci0+aGFzQ2FsbGJhY2soKSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIHdrUmVxdWVzdE1h
bmFnZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50
LmJhc2UuY2xpZW50SW5mbyA9IHRoaXM7Ci0gICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5zdGFy
dExvYWRpbmcgPSBzdGFydExvYWRpbmc7Ci0gICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5zdG9w
TG9hZGluZyA9IHN0b3BMb2FkaW5nOworICAgICAgICAobV9jbGllbnQtPm1fdXJpU2NoZW1lUmVx
dWVzdHMpLnNldChjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KTsKKyAgICAgICAgaGFuZGxlci0+
cGVyZm9ybUNhbGxiYWNrKHJlcXVlc3QuZ2V0KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CiAKLSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KG1f
cmVxdWVzdE1hbmFnZXIuZ2V0KCksICZ3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LmJhc2UpOwotfQor
ICAgIHZvaWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElEKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgKG1fY2xpZW50LT5t
X3VyaVNjaGVtZVJlcXVlc3RzKS5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgfQogCi12
b2lkIFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpzdGFydExvYWRpbmcoV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElE
LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsK
LSAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogY2xpZW50ID0gdG9SZXF1ZXN0TWFuYWdlckNs
aWVudEVmbChjbGllbnRJbmZvKTsKLSAgICBSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4gcmVx
dWVzdCA9IEV3a1VybFNjaGVtZVJlcXVlc3Q6OmNyZWF0ZShtYW5hZ2VyLCB0b0ltcGwocmVxdWVz
dFJlZiksIGN1c3RvbVByb3RvY29sSUQpOwotICAgIFN0cmluZyBzY2hlbWUoU3RyaW5nOjpmcm9t
VVRGOChyZXF1ZXN0LmdldCgpLT5zY2hlbWUoKSkpOwotICAgIFJlZlB0cjxXZWJLaXRVUklTY2hl
bWVIYW5kbGVyPiBoYW5kbGVyID0gKGNsaWVudC0+bV91cmlTY2hlbWVIYW5kbGVycykuZ2V0KHNj
aGVtZSk7Ci0gICAgQVNTRVJUKGhhbmRsZXIuZ2V0KCkpOwotICAgIGlmICghaGFuZGxlci0+aGFz
Q2FsbGJhY2soKSkKLSAgICAgICAgcmV0dXJuOworICAgIHZvaWQgaW52YWxpZGF0ZShDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlcikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFZl
Y3RvcjxSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4+IHJlcXVlc3RzOworICAgICAgICBjb3B5
VmFsdWVzVG9WZWN0b3IobV9jbGllbnQtPm1fdXJpU2NoZW1lUmVxdWVzdHMsIHJlcXVlc3RzKTsK
KyAgICAgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVzdHMpIHsKKyAgICAgICAgICAgIGlm
IChyZXF1ZXN0LT5tYW5hZ2VyKCkgPT0gJm1hbmFnZXIpIHsKKyAgICAgICAgICAgICAgICByZXF1
ZXN0LT5pbnZhbGlkYXRlKCk7CisgICAgICAgICAgICAgICAgc3RvcExvYWRpbmcobWFuYWdlciwg
cmVxdWVzdC0+aWQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKLSAgICAo
Y2xpZW50LT5tX3VyaVNjaGVtZVJlcXVlc3RzKS5zZXQoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVz
dCk7Ci0gICAgaGFuZGxlci0+cGVyZm9ybUNhbGxiYWNrKHJlcXVlc3QuZ2V0KCkpOwotfQorICAg
IFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKiBtX2NsaWVudDsKK307CiAKLXZvaWQgUmVxdWVzdE1h
bmFnZXJDbGllbnRFZmw6OnN0b3BMb2FkaW5nKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpSZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbChXS0NvbnRleHRSZWYgY29udGV4dCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7
Ci0KLSAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogY2xpZW50ID0gdG9SZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbChjbGllbnRJbmZvKTsKLSAgICAoY2xpZW50LT5tX3VyaVNjaGVtZVJlcXVlc3Rz
KS5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgbV9wcm9jZXNzUG9vbCA9IHRvSW1wbChj
b250ZXh0KTsKKyAgICBtX3Byb2Nlc3NQb29sLT5zZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHRoaXMpKTsK
IH0KIAogdm9pZCBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5k
bGVyKGNvbnN0IFN0cmluZyYgc2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxi
YWNrLCB2b2lkKiB1c2VyRGF0YSkKQEAgLTc5LDggKzg2LDkgQEAgdm9pZCBSZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbDo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYgc2NoZW1l
LCBFd2sKICAgICBBU1NFUlQoY2FsbGJhY2spOwogCiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVt
ZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdFJlZihuZXcgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihj
YWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBtX3VyaVNjaGVtZUhhbmRsZXJzLnNldChzY2hlbWUs
IGhhbmRsZXIpOwotICAgIHRvSW1wbChtX3JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+cmVnaXN0ZXJT
Y2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91
cmlTY2hlbWVIYW5kbGVycy5zZXQoc2NoZW1lLCBoYW5kbGVyKTsKKyAgICBpZiAoYWRkUmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2woc2NoZW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmgKaW5kZXggODdkMzYwZS4uMWQyOThiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuaApAQCAtMjcsNyArMjcsNiBA
QAogI2RlZmluZSBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbF9oCiAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a191cmxf
c2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIgogCkBAIC03OSwxMCArNzgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIEV3
a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKTsKIAogcHJp
dmF0ZToKLSAgICBzdGF0aWMgdm9pZCBzdGFydExvYWRpbmcoV0tTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlclJlZiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgV0tVUkxSZXF1ZXN0
UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBzdG9wTG9hZGlu
ZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Q
cm90b2NvbElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLQotICAgIFdLUmV0YWluUHRyPFdL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWY+IG1fcmVxdWVzdE1hbmFnZXI7Cisg
ICAgV2ViUHJvY2Vzc1Bvb2wqIG1fcHJvY2Vzc1Bvb2w7CiAgICAgVVJJU2NoZW1lSGFuZGxlck1h
cCBtX3VyaVNjaGVtZUhhbmRsZXJzOwogICAgIFVSSVNjaGVtZVJlcXVlc3RNYXAgbV91cmlTY2hl
bWVSZXF1ZXN0czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlByb2Nlc3NQb29sRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
UHJvY2Vzc1Bvb2xFZmwuY3BwCmluZGV4IDNmMjY0MGUuLmZmYTJkNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwCkBAIC0zMiw3
ICszMiw2IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdl
cy5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCiAj
aW5jbHVkZSA8RWZyZWV0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCmluZGV4IDgxOTdm
ZDMuLjQxMGE5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2Vi
UHJvY2Vzc1Bvb2xHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2Vi
UHJvY2Vzc1Bvb2xHdGsuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVj
dG9yU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2NoZW1lUmVnaXN0cnkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9z
b3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291
cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCmluZGV4IGQ1ZGIyNDQuLjkzYTdjMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNw
cApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTQwLDcgKzM5LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmEK
ICAgICBwYXJhbWV0ZXJzLmNvb2tpZUFjY2VwdFBvbGljeSA9IG1faW5pdGlhbEhUVFBDb29raWVB
Y2NlcHRQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5pZ25vcmVUTFNFcnJvcnMgPSBtX2lnbm9yZVRM
U0Vycm9yczsKICAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IFdlYkNvcmU6OnVzZXJQcmVmZXJy
ZWRMYW5ndWFnZXMoKTsKLSAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3Vz
dG9tUHJvdG9jb2xzID0gc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlcj4oKS0+cmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Qcm90b2NvbHMoKTsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIHNjaGVtZSA6IG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90
b2NvbHMpCisgICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Q
cm90b2NvbHMuYXBwZW5kKHNjaGVtZSk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3
b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcgPSBmYWxzZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295146</attachid>
            <date>2016-11-18 06:39:27 -0800</date>
            <delta_ts>2016-11-18 06:46:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-custom-protocols-soup.diff</filename>
            <type>text/plain</type>
            <size>82766</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0Yjg5MTk0Li5lMzc3NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsODcg
QEAKIDIwMTYtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtTT1VQXSBTaW1wbGlmeSBjdXN0b20gcHJvdG9jb2xzIGhhbmRsZXIgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDkyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGFyZSB1c2luZyB0b28gbWFueSBjbGFzc2VzIGZvciB0aGlzIGFuZCBhbHNvIHRoZSBD
IEFQSSB0aGF0IGlzIG5vdCBuZWVkZWQsIGJlY2F1c2UgYm90aCBHVEsrIGFuZCBFRkwgaGF2ZQor
ICAgICAgICB0aGVpciBvd24gQVBJcyBhbmQgdGhpcyBpcyBub3QgdXNlZCBieSBXVFIgYXQgYWxs
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IFJlbW92ZSBmaWxlcyBmcm9tIGNvbXBp
bGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBT
aGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNl
U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmg6IFJlbW92ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250ZXh0U291cC5oOiBSZW1vdmVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9zb3Vw
L1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDogUmVtb3ZlIHVubmVl
ZGVkIGluY2x1ZGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVf
cmVxdWVzdC5jcHA6IFVzZSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSBpbnN0ZWFkIG9mIFdL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYuCisgICAgICAgIChFd2tVcmxTY2hl
bWVSZXF1ZXN0OjpFd2tVcmxTY2hlbWVSZXF1ZXN0KToKKyAgICAgICAgKEV3a1VybFNjaGVtZVJl
cXVlc3Q6OmZpbmlzaCk6CisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3By
aXZhdGUuaDoKKyAgICAgICAgKEV3a1VybFNjaGVtZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAg
IChFd2tVcmxTY2hlbWVSZXF1ZXN0OjptYW5hZ2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmg6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1
ZXN0TWFuYWdlckNsaWVudC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFBy
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdl
ckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
UmVxdWVzdE1hbmFnZXJDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDogVXNlIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5IGluc3RlYWQgb2YgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuCisg
ICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFVS
SVNjaGVtZVJlcXVlc3RDYW5jZWwpOgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdl
dE1hbmFnZXIpOgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUpOgor
ICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRDYWxsYmFjayk6CisgICAgICAgICh3
ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcik6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdl
YkNvbnRleHRDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0RGlzcG9zZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfcmVnaXN0ZXJfdXJpX3NjaGVtZSk6CisgICAg
ICAgICh3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2wpOgorICAgICAg
ICAod2Via2l0V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOiBJbnZhbGlkYXRlIHRoZSBjbGllbnQuCisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcpOiBOb3Rp
ZnkgdGhlIGNsaWVudC4KKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHk6OnN0b3BMb2FkaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UpOiBOb3RpZnkgdGhlIG5ldHdvcmsgcHJv
Y2Vzcy4KKyAgICAgICAgKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZExv
YWREYXRhKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5OjpkaWRGYWlsV2l0aEVycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5OjpkaWRGaW5pc2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9j
b2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKTogTm90aWZ5IHRoZSBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bv
b2wpOiBJbml0aWFsaXplIHRoZSBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgYW5kIHJlbW92
ZSB0aGUgYWxsIHN1cHBsZW1lbnQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpz
ZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbCk6IEluIGNhc2Ugb2Ygc291
cCBjYWNoZSB0aGUgZ2l2ZW4gcHJvdG9jb2wuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2wpOiBJbiBjYXNlIG9mIHNvdXAg
ZGVsZXRlIHRoZSBnaXZlbiBwcm90b2NvbCBmcm9tIHRoZSBjYWNoZS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1JlcXVlc3RN
YW5hZ2VyQ2xpZW50RWZsLmNwcDogRG8gbm90IHVzZSB0aGUgQyBBUEksIGJ1dCBBUEk6OkN1c3Rv
bVByb2NvbE1hbmFnZXJDbGllbnQuCisgICAgICAgIChXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsOjpSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCk6CisgICAgICAgIChXZWJLaXQ6OlJlcXVl
c3RNYW5hZ2VyQ2xpZW50RWZsOjpyZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3Rr
L1dlYlByb2Nlc3NQb29sR3RrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJQcm9j
ZXNzUG9vbFNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MpOiBVc2UgbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZv
ckN1c3RvbVByb3RvY29scyB0bworICAgICAgICBidWlsZCB0aGUgbGlzdCBvZiBjdXN0b20gcHJv
dG9jb2xzIHRvIHNlbmQgdG8gdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKworMjAxNi0xMS0xOCAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgUmVtb3Zl
IG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkgZnJvbSBXZWJQcm9jZXNzUHJveHkKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDkwOAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDZlNzdlZTYuLjk5NDRhZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlCkBAIC03Niw3ICs3Niw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3RWZsLmNwcAogCiAgICAgVUlQcm9jZXNz
L0FQSS9DL3NvdXAvV0tDb29raWVNYW5hZ2VyU291cC5jcHAKLSAgICBVSVByb2Nlc3MvQVBJL0Mv
c291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9j
ZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAKIApAQCAt
MTMxLDggKzEzMCw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vz
cy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAogCiAgICAgVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3Vw
LmNwcAotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcAotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50LmNwcAogCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4
LmNwcAogICAgIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHAKQEAgLTI1Niw2ICsyNTMsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vU2hhcmVkL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC91bml4IgorICAgICIk
e1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL0MvY2Fpcm8iCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9Db29y
ZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvZWZs
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA5ZmQyZDE2Li41OTU0YjcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTAxLDcgKzEwMSw2IEBAIGxpc3QoQVBQRU5EIFdlYktp
dDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9ndGsvV0tWaWV3LmNwcAogCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tDb29raWVNYW5hZ2VyU291cC5jcHAKLSAgICBVSVByb2Nlc3Mv
QVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcAogCiAgICAg
VUlQcm9jZXNzL0FQSS9ndGsvQVBJV2Vic2l0ZURhdGFTdG9yZUd0ay5jcHAKICAgICBVSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTEzNCw2ICsxMzMsOCBAQCBsaXN0KEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVN
YW5hZ2VyUHJpdmF0ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3JlZGVudGlhbC5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDcmVkZW50aWFsLmgKKyAgICBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwCisgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKICAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREZWZpbmVzLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXREb3dubG9hZC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5o
CkBAIC0yMTAsOCArMjExLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpbnRPcGVyYXRpb25Qcml2YXRlLmgKICAgICBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFByaXZhdGUuaAotICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50LmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50
LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uaAog
ICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRl
LmgKQEAgLTI4Myw4ICsyODIsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBV
SVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1cmVNb25pdG9yLmNwcAogCiAgICAgVUlQcm9jZXNz
L05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlT
b3VwLmNwcAotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcAotICAgIFVJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50LmNwcAogCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5j
cHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCmluZGV4IDk0OGUxNjAuLjMyZmJj
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTM0LDEwICszNCw2IEBA
CiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZUd0ay5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFVT
RV9TT1VQKQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2VTb3VwLmg+Ci0jZW5kaWYKLQogI2lmIGRl
ZmluZWQoQlVJTERJTkdfRUZMX18pCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZUVmbC5oPgogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VT
b3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMGYwODUuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNlU291cC5oCisrKyAvZGV2L251bGwKQEAg
LTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIFdLQmFzZVNvdXBfaAotI2RlZmluZSBXS0Jhc2VTb3VwX2gKLQotI2lm
bmRlZiBXS0Jhc2VfaAotI2Vycm9yICJQbGVhc2UgI2luY2x1ZGUgXCJXS0Jhc2UuaFwiIGluc3Rl
YWQgb2YgdGhpcyBmaWxlIGRpcmVjdGx5LiIKLSNlbmRpZgotCi10eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS1NvdXBSZXF1ZXN0TWFuYWdlciogV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWY7Ci10
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyKiBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmOwotCi0jZW5kaWYgLyog
V0tCYXNlU291cF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0
LmgKaW5kZXggN2I0YTRkNS4uZjdmM2EyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0FQSUNhc3QuaApAQCAtNTUyLDEwICs1NTIsNiBAQCBpbmxpbmUgUHJveHlpbmdSZWZQ
dHI8V2ViR3JhbW1hckRldGFpbD4gdG9BUEkoY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYg
Z3JhbQogI2luY2x1ZGUgIldLQVBJQ2FzdEd0ay5oIgogI2VuZGlmCiAKLSNpZiBVU0UoU09VUCkK
LSNpbmNsdWRlICJXS0FQSUNhc3RTb3VwLmgiCi0jZW5kaWYKLQogI2lmIGRlZmluZWQoQlVJTERJ
TkdfRUZMX18pCiAjaW5jbHVkZSAiV0tBUElDYXN0RWZsLmgiCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRmNjNmMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw0MSArMCwwIEBACi0vKgotICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDEyIElnYWxp
YSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tBUElDYXN0U291cF9oCi0jZGVmaW5lIFdLQVBJ
Q2FzdFNvdXBfaAotCi0jaWZuZGVmIFdLQVBJQ2FzdF9oCi0jZXJyb3IgIlBsZWFzZSAjaW5jbHVk
ZSBcIldLQVBJQ2FzdC5oXCIgaW5zdGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHkuIgotI2VuZGlm
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlcjsKLQotV0tfQUREX0FQSV9NQVBQSU5HKFdLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXJSZWYsIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKQotCi19
Ci0KLSNlbmRpZiAvLyBXS0FQSUNhc3RTb3VwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggY2Q0MmYzOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgV0tDb250ZXh0U291cF9oCi0jZGVmaW5lIFdLQ29udGV4dFNvdXBfaAotCi0jaW5jbHVkZSA8
V2ViS2l0L1dLQmFzZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5o
PgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLVdLX0VYUE9S
VCBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBXS0NvbnRleHRHZXRTb3VwUmVxdWVzdE1hbmFnZXIo
V0tDb250ZXh0UmVmIGNvbnRleHQpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgot
Ci0jZW5kaWYgLyogV0tDb250ZXh0U291cF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
NWQzNmY2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3Vw
L1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5oIgotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAi
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKLQotdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKLQotV0tUeXBlSUQgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckdl
dFR5cGVJRCgpCi17Ci0gICAgcmV0dXJuIHRvQVBJKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyOjpBUElUeXBlKTsKLX0KLQotdm9pZCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYg
c291cFJlcXVlc3RNYW5hZ2VyUmVmLCBjb25zdCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50QmFzZSogd2tDbGllbnQpCi17Ci0gICAgdG9JbXBsKHNvdXBSZXF1ZXN0TWFu
YWdlclJlZiktPmluaXRpYWxpemVDbGllbnQod2tDbGllbnQpOwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4MjJhNzYyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyX2gK
LSNkZWZpbmUgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcl9oCi0KLSNpbmNsdWRl
IDxXZWJLaXQvV0tCYXNlLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0j
ZW5kaWYKLQotdHlwZWRlZiB2b2lkICgqV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
clN0YXJ0TG9hZGluZ0NhbGxiYWNrKShXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
UmVmIHNvdXBNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBXS1VSTFJlcXVl
c3RSZWYgcmVxdWVzdFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQg
KCpXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU3RvcExvYWRpbmdDYWxsYmFjayko
V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBzb3VwTWFuYWdlclJlZiwgdWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0KLXR5cGVk
ZWYgc3RydWN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlIHsK
LSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmVyc2lvbjsKLSAgICBjb25zdCB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKLX0gV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2U7Ci0KLXR5cGVkZWYgc3RydWN0IFdLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJDbGllbnRWMCB7Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2UgICAgICAgICAgIGJhc2U7Ci0KLSAgICBXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyU3RhcnRMb2FkaW5nQ2FsbGJhY2sgc3RhcnRMb2FkaW5nOwotICAg
IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTdG9wTG9hZGluZ0NhbGxiYWNrICBz
dG9wTG9hZGluZzsKLX0gV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYw
OwotCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ckdldFR5cGVJRCgpOwotCi1XS19FWFBPUlQgdm9pZCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYs
IGNvbnN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKik7Ci0K
LSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS1NvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBmNjY3ZWRlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJlcXVlc3RNYW5hZ2VyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgV0tTb3VwUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXS1Nv
dXBSZXF1ZXN0TWFuYWdlcl9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0KLSNpZmRl
ZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotdHlwZWRlZiB2b2lkICgqV0tT
b3VwUmVxdWVzdE1hbmFnZXJEaWRSZWNlaXZlVVJJUmVxdWVzdENhbGxiYWNrKShXS1NvdXBSZXF1
ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdLVVJMUmVmIHVybFJlZiwgV0tQ
YWdlUmVmIHBhZ2VSZWYsIHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7Ci10eXBlZGVmIHZvaWQgKCpXS1NvdXBSZXF1ZXN0TWFuYWdlckRpZEZhaWxUb0xvYWRVUklS
ZXF1ZXN0Q2FsbGJhY2spKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0TWFuYWdl
clJlZiwgdWludDY0X3QgcmVxdWVzdElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLQotdHlw
ZWRlZiBzdHJ1Y3QgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlIHsKLSAgICBpbnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKLSAg
ICBjb25zdCB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xp
ZW50SW5mbzsKLX0gV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlOwotCi10eXBlZGVmIHN0
cnVjdCBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudFYwIHsKLSAgICBXS1NvdXBSZXF1ZXN0TWFu
YWdlckNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgYmFzZTsKLQotICAgIFdLU291cFJl
cXVlc3RNYW5hZ2VyRGlkUmVjZWl2ZVVSSVJlcXVlc3RDYWxsYmFjayAgICBkaWRSZWNlaXZlVVJJ
UmVxdWVzdDsKLSAgICBXS1NvdXBSZXF1ZXN0TWFuYWdlckRpZEZhaWxUb0xvYWRVUklSZXF1ZXN0
Q2FsbGJhY2sgZGlkRmFpbFRvTG9hZFVSSVJlcXVlc3Q7Ci19IFdLU291cFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50VjA7Ci0KLVdLX0VYUE9SVCBXS1R5cGVJRCBXS1NvdXBSZXF1ZXN0TWFuYWdlckdldFR5
cGVJRCgpOwotCi1XS19FWFBPUlQgdm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdlclNldENsaWVudChX
S1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRC
YXNlKiBjbGllbnQpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWdpc3Rl
clVSSVNjaGVtZShXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwgV0tTdHJpbmdSZWYgc2NoZW1lUmVm
KTsKLVdLX0VYUE9SVCB2b2lkIFdLU291cFJlcXVlc3RNYW5hZ2VyRGlkSGFuZGxlVVJJUmVxdWVz
dChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwgV0tEYXRhUmVmLCB1aW50NjRfdCBjb250ZW50TGVu
Z3RoLCBXS1N0cmluZ1JlZiBtaW1lVHlwZVJlZiwgdWludDY0X3QgcmVxdWVzdElEKTsKLVdLX0VY
UE9SVCB2b2lkIFdLU291cFJlcXVlc3RNYW5hZ2VyRGlkUmVjZWl2ZVVSSVJlcXVlc3REYXRhKFdL
U291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS0RhdGFSZWYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci0K
LSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS1NvdXBSZXF1ZXN0
TWFuYWdlcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
Y29udGV4dC5jcHAKaW5kZXggMTc5NTI2OS4uYjRlZGU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtMjYsNyArMjYsNiBAQAog
I2luY2x1ZGUgIlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJpdmF0ZS5oIgotI2luY2x1ZGUgIldLQ29udGV4dFNv
dXAuaCIKICNpbmNsdWRlICJXS051bWJlci5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5j
bHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCmluZGV4IDk4OGI5
OTYuLmY1NTQ4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCkBAIC0zMSwxNCArMzEsMTMgQEAK
ICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldLVVJMLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuaCIKIAogI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1Fd2tVcmxTY2hlbWVSZXF1ZXN0OjpFd2tVcmxTY2hl
bWVSZXF1ZXN0KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgbWFuYWdlciwg
QVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgOiBt
X3drUmVxdWVzdE1hbmFnZXIobWFuYWdlcikKK0V3a1VybFNjaGVtZVJlcXVlc3Q6OkV3a1VybFNj
aGVtZVJlcXVlc3QoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIEFQSTo6VVJM
UmVxdWVzdCogdXJsUmVxdWVzdCwgdWludDY0X3QgcmVxdWVzdElEKQorICAgIDogbV93a1JlcXVl
c3RNYW5hZ2VyKCZtYW5hZ2VyKQogICAgICwgbV9yZXF1ZXN0SUQocmVxdWVzdElEKQogewogICAg
IFdLVVJMUmVmIHVybCA9IHRvQ29waWVkVVJMQVBJKHVybFJlcXVlc3QtPnJlc291cmNlUmVxdWVz
dCgpLnVybCgpKTsKQEAgLTY5LDYgKzY4LDkgQEAgY29uc3QgY2hhciogRXdrVXJsU2NoZW1lUmVx
dWVzdDo6cGF0aCgpIGNvbnN0CiAKIHZvaWQgRXdrVXJsU2NoZW1lUmVxdWVzdDo6ZmluaXNoKGNv
bnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50NjRfdCBjb250ZW50TGVuZ3RoLCBjb25zdCBjaGFy
KiBtaW1lVHlwZSkKIHsKKyAgICBpZiAoIW1fd2tSZXF1ZXN0TWFuYWdlcikKKyAgICAgICAgcmV0
dXJuOworCiAgICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiB3a0RhdGEoQWRvcHRXSywgV0tEYXRh
Q3JlYXRlKGNvbnRlbnRMZW5ndGggPyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNo
YXIqPihjb250ZW50RGF0YSkgOiAwLCBjb250ZW50TGVuZ3RoKSk7CiAgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHdrTWltZVR5cGUgPSBtaW1lVHlwZSA/IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcobWltZVR5cGUpKSA6IDA7CiAKQEAgLTc2LDEwICs3OCwxNSBAQCB2
b2lkIEV3a1VybFNjaGVtZVJlcXVlc3Q6OmZpbmlzaChjb25zdCB2b2lkKiBjb250ZW50RGF0YSwg
dWludDY0X3QgY29udGVudExlbmd0aAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KG1fdXJs
KSksCiAgICAgICAgIFN0cmluZzo6ZnJvbVVURjgobWltZVR5cGUpLCBjb250ZW50TGVuZ3RoLCBl
bXB0eVN0cmluZygpKTsKIAotICAgIHRvSW1wbChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5k
aWRSZWNlaXZlUmVzcG9uc2UobV9yZXF1ZXN0SUQsIHJlc3BvbnNlKTsKLSAgICB0b0ltcGwobV93
a1JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+ZGlkTG9hZERhdGEobV9yZXF1ZXN0SUQsIHRvSW1wbCh3
a0RhdGEuZ2V0KCkpKTsKLSAgICB0b0ltcGwobV93a1JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+ZGlk
RmluaXNoTG9hZGluZyhtX3JlcXVlc3RJRCk7Ci0gICAgdG9JbXBsKG1fd2tSZXF1ZXN0TWFuYWdl
ci5nZXQoKSktPnN0b3BMb2FkaW5nKG1fcmVxdWVzdElEKTsKKyAgICBtX3drUmVxdWVzdE1hbmFn
ZXItPmRpZFJlY2VpdmVSZXNwb25zZShtX3JlcXVlc3RJRCwgcmVzcG9uc2UpOworICAgIG1fd2tS
ZXF1ZXN0TWFuYWdlci0+ZGlkTG9hZERhdGEobV9yZXF1ZXN0SUQsIHRvSW1wbCh3a0RhdGEuZ2V0
KCkpLT5kYXRhUmVmZXJlbmNlKCkpOworICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkRmluaXNo
TG9hZGluZyhtX3JlcXVlc3RJRCk7CisgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5zdG9wTG9hZGlu
ZyhtX3JlcXVlc3RJRCk7Cit9CisKK3ZvaWQgRXdrVXJsU2NoZW1lUmVxdWVzdDo6aW52YWxpZGF0
ZSgpCit7CisgICAgbV93a1JlcXVlc3RNYW5hZ2VyID0gbnVsbHB0cjsKIH0KIAogY29uc3QgY2hh
ciogZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9zY2hlbWVfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1l
X1JlcXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oCmluZGV4
IGEzOTg5MmIuLmY1OWQ1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oCkBA
IC0yNiwxMSArMjYsMTEgQEAKICNpZm5kZWYgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRl
X2gKICNkZWZpbmUgZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlX2gKIAorI2luY2x1ZGUg
IkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAj
aW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5j
bHVkZSAiV0tSZXRhaW5QdHIuaCIKLSNpbmNsdWRlICJXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX29iamVjdF9wcml2YXRlLmgiCiAKIC8qKgpAQCAt
NDEsOSArNDEsOSBAQCBjbGFzcyBFd2tVcmxTY2hlbWVSZXF1ZXN0IDogcHVibGljIEV3a09iamVj
dCB7CiBwdWJsaWM6CiAgICAgRVdLX09CSkVDVF9ERUNMQVJFKEV3a1VybFNjaGVtZVJlcXVlc3Qp
CiAKLSAgICBzdGF0aWMgUmVmUHRyPEV3a1VybFNjaGVtZVJlcXVlc3Q+IGNyZWF0ZShXS1NvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmIG1hbmFnZXIsIEFQSTo6VVJMUmVxdWVzdCog
dXJsUmVxdWVzdCwgdWludDY0X3QgcmVxdWVzdElEKQorICAgIHN0YXRpYyBSZWZQdHI8RXdrVXJs
U2NoZW1lUmVxdWVzdD4gY3JlYXRlKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
IG1hbmFnZXIsIEFQSTo6VVJMUmVxdWVzdCogdXJsUmVxdWVzdCwgdWludDY0X3QgcmVxdWVzdElE
KQogICAgIHsKLSAgICAgICAgaWYgKCFtYW5hZ2VyIHx8ICF1cmxSZXF1ZXN0KQorICAgICAgICBp
ZiAoIXVybFJlcXVlc3QpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEV3a1VybFNjaGVtZVJlcXVlc3QobWFuYWdlciwgdXJsUmVxdWVz
dCwgcmVxdWVzdElEKSk7CkBAIC01NiwxMCArNTYsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBm
aW5pc2goY29uc3Qgdm9pZCogY29udGVudERhdGEsIHVpbnQ2NF90IGNvbnRlbnRMZW5ndGgsIGNv
bnN0IGNoYXIqIG1pbWVUeXBlKTsKIAorICAgIFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHkqIG1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3drUmVxdWVzdE1hbmFnZXI7IH0KKyAg
ICB2b2lkIGludmFsaWRhdGUoKTsKKwogcHJpdmF0ZToKLSAgICBFd2tVcmxTY2hlbWVSZXF1ZXN0
KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgbWFuYWdlciwgQVBJOjpVUkxS
ZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1ZXN0SUQpOworICAgIEV3a1VybFNjaGVt
ZVJlcXVlc3QoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJ
OjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1ZXN0SUQpOwogCi0gICAgV0tS
ZXRhaW5QdHI8V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZj4gbV93a1JlcXVl
c3RNYW5hZ2VyOworICAgIFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqIG1fd2tS
ZXF1ZXN0TWFuYWdlcjsKICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgbV91cmw7CiAgICAgdWludDY0
X3QgbV9yZXF1ZXN0SUQ7CiAgICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1fc2NoZW1lOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uY2IyZjMxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAK
QEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50LmgiCisKKyNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIK
KyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYktp
dFdlYkNvbnRleHRQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitjbGFzcyBD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IEN1c3RvbVByb3RvY29s
TWFuYWdlckNsaWVudChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQorICAgICAgICA6IG1f
d2ViQ29udGV4dCh3ZWJDb250ZXh0KQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9v
bCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0b21Q
cm90b2NvbChtX3dlYkNvbnRleHQsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3QsIG1hbmFnZXIp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHN0b3BMb2FkaW5nKEN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIHdlYmtpdFdlYkNvbnRleHRTdG9wTG9hZGluZ0N1c3RvbVBy
b3RvY29sKG1fd2ViQ29udGV4dCwgY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgfQorCisgICAgdm9p
ZCBpbnZhbGlkYXRlKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgd2Via2l0V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2Nv
bFJlcXVlc3RzKG1fd2ViQ29udGV4dCwgbWFuYWdlcik7CisgICAgfQorCisgICAgV2ViS2l0V2Vi
Q29udGV4dCogbV93ZWJDb250ZXh0OworfTsKKwordm9pZCBhdHRhY2hDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKK3sKKyAg
ICBhdXRvKiBwcm9jZXNzUG9vbCA9IHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJD
b250ZXh0KTsKKyAgICBwcm9jZXNzUG9vbC0+c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
KHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Pih3ZWJDb250ZXh0
KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKc2ltaWxhcml0eSBpbmRleCA4
MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVx
dWVzdE1hbmFnZXJDbGllbnQuaApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKaW5kZXggYTM2NTU5NC4u
YzljNGMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNiBJZ2FsaWEgUy5MLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNywxMSArMTcsOSBA
QAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBXZWJLaXRS
ZXF1ZXN0TWFuYWdlckNsaWVudF9oCi0jZGVmaW5lIFdlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCi12b2lk
IGF0dGFjaFJlcXVlc3RNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqKTsK
K3ZvaWQgYXR0YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KFdlYktpdFdl
YkNvbnRleHQqKTsKIAotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRQcml2YXRlLmgKaW5kZXggNzVlOGM5ZS4uZDA3MmE1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaApAQCAtMzksNyAr
MzksNiBAQAogI2luY2x1ZGUgPFdlYktpdC9XS0luc3BlY3RvckNsaWVudEd0ay5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJLaXQvV2Vi
S2l0Ml9DLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGY5MTg5YzkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQu
aCIKLQotI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCi0KLXVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7Ci0KLXN0YXRpYyB2b2lkIHN0YXJ0TG9hZGluZyhXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBXS1VSTFJl
cXVlc3RSZWYgcmVxdWVzdFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICB3ZWJr
aXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV0VCS0lUX1dFQl9DT05URVhU
KGNsaWVudEluZm8pLCBjdXN0b21Qcm90b2NvbElELCB0b0ltcGwocmVxdWVzdFJlZikpOwotfQot
Ci1zdGF0aWMgdm9pZCBzdG9wTG9hZGluZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQotewotICAgIHdlYmtpdFdlYkNvbnRleHRTdG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKFdFQktJ
VF9XRUJfQ09OVEVYVChjbGllbnRJbmZvKSwgY3VzdG9tUHJvdG9jb2xJRCk7Ci19Ci0KLXZvaWQg
YXR0YWNoUmVxdWVzdE1hbmFnZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2Vi
Q29udGV4dCkKLXsKLSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50
VjAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudCA9IHsKLSAgICAgICAgewotICAgICAgICAgICAgMCwg
Ly8gdmVyc2lvbgotICAgICAgICAgICAgd2ViQ29udGV4dCAvLyBjbGllbnRJbmZvCi0gICAgICAg
IH0sCi0gICAgICAgIHN0YXJ0TG9hZGluZywKLSAgICAgICAgc3RvcExvYWRpbmcKLSAgICB9Owot
ICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQodG9BUEkod2Vi
a2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKHdlYkNvbnRleHQpKSwgJndrUmVxdWVzdE1h
bmFnZXJDbGllbnQuYmFzZSk7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKaW5kZXggODcyYTU2
NC4uYWJhMWI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLyoqCiAgKiBTRUNUSU9OOiBXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0CkBAIC01NCw3ICs1NSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgZ1Jl
YWRCdWZmZXJTaXplID0gODE5MjsKIAogc3RydWN0IF9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJp
dmF0ZSB7CiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dDsKLSAgICBSZWZQdHI8V2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+IHdlYlJlcXVlc3RNYW5hZ2VyOworICAg
IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KiBtYW5hZ2VyOwogICAgIFJlZlB0cjxXZWJQYWdl
UHJveHk+IGluaXRpYXRpbmdQYWdlOwogICAgIHVpbnQ2NF90IHJlcXVlc3RJRDsKICAgICBDU3Ry
aW5nIHVyaTsKQEAgLTc0LDIxICs3NSwzMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfdXJpX3NjaGVt
ZV9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENsYXNzKikKIHsKIH0K
IAotV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogd2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh1
aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIEFQSTo6VVJM
UmVxdWVzdCogdXJsUmVxdWVzdCkKK1dlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtpdFVSSVNj
aGVtZVJlcXVlc3RDcmVhdGUodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXRXZWJDb250ZXh0KiB3
ZWJDb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpCiB7Ci0gICAgV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdCogcmVxdWVzdCA9IFdFQktJVF9VUklfU0NIRU1FX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX1VSSV9TQ0hFTUVfUkVRVUVTVCwgTlVMTCkpOworICAgIFdlYktpdFVSSVNjaGVt
ZVJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRfVVJJX1NDSEVNRV9SRVFVRVNUKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9VUklfU0NIRU1FX1JFUVVFU1QsIG51bGxwdHIpKTsKICAgICByZXF1ZXN0
LT5wcml2LT53ZWJDb250ZXh0ID0gd2ViQ29udGV4dDsKLSAgICByZXF1ZXN0LT5wcml2LT53ZWJS
ZXF1ZXN0TWFuYWdlciA9IHdlYmtpdFdlYkNvbnRleHRHZXRSZXF1ZXN0TWFuYWdlcih3ZWJDb250
ZXh0KTsKLSAgICByZXF1ZXN0LT5wcml2LT51cmkgPSB1cmxSZXF1ZXN0LT5yZXNvdXJjZVJlcXVl
c3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCk7Ci0gICAgcmVxdWVzdC0+cHJpdi0+aW5pdGlhdGlu
Z1BhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UodXJsUmVxdWVzdC0+cmVzb3VyY2VSZXF1
ZXN0KCkuaW5pdGlhdGluZ1BhZ2VJRCgpKTsKKyAgICByZXF1ZXN0LT5wcml2LT5tYW5hZ2VyID0g
Jm1hbmFnZXI7CisgICAgcmVxdWVzdC0+cHJpdi0+dXJpID0gcmVzb3VyY2VSZXF1ZXN0LnVybCgp
LnN0cmluZygpLnV0ZjgoKTsKKyAgICByZXF1ZXN0LT5wcml2LT5pbml0aWF0aW5nUGFnZSA9IFdl
YlByb2Nlc3NQcm94eTo6d2ViUGFnZShyZXNvdXJjZVJlcXVlc3QuaW5pdGlhdGluZ1BhZ2VJRCgp
KTsKICAgICByZXF1ZXN0LT5wcml2LT5yZXF1ZXN0SUQgPSByZXF1ZXN0SUQ7CiAgICAgcmV0dXJu
IHJlcXVlc3Q7CiB9CiAKIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdENhbmNlbChXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIGlmIChyZXF1ZXN0LT5wcml2LT5jYW5j
ZWxsYWJsZS5nZXQoKSkKLSAgICAgICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwocmVxdWVzdC0+cHJp
di0+Y2FuY2VsbGFibGUuZ2V0KCkpOworICAgIGdfY2FuY2VsbGFibGVfY2FuY2VsKHJlcXVlc3Qt
PnByaXYtPmNhbmNlbGxhYmxlLmdldCgpKTsKK30KKworQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkqIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RHZXRNYW5hZ2VyKFdlYktpdFVSSVNjaGVtZVJlcXVl
c3QqIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPm1hbmFnZXI7Cit9CisK
K3ZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUoV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdCogcmVxdWVzdCkKK3sKKyAgICByZXF1ZXN0LT5wcml2LT5tYW5hZ2VyID0gbnVsbHB0cjsK
KyAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKHJlcXVlc3QpOwogfQogCiAvKioKQEAg
LTE1OSw4ICsxNzAsMTQgQEAgV2ViS2l0V2ViVmlldyogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVz
dF9nZXRfd2ViX3ZpZXcoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmUKIHN0YXRpYyB2b2lkIHdl
YmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVh
bSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHNjaGVtZVJl
cXVlc3QpCiB7CiAgICAgR1JlZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0g
YWRvcHRHUmVmKHNjaGVtZVJlcXVlc3QpOworICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2
YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7CiAgICAgZ3NzaXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRfc3RyZWFtX3JlYWRfZmluaXNoKGlu
cHV0U3RyZWFtLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSk7CisgICAgaWYgKCFwcml2LT5tYW5h
Z2VyKSB7CisgICAgICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJv
dG9jb2wocHJpdi0+d2ViQ29udGV4dCwgcHJpdi0+cmVxdWVzdElEKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIGlmIChieXRlc1JlYWQgPT0gLTEpIHsKICAgICAgICAgd2Via2l0X3Vy
aV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3IocmVxdWVzdC5nZXQoKSwgZXJyb3IuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CkBAIC0xNzEsMjIgKzE4OCwyMSBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0s
IEdBc3luYwogICAgIGlmICghcmVxdWVzdC0+cHJpdi0+c3RyZWFtKQogICAgICAgICByZXR1cm47
CiAKLSAgICBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnBy
aXY7Ci0gICAgUmVmPEFQSTo6RGF0YT4gd2ViRGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHByaXYtPnJlYWRCdWZmZXIpLCBieXRl
c1JlYWQpOworICAgIGF1dG8gd2ViRGF0YSA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcml2LT5yZWFkQnVmZmVyKSwgYnl0ZXNSZWFkKTsKICAg
ICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkgewogICAgICAgICAvLyBGaXJzdCBjaHVuayByZWFkLiBJ
biBjYXNlIG9mIGVtcHR5IHJlcGx5IGFuIGVtcHR5IEFQSTo6RGF0YSBpcyBzZW50IHRvIHRoZSBu
ZXR3b3JraW5nIHByb2Nlc3MuCi0gICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHByaXYt
PnVyaSkpLCBTdHJpbmc6OmZyb21VVEY4KHByaXYtPm1pbWVUeXBlLmRhdGEoKSksCisgICAgICAg
IFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoVVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHBy
aXYtPnVyaSkpLCBTdHJpbmc6OmZyb21VVEY4KHByaXYtPm1pbWVUeXBlLmRhdGEoKSksCiAgICAg
ICAgICAgICBwcml2LT5zdHJlYW1MZW5ndGgsIGVtcHR5U3RyaW5nKCkpOwotICAgICAgICBwcml2
LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHByaXYtPnJlcXVlc3RJRCwg
cmVzcG9uc2UpOwotICAgICAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkTG9hZERhdGEo
cHJpdi0+cmVxdWVzdElELCB3ZWJEYXRhLnB0cigpKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKHByaXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UpOworICAgICAgICBw
cml2LT5tYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAg
IH0gZWxzZSBpZiAoYnl0ZXNSZWFkIHx8ICghYnl0ZXNSZWFkICYmICFwcml2LT5zdHJlYW1MZW5n
dGgpKSB7CiAgICAgICAgIC8vIFN1YnNlcXVlbnQgY2h1bmsgcmVhZC4gV2Ugb25seSBzZW5kIGFu
IGVtcHR5IEFQSTo6RGF0YSB0byB0aGUgbmV0d29ya2luZyBwcm9jZXNzIHdoZW4gc3RyZWFtIGxl
bmd0aCBpcyB1bmtub3duLgotICAgICAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkTG9h
ZERhdGEocHJpdi0+cmVxdWVzdElELCB3ZWJEYXRhLnB0cigpKTsKKyAgICAgICAgcHJpdi0+bWFu
YWdlci0+ZGlkTG9hZERhdGEocHJpdi0+cmVxdWVzdElELCB3ZWJEYXRhKTsKICAgICB9CiAKICAg
ICBpZiAoIWJ5dGVzUmVhZCkgewotICAgICAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlk
RmluaXNoTG9hZGluZyhyZXF1ZXN0LT5wcml2LT5yZXF1ZXN0SUQpOwotICAgICAgICB3ZWJraXRX
ZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1c3RvbVByb3RvY29sKHJlcXVlc3QtPnByaXYtPndl
YkNvbnRleHQsIHJlcXVlc3QtPnByaXYtPnJlcXVlc3RJRCk7CisgICAgICAgIHByaXYtPm1hbmFn
ZXItPmRpZEZpbmlzaExvYWRpbmcocHJpdi0+cmVxdWVzdElEKTsKKyAgICAgICAgd2Via2l0V2Vi
Q29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBw
cml2LT5yZXF1ZXN0SUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzksNyArMjU1
LDcgQEAgdm9pZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0LCBHRXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgcHJp
di0+c3RyZWFtID0gbnVsbHB0cjsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9yKGVy
cm9yLT5jb2RlKSwgV2ViQ29yZTo6VVJMKHByaXYtPnNvdXBVUkkuZ2V0KCkpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSk7Ci0gICAgcHJpdi0+d2ViUmVxdWVzdE1hbmFnZXItPmRp
ZEZhaWxXaXRoRXJyb3IocHJpdi0+cmVxdWVzdElELCByZXNvdXJjZUVycm9yKTsKKyAgICBSZXNv
dXJjZUVycm9yIHJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiks
IHRvV2ViQ29yZUVycm9yKGVycm9yLT5jb2RlKSwgVVJMKHByaXYtPnNvdXBVUkkuZ2V0KCkpLCBT
dHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgcHJpdi0+bWFuYWdlci0+ZGlk
RmFpbFdpdGhFcnJvcihwcml2LT5yZXF1ZXN0SUQsIHJlc291cmNlRXJyb3IpOwogICAgIHdlYmtp
dFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2wocHJpdi0+d2ViQ29udGV4
dCwgcHJpdi0+cmVxdWVzdElEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oCmlu
ZGV4IGM3MmZhMTguLjQ3YmI4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaApA
QCAtMjAsMTEgKzIwLDE1IEBACiAjaWZuZGVmIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRl
X2gKICNkZWZpbmUgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGVfaAogCisjaW5jbHVkZSAi
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYktpdFdl
YkNvbnRleHQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCi1XZWJL
aXRVUklTY2hlbWVSZXF1ZXN0KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90
IHJlcXVlc3RJRCwgV2ViS2l0V2ViQ29udGV4dCosIEFQSTo6VVJMUmVxdWVzdCopOworV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdCogd2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRfdCBy
ZXF1ZXN0SUQsIFdlYktpdFdlYkNvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Jik7CiB2b2lkIHdlYmtpdFVS
SVNjaGVtZVJlcXVlc3RDYW5jZWwoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCopOworV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogd2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFn
ZXIoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCopOwordm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0
SW52YWxpZGF0ZShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Kik7CiAKICNlbmRpZiAvLyBXZWJLaXRV
UklTY2hlbWVSZXF1ZXN0UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDcyNTM1NTkuLjczODM0Y2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YkNvbnRleHQuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCisjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRl
ICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oIgpAQCAtMzAsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXREb3dubG9hZENsaWVudC5o
IgogI2luY2x1ZGUgIldlYktpdERvd25sb2FkUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEZh
dmljb25EYXRhYmFzZVByaXZhdGUuaCIKQEAgLTM4LDcgKzQwLDYgQEAKICNpbmNsdWRlICJXZWJL
aXROb3RpZmljYXRpb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIldlYktpdFBsdWdpblByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0UmVxdWVzdE1h
bmFnZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXRTZWN1cml0eU1hbmFnZXJQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3NQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdFByaXZhdGUuaCIKQEAgLTExNSwxMiArMTE2LDYgQEAgZW51bSB7CiAKIGNs
YXNzIFdlYktpdFVSSVNjaGVtZUhhbmRsZXI6IHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdFVSSVNj
aGVtZUhhbmRsZXI+IHsKIHB1YmxpYzoKLSAgICBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKCkKLSAg
ICAgICAgOiBtX2NhbGxiYWNrKDApCi0gICAgICAgICwgbV91c2VyRGF0YSgwKQotICAgICAgICAs
IG1fZGVzdHJveU5vdGlmeSgwKQotICAgIHsKLSAgICB9CiAgICAgV2ViS2l0VVJJU2NoZW1lSGFu
ZGxlcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJE
YXRhLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95Tm90aWZ5KQogICAgICAgICA6IG1fY2FsbGJhY2so
Y2FsbGJhY2spCiAgICAgICAgICwgbV91c2VyRGF0YSh1c2VyRGF0YSkKQEAgLTE0Nyw5ICsxNDIs
OSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFdlYktpdFVSSVNjaGVtZVJlcXVl
c3RDYWxsYmFjayBtX2NhbGxiYWNrOwotICAgIHZvaWQqIG1fdXNlckRhdGE7Ci0gICAgR0Rlc3Ry
b3lOb3RpZnkgbV9kZXN0cm95Tm90aWZ5OworICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxs
YmFjayBtX2NhbGxiYWNrIHsgbnVsbHB0ciB9OworICAgIHZvaWQqIG1fdXNlckRhdGEgeyBudWxs
cHRyIH07CisgICAgR0Rlc3Ryb3lOb3RpZnkgbV9kZXN0cm95Tm90aWZ5IHsgbnVsbHB0ciB9Owog
fTsKIAogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRs
ZXI+ID4gVVJJU2NoZW1lSGFuZGxlck1hcDsKQEAgLTE2Miw3ICsxNTcsNiBAQCBzdHJ1Y3QgX1dl
YktpdFdlYkNvbnRleHRQcml2YXRlIHsKICAgICBHUmVmUHRyPFdlYktpdENvb2tpZU1hbmFnZXI+
IGNvb2tpZU1hbmFnZXI7CiAgICAgR1JlZlB0cjxXZWJLaXRGYXZpY29uRGF0YWJhc2U+IGZhdmlj
b25EYXRhYmFzZTsKICAgICBHUmVmUHRyPFdlYktpdFNlY3VyaXR5TWFuYWdlcj4gc2VjdXJpdHlN
YW5hZ2VyOwotICAgIFJlZlB0cjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4g
cmVxdWVzdE1hbmFnZXI7CiAgICAgVVJJU2NoZW1lSGFuZGxlck1hcCB1cmlTY2hlbWVIYW5kbGVy
czsKICAgICBVUklTY2hlbWVSZXF1ZXN0TWFwIHVyaVNjaGVtZVJlcXVlc3RzOwogI2lmIEVOQUJM
RShHRU9MT0NBVElPTikKQEAgLTI3NSw4ICsyNjksNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJD
b250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIGlmICghcHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyKQogICAgICAgICBwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgPSBhZG9wdEdS
ZWYod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKHdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uRm9yV2ViUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKSk7CiAK
LSAgICBwcml2LT5yZXF1ZXN0TWFuYWdlciA9IHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50
PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigpOwotCiAgICAgcHJpdi0+dGxz
RXJyb3JzUG9saWN5ID0gV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0ZBSUw7CiAgICAgcHJpdi0+
cHJvY2Vzc1Bvb2wtPnNldElnbm9yZVRMU0Vycm9ycyhmYWxzZSk7CiAKQEAgLTI4Nyw3ICsyNzks
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2Jq
ZWN0KQogCiAgICAgYXR0YWNoSW5qZWN0ZWRCdW5kbGVDbGllbnRUb0NvbnRleHQod2ViQ29udGV4
dCk7CiAgICAgYXR0YWNoRG93bmxvYWRDbGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7Ci0gICAg
YXR0YWNoUmVxdWVzdE1hbmFnZXJDbGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7CisgICAgYXR0
YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwogCiAj
aWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAgIHByaXYtPmdlb2xvY2F0aW9uUHJvdmlkZXIgPSBX
ZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpjcmVhdGUocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBs
ZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpOwpAQCAtMzA0LDYgKzI5Niw3IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHREaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKICAg
ICAgICAgcHJpdi0+Y2xpZW50c0RldGFjaGVkID0gdHJ1ZTsKICAgICAgICAgcHJpdi0+cHJvY2Vz
c1Bvb2wtPmluaXRpYWxpemVJbmplY3RlZEJ1bmRsZUNsaWVudChudWxscHRyKTsKICAgICAgICAg
cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldERvd25sb2FkQ2xpZW50KG51bGxwdHIpOworICAgICAgICBw
cml2LT5wcm9jZXNzUG9vbC0+c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG51bGxwdHIp
OwogICAgIH0KIAogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfY29udGV4dF9wYXJlbnRf
Y2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CkBAIC04NDksOCArODQyLDkgQEAgdm9pZCB3ZWJraXRf
d2ViX2NvbnRleHRfcmVnaXN0ZXJfdXJpX3NjaGVtZShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBjaGEKICAgICBnX3JldHVybl9pZl9mYWlsKGNhbGxiYWNrKTsKIAogICAgIFJlZlB0
cjxXZWJLaXRVUklTY2hlbWVIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHRSZWYobmV3IFdlYktpdFVS
SVNjaGVtZUhhbmRsZXIoY2FsbGJhY2ssIHVzZXJEYXRhLCBkZXN0cm95Tm90aWZ5KSk7Ci0gICAg
Y29udGV4dC0+cHJpdi0+dXJpU2NoZW1lSGFuZGxlcnMuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2No
ZW1lKSwgaGFuZGxlci5nZXQoKSk7Ci0gICAgY29udGV4dC0+cHJpdi0+cmVxdWVzdE1hbmFnZXIt
PnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUp
KTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJz
LnNldChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSksIGhhbmRsZXIuZ2V0KCkpOworICAgIGlmIChh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wt
PnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUp
KTsKIH0KIAogLyoqCkBAIC0xMjY2LDE0ICsxMjYwLDkgQEAgV2ViUHJvY2Vzc1Bvb2wqIHdlYmtp
dFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogICAg
IHJldHVybiBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC5nZXQoKTsKIH0KIAotV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIHdlYmtpdFdlYkNvbnRleHRHZXRSZXF1ZXN0TWFu
YWdlcihXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQotewotICAgIHJldHVybiBjb250ZXh0LT5w
cml2LT5yZXF1ZXN0TWFuYWdlci5nZXQoKTsKLX0KLQotdm9pZCB3ZWJraXRXZWJDb250ZXh0U3Rh
cnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0KQordm9pZCB3
ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4
dCogY29udGV4dCwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
JiBtYW5hZ2VyKQogewotICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVz
dCA9IGFkb3B0R1JlZih3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKGN1c3RvbVByb3RvY29s
SUQsIGNvbnRleHQsIHVybFJlcXVlc3QpKTsKKyAgICBHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJl
cXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZShj
dXN0b21Qcm90b2NvbElELCBjb250ZXh0LCByZXNvdXJjZVJlcXVlc3QsIG1hbmFnZXIpKTsKICAg
ICBTdHJpbmcgc2NoZW1lKFN0cmluZzo6ZnJvbVVURjgod2Via2l0X3VyaV9zY2hlbWVfcmVxdWVz
dF9nZXRfc2NoZW1lKHJlcXVlc3QuZ2V0KCkpKSk7CiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVt
ZUhhbmRsZXI+IGhhbmRsZXIgPSBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVIYW5kbGVycy5nZXQo
c2NoZW1lKTsKICAgICBBU1NFUlQoaGFuZGxlci5nZXQoKSk7CkBAIC0xMjkyLDYgKzEyODEsMTYg
QEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RvcExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjQKICAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q2Fu
Y2VsKHJlcXVlc3QuZ2V0KCkpOwogfQogCit2b2lkIHdlYmtpdFdlYkNvbnRleHRJbnZhbGlkYXRl
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0cyhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlcikKK3sKKyAgICBWZWN0b3I8R1JlZlB0cjxXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Pj4gcmVxdWVzdHM7CisgICAgY29weVZhbHVlc1RvVmVjdG9yKGNv
bnRleHQtPnByaXYtPnVyaVNjaGVtZVJlcXVlc3RzLCByZXF1ZXN0cyk7CisgICAgZm9yIChhdXRv
JiByZXF1ZXN0IDogcmVxdWVzdHMpIHsKKyAgICAgICAgaWYgKHdlYmtpdFVSSVNjaGVtZVJlcXVl
c3RHZXRNYW5hZ2VyKHJlcXVlc3QuZ2V0KCkpID09ICZtYW5hZ2VyKQorICAgICAgICAgICAgd2Vi
a2l0VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUocmVxdWVzdC5nZXQoKSk7CisgICAgfQorfQor
CiB2b2lkIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsKICAg
ICBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVSZXF1ZXN0cy5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUuaAppbmRleCA3ZWU5NmIxLi42M2ViMjFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHRQcml2YXRlLmgKQEAgLTI2LDIxICsyNiwyMiBAQAogI2lmbmRlZiBXZWJLaXRXZWJDb250ZXh0
UHJpdmF0ZV9oCiAjZGVmaW5lIFdlYktpdFdlYkNvbnRleHRQcml2YXRlX2gKIAorI2luY2x1ZGUg
IkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5o
IgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKIFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2wqIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbChXZWJLaXRXZWJD
b250ZXh0Kik7CiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93
bmxvYWQoV2ViS2l0OjpEb3dubG9hZFByb3h5Kik7CiBXZWJLaXREb3dubG9hZCogd2Via2l0V2Vi
Q29udGV4dFN0YXJ0RG93bmxvYWQoV2ViS2l0V2ViQ29udGV4dCosIGNvbnN0IGNoYXIqIHVyaSwg
V2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25s
b2FkKFdlYktpdDo6RG93bmxvYWRQcm94eSopOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0RG93bmxv
YWRTdGFydGVkKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXREb3dubG9hZCopOwotV2ViS2l0OjpX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlciogd2Via2l0V2ViQ29udGV4dEdldFJl
cXVlc3RNYW5hZ2VyKFdlYktpdFdlYkNvbnRleHQqKTsKLXZvaWQgd2Via2l0V2ViQ29udGV4dFN0
YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElELCBBUEk6OlVSTFJlcXVlc3QqKTsKK3ZvaWQgd2Via2l0V2ViQ29udGV4dFN0
YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJLaXQ6OkN1
c3RvbVByb3RvY29sTWFuYWdlclByb3h5Jik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRTdG9wTG9h
ZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElEKTsKK3ZvaWQgd2Via2l0V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJl
cXVlc3RzKFdlYktpdFdlYkNvbnRleHQqLCBXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclBy
b3h5Jik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9j
b2woV2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwogYm9vbCB3
ZWJraXRXZWJDb250ZXh0SXNMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCos
IHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwogdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRl
UGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29udGV4dCosIFdlYktpdFdlYlZpZXcqLCBXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRXZWJWaWV3Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCmluZGV4IGIzODc1ZjMuLjRjNzQz
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eS5oCkBAIC0zNCw4ICszNCwxNCBAQAogT0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sTG9h
ZGVyOwogI2VuZGlmCiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGF0YVJlZmVyZW5jZTsKK30K
KwogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7CiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTEsNiArNTcsMTUgQEAgcHVibGljOgogICAg
IHZvaWQgc3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZvaWQgc3RvcExvYWRpbmcodWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCk7CiAKKyAgICB2b2lkIHByb2Nlc3NEaWRDbG9zZSgpOworCisjaWYgVVNF
KFNPVVApCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkTG9h
ZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik7CisgICAgdm9pZCBkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRp
bmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICAv
LyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbQppbmRl
eCBhZDUzZTk4Li45NzliMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KQEAgLTE2MCw0ICsxNjAsOCBA
QCB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElEKQogICAgIG1fbG9hZGVyTWFwLnJlbW92ZShjdXN0b21Qcm90b2NvbElE
KTsKIH0KIAordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3Nl
KCkKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eVNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsv
Q3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcApp
bmRleCAwNTlmNDY1Li4zZmIzNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAKQEAgLTIwLDEz
ICsyMCwxOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5LmgiCiAKKyNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIkN1c3RvbVBy
b3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSAi
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogCisjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPFdlYkNv
cmUvRXJyb3JzR3RrLmg+CisjZWxpZiBQTEFURk9STShFRkwpCisjaW5jbHVkZSA8V2ViQ29yZS9F
cnJvcnNFZmwuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHk6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5KENoaWxkUHJvY2Vzc1By
b3h5KiBjaGlsZFByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQpAQCAt
NDIsMTQgKzQ4LDQwIEBAIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojp+Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkoKQogICAgIG1fY2hpbGRQcm9jZXNzUHJveHktPnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSk7CiB9CiAKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nl
c3NEaWRDbG9zZSgpCit7CisgICAgbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQoKS5pbnZhbGlkYXRlKCp0aGlzKTsKK30KKwogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICBtX3Byb2Nlc3NQb29sLnN1
cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+KCktPnN0YXJ0TG9h
ZGluZyhjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KTsKKyAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wu
Y3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkuc3RhcnRMb2FkaW5nKCp0aGlzLCBjdXN0b21Q
cm90b2NvbElELCByZXF1ZXN0KSkKKyAgICAgICAgZGlkRmFpbFdpdGhFcnJvcihjdXN0b21Qcm90
b2NvbElELCBXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IocmVxdWVzdCkpOwogfQogCiB2b2lk
IEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Q
cm90b2NvbElEKQogewotICAgIG1fcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKS0+c3RvcExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCk7
CisgICAgbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKS5zdG9wTG9h
ZGluZygqdGhpcywgY3VzdG9tUHJvdG9jb2xJRCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBtX2No
aWxkUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRp
ZFJlY2VpdmVSZXNwb25zZShjdXN0b21Qcm90b2NvbElELCByZXNwb25zZSwgMCksIDApOworfQor
Cit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRMb2FkRGF0YSh1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAg
bV9jaGlsZFByb2Nlc3NQcm94eS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OjpEaWRMb2FkRGF0YShjdXN0b21Qcm90b2NvbElELCBkYXRhKSwgMCk7Cit9CisKK3ZvaWQgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAg
bV9jaGlsZFByb2Nlc3NQcm94eS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
OjpEaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIGVycm9yKSwgMCk7Cit9CisKK3Zv
aWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZEZpbmlzaExvYWRpbmcodWludDY0X3Qg
Y3VzdG9tUHJvdG9jb2xJRCkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3Nh
Z2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZEZpbmlzaExvYWRpbmcoY3VzdG9tUHJvdG9j
b2xJRCksIDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY1NWU0My4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEg
Uy5MLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuaCIKLQotI2luY2x1ZGUgIkFQSURhdGEuaCIKLSNpbmNsdWRlICJDdXN0
b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgi
Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4K
LQotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0d0ay5oPgotI2Vs
aWYgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzRWZsLmg+Ci0jZW5kaWYK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNvbnN0IGNoYXIqIFdlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyOjpzdXBwbGVtZW50TmFtZSgpCi17Ci0gICAgcmV0dXJuICJXZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlciI7Ci19Ci0KLVJlZjxXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcj4gV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6
OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIocHJvY2Vzc1Bvb2wp
KTsKLX0KLQotV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OldlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKLSAg
ICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHByb2Nlc3NQb29sKQotewotfQotCi1XZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6fldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyKCkKLXsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
cjo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyQ2xpZW50QmFzZSogY2xpZW50KQotewotICAgIG1fY2xpZW50LmluaXRpYWxpemUoY2xpZW50
KTsKLX0KLQotLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKLXZvaWQgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OnByb2Nlc3NQb29sRGVzdHJveWVkKCkKLXsKLX0KLQotdm9pZCBX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlKFdlYlBy
b2Nlc3NQcm94eSopCi17Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXI6OnJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKLXsKLSAgICBBUEk6Ok9iamVjdDo6cmVm
KCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRlcmVm
V2ViQ29udGV4dFN1cHBsZW1lbnQoKQotewotICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwotfQot
Ci12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIEFTU0VSVCgh
c2NoZW1lLmlzTnVsbCgpKTsKLSAgICBpZiAobV9yZWdpc3RlcmVkU2NoZW1lcy5jb250YWlucyhz
Y2hlbWUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9t
UHJvdG9jb2woc2NoZW1lKTsKLQotICAgIG1fcmVnaXN0ZXJlZFNjaGVtZXMuYXBwZW5kKHNjaGVt
ZSk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnVucmVn
aXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAg
ICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29s
KCktPnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOwotCi0gICAgYm9v
bCByZW1vdmVkID0gbV9yZWdpc3RlcmVkU2NoZW1lcy5yZW1vdmVGaXJzdChzY2hlbWUpOwotICAg
IEFTU0VSVF9VTlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAg
aWYgKCFtX2NsaWVudC5zdGFydExvYWRpbmcodGhpcywgY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVz
dCkpCi0gICAgICAgIGRpZEZhaWxXaXRoRXJyb3IoY3VzdG9tUHJvdG9jb2xJRCwgV2ViQ29yZTo6
Y2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3QpKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcjo6c3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCkKLXsKLSAgICBtX2NsaWVudC5zdG9wTG9hZGluZyh0aGlzLCBjdXN0b21Qcm90b2NvbElEKTsK
LX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJl
c3BvbnNlKGN1c3RvbVByb3RvY29sSUQsIHJlc3BvbnNlLCAwKSwgMCk7Ci19Ci0KLXZvaWQgV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQsIGNvbnN0IEFQSTo6RGF0YSogZGF0YSkKLXsKLSAgICBpZiAoIXByb2Nl
c3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPm5ldHdvcmtp
bmdQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFn
ZXI6OkRpZExvYWREYXRhKGN1c3RvbVByb3RvY29sSUQsIGRhdGEtPmRhdGFSZWZlcmVuY2UoKSks
IDApOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRG
YWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImIGVycm9yKQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJv
cihjdXN0b21Qcm90b2NvbElELCBlcnJvciksIDApOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQpCi17Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBwcm9jZXNzUG9vbCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRGaW5pc2hMb2FkaW5nKGN1c3RvbVBy
b3RvY29sSUQpLCAwKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ3NzU2ZS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5M
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwot
Ci0jaWZuZGVmIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyX2gKLSNkZWZpbmUg
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaAotCi0jaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKLSNpbmNsdWRlICJXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEFQ
SSB7Ci1jbGFzcyBEYXRhOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBSZXNvdXJj
ZUVycm9yOwotY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwotY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
LX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlByb2Nlc3NQb29sOwotCi1jbGFz
cyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlciA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
PiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKLQotICAgIHN0YXRpYyBSZWY8V2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOwotICAgIHZp
cnR1YWwgfldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKCk7Ci0KLSAgICB2b2lk
IGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ckNsaWVudEJhc2UqKTsKLQotICAgIHZvaWQgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2Nv
bChjb25zdCBTdHJpbmcmIHNjaGVtZSk7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBzY2hlbWUpOwotCi0gICAgdm9pZCBzdGFydExvYWRp
bmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7Ci0gICAgdm9pZCBzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsK
LQotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2b2lkIGRpZExvYWREYXRh
KHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IEFQSTo6RGF0YSopOwotICAgIHZvaWQg
ZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQpOwotCi0gICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlZ2lzdGVyZWRT
Y2hlbWVzRm9yQ3VzdG9tUHJvdG9jb2xzKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RlcmVkU2No
ZW1lczsgfQotCi0gICAgdXNpbmcgQVBJOjpPYmplY3Q6OnJlZjsKLSAgICB1c2luZyBBUEk6Ok9i
amVjdDo6ZGVyZWY7Ci0KLXByaXZhdGU6Ci0gICAgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIoV2ViUHJvY2Vzc1Bvb2wqKTsKLQotICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50
Ci0gICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcHJv
Y2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopIG92ZXJyaWRlOwotICAgIHZvaWQgcmVmV2Vi
Q29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1
cHBsZW1lbnQoKSBvdmVycmlkZTsKLQotICAgIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50IG1fY2xpZW50OwotICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVnaXN0ZXJlZFNj
aGVtZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYlNvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRkZWY2Mi4u
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgotCi0jaW5jbHVkZSAiV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWJvb2wg
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyhX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlciogc291cFJlcXVlc3RNYW5hZ2VyLCB1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5zdGFydExvYWRpbmcpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIFJlZjxBUEk6OlVSTFJlcXVlc3Q+IHVybFJlcXVlc3QgPSBBUEk6
OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0KTsKLSAgICBtX2NsaWVudC5zdGFydExvYWRpbmco
dG9BUEkoc291cFJlcXVlc3RNYW5hZ2VyKSwgY3VzdG9tUHJvdG9jb2xJRCwgdG9BUEkodXJsUmVx
dWVzdC5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQ6OnN0
b3BMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiBzb3VwUmVxdWVz
dE1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCi17Ci0gICAgaWYgKG1fY2xpZW50
LnN0b3BMb2FkaW5nKQotICAgICAgICBtX2NsaWVudC5zdG9wTG9hZGluZyh0b0FQSShzb3VwUmVx
dWVzdE1hbmFnZXIpLCBjdXN0b21Qcm90b2NvbElELCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlckNsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWJiMjIxLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxp
YSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICovCi0KLSNpZm5kZWYgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRf
aAotI2RlZmluZSBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9oCi0K
LSNpbmNsdWRlICJBUElDbGllbnQuaCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRl
ICJXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCi0KLW5hbWVzcGFjZSBBUEkg
ewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlckNsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwPiBWZXJzaW9uczsKLX07Ci19Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFJlc291cmNlUmVxdWVzdDsKLX0KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
OwotCi1jbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudCA6IHB1
YmxpYyBBUEk6OkNsaWVudDxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50
QmFzZT4gewotcHVibGljOgotICAgIGJvb2wgc3RhcnRMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyKiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCBzdG9wTG9hZGluZyhXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlciosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGI5OTFiN2Eu
Ljg4Y2NjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0yMTksNiArMjE5LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQogewogICAgIGlmICht
X2Rvd25sb2FkUHJveHlNYXApCiAgICAgICAgIG1fZG93bmxvYWRQcm94eU1hcC0+cHJvY2Vzc0Rp
ZENsb3NlKCk7CisgICAgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5wcm9jZXNzRGlkQ2xv
c2UoKTsKIAogICAgIG1fdG9rZW5Gb3JIb2xkaW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBiMGZiN2Rj
Li5mODE1MTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAi
QVBJQXV0b21hdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudC5oIgogI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJh
dGlvbi5oIgpAQCAtOTAsMTAgKzkxLDYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1v
dGVJbnNwZWN0b3IuaD4KICNlbmRpZgogCi0jaWYgVVNFKFNPVVApCi0jaW5jbHVkZSAiV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKLSNlbmRpZgotCiAjaWYgT1MoTElOVVgp
CiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVNb25pdG9yLmgiCiAjZW5kaWYKQEAgLTE1Nyw2ICsx
NTQsOSBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX2F1dG9tYXRpb25DbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRpb25DbGllbnQ+KCkpCiAgICAgLCBtX2Rvd25sb2Fk
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpEb3dubG9hZENsaWVudD4oKSkKICAgICAsIG1f
aGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQ+KCkpCisjaWYgVVNFKFNPVVApCisgICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Pigp
KQorI2VuZGlmCiAgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoVmlzaXRlZExpbmtTdG9yZTo6Y3Jl
YXRlKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5rc1BvcHVsYXRlZChmYWxzZSkKICAgICAsIG1fcGx1
Z0luQXV0b1N0YXJ0UHJvdmlkZXIodGhpcykKQEAgLTE2NSw5ICsxNjUsNiBAQCBXZWJQcm9jZXNz
UG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24pCiAgICAgLCBtX21lbW9yeVNhbXBsZXJFbmFibGVkKGZhbHNlKQogICAgICwgbV9t
ZW1vcnlTYW1wbGVySW50ZXJ2YWwoMTQwMC4wKQogICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1f
Y29uZmlndXJhdGlvbi0+c2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSgpID8gQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpjcmVhdGUobGVnYWN5V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9j
b25maWd1cmF0aW9uKSkucHRyKCkgOiBudWxscHRyKQotI2lmIFVTRShTT1VQKQotICAgICwgbV9p
bml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeShIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZy
b21NYWluRG9jdW1lbnREb21haW4pCi0jZW5kaWYKICAgICAsIG1fc2hvdWxkVXNlVGVzdGluZ05l
dHdvcmtTZXNzaW9uKGZhbHNlKQogICAgICwgbV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkKHRy
dWUpCiAgICAgLCBtX2NhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKHRydWUpCkBA
IC0xOTcsOSArMTk0LDYgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIGFkZFN1cHBsZW1lbnQ8
V2ViQ29va2llTWFuYWdlclByb3h5PigpOwogICAgIGFkZFN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRp
b25NYW5hZ2VyUHJveHk+KCk7CiAgICAgYWRkU3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk+KCk7Ci0jaWYgVVNFKFNPVVApCi0gICAgYWRkU3VwcGxlbWVudDxXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKTsKLSNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9T
RVNTSU9OKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPigp
OwogI2VuZGlmCkBAIC0yOTksNiArMjkzLDE2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1
dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4KICAg
ICAgICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0gV1RGTW92ZShhdXRvbWF0aW9uQ2xpZW50KTsKIH0K
IAorI2lmIFVTRShTT1VQKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudD4gY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KQoreworICAgIGlmICghY3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50KQorICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7
CisgICAgZWxzZQorICAgICAgICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IFdURk1v
dmUoY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzZXRNYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXModW5zaWduZWQgbWF4aW11bU51
bWJlck9mUHJvY2Vzc2VzKQogewogICAgIC8vIEd1YXJkIGFnYWluc3QgQVBJIG1pc3VzZS4KQEAg
LTEzNjQsMTEgKzEzNjgsMTcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z0luQXV0b1N0
YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJpZXNBZGRlZEFmdGVyVGltZSgKIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcm
IHNjaGVtZSkKIHsKKyNpZiBVU0UoU09VUCkKKyAgICBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9y
Q3VzdG9tUHJvdG9jb2xzLmFkZChzY2hlbWUpOworI2VuZGlmCiAgICAgc2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3MoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6UmVnaXN0ZXJTY2hlbWUo
c2NoZW1lKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVucmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKKyNpZiBVU0UoU09VUCkKKyAg
ICBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLnJlbW92ZShzY2hlbWUp
OworI2VuZGlmCiAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6VW5yZWdpc3RlclNjaGVtZShzY2hlbWUpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBmY2RlOWEwLi5kNWU0YjQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzAsNiArNzAs
NyBAQCBPQkpDX0NMQVNTIE5TU3RyaW5nOwogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF1dG9t
YXRpb25DbGllbnQ7CitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiBjbGFzcyBE
b3dubG9hZENsaWVudDsKIGNsYXNzIExlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50OwogY2xhc3Mg
UGFnZUNvbmZpZ3VyYXRpb247CkBAIC0xMzUsNiArMTM2LDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudD4pOwogICAgIHZvaWQgc2V0RG93bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6RG93bmxvYWRDbGllbnQ+KTsKICAgICB2b2lkIHNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4pOworI2lmIFVTRShTT1VQKQorICAgIHZv
aWQgc2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4pOworI2VuZGlmCiAKICAgICB2b2lkIHNldE1heGlt
dW1OdW1iZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCk7IC8vIENhbiBvbmx5IGJlIGNhbGxlZCB3aGVu
IHRoZXJlIGFyZSBubyBwcm9jZXNzZXMgcnVubmluZy4KICAgICB1bnNpZ25lZCBtYXhpbXVtTnVt
YmVyT2ZQcm9jZXNzZXMoKSBjb25zdCB7IHJldHVybiAhbV9jb25maWd1cmF0aW9uLT5tYXhpbXVt
UHJvY2Vzc0NvdW50KCkgPyBVSU5UX01BWCA6IG1fY29uZmlndXJhdGlvbi0+bWF4aW11bVByb2Nl
c3NDb3VudCgpOyB9CkBAIC0yMjUsNiArMjI5LDEwIEBAIHB1YmxpYzoKICAgICBBUEk6OkxlZ2Fj
eUNvbnRleHRIaXN0b3J5Q2xpZW50JiBoaXN0b3J5Q2xpZW50KCkgeyByZXR1cm4gKm1faGlzdG9y
eUNsaWVudDsgfQogICAgIFdlYkNvbnRleHRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xp
ZW50OyB9CiAKKyNpZiBVU0UoU09VUCkKKyAgICBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudCYgY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gKm1fY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OyB9CisjZW5kaWYKKwogICAgIFdlYkljb25EYXRhYmFz
ZSogaWNvbkRhdGFiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9pY29uRGF0YWJhc2UuZ2V0KCk7IH0K
IAogICAgIHN0cnVjdCBTdGF0aXN0aWNzIHsKQEAgLTQ1NSw2ICs0NjMsOSBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1dG9tYXRpb25DbGllbnQ+IG1fYXV0b21hdGlvbkNs
aWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9h
ZENsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNs
aWVudD4gbV9oaXN0b3J5Q2xpZW50OworI2lmIFVTRShTT1VQKQorICAgIHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQ7CisjZW5kaWYKIAogICAgIFJlZlB0cjxXZWJBdXRvbWF0aW9uU2Vzc2lvbj4gbV9h
dXRvbWF0aW9uU2Vzc2lvbjsKIApAQCAtNDk5LDcgKzUxMCw3IEBAIHByaXZhdGU6CiAgICAgV2Vi
Q29udGV4dFN1cHBsZW1lbnRNYXAgbV9zdXBwbGVtZW50czsKIAogI2lmIFVTRShTT1VQKQotICAg
IEhUVFBDb29raWVBY2NlcHRQb2xpY3kgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeTsK
KyAgICBIVFRQQ29va2llQWNjZXB0UG9saWN5IG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgeyBIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4gfTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNTMwLDYgKzU0MSw3IEBAIHByaXZhdGU6
CiAKICNpZiBVU0UoU09VUCkKICAgICBib29sIG1faWdub3JlVExTRXJyb3JzIHsgdHJ1ZSB9Owor
ICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IG1fdXJsU2NoZW1l
c1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHM7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9tZW1v
cnlDYWNoZURpc2FibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcAppbmRleCBiOWE2NTdmLi5lOTg4NDA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5h
Z2VyQ2xpZW50RWZsLmNwcApAQCAtMjYsNTIgKzI2LDU5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuaCIKIAorI2luY2x1ZGUgIkFQSUN1
c3RvbVByb2NvbE1hbmFnZXJDbGllbnQuaCIKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eS5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJl
d2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LXN0YXRpYyBpbmxpbmUgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwqIHRvUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSk7Ci19Ci0KLVJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpSZXF1ZXN0TWFuYWdlckNsaWVudEVm
bChXS0NvbnRleHRSZWYgY29udGV4dCkKLXsKLSAgICBtX3JlcXVlc3RNYW5hZ2VyID0gdG9BUEko
dG9JbXBsKGNvbnRleHQpLT5zdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyPigpKTsKLSAgICBBU1NFUlQobV9yZXF1ZXN0TWFuYWdlcik7CitjbGFzcyBDdXN0b21Q
cm9jb2xNYW5hZ2VyQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q3VzdG9tUHJvY29sTWFuYWdl
ckNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ3VzdG9tUHJvY29sTWFuYWdlckNsaWVu
dChSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogY2xpZW50KQorICAgICAgICA6IG1fY2xpZW50KGNs
aWVudCkKKyAgICB7CisgICAgfQogCi0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlckNsaWVudFYwIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQ7Ci0gICAgbWVtc2V0KCZ3a1JlcXVl
c3RNYW5hZ2VyQ2xpZW50LCAwLCBzaXplb2YoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlckNsaWVudFYwKSk7Citwcml2YXRlOgorICAgIGJvb2wgc3RhcnRMb2FkaW5nKEN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIFJlZlB0cjxFd2tVcmxTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gRXdrVXJsU2NoZW1l
UmVxdWVzdDo6Y3JlYXRlKG1hbmFnZXIsIHRvQVBJKEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJl
c3BvbnNlKS5wdHIoKSksIGN1c3RvbVByb3RvY29sSUQpOworICAgICAgICBTdHJpbmcgc2NoZW1l
KFN0cmluZzo6ZnJvbVVURjgocmVxdWVzdC5nZXQoKS0+c2NoZW1lKCkpKTsKKyAgICAgICAgUmVm
UHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+IGhhbmRsZXIgPSAobV9jbGllbnQtPm1fdXJpU2No
ZW1lSGFuZGxlcnMpLmdldChzY2hlbWUpOworICAgICAgICBBU1NFUlQoaGFuZGxlci5nZXQoKSk7
CisgICAgICAgIGlmICghaGFuZGxlci0+aGFzQ2FsbGJhY2soKSkKKyAgICAgICAgICAgIHJldHVy
bjsKIAotICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICB3
a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LmJhc2UuY2xpZW50SW5mbyA9IHRoaXM7Ci0gICAgd2tSZXF1
ZXN0TWFuYWdlckNsaWVudC5zdGFydExvYWRpbmcgPSBzdGFydExvYWRpbmc7Ci0gICAgd2tSZXF1
ZXN0TWFuYWdlckNsaWVudC5zdG9wTG9hZGluZyA9IHN0b3BMb2FkaW5nOworICAgICAgICAobV9j
bGllbnQtPm1fdXJpU2NoZW1lUmVxdWVzdHMpLnNldChjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0
KTsKKyAgICAgICAgaGFuZGxlci0+cGVyZm9ybUNhbGxiYWNrKHJlcXVlc3QuZ2V0KCkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKLSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyU2V0Q2xpZW50KG1fcmVxdWVzdE1hbmFnZXIuZ2V0KCksICZ3a1JlcXVlc3RNYW5h
Z2VyQ2xpZW50LmJhc2UpOwotfQorICAgIHZvaWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgKG1fY2xpZW50LT5tX3VyaVNjaGVtZVJlcXVlc3RzKS5yZW1vdmUoY3VzdG9tUHJv
dG9jb2xJRCk7CisgICAgfQogCi12b2lkIFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpzdGFydExv
YWRpbmcoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCB1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogY2xpZW50
ID0gdG9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbChjbGllbnRJbmZvKTsKLSAgICBSZWZQdHI8RXdr
VXJsU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IEV3a1VybFNjaGVtZVJlcXVlc3Q6OmNyZWF0ZSht
YW5hZ2VyLCB0b0ltcGwocmVxdWVzdFJlZiksIGN1c3RvbVByb3RvY29sSUQpOwotICAgIFN0cmlu
ZyBzY2hlbWUoU3RyaW5nOjpmcm9tVVRGOChyZXF1ZXN0LmdldCgpLT5zY2hlbWUoKSkpOwotICAg
IFJlZlB0cjxXZWJLaXRVUklTY2hlbWVIYW5kbGVyPiBoYW5kbGVyID0gKGNsaWVudC0+bV91cmlT
Y2hlbWVIYW5kbGVycykuZ2V0KHNjaGVtZSk7Ci0gICAgQVNTRVJUKGhhbmRsZXIuZ2V0KCkpOwot
ICAgIGlmICghaGFuZGxlci0+aGFzQ2FsbGJhY2soKSkKLSAgICAgICAgcmV0dXJuOworICAgIHZv
aWQgaW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlcikgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4+IHJl
cXVlc3RzOworICAgICAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9jbGllbnQtPm1fdXJpU2NoZW1l
UmVxdWVzdHMsIHJlcXVlc3RzKTsKKyAgICAgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVz
dHMpIHsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5tYW5hZ2VyKCkgPT0gJm1hbmFnZXIpIHsK
KyAgICAgICAgICAgICAgICByZXF1ZXN0LT5pbnZhbGlkYXRlKCk7CisgICAgICAgICAgICAgICAg
c3RvcExvYWRpbmcobWFuYWdlciwgcmVxdWVzdC0+aWQoKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CiAKLSAgICAoY2xpZW50LT5tX3VyaVNjaGVtZVJlcXVlc3RzKS5zZXQoY3Vz
dG9tUHJvdG9jb2xJRCwgcmVxdWVzdCk7Ci0gICAgaGFuZGxlci0+cGVyZm9ybUNhbGxiYWNrKHJl
cXVlc3QuZ2V0KCkpOwotfQorICAgIFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKiBtX2NsaWVudDsK
K307CiAKLXZvaWQgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OnN0b3BMb2FkaW5nKFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
OjpSZXF1ZXN0TWFuYWdlckNsaWVudEVmbChXS0NvbnRleHRSZWYgY29udGV4dCkKIHsKLSAgICBV
TlVTRURfUEFSQU0obWFuYWdlcik7Ci0KLSAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogY2xp
ZW50ID0gdG9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbChjbGllbnRJbmZvKTsKLSAgICAoY2xpZW50
LT5tX3VyaVNjaGVtZVJlcXVlc3RzKS5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgbV9w
cm9jZXNzUG9vbCA9IHRvSW1wbChjb250ZXh0KTsKKyAgICBtX3Byb2Nlc3NQb29sLT5zZXRDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ+KHRoaXMpKTsKIH0KIAogdm9pZCBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6
cmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYgc2NoZW1lLCBFd2tfVXJsX1Nj
aGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrLCB2b2lkKiB1c2VyRGF0YSkKQEAgLTc5LDggKzg2LDkg
QEAgdm9pZCBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVy
KGNvbnN0IFN0cmluZyYgc2NoZW1lLCBFd2sKICAgICBBU1NFUlQoY2FsbGJhY2spOwogCiAgICAg
UmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdFJlZihuZXcgV2Vi
S2l0VVJJU2NoZW1lSGFuZGxlcihjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBtX3VyaVNjaGVt
ZUhhbmRsZXJzLnNldChzY2hlbWUsIGhhbmRsZXIpOwotICAgIHRvSW1wbChtX3JlcXVlc3RNYW5h
Z2VyLmdldCgpKS0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOworICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV91cmlTY2hlbWVIYW5kbGVycy5zZXQoc2NoZW1lLCBoYW5kbGVy
KTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIG1fcHJvY2Vzc1Bvb2wt
PnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woc2NoZW1lKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jl
cXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Jl
cXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmgKaW5kZXggODdkMzYwZS4uMWQyOThiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRF
ZmwuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbF9o
CiAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIgogCkBAIC03OSwx
MCArNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIoY29u
c3QgU3RyaW5nJiBzY2hlbWUsIEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgY2FsbGJhY2ssIHZv
aWQqIHVzZXJEYXRhKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgdm9pZCBzdGFydExvYWRpbmco
V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiwgdWludDY0X3QgY3VzdG9tUHJv
dG9jb2xJRCwgV0tVUkxSZXF1ZXN0UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBz
dGF0aWMgdm9pZCBzdG9wTG9hZGluZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
UmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
LQotICAgIFdLUmV0YWluUHRyPFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWY+
IG1fcmVxdWVzdE1hbmFnZXI7CisgICAgV2ViUHJvY2Vzc1Bvb2wqIG1fcHJvY2Vzc1Bvb2w7CiAg
ICAgVVJJU2NoZW1lSGFuZGxlck1hcCBtX3VyaVNjaGVtZUhhbmRsZXJzOwogICAgIFVSSVNjaGVt
ZVJlcXVlc3RNYXAgbV91cmlTY2hlbWVSZXF1ZXN0czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwCmluZGV4IDNmMjY0MGUuLmZm
YTJkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vz
c1Bvb2xFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vz
c1Bvb2xFZmwuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yU2Vy
dmVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8RWZyZWV0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFi
YXNlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nl
c3NQb29sR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bv
b2xHdGsuY3BwCmluZGV4IDgxOTdmZDMuLjQxMGE5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCkBAIC0zNCw3ICszNCw2IEBA
CiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2lu
Y2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCmluZGV4IGQ1ZGIy
NDQuLjkzYTdjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dl
YlByb2Nlc3NQb29sU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgotI2luY2x1ZGUg
IldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9MYW5ndWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQwLDcgKzM5LDggQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmEKICAgICBwYXJhbWV0ZXJzLmNvb2tpZUFjY2VwdFBvbGljeSA9
IG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5pZ25vcmVU
TFNFcnJvcnMgPSBtX2lnbm9yZVRMU0Vycm9yczsKICAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9
IFdlYkNvcmU6OnVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoKTsKLSAgICBwYXJhbWV0ZXJzLnVybFNj
aGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzID0gc3VwcGxlbWVudDxXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKS0+cmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Q
cm90b2NvbHMoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHNjaGVtZSA6IG1fdXJsU2NoZW1lc1Jl
Z2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMpCisgICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1l
c1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYXBwZW5kKHNjaGVtZSk7CiAgICAgcGFyYW1l
dGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcgPSBmYWxzZTsKIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295148</attachid>
            <date>2016-11-18 06:46:43 -0800</date>
            <delta_ts>2016-11-18 08:26:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-custom-protocols-soup.diff</filename>
            <type>text/plain</type>
            <size>82796</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0Yjg5MTk0Li4xOTBmNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsOTIg
QEAKIDIwMTYtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtTT1VQXSBTaW1wbGlmeSBjdXN0b20gcHJvdG9jb2xzIGhhbmRsZXIgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDkyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGFyZSB1c2luZyB0b28gbWFueSBjbGFzc2VzIGZvciB0aGlzIGFuZCBhbHNvIHRoZSBD
IEFQSSB0aGF0IGlzIG5vdCBuZWVkZWQsIGJlY2F1c2UgYm90aCBHVEsrIGFuZCBFRkwgaGF2ZQor
ICAgICAgICB0aGVpciBvd24gQVBJcyBhbmQgdGhpcyBpcyBub3QgdXNlZCBieSBXVFIgYXQgYWxs
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IFJlbW92ZSBmaWxlcyBmcm9tIGNvbXBp
bGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBT
aGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNl
U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoQVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgIChB
UEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcpOgorICAgICAgICAo
QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OmludmFsaWRhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
c291cC9XS0FQSUNhc3RTb3VwLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tDb250ZXh0U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1Nv
dXBSZXF1ZXN0TWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcDogUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHA6IFVzZSBDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSBpbnN0ZWFkIG9mIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYuCisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjpFd2tVcmxTY2hlbWVSZXF1
ZXN0KToKKyAgICAgICAgKEV3a1VybFNjaGVtZVJlcXVlc3Q6OmZpbmlzaCk6CisgICAgICAgIChF
d2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a1VybFNj
aGVtZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjptYW5h
Z2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKGF0dGFjaEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcDogVXNlIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGluc3RlYWQgb2YgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuCisgICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwpOgorICAg
ICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIpOgorICAgICAgICAod2Via2l0
VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUpOgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVx
dWVzdFJlYWRDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zp
bmlzaF9lcnJvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6CisgICAg
ICAgICh3ZWJraXRXZWJDb250ZXh0RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRl
eHRfcmVnaXN0ZXJfdXJpX3NjaGVtZSk6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0U3RhcnRM
b2FkaW5nQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dEludmFsaWRh
dGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOiBJ
bnZhbGlkYXRlIHRoZSBjbGllbnQuCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5OjpzdGFydExvYWRpbmcpOiBOb3RpZnkgdGhlIGNsaWVudC4KKyAgICAgICAgKFdl
YktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVz
cG9uc2UpOiBOb3RpZnkgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZExvYWREYXRhKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGYWlsV2l0aEVycm9yKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGaW5p
c2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZENsb3NlKTogTm90aWZ5IHRoZSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOiBJbml0aWFsaXplIHRoZSBDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQgYW5kIHJlbW92ZSB0aGUgYWxsIHN1cHBsZW1lbnQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbCk6IEluIGNhc2Ugb2Ygc291cCBjYWNoZSB0aGUgZ2l2ZW4gcHJvdG9jb2wu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2wpOiBJbiBjYXNlIG9mIHNvdXAgZGVsZXRlIHRoZSBnaXZlbiBwcm90b2NvbCBm
cm9tIHRoZSBjYWNoZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcDogRG8gbm90
IHVzZSB0aGUgQyBBUEksIGJ1dCBBUEk6OkN1c3RvbVByb2NvbE1hbmFnZXJDbGllbnQuCisgICAg
ICAgIChXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpSZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbCk6CisgICAgICAgIChXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpyZWdpc3Rl
clVSTFNjaGVtZUhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFn
ZXJDbGllbnRFZmwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZs
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mp
OiBVc2UgbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scyB0bworICAgICAg
ICBidWlsZCB0aGUgbGlzdCBvZiBjdXN0b20gcHJvdG9jb2xzIHRvIHNlbmQgdG8gdGhlIG5ldHdv
cmsgcHJvY2Vzcy4KKworMjAxNi0xMS0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CisKICAgICAgICAgUmVtb3ZlIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkgZnJvbSBXZWJQcm9jZXNzUHJveHkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NDkwOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDZl
NzdlZTYuLjk5NDRhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC03Niw3ICs3Niw2
IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tWaWV3RWZsLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb29raWVNYW5hZ2Vy
U291cC5jcHAKLSAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNz
L1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAKIApAQCAtMTMxLDggKzEzMCw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5j
aGVyRWZsLmNwcAogCiAgICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmNwcAotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAogCiAgICAgVUlQcm9jZXNzL1Bs
dWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAogICAgIFVJUHJvY2Vzcy9QbHVnaW5z
L3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTI1Niw2ICsyNTMsNyBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0v
U2hhcmVkL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL3NvdXAiCiAgICAgIiR7V0VC
S0lUMl9ESVJ9L1NoYXJlZC91bml4IgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJ
IgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvY2Fpcm8iCiAgICAgIiR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvZWZsIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCA5ZmQyZDE2Li41OTU0YjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTAx
LDcgKzEwMSw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9B
UEkvQy9ndGsvV0tWaWV3LmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb29raWVN
YW5hZ2VyU291cC5jcHAKLSAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvQVBJV2Vic2l0
ZURhdGFTdG9yZUd0ay5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5j
cHAKQEAgLTEzNCw2ICsxMzMsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZS5oCiAgICAgVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q3JlZGVudGlhbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDcmVkZW50aWFsLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREZWZp
bmVzLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5oCkBAIC0yMTAsOCArMjExLDYgQEAgbGlzdChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpbnRP
cGVyYXRpb25Qcml2YXRlLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAotICAgIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAotICAgIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlLmgKQEAgLTI4Myw4ICsyODIsNiBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1
cmVNb25pdG9yLmNwcAogCiAgICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyLmNwcAotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAogCiAgICAgVUlQcm9jZXNz
L1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLQmFzZS5oCmluZGV4IDk0OGUxNjAuLjMyZmJjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgKQEAgLTM0LDEwICszNCw2IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZUd0
ay5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFVTRV9TT1VQKQotI2luY2x1ZGUgPFdlYktpdC9X
S0Jhc2VTb3VwLmg+Ci0jZW5kaWYKLQogI2lmIGRlZmluZWQoQlVJTERJTkdfRUZMX18pCiAjaW5j
bHVkZSA8V2ViS2l0L1dLQmFzZUVmbC5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDYwMGYwODUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3NvdXAv
V0tCYXNlU291cC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLQmFzZVNvdXBf
aAotI2RlZmluZSBXS0Jhc2VTb3VwX2gKLQotI2lmbmRlZiBXS0Jhc2VfaAotI2Vycm9yICJQbGVh
c2UgI2luY2x1ZGUgXCJXS0Jhc2UuaFwiIGluc3RlYWQgb2YgdGhpcyBmaWxlIGRpcmVjdGx5LiIK
LSNlbmRpZgotCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1NvdXBSZXF1ZXN0TWFuYWdl
ciogV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiBXS1NvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyUmVmOwotCi0jZW5kaWYgLyogV0tCYXNlU291cF9oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oCnNpbWlsYXJpdHkgaW5kZXggNjglCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaAppbmRleCAyZGY2
M2YyLi41MWUxOGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
c291cC9XS0FQSUNhc3RTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBQ
b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNiBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywx
OSArMjMsMjggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIFdLQVBJQ2FzdFNvdXBfaAotI2RlZmluZSBXS0FQSUNhc3RTb3VwX2gKKyNwcmFnbWEg
b25jZQogCi0jaWZuZGVmIFdLQVBJQ2FzdF9oCi0jZXJyb3IgIlBsZWFzZSAjaW5jbHVkZSBcIldL
QVBJQ2FzdC5oXCIgaW5zdGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHkuIgotI2VuZGlmCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTsKK30KIAotY2xhc3MgV2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXI7CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
Cit9CiAKLVdLX0FERF9BUElfTUFQUElORyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyUmVmLCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcikKK25hbWVzcGFjZSBB
UEkgewogCi19CitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpIHsgfQorCisgICAgdmly
dHVhbCBib29sIHN0YXJ0TG9hZGluZyhXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
JiwgdWludDY0X3QgLyogY3VzdG9tUHJvdG9jb2xJRCAqLywgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcExvYWRp
bmcoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYsIHVpbnQ2NF90IC8qIGN1c3Rv
bVByb3RvY29sSUQgKi8pIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoV2ViS2l0
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYpIHsgfQorfTsKIAotI2VuZGlmIC8vIFdLQVBJ
Q2FzdFNvdXBfaAorfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0LmgKaW5kZXggN2I0YTRkNS4uZjdmM2EyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApAQCAtNTUyLDEwICs1NTIsNiBAQCBpbmxp
bmUgUHJveHlpbmdSZWZQdHI8V2ViR3JhbW1hckRldGFpbD4gdG9BUEkoY29uc3QgV2ViQ29yZTo6
R3JhbW1hckRldGFpbCYgZ3JhbQogI2luY2x1ZGUgIldLQVBJQ2FzdEd0ay5oIgogI2VuZGlmCiAK
LSNpZiBVU0UoU09VUCkKLSNpbmNsdWRlICJXS0FQSUNhc3RTb3VwLmgiCi0jZW5kaWYKLQogI2lm
IGRlZmluZWQoQlVJTERJTkdfRUZMX18pCiAjaW5jbHVkZSAiV0tBUElDYXN0RWZsLmgiCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29u
dGV4dFNvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4
dFNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q0MmYzOS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tDb250ZXh0U291cF9oCi0jZGVmaW5l
IFdLQ29udGV4dFNvdXBfaAotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotI2luY2x1ZGUg
PFdlYktpdC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4
dGVybiAiQyIgewotI2VuZGlmCi0KLVdLX0VYUE9SVCBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBX
S0NvbnRleHRHZXRTb3VwUmVxdWVzdE1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwotCi0j
aWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLyogV0tDb250ZXh0U291cF9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWQzNmY2Li4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgotCi0jaW5j
bHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotV0tUeXBlSUQgV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckdldFR5cGVJRCgpCi17Ci0gICAgcmV0dXJuIHRv
QVBJKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpBUElUeXBlKTsKLX0KLQot
dm9pZCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCBjb25z
dCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSogd2tDbGllbnQp
Ci17Ci0gICAgdG9JbXBsKHNvdXBSZXF1ZXN0TWFuYWdlclJlZiktPmluaXRpYWxpemVDbGllbnQo
d2tDbGllbnQpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjJhNzYyLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS1NvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyX2gKLSNkZWZpbmUgV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlcl9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0KLSNpZmRl
ZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotdHlwZWRlZiB2b2lkICgqV0tT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclN0YXJ0TG9hZGluZ0NhbGxiYWNrKShXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBNYW5hZ2VyUmVmLCB1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElELCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyU3RvcExvYWRpbmdDYWxsYmFjaykoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlclJlZiBzb3VwTWFuYWdlclJlZiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0KLXR5cGVkZWYgc3RydWN0IFdLU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlIHsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKLSAgICBjb25zdCB2b2lk
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsK
LX0gV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2U7Ci0KLXR5cGVk
ZWYgc3RydWN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB7Ci0g
ICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UgICAgICAgICAg
IGJhc2U7Ci0KLSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU3RhcnRMb2Fk
aW5nQ2FsbGJhY2sgc3RhcnRMb2FkaW5nOwotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJTdG9wTG9hZGluZ0NhbGxiYWNrICBzdG9wTG9hZGluZzsKLX0gV0tTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwOwotCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckdldFR5cGVJRCgpOwotCi1XS19FWFBPUlQg
dm9pZCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIGNvbnN0IFdLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2Vu
ZGlmCi0KLSNlbmRpZiAvKiBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJl
cXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1Nv
dXBSZXF1ZXN0TWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjY3ZWRl
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291
cFJlcXVlc3RNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tTb3Vw
UmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXS1NvdXBSZXF1ZXN0TWFuYWdlcl9oCi0KLSNpbmNs
dWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7
Ci0jZW5kaWYKLQotdHlwZWRlZiB2b2lkICgqV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRSZWNlaXZl
VVJJUmVxdWVzdENhbGxiYWNrKShXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1h
bmFnZXJSZWYsIFdLVVJMUmVmIHVybFJlZiwgV0tQYWdlUmVmIHBhZ2VSZWYsIHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1NvdXBS
ZXF1ZXN0TWFuYWdlckRpZEZhaWxUb0xvYWRVUklSZXF1ZXN0Q2FsbGJhY2spKFdLU291cFJlcXVl
c3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0TWFuYWdlclJlZiwgdWludDY0X3QgcmVxdWVzdElELCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tTb3VwUmVxdWVzdE1h
bmFnZXJDbGllbnRCYXNlIHsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKLSAgICBjb25zdCB2b2lkKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKLX0gV0tTb3VwUmVxdWVzdE1h
bmFnZXJDbGllbnRCYXNlOwotCi10eXBlZGVmIHN0cnVjdCBXS1NvdXBSZXF1ZXN0TWFuYWdlckNs
aWVudFYwIHsKLSAgICBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UgICAgICAgICAgICAg
ICAgICAgICAgYmFzZTsKLQotICAgIFdLU291cFJlcXVlc3RNYW5hZ2VyRGlkUmVjZWl2ZVVSSVJl
cXVlc3RDYWxsYmFjayAgICBkaWRSZWNlaXZlVVJJUmVxdWVzdDsKLSAgICBXS1NvdXBSZXF1ZXN0
TWFuYWdlckRpZEZhaWxUb0xvYWRVUklSZXF1ZXN0Q2FsbGJhY2sgZGlkRmFpbFRvTG9hZFVSSVJl
cXVlc3Q7Ci19IFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjA7Ci0KLVdLX0VYUE9SVCBXS1R5
cGVJRCBXS1NvdXBSZXF1ZXN0TWFuYWdlckdldFR5cGVJRCgpOwotCi1XS19FWFBPUlQgdm9pZCBX
S1NvdXBSZXF1ZXN0TWFuYWdlclNldENsaWVudChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwgY29u
c3QgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpOwotV0tfRVhQT1JUIHZv
aWQgV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWdpc3RlclVSSVNjaGVtZShXS1NvdXBSZXF1ZXN0TWFu
YWdlclJlZiwgV0tTdHJpbmdSZWYgc2NoZW1lUmVmKTsKLVdLX0VYUE9SVCB2b2lkIFdLU291cFJl
cXVlc3RNYW5hZ2VyRGlkSGFuZGxlVVJJUmVxdWVzdChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwg
V0tEYXRhUmVmLCB1aW50NjRfdCBjb250ZW50TGVuZ3RoLCBXS1N0cmluZ1JlZiBtaW1lVHlwZVJl
ZiwgdWludDY0X3QgcmVxdWVzdElEKTsKLVdLX0VYUE9SVCB2b2lkIFdLU291cFJlcXVlc3RNYW5h
Z2VyRGlkUmVjZWl2ZVVSSVJlcXVlc3REYXRhKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS0Rh
dGFSZWYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2Vu
ZGlmCi0KLSNlbmRpZiAvKiBXS1NvdXBSZXF1ZXN0TWFuYWdlcl9oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggMTc5NTI2OS4u
YjRlZGU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIlJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJp
dmF0ZS5oIgotI2luY2x1ZGUgIldLQ29udGV4dFNvdXAuaCIKICNpbmNsdWRlICJXS051bWJlci5o
IgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
c2NoZW1lX3JlcXVlc3QuY3BwCmluZGV4IDk4OGI5OTYuLmY1NTQ4NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3Jl
cXVlc3QuY3BwCkBAIC0zMSwxNCArMzEsMTMgQEAKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2lu
Y2x1ZGUgIldLVVJMLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSAiV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKIAogI2luY2x1ZGUgImV3a191cmxf
c2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1F
d2tVcmxTY2hlbWVSZXF1ZXN0OjpFd2tVcmxTY2hlbWVSZXF1ZXN0KFdLU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJSZWYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0
LCB1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgOiBtX3drUmVxdWVzdE1hbmFnZXIobWFuYWdlcikK
K0V3a1VybFNjaGVtZVJlcXVlc3Q6OkV3a1VybFNjaGVtZVJlcXVlc3QoQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkmIG1hbmFnZXIsIEFQSTo6VVJMUmVxdWVzdCogdXJsUmVxdWVzdCwgdWludDY0
X3QgcmVxdWVzdElEKQorICAgIDogbV93a1JlcXVlc3RNYW5hZ2VyKCZtYW5hZ2VyKQogICAgICwg
bV9yZXF1ZXN0SUQocmVxdWVzdElEKQogewogICAgIFdLVVJMUmVmIHVybCA9IHRvQ29waWVkVVJM
QVBJKHVybFJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKQEAgLTY5LDYgKzY4LDkg
QEAgY29uc3QgY2hhciogRXdrVXJsU2NoZW1lUmVxdWVzdDo6cGF0aCgpIGNvbnN0CiAKIHZvaWQg
RXdrVXJsU2NoZW1lUmVxdWVzdDo6ZmluaXNoKGNvbnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50
NjRfdCBjb250ZW50TGVuZ3RoLCBjb25zdCBjaGFyKiBtaW1lVHlwZSkKIHsKKyAgICBpZiAoIW1f
d2tSZXF1ZXN0TWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworCiAgICAgV0tSZXRhaW5QdHI8V0tE
YXRhUmVmPiB3a0RhdGEoQWRvcHRXSywgV0tEYXRhQ3JlYXRlKGNvbnRlbnRMZW5ndGggPyByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihjb250ZW50RGF0YSkgOiAwLCBjb250
ZW50TGVuZ3RoKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTWltZVR5cGUgPSBt
aW1lVHlwZSA/IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobWltZVR5cGUp
KSA6IDA7CiAKQEAgLTc2LDEwICs3OCwxNSBAQCB2b2lkIEV3a1VybFNjaGVtZVJlcXVlc3Q6OmZp
bmlzaChjb25zdCB2b2lkKiBjb250ZW50RGF0YSwgdWludDY0X3QgY29udGVudExlbmd0aAogICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6
OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KG1fdXJsKSksCiAgICAgICAgIFN0cmluZzo6ZnJvbVVU
RjgobWltZVR5cGUpLCBjb250ZW50TGVuZ3RoLCBlbXB0eVN0cmluZygpKTsKIAotICAgIHRvSW1w
bChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5kaWRSZWNlaXZlUmVzcG9uc2UobV9yZXF1ZXN0
SUQsIHJlc3BvbnNlKTsKLSAgICB0b0ltcGwobV93a1JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+ZGlk
TG9hZERhdGEobV9yZXF1ZXN0SUQsIHRvSW1wbCh3a0RhdGEuZ2V0KCkpKTsKLSAgICB0b0ltcGwo
bV93a1JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+ZGlkRmluaXNoTG9hZGluZyhtX3JlcXVlc3RJRCk7
Ci0gICAgdG9JbXBsKG1fd2tSZXF1ZXN0TWFuYWdlci5nZXQoKSktPnN0b3BMb2FkaW5nKG1fcmVx
dWVzdElEKTsKKyAgICBtX3drUmVxdWVzdE1hbmFnZXItPmRpZFJlY2VpdmVSZXNwb25zZShtX3Jl
cXVlc3RJRCwgcmVzcG9uc2UpOworICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkTG9hZERhdGEo
bV9yZXF1ZXN0SUQsIHRvSW1wbCh3a0RhdGEuZ2V0KCkpLT5kYXRhUmVmZXJlbmNlKCkpOworICAg
IG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyhtX3JlcXVlc3RJRCk7CisgICAg
bV93a1JlcXVlc3RNYW5hZ2VyLT5zdG9wTG9hZGluZyhtX3JlcXVlc3RJRCk7Cit9CisKK3ZvaWQg
RXdrVXJsU2NoZW1lUmVxdWVzdDo6aW52YWxpZGF0ZSgpCit7CisgICAgbV93a1JlcXVlc3RNYW5h
Z2VyID0gbnVsbHB0cjsKIH0KIAogY29uc3QgY2hhciogZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9z
Y2hlbWVfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
c2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oCmluZGV4IGEzOTg5MmIuLmY1OWQ1NWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVl
c3RfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191
cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpZm5kZWYg
ZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlX2gKICNkZWZpbmUgZXdrX3VybF9zY2hlbWVf
cmVxdWVzdF9wcml2YXRlX2gKIAorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVk
ZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKLSNpbmNs
dWRlICJXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdr
X29iamVjdF9wcml2YXRlLmgiCiAKIC8qKgpAQCAtNDEsOSArNDEsOSBAQCBjbGFzcyBFd2tVcmxT
Y2hlbWVSZXF1ZXN0IDogcHVibGljIEV3a09iamVjdCB7CiBwdWJsaWM6CiAgICAgRVdLX09CSkVD
VF9ERUNMQVJFKEV3a1VybFNjaGVtZVJlcXVlc3QpCiAKLSAgICBzdGF0aWMgUmVmUHRyPEV3a1Vy
bFNjaGVtZVJlcXVlc3Q+IGNyZWF0ZShXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
UmVmIG1hbmFnZXIsIEFQSTo6VVJMUmVxdWVzdCogdXJsUmVxdWVzdCwgdWludDY0X3QgcmVxdWVz
dElEKQorICAgIHN0YXRpYyBSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4gY3JlYXRlKFdlYktp
dDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIEFQSTo6VVJMUmVxdWVzdCog
dXJsUmVxdWVzdCwgdWludDY0X3QgcmVxdWVzdElEKQogICAgIHsKLSAgICAgICAgaWYgKCFtYW5h
Z2VyIHx8ICF1cmxSZXF1ZXN0KQorICAgICAgICBpZiAoIXVybFJlcXVlc3QpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a1VybFNj
aGVtZVJlcXVlc3QobWFuYWdlciwgdXJsUmVxdWVzdCwgcmVxdWVzdElEKSk7CkBAIC01NiwxMCAr
NTYsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBmaW5pc2goY29uc3Qgdm9pZCogY29udGVudERh
dGEsIHVpbnQ2NF90IGNvbnRlbnRMZW5ndGgsIGNvbnN0IGNoYXIqIG1pbWVUeXBlKTsKIAorICAg
IFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqIG1hbmFnZXIoKSBjb25zdCB7IHJl
dHVybiBtX3drUmVxdWVzdE1hbmFnZXI7IH0KKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKwogcHJp
dmF0ZToKLSAgICBFd2tVcmxTY2hlbWVSZXF1ZXN0KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJSZWYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50NjRf
dCByZXF1ZXN0SUQpOworICAgIEV3a1VybFNjaGVtZVJlcXVlc3QoV2ViS2l0OjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1
aW50NjRfdCByZXF1ZXN0SUQpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlclJlZj4gbV93a1JlcXVlc3RNYW5hZ2VyOworICAgIFdlYktpdDo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqIG1fd2tSZXF1ZXN0TWFuYWdlcjsKICAgICBXS0VpbmFT
aGFyZWRTdHJpbmcgbV91cmw7CiAgICAgdWludDY0X3QgbV9yZXF1ZXN0SUQ7CiAgICAgV0tFaW5h
U2hhcmVkU3RyaW5nIG1fc2NoZW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IyZjMxNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCisKKyNpbmNsdWRlICJBUElD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OworCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQg
ZmluYWwgOiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChXZWJLaXRXZWJDb250
ZXh0KiB3ZWJDb250ZXh0KQorICAgICAgICA6IG1fd2ViQ29udGV4dCh3ZWJDb250ZXh0KQorICAg
IHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHdlYmtp
dFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0b21Qcm90b2NvbChtX3dlYkNvbnRleHQsIGN1c3Rv
bVByb3RvY29sSUQsIHJlcXVlc3QsIG1hbmFnZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICB2b2lkIHN0b3BMb2FkaW5nKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Jiwg
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHdlYmtp
dFdlYkNvbnRleHRTdG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3VzdG9t
UHJvdG9jb2xJRCk7CisgICAgfQorCisgICAgdm9pZCBpbnZhbGlkYXRlKEN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5JiBtYW5hZ2VyKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Via2l0V2Vi
Q29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKG1fd2ViQ29udGV4dCwgbWFu
YWdlcik7CisgICAgfQorCisgICAgV2ViS2l0V2ViQ29udGV4dCogbV93ZWJDb250ZXh0OworfTsK
Kwordm9pZCBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0
V2ViQ29udGV4dCogd2ViQ29udGV4dCkKK3sKKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHdlYmtp
dFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KTsKKyAgICBwcm9jZXNzUG9vbC0+
c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50Pih3ZWJDb250ZXh0KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50LmgKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaApyZW5hbWUg
dG8gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmgKaW5kZXggYTM2NTU5NC4uYzljNGMxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0xNywxMSArMTcsOSBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudF9oCi0jZGVm
aW5lIFdlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCi12b2lkIGF0dGFjaFJlcXVlc3RNYW5hZ2VyQ2xpZW50
VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqKTsKK3ZvaWQgYXR0YWNoQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqKTsKIAotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKaW5kZXgg
NzVlOGM5ZS4uZDA3MmE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFByaXZhdGUuaApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgPFdlYktpdC9X
S0luc3BlY3RvckNsaWVudEd0ay5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPFdlYktpdC9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUgPFdl
YktpdC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuaD4KICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Ml9DLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdl
ckNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MTg5YzkuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1h
bmFnZXJDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaCIKLQotI2luY2x1ZGUgIldlYktpdFdlYkNv
bnRleHRQcml2YXRlLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLXN0YXRpYyB2b2lk
IHN0YXJ0TG9hZGluZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKLXsKLSAgICB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3Vz
dG9tUHJvdG9jb2woV0VCS0lUX1dFQl9DT05URVhUKGNsaWVudEluZm8pLCBjdXN0b21Qcm90b2Nv
bElELCB0b0ltcGwocmVxdWVzdFJlZikpOwotfQotCi1zdGF0aWMgdm9pZCBzdG9wTG9hZGluZyhX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHdlYmtpdFdlYkNvbnRleHRT
dG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKFdFQktJVF9XRUJfQ09OVEVYVChjbGllbnRJbmZvKSwg
Y3VzdG9tUHJvdG9jb2xJRCk7Ci19Ci0KLXZvaWQgYXR0YWNoUmVxdWVzdE1hbmFnZXJDbGllbnRU
b0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKLXsKLSAgICBXS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudCA9
IHsKLSAgICAgICAgewotICAgICAgICAgICAgMCwgLy8gdmVyc2lvbgotICAgICAgICAgICAgd2Vi
Q29udGV4dCAvLyBjbGllbnRJbmZvCi0gICAgICAgIH0sCi0gICAgICAgIHN0YXJ0TG9hZGluZywK
LSAgICAgICAgc3RvcExvYWRpbmcKLSAgICB9OwotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXJTZXRDbGllbnQodG9BUEkod2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5h
Z2VyKHdlYkNvbnRleHQpKSwgJndrUmVxdWVzdE1hbmFnZXJDbGllbnQuYmFzZSk7Ci19Ci0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVt
ZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdC5jcHAKaW5kZXggODcyYTU2NC4uYWJhMWI5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
LyoqCiAgKiBTRUNUSU9OOiBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0CkBAIC01NCw3ICs1NSw3IEBA
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgZ1JlYWRCdWZmZXJTaXplID0gODE5MjsKIAogc3Ry
dWN0IF9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSB7CiAgICAgV2ViS2l0V2ViQ29udGV4
dCogd2ViQ29udGV4dDsKLSAgICBSZWZQdHI8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXI+IHdlYlJlcXVlc3RNYW5hZ2VyOworICAgIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
KiBtYW5hZ2VyOwogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IGluaXRpYXRpbmdQYWdlOwogICAg
IHVpbnQ2NF90IHJlcXVlc3RJRDsKICAgICBDU3RyaW5nIHVyaTsKQEAgLTc0LDIxICs3NSwzMSBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdENsYXNzKikKIHsKIH0KIAotV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCog
d2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdFdl
YkNvbnRleHQqIHdlYkNvbnRleHQsIEFQSTo6VVJMUmVxdWVzdCogdXJsUmVxdWVzdCkKK1dlYktp
dFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUodWludDY0X3Qg
cmVxdWVzdElELCBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCwgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFn
ZXIpCiB7Ci0gICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9VUklf
U0NIRU1FX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VSSV9TQ0hFTUVfUkVRVUVT
VCwgTlVMTCkpOworICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRf
VVJJX1NDSEVNRV9SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9VUklfU0NIRU1FX1JF
UVVFU1QsIG51bGxwdHIpKTsKICAgICByZXF1ZXN0LT5wcml2LT53ZWJDb250ZXh0ID0gd2ViQ29u
dGV4dDsKLSAgICByZXF1ZXN0LT5wcml2LT53ZWJSZXF1ZXN0TWFuYWdlciA9IHdlYmtpdFdlYkNv
bnRleHRHZXRSZXF1ZXN0TWFuYWdlcih3ZWJDb250ZXh0KTsKLSAgICByZXF1ZXN0LT5wcml2LT51
cmkgPSB1cmxSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCk7
Ci0gICAgcmVxdWVzdC0+cHJpdi0+aW5pdGlhdGluZ1BhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UodXJsUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkuaW5pdGlhdGluZ1BhZ2VJRCgpKTsK
KyAgICByZXF1ZXN0LT5wcml2LT5tYW5hZ2VyID0gJm1hbmFnZXI7CisgICAgcmVxdWVzdC0+cHJp
di0+dXJpID0gcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKTsKKyAgICByZXF1
ZXN0LT5wcml2LT5pbml0aWF0aW5nUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShyZXNv
dXJjZVJlcXVlc3QuaW5pdGlhdGluZ1BhZ2VJRCgpKTsKICAgICByZXF1ZXN0LT5wcml2LT5yZXF1
ZXN0SUQgPSByZXF1ZXN0SUQ7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKIHZvaWQgd2Via2l0
VVJJU2NoZW1lUmVxdWVzdENhbmNlbChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQog
ewotICAgIGlmIChyZXF1ZXN0LT5wcml2LT5jYW5jZWxsYWJsZS5nZXQoKSkKLSAgICAgICAgZ19j
YW5jZWxsYWJsZV9jYW5jZWwocmVxdWVzdC0+cHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCkpOworICAg
IGdfY2FuY2VsbGFibGVfY2FuY2VsKHJlcXVlc3QtPnByaXYtPmNhbmNlbGxhYmxlLmdldCgpKTsK
K30KKworQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RH
ZXRNYW5hZ2VyKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgcmV0dXJu
IHJlcXVlc3QtPnByaXYtPm1hbmFnZXI7Cit9CisKK3ZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVz
dEludmFsaWRhdGUoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICByZXF1
ZXN0LT5wcml2LT5tYW5hZ2VyID0gbnVsbHB0cjsKKyAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0
Q2FuY2VsKHJlcXVlc3QpOwogfQogCiAvKioKQEAgLTE1OSw4ICsxNzAsMTQgQEAgV2ViS2l0V2Vi
Vmlldyogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfd2ViX3ZpZXcoV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdCogcmUKIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2Fs
bGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFdl
YktpdFVSSVNjaGVtZVJlcXVlc3QqIHNjaGVtZVJlcXVlc3QpCiB7CiAgICAgR1JlZlB0cjxXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHNjaGVtZVJlcXVlc3QpOwor
ICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsK
ICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgZ3NzaXplIGJ5dGVzUmVhZCA9
IGdfaW5wdXRfc3RyZWFtX3JlYWRfZmluaXNoKGlucHV0U3RyZWFtLCByZXN1bHQsICZlcnJvci5v
dXRQdHIoKSk7CisgICAgaWYgKCFwcml2LT5tYW5hZ2VyKSB7CisgICAgICAgIHdlYmtpdFdlYkNv
bnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2wocHJpdi0+d2ViQ29udGV4dCwgcHJp
di0+cmVxdWVzdElEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChieXRlc1Jl
YWQgPT0gLTEpIHsKICAgICAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJy
b3IocmVxdWVzdC5nZXQoKSwgZXJyb3IuZ2V0KCkpOwogICAgICAgICByZXR1cm47CkBAIC0xNzEs
MjIgKzE4OCwyMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxi
YWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogICAgIGlmICghcmVxdWVzdC0+
cHJpdi0+c3RyZWFtKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJLaXRVUklTY2hlbWVSZXF1
ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7Ci0gICAgUmVmPEFQSTo6RGF0YT4gd2Vi
RGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhcio+KHByaXYtPnJlYWRCdWZmZXIpLCBieXRlc1JlYWQpOworICAgIGF1dG8gd2ViRGF0YSA9
IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcml2
LT5yZWFkQnVmZmVyKSwgYnl0ZXNSZWFkKTsKICAgICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkgewog
ICAgICAgICAvLyBGaXJzdCBjaHVuayByZWFkLiBJbiBjYXNlIG9mIGVtcHR5IHJlcGx5IGFuIGVt
cHR5IEFQSTo6RGF0YSBpcyBzZW50IHRvIHRoZSBuZXR3b3JraW5nIHByb2Nlc3MuCi0gICAgICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6
OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHByaXYtPnVyaSkpLCBTdHJpbmc6OmZyb21VVEY4KHBy
aXYtPm1pbWVUeXBlLmRhdGEoKSksCisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2Uo
VVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHByaXYtPnVyaSkpLCBTdHJpbmc6OmZyb21VVEY4
KHByaXYtPm1pbWVUeXBlLmRhdGEoKSksCiAgICAgICAgICAgICBwcml2LT5zdHJlYW1MZW5ndGgs
IGVtcHR5U3RyaW5nKCkpOwotICAgICAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKHByaXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UpOwotICAgICAgICBwcml2LT53
ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkTG9hZERhdGEocHJpdi0+cmVxdWVzdElELCB3ZWJEYXRhLnB0
cigpKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHByaXYtPnJl
cXVlc3RJRCwgcmVzcG9uc2UpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRMb2FkRGF0YShw
cml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkIHx8ICgh
Ynl0ZXNSZWFkICYmICFwcml2LT5zdHJlYW1MZW5ndGgpKSB7CiAgICAgICAgIC8vIFN1YnNlcXVl
bnQgY2h1bmsgcmVhZC4gV2Ugb25seSBzZW5kIGFuIGVtcHR5IEFQSTo6RGF0YSB0byB0aGUgbmV0
d29ya2luZyBwcm9jZXNzIHdoZW4gc3RyZWFtIGxlbmd0aCBpcyB1bmtub3duLgotICAgICAgICBw
cml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkTG9hZERhdGEocHJpdi0+cmVxdWVzdElELCB3ZWJE
YXRhLnB0cigpKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkTG9hZERhdGEocHJpdi0+cmVx
dWVzdElELCB3ZWJEYXRhKTsKICAgICB9CiAKICAgICBpZiAoIWJ5dGVzUmVhZCkgewotICAgICAg
ICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyhyZXF1ZXN0LT5wcml2
LT5yZXF1ZXN0SUQpOwotICAgICAgICB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1
c3RvbVByb3RvY29sKHJlcXVlc3QtPnByaXYtPndlYkNvbnRleHQsIHJlcXVlc3QtPnByaXYtPnJl
cXVlc3RJRCk7CisgICAgICAgIHByaXYtPm1hbmFnZXItPmRpZEZpbmlzaExvYWRpbmcocHJpdi0+
cmVxdWVzdElEKTsKKyAgICAgICAgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0
b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0SUQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yMzksNyArMjU1LDcgQEAgdm9pZCB3ZWJraXRfdXJpX3NjaGVt
ZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0LCBH
RXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgcHJpdi0+c3RyZWFtID0gbnVsbHB0cjsKLSAgICBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJy
b3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9yKGVycm9yLT5jb2RlKSwgV2ViQ29yZTo6VVJMKHBy
aXYtPnNvdXBVUkkuZ2V0KCkpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7Ci0g
ICAgcHJpdi0+d2ViUmVxdWVzdE1hbmFnZXItPmRpZEZhaWxXaXRoRXJyb3IocHJpdi0+cmVxdWVz
dElELCByZXNvdXJjZUVycm9yKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoZ19x
dWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9yKGVycm9yLT5jb2Rl
KSwgVVJMKHByaXYtPnNvdXBVUkkuZ2V0KCkpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNz
YWdlKSk7CisgICAgcHJpdi0+bWFuYWdlci0+ZGlkRmFpbFdpdGhFcnJvcihwcml2LT5yZXF1ZXN0
SUQsIHJlc291cmNlRXJyb3IpOwogICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5n
Q3VzdG9tUHJvdG9jb2wocHJpdi0+d2ViQ29udGV4dCwgcHJpdi0+cmVxdWVzdElEKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVt
ZVJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oCmluZGV4IGM3MmZhMTguLjQ3YmI4YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJl
cXVlc3RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaApAQCAtMjAsMTEgKzIwLDE1IEBACiAjaWZuZGVm
IFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlX2gKICNkZWZpbmUgV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCi1XZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiB3ZWJraXRV
UklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0V2ViQ29udGV4
dCosIEFQSTo6VVJMUmVxdWVzdCopOworV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogd2Via2l0VVJJ
U2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdFdlYkNvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJLaXQ6OkN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5Jik7CiB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwoV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdCopOworV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSog
d2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCop
Owordm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0SW52YWxpZGF0ZShXZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0Kik7CiAKICNlbmRpZiAvLyBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHQuY3BwCmluZGV4IDcyNTM1NTkuLjczODM0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMCw2ICsyMCw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgog
CisjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
QVBJRG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgog
I2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgpAQCAtMzAsNiArMzEsNyBA
QAogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29va2llTWFuYWdlclByaXZh
dGUuaCIKKyNpbmNsdWRlICJXZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNp
bmNsdWRlICJXZWJLaXREb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdERvd25sb2Fk
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUuaCIKQEAg
LTM4LDcgKzQwLDYgQEAKICNpbmNsdWRlICJXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5oIgog
I2luY2x1ZGUgIldlYktpdFBsdWdpblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRl
LmgiCi0jaW5jbHVkZSAiV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJLaXRTZWN1cml0eU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3NQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaCIKQEAg
LTExNSwxMiArMTE2LDYgQEAgZW51bSB7CiAKIGNsYXNzIFdlYktpdFVSSVNjaGVtZUhhbmRsZXI6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+IHsKIHB1YmxpYzoKLSAg
ICBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKCkKLSAgICAgICAgOiBtX2NhbGxiYWNrKDApCi0gICAg
ICAgICwgbV91c2VyRGF0YSgwKQotICAgICAgICAsIG1fZGVzdHJveU5vdGlmeSgwKQotICAgIHsK
LSAgICB9CiAgICAgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95
Tm90aWZ5KQogICAgICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgICAgICwgbV91c2Vy
RGF0YSh1c2VyRGF0YSkKQEAgLTE0Nyw5ICsxNDIsOSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayBtX2NhbGxiYWNrOwotICAg
IHZvaWQqIG1fdXNlckRhdGE7Ci0gICAgR0Rlc3Ryb3lOb3RpZnkgbV9kZXN0cm95Tm90aWZ5Owor
ICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayBtX2NhbGxiYWNrIHsgbnVsbHB0ciB9
OworICAgIHZvaWQqIG1fdXNlckRhdGEgeyBudWxscHRyIH07CisgICAgR0Rlc3Ryb3lOb3RpZnkg
bV9kZXN0cm95Tm90aWZ5IHsgbnVsbHB0ciB9OwogfTsKIAogdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+ID4gVVJJU2NoZW1lSGFuZGxlck1hcDsK
QEAgLTE2Miw3ICsxNTcsNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHRQcml2YXRlIHsKICAg
ICBHUmVmUHRyPFdlYktpdENvb2tpZU1hbmFnZXI+IGNvb2tpZU1hbmFnZXI7CiAgICAgR1JlZlB0
cjxXZWJLaXRGYXZpY29uRGF0YWJhc2U+IGZhdmljb25EYXRhYmFzZTsKICAgICBHUmVmUHRyPFdl
YktpdFNlY3VyaXR5TWFuYWdlcj4gc2VjdXJpdHlNYW5hZ2VyOwotICAgIFJlZlB0cjxXZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4gcmVxdWVzdE1hbmFnZXI7CiAgICAgVVJJU2No
ZW1lSGFuZGxlck1hcCB1cmlTY2hlbWVIYW5kbGVyczsKICAgICBVUklTY2hlbWVSZXF1ZXN0TWFw
IHVyaVNjaGVtZVJlcXVlc3RzOwogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKQEAgLTI3NSw4ICsy
NjksNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCog
b2JqZWN0KQogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyKQogICAgICAgICBwcml2
LT53ZWJzaXRlRGF0YU1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
Q3JlYXRlKHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uRm9yV2ViUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKSk7CiAKLSAgICBwcml2LT5yZXF1ZXN0TWFuYWdlciA9
IHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyPigpOwotCiAgICAgcHJpdi0+dGxzRXJyb3JzUG9saWN5ID0gV0VCS0lUX1RMU19F
UlJPUlNfUE9MSUNZX0ZBSUw7CiAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldElnbm9yZVRMU0Vy
cm9ycyhmYWxzZSk7CiAKQEAgLTI4Nyw3ICsyNzksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJD
b250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgYXR0YWNoSW5qZWN0ZWRC
dW5kbGVDbGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7CiAgICAgYXR0YWNoRG93bmxvYWRDbGll
bnRUb0NvbnRleHQod2ViQ29udGV4dCk7Ci0gICAgYXR0YWNoUmVxdWVzdE1hbmFnZXJDbGllbnRU
b0NvbnRleHQod2ViQ29udGV4dCk7CisgICAgYXR0YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAg
IHByaXYtPmdlb2xvY2F0aW9uUHJvdmlkZXIgPSBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpj
cmVhdGUocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk+KCkpOwpAQCAtMzA0LDYgKzI5Niw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRl
eHREaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKICAgICAgICAgcHJpdi0+Y2xpZW50c0RldGFjaGVk
ID0gdHJ1ZTsKICAgICAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVJbmplY3RlZEJ1
bmRsZUNsaWVudChudWxscHRyKTsKICAgICAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldERvd25s
b2FkQ2xpZW50KG51bGxwdHIpOworICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG51bGxwdHIpOwogICAgIH0KIAogICAgIEdfT0JKRUNUX0NM
QVNTKHdlYmtpdF93ZWJfY29udGV4dF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CkBA
IC04NDksOCArODQyLDkgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfcmVnaXN0ZXJfdXJpX3Nj
aGVtZShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGEKICAgICBnX3JldHVybl9p
Zl9mYWlsKGNhbGxiYWNrKTsKIAogICAgIFJlZlB0cjxXZWJLaXRVUklTY2hlbWVIYW5kbGVyPiBo
YW5kbGVyID0gYWRvcHRSZWYobmV3IFdlYktpdFVSSVNjaGVtZUhhbmRsZXIoY2FsbGJhY2ssIHVz
ZXJEYXRhLCBkZXN0cm95Tm90aWZ5KSk7Ci0gICAgY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lSGFu
ZGxlcnMuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKSwgaGFuZGxlci5nZXQoKSk7Ci0gICAg
Y29udGV4dC0+cHJpdi0+cmVxdWVzdE1hbmFnZXItPnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJv
dG9jb2woU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IGNv
bnRleHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJzLnNldChTdHJpbmc6OmZyb21VVEY4KHNjaGVt
ZSksIGhhbmRsZXIuZ2V0KCkpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAg
ICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJv
dG9jb2woU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpKTsKIH0KIAogLyoqCkBAIC0xMjY2LDE0ICsx
MjYwLDkgQEAgV2ViUHJvY2Vzc1Bvb2wqIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbChX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogICAgIHJldHVybiBjb250ZXh0LT5wcml2LT5wcm9j
ZXNzUG9vbC5nZXQoKTsKIH0KIAotV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIq
IHdlYmtpdFdlYkNvbnRleHRHZXRSZXF1ZXN0TWFuYWdlcihXZWJLaXRXZWJDb250ZXh0KiBjb250
ZXh0KQotewotICAgIHJldHVybiBjb250ZXh0LT5wcml2LT5yZXF1ZXN0TWFuYWdlci5nZXQoKTsK
LX0KLQotdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgQVBJOjpV
UkxSZXF1ZXN0KiB1cmxSZXF1ZXN0KQordm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5n
Q3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QsIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyKQogewotICAgIEdSZWZQdHI8
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRVUklTY2hl
bWVSZXF1ZXN0Q3JlYXRlKGN1c3RvbVByb3RvY29sSUQsIGNvbnRleHQsIHVybFJlcXVlc3QpKTsK
KyAgICBHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYo
d2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZShjdXN0b21Qcm90b2NvbElELCBjb250ZXh0LCBy
ZXNvdXJjZVJlcXVlc3QsIG1hbmFnZXIpKTsKICAgICBTdHJpbmcgc2NoZW1lKFN0cmluZzo6ZnJv
bVVURjgod2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfc2NoZW1lKHJlcXVlc3QuZ2V0KCkp
KSk7CiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+IGhhbmRsZXIgPSBjb250ZXh0
LT5wcml2LT51cmlTY2hlbWVIYW5kbGVycy5nZXQoc2NoZW1lKTsKICAgICBBU1NFUlQoaGFuZGxl
ci5nZXQoKSk7CkBAIC0xMjkyLDYgKzEyODEsMTYgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0U3Rv
cExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjQK
ICAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKHJlcXVlc3QuZ2V0KCkpOwogfQogCit2
b2lkIHdlYmtpdFdlYkNvbnRleHRJbnZhbGlkYXRlQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0cyhXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0LCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdl
cikKK3sKKyAgICBWZWN0b3I8R1JlZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Pj4gcmVxdWVz
dHM7CisgICAgY29weVZhbHVlc1RvVmVjdG9yKGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZVJlcXVl
c3RzLCByZXF1ZXN0cyk7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVzdHMpIHsKKyAg
ICAgICAgaWYgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RHZXRNYW5hZ2VyKHJlcXVlc3QuZ2V0KCkp
ID09ICZtYW5hZ2VyKQorICAgICAgICAgICAgd2Via2l0VVJJU2NoZW1lUmVxdWVzdEludmFsaWRh
dGUocmVxdWVzdC5nZXQoKSk7CisgICAgfQorfQorCiB2b2lkIHdlYmtpdFdlYkNvbnRleHREaWRG
aW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsKICAgICBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVS
ZXF1ZXN0cy5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAppbmRl
eCA3ZWU5NmIxLi42M2ViMjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKQEAgLTI2LDIxICsyNiwy
MiBAQAogI2lmbmRlZiBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZV9oCiAjZGVmaW5lIFdlYktpdFdl
YkNvbnRleHRQcml2YXRlX2gKIAorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXF1ZXN0Lmg+CiAKIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqIHdlYmtpdFdlYkNv
bnRleHRHZXRQcm9jZXNzUG9vbChXZWJLaXRXZWJDb250ZXh0Kik7CiBXZWJLaXREb3dubG9hZCog
d2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZFByb3h5
Kik7CiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dFN0YXJ0RG93bmxvYWQoV2ViS2l0
V2ViQ29udGV4dCosIGNvbnN0IGNoYXIqIHVyaSwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIHZv
aWQgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKFdlYktpdDo6RG93bmxvYWRQcm94eSop
Owogdm9pZCB3ZWJraXRXZWJDb250ZXh0RG93bmxvYWRTdGFydGVkKFdlYktpdFdlYkNvbnRleHQq
LCBXZWJLaXREb3dubG9hZCopOwotV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlciogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKFdlYktpdFdlYkNvbnRl
eHQqKTsKLXZvaWQgd2Via2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKFdl
YktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBBUEk6OlVSTFJlcXVl
c3QqKTsKK3ZvaWQgd2Via2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKFdl
YktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Jik7
CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRTdG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdl
YkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKK3ZvaWQgd2Via2l0V2ViQ29u
dGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKFdlYktpdFdlYkNvbnRleHQqLCBX
ZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Jik7CiB2b2lkIHdlYmtpdFdlYkNvbnRl
eHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQpOwogYm9vbCB3ZWJraXRXZWJDb250ZXh0SXNMb2FkaW5nQ3Vz
dG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQp
Owogdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29u
dGV4dCosIFdlYktpdFdlYlZpZXcqLCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRX
ZWJWaWV3Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eS5oCmluZGV4IGIzODc1ZjMuLjRjNzQzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCkBAIC0zNCw4ICszNCwxNCBAQAog
T0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sTG9hZGVyOwogI2VuZGlmCiAKK25hbWVzcGFjZSBJ
UEMgeworY2xhc3MgRGF0YVJlZmVyZW5jZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNTEsNiArNTcsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRMb2FkaW5nKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZvaWQgc3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiAKKyAgICB2b2lk
IHByb2Nlc3NEaWRDbG9zZSgpOworCisjaWYgVVNFKFNPVVApCisgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBkaWRGYWlsV2l0aEVy
cm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbQppbmRleCBhZDUzZTk4Li45NzliMGQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFj
L0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNYWMubW0KQEAgLTE2MCw0ICsxNjAsOCBAQCB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogICAgIG1fbG9h
ZGVyTWFwLnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsKIH0KIAordm9pZCBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKK3sKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAppbmRleCAwNTlmNDY1Li4zZmIzNDVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
c291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5U291cC5jcHAKQEAgLTIwLDEzICsyMCwxOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAKKyNpbmNsdWRl
ICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCisjaWYg
UExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+CisjZWxpZiBQTEFU
Rk9STShFRkwpCisjaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNFZmwuaD4KKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5KENoaWxkUHJvY2Vzc1Byb3h5KiBjaGlsZFByb2Nlc3NQcm94eSwgV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQpAQCAtNDIsMTQgKzQ4LDQwIEBAIEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5Ojp+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoKQogICAgIG1fY2hp
bGRQcm9jZXNzUHJveHktPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiB9CiAKK3ZvaWQgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCit7CisgICAgbV9wcm9j
ZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKS5pbnZhbGlkYXRlKCp0aGlzKTsK
K30KKwogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSAgICBtX3Byb2Nlc3NQb29sLnN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI+KCktPnN0YXJ0TG9hZGluZyhjdXN0b21Qcm90b2NvbElELCByZXF1
ZXN0KTsKKyAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wuY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
KCkuc3RhcnRMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSkKKyAgICAg
ICAgZGlkRmFpbFdpdGhFcnJvcihjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpjYW5ub3RTaG93
VVJMRXJyb3IocmVxdWVzdCkpOwogfQogCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewotICAgIG1fcHJvY2Vz
c1Bvb2wuc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKS0+
c3RvcExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgbV9wcm9jZXNzUG9vbC5jdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQoKS5zdG9wTG9hZGluZygqdGhpcywgY3VzdG9tUHJvdG9jb2xJ
RCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3Nh
Z2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZFJlY2VpdmVSZXNwb25zZShjdXN0b21Qcm90
b2NvbElELCByZXNwb25zZSwgMCksIDApOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjpkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+c2VuZChN
ZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRMb2FkRGF0YShjdXN0b21Qcm90b2Nv
bElELCBkYXRhKSwgMCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRp
ZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+c2VuZChN
ZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRGYWlsV2l0aEVycm9yKGN1c3RvbVBy
b3RvY29sSUQsIGVycm9yKSwgMCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHk6OmRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKK3sKKyAgICBt
X2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OkRpZEZpbmlzaExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCksIDApOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9z
b3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjY1NWU0My4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKLQotI2luY2x1
ZGUgIkFQSURhdGEuaCIKLSNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5o
IgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLQotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNs
dWRlIDxXZWJDb3JlL0Vycm9yc0d0ay5oPgotI2VsaWYgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUg
PFdlYkNvcmUvRXJyb3JzRWZsLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNv
bnN0IGNoYXIqIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdXBwbGVtZW50
TmFtZSgpCi17Ci0gICAgcmV0dXJuICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ciI7Ci19Ci0KLVJlZjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4gV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCogcHJv
Y2Vzc1Bvb2wpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIocHJvY2Vzc1Bvb2wpKTsKLX0KLQotV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKFdl
YlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKLSAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHBy
b2Nlc3NQb29sKQotewotfQotCi1XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6
fldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKCkKLXsKLX0KLQotdm9pZCBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSogY2xpZW50KQotewot
ICAgIG1fY2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKLX0KLQotLy8gV2ViQ29udGV4dFN1cHBs
ZW1lbnQKLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnByb2Nlc3NQ
b29sRGVzdHJveWVkKCkKLXsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopCi17Ci19Ci0KLXZvaWQg
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnJlZldlYkNvbnRleHRTdXBwbGVt
ZW50KCkKLXsKLSAgICBBUEk6Ok9iamVjdDo6cmVmKCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQotewot
ICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQotewotICAgIEFTU0VSVCghc2NoZW1lLmlzTnVsbCgpKTsKLSAgICBpZiAo
bV9yZWdpc3RlcmVkU2NoZW1lcy5jb250YWlucyhzY2hlbWUpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQ
b29sKCktPnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woc2NoZW1lKTsKLQotICAgIG1f
cmVnaXN0ZXJlZFNjaGVtZXMuYXBwZW5kKHNjaGVtZSk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2Nv
bChjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0
b21Qcm90b2NvbChzY2hlbWUpOwotCi0gICAgYm9vbCByZW1vdmVkID0gbV9yZWdpc3RlcmVkU2No
ZW1lcy5yZW1vdmVGaXJzdChzY2hlbWUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZCwgcmVt
b3ZlZCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnN0
YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5zdGFydExvYWRpbmco
dGhpcywgY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCkpCi0gICAgICAgIGRpZEZhaWxXaXRoRXJy
b3IoY3VzdG9tUHJvdG9jb2xJRCwgV2ViQ29yZTo6Y2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3Qp
KTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6c3RvcExv
YWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKLXsKLSAgICBtX2NsaWVudC5zdG9wTG9h
ZGluZyh0aGlzLCBjdXN0b21Qcm90b2NvbElEKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewot
ICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bv
b2woKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKGN1c3RvbVByb3RvY29sSUQsIHJl
c3BvbnNlLCAwKSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXI6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IEFQSTo6
RGF0YSogZGF0YSkKLXsKLSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHByb2Nlc3NQb29sKCktPm5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKGN1c3RvbVByb3Rv
Y29sSUQsIGRhdGEtPmRhdGFSZWZlcmVuY2UoKSksIDApOwotfQotCi12b2lkIFdlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQotewotICAg
IGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bvb2wo
KS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihjdXN0b21Qcm90b2NvbElELCBlcnJvciks
IDApOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRG
aW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCi17Ci0gICAgaWYgKCFwcm9j
ZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5uZXR3b3Jr
aW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyOjpEaWRGaW5pc2hMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQpLCAwKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNjQ3NzU2ZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyX2gKLSNkZWZpbmUgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJfaAotCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4
dFN1cHBsZW1lbnQuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlckNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci1jbGFzcyBEYXRhOwotfQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwotY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWNsYXNzIFdlYlByb2Nlc3NQb29sOwotCi1jbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlciA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVt
ZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsK
LQotICAgIHN0YXRpYyBSZWY8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+IGNy
ZWF0ZShXZWJQcm9jZXNzUG9vbCopOwotICAgIHZpcnR1YWwgfldlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyKCk7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqKTsKLQotICAgIHZvaWQg
cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSk7Ci0g
ICAgdm9pZCB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBz
Y2hlbWUpOwotCi0gICAgdm9pZCBzdGFydExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCBzdG9wTG9hZGlu
Zyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKLQotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICB2b2lkIGRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQs
IGNvbnN0IEFQSTo6RGF0YSopOwotICAgIHZvaWQgZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotCi0gICAgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9jb2xzKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdpc3RlcmVkU2NoZW1lczsgfQotCi0gICAgdXNpbmcgQVBJOjpP
YmplY3Q6OnJlZjsKLSAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7Ci0KLXByaXZhdGU6Ci0g
ICAgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIoV2ViUHJvY2Vzc1Bvb2wqKTsK
LQotICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50Ci0gICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ry
b3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94
eSopIG92ZXJyaWRlOwotICAgIHZvaWQgcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKLQotICAg
IFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50IG1fY2xpZW50OwotICAg
IFZlY3RvcjxTdHJpbmc+IG1fcmVnaXN0ZXJlZFNjaGVtZXM7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzRkZWY2Mi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVu
dC5oIgotCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWJvb2wgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyhXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlciogc291cFJlcXVlc3RNYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgaWYgKCFtX2Ns
aWVudC5zdGFydExvYWRpbmcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFJlZjxBUEk6
OlVSTFJlcXVlc3Q+IHVybFJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0
KTsKLSAgICBtX2NsaWVudC5zdGFydExvYWRpbmcodG9BUEkoc291cFJlcXVlc3RNYW5hZ2VyKSwg
Y3VzdG9tUHJvdG9jb2xJRCwgdG9BUEkodXJsUmVxdWVzdC5wdHIoKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQ6OnN0b3BMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyKiBzb3VwUmVxdWVzdE1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQpCi17Ci0gICAgaWYgKG1fY2xpZW50LnN0b3BMb2FkaW5nKQotICAgICAgICBtX2Ns
aWVudC5zdG9wTG9hZGluZyh0b0FQSShzb3VwUmVxdWVzdE1hbmFnZXIpLCBjdXN0b21Qcm90b2Nv
bElELCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9X
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkZWJiMjIxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRfaAotI2RlZmluZSBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9oCi0KLSNpbmNsdWRlICJBUElDbGllbnQuaCIKLSNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyLmgiCi0KLW5hbWVzcGFjZSBBUEkgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBDbGll
bnRUcmFpdHM8V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2U+IHsK
LSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ckNsaWVudFYwPiBWZXJzaW9uczsKLX07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IFJlc291cmNlUmVxdWVzdDsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOwotCi1jbGFzcyBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZT4gewotcHVibGljOgotICAgIGJvb2wg
c3RhcnRMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiwgdWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0g
ICAgdm9pZCBzdG9wTG9hZGluZyhXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcios
IHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IGI5OTFiN2EuLjg4Y2NjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CkBAIC0yMTksNiArMjE5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJ
UEM6OkNvbm5lY3Rpb24mKQogewogICAgIGlmIChtX2Rvd25sb2FkUHJveHlNYXApCiAgICAgICAg
IG1fZG93bmxvYWRQcm94eU1hcC0+cHJvY2Vzc0RpZENsb3NlKCk7CisgICAgbV9jdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eS5wcm9jZXNzRGlkQ2xvc2UoKTsKIAogICAgIG1fdG9rZW5Gb3JIb2xk
aW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAppbmRleCBiMGZiN2RjLi5mODE1MTI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5oIgorI2lu
Y2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkFQSURv
d25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQu
aCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgpAQCAtOTAsMTAgKzkxLDYgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KICNlbmRpZgogCi0j
aWYgVVNFKFNPVVApCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuaCIKLSNlbmRpZgotCiAjaWYgT1MoTElOVVgpCiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVN
b25pdG9yLmgiCiAjZW5kaWYKQEAgLTE1Nyw2ICsxNTQsOSBAQCBXZWJQcm9jZXNzUG9vbDo6V2Vi
UHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
CiAgICAgLCBtX2F1dG9tYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRp
b25DbGllbnQ+KCkpCiAgICAgLCBtX2Rvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpEb3dubG9hZENsaWVudD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCkpCisjaWYgVVNFKFNPVVApCisg
ICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKQorI2VuZGlmCiAgICAgLCBtX3Zpc2l0ZWRM
aW5rU3RvcmUoVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5r
c1BvcHVsYXRlZChmYWxzZSkKICAgICAsIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIodGhpcykK
QEAgLTE2NSw5ICsxNjUsNiBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX21lbW9yeVNh
bXBsZXJFbmFibGVkKGZhbHNlKQogICAgICwgbV9tZW1vcnlTYW1wbGVySW50ZXJ2YWwoMTQwMC4w
KQogICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+c2hvdWxkSGF2ZUxl
Z2FjeURhdGFTdG9yZSgpID8gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUobGVnYWN5V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9uKSkucHRyKCkgOiBudWxs
cHRyKQotI2lmIFVTRShTT1VQKQotICAgICwgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGlj
eShIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4pCi0jZW5k
aWYKICAgICAsIG1fc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKGZhbHNlKQogICAgICwg
bV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkKHRydWUpCiAgICAgLCBtX2NhbkhhbmRsZUhUVFBT
U2VydmVyVHJ1c3RFdmFsdWF0aW9uKHRydWUpCkBAIC0xOTcsOSArMTk0LDYgQEAgV2ViUHJvY2Vz
c1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwog
ICAgIGFkZFN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CiAgICAgYWRk
U3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCk7Ci0jaWYgVVNFKFNPVVAp
Ci0gICAgYWRkU3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4o
KTsKLSNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogICAgIGFkZFN1cHBsZW1lbnQ8
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPigpOwogI2VuZGlmCkBAIC0yOTksNiArMjkzLDE2
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4KICAgICAgICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0g
V1RGTW92ZShhdXRvbWF0aW9uQ2xpZW50KTsKIH0KIAorI2lmIFVTRShTT1VQKQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4gY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KQoreworICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KQorICAgICAg
ICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7CisgICAgZWxzZQorICAgICAgICBtX2N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudCA9IFdURk1vdmUoY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50KTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRNYXhpbXVtTnVtYmVy
T2ZQcm9jZXNzZXModW5zaWduZWQgbWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKQogewogICAgIC8v
IEd1YXJkIGFnYWluc3QgQVBJIG1pc3VzZS4KQEAgLTEzNjQsMTEgKzEzNjgsMTcgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJp
ZXNBZGRlZEFmdGVyVGltZSgKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJTY2hlbWVG
b3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKKyNpZiBVU0UoU09VUCkK
KyAgICBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFkZChzY2hlbWUp
OworI2VuZGlmCiAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6UmVnaXN0ZXJTY2hlbWUoc2NoZW1lKSk7CiB9CiAKIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcm
IHNjaGVtZSkKIHsKKyNpZiBVU0UoU09VUCkKKyAgICBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9y
Q3VzdG9tUHJvdG9jb2xzLnJlbW92ZShzY2hlbWUpOworI2VuZGlmCiAgICAgc2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3MoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6VW5yZWdpc3RlclNj
aGVtZShzY2hlbWUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAppbmRleCBmY2RlOWEwLi5kNWU0YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzAsNiArNzAsNyBAQCBPQkpDX0NMQVNTIE5TU3RyaW5nOwog
CiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF1dG9tYXRpb25DbGllbnQ7CitjbGFzcyBDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKIGNsYXNzIExlZ2Fj
eUNvbnRleHRIaXN0b3J5Q2xpZW50OwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CkBAIC0xMzUs
NiArMTM2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4pOwogICAgIHZvaWQgc2V0RG93
bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+KTsKICAgICB2
b2lkIHNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNs
aWVudD4pOworI2lmIFVTRShTT1VQKQorICAgIHZvaWQgc2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4p
OworI2VuZGlmCiAKICAgICB2b2lkIHNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyh1bnNpZ25l
ZCk7IC8vIENhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBwcm9jZXNzZXMgcnVu
bmluZy4KICAgICB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoKSBjb25zdCB7IHJl
dHVybiAhbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCkgPyBVSU5UX01BWCA6
IG1fY29uZmlndXJhdGlvbi0+bWF4aW11bVByb2Nlc3NDb3VudCgpOyB9CkBAIC0yMjUsNiArMjI5
LDEwIEBAIHB1YmxpYzoKICAgICBBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50JiBoaXN0
b3J5Q2xpZW50KCkgeyByZXR1cm4gKm1faGlzdG9yeUNsaWVudDsgfQogICAgIFdlYkNvbnRleHRD
bGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKKyNpZiBVU0UoU09VUCkKKyAg
ICBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCYgY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KCkgY29uc3QgeyByZXR1cm4gKm1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OyB9
CisjZW5kaWYKKwogICAgIFdlYkljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pY29uRGF0YWJhc2UuZ2V0KCk7IH0KIAogICAgIHN0cnVjdCBTdGF0aXN0aWNzIHsK
QEAgLTQ1NSw2ICs0NjMsOSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1
dG9tYXRpb25DbGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9oaXN0b3J5Q2xpZW50OworI2lm
IFVTRShTT1VQKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CisjZW5kaWYKIAogICAgIFJl
ZlB0cjxXZWJBdXRvbWF0aW9uU2Vzc2lvbj4gbV9hdXRvbWF0aW9uU2Vzc2lvbjsKIApAQCAtNDk5
LDcgKzUxMCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29udGV4dFN1cHBsZW1lbnRNYXAgbV9zdXBw
bGVtZW50czsKIAogI2lmIFVTRShTT1VQKQotICAgIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgbV9p
bml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeTsKKyAgICBIVFRQQ29va2llQWNjZXB0UG9saWN5
IG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3kgeyBIVFRQQ29va2llQWNjZXB0UG9saWN5
T25seUZyb21NYWluRG9jdW1lbnREb21haW4gfTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFD
KQpAQCAtNTMwLDYgKzU0MSw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoU09VUCkKICAgICBib29s
IG1faWdub3JlVExTRXJyb3JzIHsgdHJ1ZSB9OworICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2Nv
bHM7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9tZW1vcnlDYWNoZURpc2FibGVkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmNwcAppbmRleCBiOWE2NTdmLi5lOTg4NDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcApAQCAtMjYsNTIg
KzI2LDU5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwuaCIKIAorI2luY2x1ZGUgIkFQSUN1c3RvbVByb2NvbE1hbmFnZXJDbGllbnQuaCIK
KyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgImV3a19j
b250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZh
dGUuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBpbmxpbmUgUmVxdWVzdE1hbmFn
ZXJDbGllbnRFZmwqIHRvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci19Ci0KLVJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsOjpSZXF1ZXN0TWFuYWdlckNsaWVudEVmbChXS0NvbnRleHRSZWYgY29udGV4dCkKLXsK
LSAgICBtX3JlcXVlc3RNYW5hZ2VyID0gdG9BUEkodG9JbXBsKGNvbnRleHQpLT5zdXBwbGVtZW50
PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigpKTsKLSAgICBBU1NFUlQobV9y
ZXF1ZXN0TWFuYWdlcik7CitjbGFzcyBDdXN0b21Qcm9jb2xNYW5hZ2VyQ2xpZW50IGZpbmFsIDog
cHVibGljIEFQSTo6Q3VzdG9tUHJvY29sTWFuYWdlckNsaWVudCB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgQ3VzdG9tUHJvY29sTWFuYWdlckNsaWVudChSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCog
Y2xpZW50KQorICAgICAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAgICB7CisgICAgfQogCi0gICAg
V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwIHdrUmVxdWVzdE1hbmFn
ZXJDbGllbnQ7Ci0gICAgbWVtc2V0KCZ3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LCAwLCBzaXplb2Yo
V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwKSk7Citwcml2YXRlOgor
ICAgIGJvb2wgc3RhcnRMb2FkaW5nKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2Vy
LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFJlZlB0cjxFd2tVcmxTY2hlbWVS
ZXF1ZXN0PiByZXF1ZXN0ID0gRXdrVXJsU2NoZW1lUmVxdWVzdDo6Y3JlYXRlKG1hbmFnZXIsIHRv
QVBJKEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSksIGN1c3RvbVByb3Rv
Y29sSUQpOworICAgICAgICBTdHJpbmcgc2NoZW1lKFN0cmluZzo6ZnJvbVVURjgocmVxdWVzdC5n
ZXQoKS0+c2NoZW1lKCkpKTsKKyAgICAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+
IGhhbmRsZXIgPSAobV9jbGllbnQtPm1fdXJpU2NoZW1lSGFuZGxlcnMpLmdldChzY2hlbWUpOwor
ICAgICAgICBBU1NFUlQoaGFuZGxlci5nZXQoKSk7CisgICAgICAgIGlmICghaGFuZGxlci0+aGFz
Q2FsbGJhY2soKSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIHdrUmVxdWVzdE1hbmFnZXJD
bGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyA9IHRoaXM7Ci0gICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5zdGFydExvYWRp
bmcgPSBzdGFydExvYWRpbmc7Ci0gICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5zdG9wTG9hZGlu
ZyA9IHN0b3BMb2FkaW5nOworICAgICAgICAobV9jbGllbnQtPm1fdXJpU2NoZW1lUmVxdWVzdHMp
LnNldChjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KTsKKyAgICAgICAgaGFuZGxlci0+cGVyZm9y
bUNhbGxiYWNrKHJlcXVlc3QuZ2V0KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAK
LSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KG1fcmVxdWVz
dE1hbmFnZXIuZ2V0KCksICZ3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LmJhc2UpOwotfQorICAgIHZv
aWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElEKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgKG1fY2xpZW50LT5tX3VyaVNj
aGVtZVJlcXVlc3RzKS5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgfQogCi12b2lkIFJl
cXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpzdGFydExvYWRpbmcoV0tTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBXS1VS
TFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBS
ZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogY2xpZW50ID0gdG9SZXF1ZXN0TWFuYWdlckNsaWVudEVm
bChjbGllbnRJbmZvKTsKLSAgICBSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9
IEV3a1VybFNjaGVtZVJlcXVlc3Q6OmNyZWF0ZShtYW5hZ2VyLCB0b0ltcGwocmVxdWVzdFJlZiks
IGN1c3RvbVByb3RvY29sSUQpOwotICAgIFN0cmluZyBzY2hlbWUoU3RyaW5nOjpmcm9tVVRGOChy
ZXF1ZXN0LmdldCgpLT5zY2hlbWUoKSkpOwotICAgIFJlZlB0cjxXZWJLaXRVUklTY2hlbWVIYW5k
bGVyPiBoYW5kbGVyID0gKGNsaWVudC0+bV91cmlTY2hlbWVIYW5kbGVycykuZ2V0KHNjaGVtZSk7
Ci0gICAgQVNTRVJUKGhhbmRsZXIuZ2V0KCkpOwotICAgIGlmICghaGFuZGxlci0+aGFzQ2FsbGJh
Y2soKSkKLSAgICAgICAgcmV0dXJuOworICAgIHZvaWQgaW52YWxpZGF0ZShDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSYgbWFuYWdlcikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFZlY3RvcjxS
ZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4+IHJlcXVlc3RzOworICAgICAgICBjb3B5VmFsdWVz
VG9WZWN0b3IobV9jbGllbnQtPm1fdXJpU2NoZW1lUmVxdWVzdHMsIHJlcXVlc3RzKTsKKyAgICAg
ICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVzdHMpIHsKKyAgICAgICAgICAgIGlmIChyZXF1
ZXN0LT5tYW5hZ2VyKCkgPT0gJm1hbmFnZXIpIHsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LT5p
bnZhbGlkYXRlKCk7CisgICAgICAgICAgICAgICAgc3RvcExvYWRpbmcobWFuYWdlciwgcmVxdWVz
dC0+aWQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKLSAgICAoY2xpZW50
LT5tX3VyaVNjaGVtZVJlcXVlc3RzKS5zZXQoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCk7Ci0g
ICAgaGFuZGxlci0+cGVyZm9ybUNhbGxiYWNrKHJlcXVlc3QuZ2V0KCkpOwotfQorICAgIFJlcXVl
c3RNYW5hZ2VyQ2xpZW50RWZsKiBtX2NsaWVudDsKK307CiAKLXZvaWQgUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmw6OnN0b3BMb2FkaW5nKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJS
ZWYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpSZXF1ZXN0TWFuYWdlckNsaWVudEVmbChX
S0NvbnRleHRSZWYgY29udGV4dCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7Ci0KLSAg
ICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogY2xpZW50ID0gdG9SZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbChjbGllbnRJbmZvKTsKLSAgICAoY2xpZW50LT5tX3VyaVNjaGVtZVJlcXVlc3RzKS5yZW1v
dmUoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgbV9wcm9jZXNzUG9vbCA9IHRvSW1wbChjb250ZXh0
KTsKKyAgICBtX3Byb2Nlc3NQb29sLT5zZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3Rk
OjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHRoaXMpKTsKIH0KIAog
dm9pZCBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGNv
bnN0IFN0cmluZyYgc2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrLCB2
b2lkKiB1c2VyRGF0YSkKQEAgLTc5LDggKzg2LDkgQEAgdm9pZCBSZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbDo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYgc2NoZW1lLCBFd2sK
ICAgICBBU1NFUlQoY2FsbGJhY2spOwogCiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRs
ZXI+IGhhbmRsZXIgPSBhZG9wdFJlZihuZXcgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihjYWxsYmFj
aywgdXNlckRhdGEpKTsKLSAgICBtX3VyaVNjaGVtZUhhbmRsZXJzLnNldChzY2hlbWUsIGhhbmRs
ZXIpOwotICAgIHRvSW1wbChtX3JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+cmVnaXN0ZXJTY2hlbWVG
b3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91cmlTY2hl
bWVIYW5kbGVycy5zZXQoc2NoZW1lLCBoYW5kbGVyKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3
RW50cnkpCisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJv
dG9jb2woc2NoZW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmgKaW5k
ZXggODdkMzYwZS4uMWQyOThiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuaApAQCAtMjcsNyArMjcsNiBAQAogI2Rl
ZmluZSBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbF9oCiAKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9v
bC5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a191cmxfc2NoZW1l
X3JlcXVlc3RfcHJpdmF0ZS5oIgogCkBAIC03OSwxMCArNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIEV3a19Vcmxf
U2NoZW1lX1JlcXVlc3RfQ2IgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKTsKIAogcHJpdmF0ZToK
LSAgICBzdGF0aWMgdm9pZCBzdGFydExvYWRpbmcoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlclJlZiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgV0tVUkxSZXF1ZXN0UmVmLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBzdG9wTG9hZGluZyhXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLQotICAgIFdLUmV0YWluUHRyPFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWY+IG1fcmVxdWVzdE1hbmFnZXI7CisgICAgV2Vi
UHJvY2Vzc1Bvb2wqIG1fcHJvY2Vzc1Bvb2w7CiAgICAgVVJJU2NoZW1lSGFuZGxlck1hcCBtX3Vy
aVNjaGVtZUhhbmRsZXJzOwogICAgIFVSSVNjaGVtZVJlcXVlc3RNYXAgbV91cmlTY2hlbWVSZXF1
ZXN0czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBy
b2Nlc3NQb29sRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vz
c1Bvb2xFZmwuY3BwCmluZGV4IDNmMjY0MGUuLmZmYTJkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwCkBAIC0zMiw3ICszMiw2
IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgot
I2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSA8RWZyZWV0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCmluZGV4IDgxOTdmZDMuLjQx
MGE5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vz
c1Bvb2xHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vz
c1Bvb2xHdGsuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yU2Vy
dmVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1l
UmVnaXN0cnkuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dl
YlByb2Nlc3NQb29sU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQ
cm9jZXNzUG9vbFNvdXAuY3BwCmluZGV4IGQ1ZGIyNDQuLjkzYTdjMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcApAQCAt
MjksNyArMjksNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNv
b2tpZU1hbmFnZXJQcm94eS5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTQwLDcgKzM5LDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1J
bml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmEKICAgICBw
YXJhbWV0ZXJzLmNvb2tpZUFjY2VwdFBvbGljeSA9IG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQ
b2xpY3k7CiAgICAgcGFyYW1ldGVycy5pZ25vcmVUTFNFcnJvcnMgPSBtX2lnbm9yZVRMU0Vycm9y
czsKICAgICBwYXJhbWV0ZXJzLmxhbmd1YWdlcyA9IFdlYkNvcmU6OnVzZXJQcmVmZXJyZWRMYW5n
dWFnZXMoKTsKLSAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJv
dG9jb2xzID0gc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4o
KS0+cmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Qcm90b2NvbHMoKTsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIHNjaGVtZSA6IG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMp
CisgICAgICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2Nv
bHMuYXBwZW5kKHNjaGVtZSk7CiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2Fj
aGVFZmZpY2FjeUxvZ2dpbmcgPSBmYWxzZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295151</attachid>
            <date>2016-11-18 08:26:49 -0800</date>
            <delta_ts>2016-11-18 08:33:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-custom-protocols-soup.diff</filename>
            <type>text/plain</type>
            <size>82798</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0Yjg5MTk0Li4xOTBmNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsOTIg
QEAKIDIwMTYtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtTT1VQXSBTaW1wbGlmeSBjdXN0b20gcHJvdG9jb2xzIGhhbmRsZXIgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDkyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGFyZSB1c2luZyB0b28gbWFueSBjbGFzc2VzIGZvciB0aGlzIGFuZCBhbHNvIHRoZSBD
IEFQSSB0aGF0IGlzIG5vdCBuZWVkZWQsIGJlY2F1c2UgYm90aCBHVEsrIGFuZCBFRkwgaGF2ZQor
ICAgICAgICB0aGVpciBvd24gQVBJcyBhbmQgdGhpcyBpcyBub3QgdXNlZCBieSBXVFIgYXQgYWxs
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IFJlbW92ZSBmaWxlcyBmcm9tIGNvbXBp
bGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBT
aGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNl
U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoQVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgIChB
UEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcpOgorICAgICAgICAo
QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OmludmFsaWRhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
c291cC9XS0FQSUNhc3RTb3VwLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tDb250ZXh0U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1Nv
dXBSZXF1ZXN0TWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcDogUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHA6IFVzZSBDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSBpbnN0ZWFkIG9mIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYuCisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjpFd2tVcmxTY2hlbWVSZXF1
ZXN0KToKKyAgICAgICAgKEV3a1VybFNjaGVtZVJlcXVlc3Q6OmZpbmlzaCk6CisgICAgICAgIChF
d2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a1VybFNj
aGVtZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjptYW5h
Z2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKGF0dGFjaEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcDogVXNlIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGluc3RlYWQgb2YgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuCisgICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwpOgorICAg
ICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIpOgorICAgICAgICAod2Via2l0
VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUpOgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVx
dWVzdFJlYWRDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zp
bmlzaF9lcnJvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6CisgICAg
ICAgICh3ZWJraXRXZWJDb250ZXh0RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRl
eHRfcmVnaXN0ZXJfdXJpX3NjaGVtZSk6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0U3RhcnRM
b2FkaW5nQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dEludmFsaWRh
dGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOiBJ
bnZhbGlkYXRlIHRoZSBjbGllbnQuCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5OjpzdGFydExvYWRpbmcpOiBOb3RpZnkgdGhlIGNsaWVudC4KKyAgICAgICAgKFdl
YktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVz
cG9uc2UpOiBOb3RpZnkgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZExvYWREYXRhKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGYWlsV2l0aEVycm9yKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGaW5p
c2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZENsb3NlKTogTm90aWZ5IHRoZSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOiBJbml0aWFsaXplIHRoZSBDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQgYW5kIHJlbW92ZSB0aGUgYWxsIHN1cHBsZW1lbnQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbCk6IEluIGNhc2Ugb2Ygc291cCBjYWNoZSB0aGUgZ2l2ZW4gcHJvdG9jb2wu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2wpOiBJbiBjYXNlIG9mIHNvdXAgZGVsZXRlIHRoZSBnaXZlbiBwcm90b2NvbCBm
cm9tIHRoZSBjYWNoZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcDogRG8gbm90
IHVzZSB0aGUgQyBBUEksIGJ1dCBBUEk6OkN1c3RvbVByb2NvbE1hbmFnZXJDbGllbnQuCisgICAg
ICAgIChXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpSZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbCk6CisgICAgICAgIChXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpyZWdpc3Rl
clVSTFNjaGVtZUhhbmRsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFn
ZXJDbGllbnRFZmwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZs
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3Mp
OiBVc2UgbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scyB0bworICAgICAg
ICBidWlsZCB0aGUgbGlzdCBvZiBjdXN0b20gcHJvdG9jb2xzIHRvIHNlbmQgdG8gdGhlIG5ldHdv
cmsgcHJvY2Vzcy4KKworMjAxNi0xMS0xOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CisKICAgICAgICAgUmVtb3ZlIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkgZnJvbSBXZWJQcm9jZXNzUHJveHkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2NDkwOAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDZl
NzdlZTYuLjk5NDRhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC03Niw3ICs3Niw2
IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tWaWV3RWZsLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb29raWVNYW5hZ2Vy
U291cC5jcHAKLSAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNz
L1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAKIApAQCAtMTMxLDggKzEzMCw2IEBAIGxpc3QoQVBQRU5E
IFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5j
aGVyRWZsLmNwcAogCiAgICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAv
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmNwcAotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAogCiAgICAgVUlQcm9jZXNzL1Bs
dWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAogICAgIFVJUHJvY2Vzcy9QbHVnaW5z
L3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTI1Niw2ICsyNTMsNyBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0v
U2hhcmVkL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL3NvdXAiCiAgICAgIiR7V0VC
S0lUMl9ESVJ9L1NoYXJlZC91bml4IgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJ
IgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvY2Fpcm8iCiAgICAgIiR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9Db29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MvZWZsIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpp
bmRleCA5ZmQyZDE2Li41OTU0YjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMTAx
LDcgKzEwMSw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9B
UEkvQy9ndGsvV0tWaWV3LmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb29raWVN
YW5hZ2VyU291cC5jcHAKLSAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvQVBJV2Vic2l0
ZURhdGFTdG9yZUd0ay5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5j
cHAKQEAgLTEzNCw2ICsxMzMsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZS5oCiAgICAgVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q3JlZGVudGlhbC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRDcmVkZW50aWFsLmgKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90
b2NvbE1hbmFnZXJDbGllbnQuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREZWZp
bmVzLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXREb3dubG9hZC5oCkBAIC0yMTAsOCArMjExLDYgQEAgbGlzdChB
UFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpbnRP
cGVyYXRpb25Qcml2YXRlLmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmNw
cAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAotICAgIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAotICAgIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlc3BvbnNlUG9saWN5RGVjaXNpb25Qcml2YXRlLmgKQEAgLTI4Myw4ICsyODIsNiBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvbGludXgvTWVtb3J5UHJlc3N1
cmVNb25pdG9yLmNwcAogCiAgICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyLmNwcAotICAgIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAogCiAgICAgVUlQcm9jZXNz
L1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLQmFzZS5oCmluZGV4IDk0OGUxNjAuLjMyZmJjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgKQEAgLTM0LDEwICszNCw2IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZUd0
ay5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFVTRV9TT1VQKQotI2luY2x1ZGUgPFdlYktpdC9X
S0Jhc2VTb3VwLmg+Ci0jZW5kaWYKLQogI2lmIGRlZmluZWQoQlVJTERJTkdfRUZMX18pCiAjaW5j
bHVkZSA8V2ViS2l0L1dLQmFzZUVmbC5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2Mvc291cC9XS0Jhc2VTb3VwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDYwMGYwODUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3NvdXAv
V0tCYXNlU291cC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLQmFzZVNvdXBf
aAotI2RlZmluZSBXS0Jhc2VTb3VwX2gKLQotI2lmbmRlZiBXS0Jhc2VfaAotI2Vycm9yICJQbGVh
c2UgI2luY2x1ZGUgXCJXS0Jhc2UuaFwiIGluc3RlYWQgb2YgdGhpcyBmaWxlIGRpcmVjdGx5LiIK
LSNlbmRpZgotCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1NvdXBSZXF1ZXN0TWFuYWdl
ciogV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWY7Ci10eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiBXS1NvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyUmVmOwotCi0jZW5kaWYgLyogV0tCYXNlU291cF9oICovCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0FQSUNhc3RTb3VwLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dC5oCnNpbWlsYXJpdHkgaW5kZXggNjglCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaApyZW5hbWUgdG8gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaAppbmRleCAyZGY2
M2YyLi41MWUxOGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
c291cC9XS0FQSUNhc3RTb3VwLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBQ
b3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNiBJZ2FsaWEgUy5MLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywx
OSArMjMsMjggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIFdLQVBJQ2FzdFNvdXBfaAotI2RlZmluZSBXS0FQSUNhc3RTb3VwX2gKKyNwcmFnbWEg
b25jZQogCi0jaWZuZGVmIFdLQVBJQ2FzdF9oCi0jZXJyb3IgIlBsZWFzZSAjaW5jbHVkZSBcIldL
QVBJQ2FzdC5oXCIgaW5zdGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHkuIgotI2VuZGlmCisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTsKK30KIAotY2xhc3MgV2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXI7CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
Cit9CiAKLVdLX0FERF9BUElfTUFQUElORyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyUmVmLCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcikKK25hbWVzcGFjZSBB
UEkgewogCi19CitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpIHsgfQorCisgICAgdmly
dHVhbCBib29sIHN0YXJ0TG9hZGluZyhXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
JiwgdWludDY0X3QgLyogY3VzdG9tUHJvdG9jb2xJRCAqLywgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcExvYWRp
bmcoV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYsIHVpbnQ2NF90IC8qIGN1c3Rv
bVByb3RvY29sSUQgKi8pIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoV2ViS2l0
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYpIHsgfQorfTsKIAotI2VuZGlmIC8vIFdLQVBJ
Q2FzdFNvdXBfaAorfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tBUElDYXN0LmgKaW5kZXggN2I0YTRkNS4uZjdmM2EyZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApAQCAtNTUyLDEwICs1NTIsNiBAQCBpbmxp
bmUgUHJveHlpbmdSZWZQdHI8V2ViR3JhbW1hckRldGFpbD4gdG9BUEkoY29uc3QgV2ViQ29yZTo6
R3JhbW1hckRldGFpbCYgZ3JhbQogI2luY2x1ZGUgIldLQVBJQ2FzdEd0ay5oIgogI2VuZGlmCiAK
LSNpZiBVU0UoU09VUCkKLSNpbmNsdWRlICJXS0FQSUNhc3RTb3VwLmgiCi0jZW5kaWYKLQogI2lm
IGRlZmluZWQoQlVJTERJTkdfRUZMX18pCiAjaW5jbHVkZSAiV0tBUElDYXN0RWZsLmgiCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29u
dGV4dFNvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4
dFNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q0MmYzOS4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS0NvbnRleHRTb3VwLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tDb250ZXh0U291cF9oCi0jZGVmaW5l
IFdLQ29udGV4dFNvdXBfaAotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotI2luY2x1ZGUg
PFdlYktpdC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4
dGVybiAiQyIgewotI2VuZGlmCi0KLVdLX0VYUE9SVCBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBX
S0NvbnRleHRHZXRTb3VwUmVxdWVzdE1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwotCi0j
aWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLyogV0tDb250ZXh0U291cF9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWQzNmY2Li4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgotCi0jaW5j
bHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotV0tUeXBlSUQgV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckdldFR5cGVJRCgpCi17Ci0gICAgcmV0dXJuIHRv
QVBJKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpBUElUeXBlKTsKLX0KLQot
dm9pZCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCBjb25z
dCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSogd2tDbGllbnQp
Ci17Ci0gICAgdG9JbXBsKHNvdXBSZXF1ZXN0TWFuYWdlclJlZiktPmluaXRpYWxpemVDbGllbnQo
d2tDbGllbnQpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjJhNzYyLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS1NvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyX2gKLSNkZWZpbmUgV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlcl9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0KLSNpZmRl
ZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotdHlwZWRlZiB2b2lkICgqV0tT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclN0YXJ0TG9hZGluZ0NhbGxiYWNrKShXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBNYW5hZ2VyUmVmLCB1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElELCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyU3RvcExvYWRpbmdDYWxsYmFjaykoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlclJlZiBzb3VwTWFuYWdlclJlZiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0KLXR5cGVkZWYgc3RydWN0IFdLU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlIHsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKLSAgICBjb25zdCB2b2lk
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsK
LX0gV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2U7Ci0KLXR5cGVk
ZWYgc3RydWN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB7Ci0g
ICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UgICAgICAgICAg
IGJhc2U7Ci0KLSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU3RhcnRMb2Fk
aW5nQ2FsbGJhY2sgc3RhcnRMb2FkaW5nOwotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJTdG9wTG9hZGluZ0NhbGxiYWNrICBzdG9wTG9hZGluZzsKLX0gV0tTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwOwotCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckdldFR5cGVJRCgpOwotCi1XS19FWFBPUlQg
dm9pZCBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIGNvbnN0IFdLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKik7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2Vu
ZGlmCi0KLSNlbmRpZiAvKiBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cFJl
cXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1Nv
dXBSZXF1ZXN0TWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjY3ZWRl
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291
cFJlcXVlc3RNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tTb3Vw
UmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXS1NvdXBSZXF1ZXN0TWFuYWdlcl9oCi0KLSNpbmNs
dWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7
Ci0jZW5kaWYKLQotdHlwZWRlZiB2b2lkICgqV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRSZWNlaXZl
VVJJUmVxdWVzdENhbGxiYWNrKShXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1h
bmFnZXJSZWYsIFdLVVJMUmVmIHVybFJlZiwgV0tQYWdlUmVmIHBhZ2VSZWYsIHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS1NvdXBS
ZXF1ZXN0TWFuYWdlckRpZEZhaWxUb0xvYWRVUklSZXF1ZXN0Q2FsbGJhY2spKFdLU291cFJlcXVl
c3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0TWFuYWdlclJlZiwgdWludDY0X3QgcmVxdWVzdElELCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tTb3VwUmVxdWVzdE1h
bmFnZXJDbGllbnRCYXNlIHsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKLSAgICBjb25zdCB2b2lkKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKLX0gV0tTb3VwUmVxdWVzdE1h
bmFnZXJDbGllbnRCYXNlOwotCi10eXBlZGVmIHN0cnVjdCBXS1NvdXBSZXF1ZXN0TWFuYWdlckNs
aWVudFYwIHsKLSAgICBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UgICAgICAgICAgICAg
ICAgICAgICAgYmFzZTsKLQotICAgIFdLU291cFJlcXVlc3RNYW5hZ2VyRGlkUmVjZWl2ZVVSSVJl
cXVlc3RDYWxsYmFjayAgICBkaWRSZWNlaXZlVVJJUmVxdWVzdDsKLSAgICBXS1NvdXBSZXF1ZXN0
TWFuYWdlckRpZEZhaWxUb0xvYWRVUklSZXF1ZXN0Q2FsbGJhY2sgZGlkRmFpbFRvTG9hZFVSSVJl
cXVlc3Q7Ci19IFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjA7Ci0KLVdLX0VYUE9SVCBXS1R5
cGVJRCBXS1NvdXBSZXF1ZXN0TWFuYWdlckdldFR5cGVJRCgpOwotCi1XS19FWFBPUlQgdm9pZCBX
S1NvdXBSZXF1ZXN0TWFuYWdlclNldENsaWVudChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwgY29u
c3QgV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpOwotV0tfRVhQT1JUIHZv
aWQgV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWdpc3RlclVSSVNjaGVtZShXS1NvdXBSZXF1ZXN0TWFu
YWdlclJlZiwgV0tTdHJpbmdSZWYgc2NoZW1lUmVmKTsKLVdLX0VYUE9SVCB2b2lkIFdLU291cFJl
cXVlc3RNYW5hZ2VyRGlkSGFuZGxlVVJJUmVxdWVzdChXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZiwg
V0tEYXRhUmVmLCB1aW50NjRfdCBjb250ZW50TGVuZ3RoLCBXS1N0cmluZ1JlZiBtaW1lVHlwZVJl
ZiwgdWludDY0X3QgcmVxdWVzdElEKTsKLVdLX0VYUE9SVCB2b2lkIFdLU291cFJlcXVlc3RNYW5h
Z2VyRGlkUmVjZWl2ZVVSSVJlcXVlc3REYXRhKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBXS0Rh
dGFSZWYsIHVpbnQ2NF90IHJlcXVlc3RJRCk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2Vu
ZGlmCi0KLSNlbmRpZiAvKiBXS1NvdXBSZXF1ZXN0TWFuYWdlcl9oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggMTc5NTI2OS4u
YjRlZGU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0LmNwcApAQCAtMjYsNyArMjYsNiBAQAogI2luY2x1ZGUgIlJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0UHJp
dmF0ZS5oIgotI2luY2x1ZGUgIldLQ29udGV4dFNvdXAuaCIKICNpbmNsdWRlICJXS051bWJlci5o
IgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
c2NoZW1lX3JlcXVlc3QuY3BwCmluZGV4IDk4OGI5OTYuLmY1NTQ4NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3Jl
cXVlc3QuY3BwCkBAIC0zMSwxNCArMzEsMTMgQEAKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2lu
Y2x1ZGUgIldLVVJMLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSAiV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKIAogI2luY2x1ZGUgImV3a191cmxf
c2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1F
d2tVcmxTY2hlbWVSZXF1ZXN0OjpFd2tVcmxTY2hlbWVSZXF1ZXN0KFdLU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJSZWYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0
LCB1aW50NjRfdCByZXF1ZXN0SUQpCi0gICAgOiBtX3drUmVxdWVzdE1hbmFnZXIobWFuYWdlcikK
K0V3a1VybFNjaGVtZVJlcXVlc3Q6OkV3a1VybFNjaGVtZVJlcXVlc3QoQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHkmIG1hbmFnZXIsIEFQSTo6VVJMUmVxdWVzdCogdXJsUmVxdWVzdCwgdWludDY0
X3QgcmVxdWVzdElEKQorICAgIDogbV93a1JlcXVlc3RNYW5hZ2VyKCZtYW5hZ2VyKQogICAgICwg
bV9yZXF1ZXN0SUQocmVxdWVzdElEKQogewogICAgIFdLVVJMUmVmIHVybCA9IHRvQ29waWVkVVJM
QVBJKHVybFJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKQEAgLTY5LDYgKzY4LDkg
QEAgY29uc3QgY2hhciogRXdrVXJsU2NoZW1lUmVxdWVzdDo6cGF0aCgpIGNvbnN0CiAKIHZvaWQg
RXdrVXJsU2NoZW1lUmVxdWVzdDo6ZmluaXNoKGNvbnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50
NjRfdCBjb250ZW50TGVuZ3RoLCBjb25zdCBjaGFyKiBtaW1lVHlwZSkKIHsKKyAgICBpZiAoIW1f
d2tSZXF1ZXN0TWFuYWdlcikKKyAgICAgICAgcmV0dXJuOworCiAgICAgV0tSZXRhaW5QdHI8V0tE
YXRhUmVmPiB3a0RhdGEoQWRvcHRXSywgV0tEYXRhQ3JlYXRlKGNvbnRlbnRMZW5ndGggPyByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihjb250ZW50RGF0YSkgOiAwLCBjb250
ZW50TGVuZ3RoKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTWltZVR5cGUgPSBt
aW1lVHlwZSA/IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobWltZVR5cGUp
KSA6IDA7CiAKQEAgLTc2LDEwICs3OCwxNSBAQCB2b2lkIEV3a1VybFNjaGVtZVJlcXVlc3Q6OmZp
bmlzaChjb25zdCB2b2lkKiBjb250ZW50RGF0YSwgdWludDY0X3QgY29udGVudExlbmd0aAogICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6
OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KG1fdXJsKSksCiAgICAgICAgIFN0cmluZzo6ZnJvbVVU
RjgobWltZVR5cGUpLCBjb250ZW50TGVuZ3RoLCBlbXB0eVN0cmluZygpKTsKIAotICAgIHRvSW1w
bChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5kaWRSZWNlaXZlUmVzcG9uc2UobV9yZXF1ZXN0
SUQsIHJlc3BvbnNlKTsKLSAgICB0b0ltcGwobV93a1JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+ZGlk
TG9hZERhdGEobV9yZXF1ZXN0SUQsIHRvSW1wbCh3a0RhdGEuZ2V0KCkpKTsKLSAgICB0b0ltcGwo
bV93a1JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+ZGlkRmluaXNoTG9hZGluZyhtX3JlcXVlc3RJRCk7
Ci0gICAgdG9JbXBsKG1fd2tSZXF1ZXN0TWFuYWdlci5nZXQoKSktPnN0b3BMb2FkaW5nKG1fcmVx
dWVzdElEKTsKKyAgICBtX3drUmVxdWVzdE1hbmFnZXItPmRpZFJlY2VpdmVSZXNwb25zZShtX3Jl
cXVlc3RJRCwgcmVzcG9uc2UpOworICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkTG9hZERhdGEo
bV9yZXF1ZXN0SUQsIHRvSW1wbCh3a0RhdGEuZ2V0KCkpLT5kYXRhUmVmZXJlbmNlKCkpOworICAg
IG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyhtX3JlcXVlc3RJRCk7CisgICAg
bV93a1JlcXVlc3RNYW5hZ2VyLT5zdG9wTG9hZGluZyhtX3JlcXVlc3RJRCk7Cit9CisKK3ZvaWQg
RXdrVXJsU2NoZW1lUmVxdWVzdDo6aW52YWxpZGF0ZSgpCit7CisgICAgbV93a1JlcXVlc3RNYW5h
Z2VyID0gbnVsbHB0cjsKIH0KIAogY29uc3QgY2hhciogZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9z
Y2hlbWVfZ2V0KGNvbnN0IEV3a19VcmxfU2NoZW1lX1JlcXVlc3QqIHJlcXVlc3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1
ZXN0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxf
c2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oCmluZGV4IGEzOTg5MmIuLmY1OWQ1NWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVl
c3RfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191
cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpZm5kZWYg
ZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlX2gKICNkZWZpbmUgZXdrX3VybF9zY2hlbWVf
cmVxdWVzdF9wcml2YXRlX2gKIAorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVk
ZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKLSNpbmNs
dWRlICJXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdr
X29iamVjdF9wcml2YXRlLmgiCiAKIC8qKgpAQCAtNDEsOSArNDEsOSBAQCBjbGFzcyBFd2tVcmxT
Y2hlbWVSZXF1ZXN0IDogcHVibGljIEV3a09iamVjdCB7CiBwdWJsaWM6CiAgICAgRVdLX09CSkVD
VF9ERUNMQVJFKEV3a1VybFNjaGVtZVJlcXVlc3QpCiAKLSAgICBzdGF0aWMgUmVmUHRyPEV3a1Vy
bFNjaGVtZVJlcXVlc3Q+IGNyZWF0ZShXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
UmVmIG1hbmFnZXIsIEFQSTo6VVJMUmVxdWVzdCogdXJsUmVxdWVzdCwgdWludDY0X3QgcmVxdWVz
dElEKQorICAgIHN0YXRpYyBSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4gY3JlYXRlKFdlYktp
dDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIEFQSTo6VVJMUmVxdWVzdCog
dXJsUmVxdWVzdCwgdWludDY0X3QgcmVxdWVzdElEKQogICAgIHsKLSAgICAgICAgaWYgKCFtYW5h
Z2VyIHx8ICF1cmxSZXF1ZXN0KQorICAgICAgICBpZiAoIXVybFJlcXVlc3QpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a1VybFNj
aGVtZVJlcXVlc3QobWFuYWdlciwgdXJsUmVxdWVzdCwgcmVxdWVzdElEKSk7CkBAIC01NiwxMCAr
NTYsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBmaW5pc2goY29uc3Qgdm9pZCogY29udGVudERh
dGEsIHVpbnQ2NF90IGNvbnRlbnRMZW5ndGgsIGNvbnN0IGNoYXIqIG1pbWVUeXBlKTsKIAorICAg
IFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqIG1hbmFnZXIoKSBjb25zdCB7IHJl
dHVybiBtX3drUmVxdWVzdE1hbmFnZXI7IH0KKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKwogcHJp
dmF0ZToKLSAgICBFd2tVcmxTY2hlbWVSZXF1ZXN0KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJSZWYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50NjRf
dCByZXF1ZXN0SUQpOworICAgIEV3a1VybFNjaGVtZVJlcXVlc3QoV2ViS2l0OjpDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1
aW50NjRfdCByZXF1ZXN0SUQpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlclJlZj4gbV93a1JlcXVlc3RNYW5hZ2VyOworICAgIFdlYktpdDo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqIG1fd2tSZXF1ZXN0TWFuYWdlcjsKICAgICBXS0VpbmFT
aGFyZWRTdHJpbmcgbV91cmw7CiAgICAgdWludDY0X3QgbV9yZXF1ZXN0SUQ7CiAgICAgV0tFaW5h
U2hhcmVkU3RyaW5nIG1fc2NoZW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNs
aWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IyZjMxNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1
c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCisKKyNpbmNsdWRlICJBUElD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHRQcml2YXRlLmgiCisjaW5j
bHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OworCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQg
ZmluYWwgOiBwdWJsaWMgQVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChXZWJLaXRXZWJDb250
ZXh0KiB3ZWJDb250ZXh0KQorICAgICAgICA6IG1fd2ViQ29udGV4dCh3ZWJDb250ZXh0KQorICAg
IHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHdlYmtp
dFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0b21Qcm90b2NvbChtX3dlYkNvbnRleHQsIGN1c3Rv
bVByb3RvY29sSUQsIHJlcXVlc3QsIG1hbmFnZXIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICB2b2lkIHN0b3BMb2FkaW5nKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Jiwg
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHdlYmtp
dFdlYkNvbnRleHRTdG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3VzdG9t
UHJvdG9jb2xJRCk7CisgICAgfQorCisgICAgdm9pZCBpbnZhbGlkYXRlKEN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5JiBtYW5hZ2VyKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Via2l0V2Vi
Q29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKG1fd2ViQ29udGV4dCwgbWFu
YWdlcik7CisgICAgfQorCisgICAgV2ViS2l0V2ViQ29udGV4dCogbV93ZWJDb250ZXh0OworfTsK
Kwordm9pZCBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0
V2ViQ29udGV4dCogd2ViQ29udGV4dCkKK3sKKyAgICBhdXRvKiBwcm9jZXNzUG9vbCA9IHdlYmtp
dFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbCh3ZWJDb250ZXh0KTsKKyAgICBwcm9jZXNzUG9vbC0+
c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyQ2xpZW50Pih3ZWJDb250ZXh0KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50LmgKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaApyZW5hbWUg
dG8gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50LmgKaW5kZXggYTM2NTU5NC4uYzljNGMxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0xNywxMSArMTcsOSBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCiAgKi8KIAotI2lmbmRlZiBXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudF9oCi0jZGVm
aW5lIFdlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiV2ViS2l0V2ViQ29udGV4dC5oIgogCi12b2lkIGF0dGFjaFJlcXVlc3RNYW5hZ2VyQ2xpZW50
VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqKTsKK3ZvaWQgYXR0YWNoQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyQ2xpZW50VG9Db250ZXh0KFdlYktpdFdlYkNvbnRleHQqKTsKIAotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKaW5kZXgg
NzVlOGM5ZS4uZDA3MmE1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFByaXZhdGUuaApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgPFdlYktpdC9X
S0luc3BlY3RvckNsaWVudEd0ay5oPgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPFdlYktpdC9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUgPFdl
YktpdC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QuaD4KICNpbmNsdWRlIDxXZWJLaXQvV2ViS2l0Ml9DLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdl
ckNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5MTg5YzkuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1h
bmFnZXJDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaCIKLQotI2luY2x1ZGUgIldlYktpdFdlYkNv
bnRleHRQcml2YXRlLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLXN0YXRpYyB2b2lk
IHN0YXJ0TG9hZGluZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKLXsKLSAgICB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3Vz
dG9tUHJvdG9jb2woV0VCS0lUX1dFQl9DT05URVhUKGNsaWVudEluZm8pLCBjdXN0b21Qcm90b2Nv
bElELCB0b0ltcGwocmVxdWVzdFJlZikpOwotfQotCi1zdGF0aWMgdm9pZCBzdG9wTG9hZGluZyhX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHdlYmtpdFdlYkNvbnRleHRT
dG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKFdFQktJVF9XRUJfQ09OVEVYVChjbGllbnRJbmZvKSwg
Y3VzdG9tUHJvdG9jb2xJRCk7Ci19Ci0KLXZvaWQgYXR0YWNoUmVxdWVzdE1hbmFnZXJDbGllbnRU
b0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCkKLXsKLSAgICBXS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudCA9
IHsKLSAgICAgICAgewotICAgICAgICAgICAgMCwgLy8gdmVyc2lvbgotICAgICAgICAgICAgd2Vi
Q29udGV4dCAvLyBjbGllbnRJbmZvCi0gICAgICAgIH0sCi0gICAgICAgIHN0YXJ0TG9hZGluZywK
LSAgICAgICAgc3RvcExvYWRpbmcKLSAgICB9OwotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXJTZXRDbGllbnQodG9BUEkod2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5h
Z2VyKHdlYkNvbnRleHQpKSwgJndrUmVxdWVzdE1hbmFnZXJDbGllbnQuYmFzZSk7Ci19Ci0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVt
ZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdC5jcHAKaW5kZXggODcyYTU2NC4uYWJhMWI5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1lUmVx
dWVzdC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
LyoqCiAgKiBTRUNUSU9OOiBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0CkBAIC01NCw3ICs1NSw3IEBA
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgZ1JlYWRCdWZmZXJTaXplID0gODE5MjsKIAogc3Ry
dWN0IF9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSB7CiAgICAgV2ViS2l0V2ViQ29udGV4
dCogd2ViQ29udGV4dDsKLSAgICBSZWZQdHI8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXI+IHdlYlJlcXVlc3RNYW5hZ2VyOworICAgIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
KiBtYW5hZ2VyOwogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IGluaXRpYXRpbmdQYWdlOwogICAg
IHVpbnQ2NF90IHJlcXVlc3RJRDsKICAgICBDU3RyaW5nIHVyaTsKQEAgLTc0LDIxICs3NSwzMSBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdENsYXNzKikKIHsKIH0KIAotV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCog
d2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdFdl
YkNvbnRleHQqIHdlYkNvbnRleHQsIEFQSTo6VVJMUmVxdWVzdCogdXJsUmVxdWVzdCkKK1dlYktp
dFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUodWludDY0X3Qg
cmVxdWVzdElELCBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0LCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCwgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFn
ZXIpCiB7Ci0gICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9VUklf
U0NIRU1FX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VSSV9TQ0hFTUVfUkVRVUVT
VCwgTlVMTCkpOworICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QgPSBXRUJLSVRf
VVJJX1NDSEVNRV9SRVFVRVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9VUklfU0NIRU1FX1JF
UVVFU1QsIG51bGxwdHIpKTsKICAgICByZXF1ZXN0LT5wcml2LT53ZWJDb250ZXh0ID0gd2ViQ29u
dGV4dDsKLSAgICByZXF1ZXN0LT5wcml2LT53ZWJSZXF1ZXN0TWFuYWdlciA9IHdlYmtpdFdlYkNv
bnRleHRHZXRSZXF1ZXN0TWFuYWdlcih3ZWJDb250ZXh0KTsKLSAgICByZXF1ZXN0LT5wcml2LT51
cmkgPSB1cmxSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCk7
Ci0gICAgcmVxdWVzdC0+cHJpdi0+aW5pdGlhdGluZ1BhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UodXJsUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkuaW5pdGlhdGluZ1BhZ2VJRCgpKTsK
KyAgICByZXF1ZXN0LT5wcml2LT5tYW5hZ2VyID0gJm1hbmFnZXI7CisgICAgcmVxdWVzdC0+cHJp
di0+dXJpID0gcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKTsKKyAgICByZXF1
ZXN0LT5wcml2LT5pbml0aWF0aW5nUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShyZXNv
dXJjZVJlcXVlc3QuaW5pdGlhdGluZ1BhZ2VJRCgpKTsKICAgICByZXF1ZXN0LT5wcml2LT5yZXF1
ZXN0SUQgPSByZXF1ZXN0SUQ7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKIHZvaWQgd2Via2l0
VVJJU2NoZW1lUmVxdWVzdENhbmNlbChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQog
ewotICAgIGlmIChyZXF1ZXN0LT5wcml2LT5jYW5jZWxsYWJsZS5nZXQoKSkKLSAgICAgICAgZ19j
YW5jZWxsYWJsZV9jYW5jZWwocmVxdWVzdC0+cHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCkpOworICAg
IGdfY2FuY2VsbGFibGVfY2FuY2VsKHJlcXVlc3QtPnByaXYtPmNhbmNlbGxhYmxlLmdldCgpKTsK
K30KKworQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkqIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RH
ZXRNYW5hZ2VyKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCit7CisgICAgcmV0dXJu
IHJlcXVlc3QtPnByaXYtPm1hbmFnZXI7Cit9CisKK3ZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVz
dEludmFsaWRhdGUoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICByZXF1
ZXN0LT5wcml2LT5tYW5hZ2VyID0gbnVsbHB0cjsKKyAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0
Q2FuY2VsKHJlcXVlc3QpOwogfQogCiAvKioKQEAgLTE1OSw4ICsxNzAsMTQgQEAgV2ViS2l0V2Vi
Vmlldyogd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfd2ViX3ZpZXcoV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdCogcmUKIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2Fs
bGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFdl
YktpdFVSSVNjaGVtZVJlcXVlc3QqIHNjaGVtZVJlcXVlc3QpCiB7CiAgICAgR1JlZlB0cjxXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHNjaGVtZVJlcXVlc3QpOwor
ICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsK
ICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgZ3NzaXplIGJ5dGVzUmVhZCA9
IGdfaW5wdXRfc3RyZWFtX3JlYWRfZmluaXNoKGlucHV0U3RyZWFtLCByZXN1bHQsICZlcnJvci5v
dXRQdHIoKSk7CisgICAgaWYgKCFwcml2LT5tYW5hZ2VyKSB7CisgICAgICAgIHdlYmtpdFdlYkNv
bnRleHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2wocHJpdi0+d2ViQ29udGV4dCwgcHJp
di0+cmVxdWVzdElEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChieXRlc1Jl
YWQgPT0gLTEpIHsKICAgICAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJy
b3IocmVxdWVzdC5nZXQoKSwgZXJyb3IuZ2V0KCkpOwogICAgICAgICByZXR1cm47CkBAIC0xNzEs
MjIgKzE4OCwyMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVhZENhbGxi
YWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogICAgIGlmICghcmVxdWVzdC0+
cHJpdi0+c3RyZWFtKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJLaXRVUklTY2hlbWVSZXF1
ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7Ci0gICAgUmVmPEFQSTo6RGF0YT4gd2Vi
RGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhcio+KHByaXYtPnJlYWRCdWZmZXIpLCBieXRlc1JlYWQpOworICAgIGF1dG8gd2ViRGF0YSA9
IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwcml2
LT5yZWFkQnVmZmVyKSwgYnl0ZXNSZWFkKTsKICAgICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkgewog
ICAgICAgICAvLyBGaXJzdCBjaHVuayByZWFkLiBJbiBjYXNlIG9mIGVtcHR5IHJlcGx5IGFuIGVt
cHR5IEFQSTo6RGF0YSBpcyBzZW50IHRvIHRoZSBuZXR3b3JraW5nIHByb2Nlc3MuCi0gICAgICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UoV2ViQ29yZTo6VVJMKFdlYkNvcmU6
OlVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHByaXYtPnVyaSkpLCBTdHJpbmc6OmZyb21VVEY4KHBy
aXYtPm1pbWVUeXBlLmRhdGEoKSksCisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2Uo
VVJMKFVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KHByaXYtPnVyaSkpLCBTdHJpbmc6OmZyb21VVEY4
KHByaXYtPm1pbWVUeXBlLmRhdGEoKSksCiAgICAgICAgICAgICBwcml2LT5zdHJlYW1MZW5ndGgs
IGVtcHR5U3RyaW5nKCkpOwotICAgICAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkUmVj
ZWl2ZVJlc3BvbnNlKHByaXYtPnJlcXVlc3RJRCwgcmVzcG9uc2UpOwotICAgICAgICBwcml2LT53
ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkTG9hZERhdGEocHJpdi0+cmVxdWVzdElELCB3ZWJEYXRhLnB0
cigpKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHByaXYtPnJl
cXVlc3RJRCwgcmVzcG9uc2UpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRMb2FkRGF0YShw
cml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkIHx8ICgh
Ynl0ZXNSZWFkICYmICFwcml2LT5zdHJlYW1MZW5ndGgpKSB7CiAgICAgICAgIC8vIFN1YnNlcXVl
bnQgY2h1bmsgcmVhZC4gV2Ugb25seSBzZW5kIGFuIGVtcHR5IEFQSTo6RGF0YSB0byB0aGUgbmV0
d29ya2luZyBwcm9jZXNzIHdoZW4gc3RyZWFtIGxlbmd0aCBpcyB1bmtub3duLgotICAgICAgICBw
cml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkTG9hZERhdGEocHJpdi0+cmVxdWVzdElELCB3ZWJE
YXRhLnB0cigpKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkTG9hZERhdGEocHJpdi0+cmVx
dWVzdElELCB3ZWJEYXRhKTsKICAgICB9CiAKICAgICBpZiAoIWJ5dGVzUmVhZCkgewotICAgICAg
ICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyhyZXF1ZXN0LT5wcml2
LT5yZXF1ZXN0SUQpOwotICAgICAgICB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1
c3RvbVByb3RvY29sKHJlcXVlc3QtPnByaXYtPndlYkNvbnRleHQsIHJlcXVlc3QtPnByaXYtPnJl
cXVlc3RJRCk7CisgICAgICAgIHByaXYtPm1hbmFnZXItPmRpZEZpbmlzaExvYWRpbmcocHJpdi0+
cmVxdWVzdElEKTsKKyAgICAgICAgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0
b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0SUQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0yMzksNyArMjU1LDcgQEAgdm9pZCB3ZWJraXRfdXJpX3NjaGVt
ZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0LCBH
RXIKICAgICAgICAgcmV0dXJuOwogCiAgICAgcHJpdi0+c3RyZWFtID0gbnVsbHB0cjsKLSAgICBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJy
b3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9yKGVycm9yLT5jb2RlKSwgV2ViQ29yZTo6VVJMKHBy
aXYtPnNvdXBVUkkuZ2V0KCkpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7Ci0g
ICAgcHJpdi0+d2ViUmVxdWVzdE1hbmFnZXItPmRpZEZhaWxXaXRoRXJyb3IocHJpdi0+cmVxdWVz
dElELCByZXNvdXJjZUVycm9yKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoZ19x
dWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9yKGVycm9yLT5jb2Rl
KSwgVVJMKHByaXYtPnNvdXBVUkkuZ2V0KCkpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNz
YWdlKSk7CisgICAgcHJpdi0+bWFuYWdlci0+ZGlkRmFpbFdpdGhFcnJvcihwcml2LT5yZXF1ZXN0
SUQsIHJlc291cmNlRXJyb3IpOwogICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5n
Q3VzdG9tUHJvdG9jb2wocHJpdi0+d2ViQ29udGV4dCwgcHJpdi0+cmVxdWVzdElEKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVt
ZVJlcXVlc3RQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oCmluZGV4IGM3MmZhMTguLjQ3YmI4YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVNjaGVtZVJl
cXVlc3RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaApAQCAtMjAsMTEgKzIwLDE1IEBACiAjaWZuZGVm
IFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlX2gKICNkZWZpbmUgV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYktpdFdlYkNvbnRleHQuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCi1XZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiB3ZWJraXRV
UklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0V2ViQ29udGV4
dCosIEFQSTo6VVJMUmVxdWVzdCopOworV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogd2Via2l0VVJJ
U2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYktpdFdlYkNvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJLaXQ6OkN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5Jik7CiB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwoV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdCopOworV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSog
d2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCop
Owordm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0SW52YWxpZGF0ZShXZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0Kik7CiAKICNlbmRpZiAvLyBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHQuY3BwCmluZGV4IDcyNTM1NTkuLjczODM0Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0yMCw2ICsyMCw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgog
CisjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
QVBJRG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgog
I2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgpAQCAtMzAsNiArMzEsNyBA
QAogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkdlb2xv
Y2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29va2llTWFuYWdlclByaXZh
dGUuaCIKKyNpbmNsdWRlICJXZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNp
bmNsdWRlICJXZWJLaXREb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIldlYktpdERvd25sb2Fk
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdEZhdmljb25EYXRhYmFzZVByaXZhdGUuaCIKQEAg
LTM4LDcgKzQwLDYgQEAKICNpbmNsdWRlICJXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5oIgog
I2luY2x1ZGUgIldlYktpdFBsdWdpblByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRQcml2YXRl
LmgiCi0jaW5jbHVkZSAiV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJLaXRTZWN1cml0eU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3NQ
cml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUuaCIKQEAg
LTExNSwxMiArMTE2LDYgQEAgZW51bSB7CiAKIGNsYXNzIFdlYktpdFVSSVNjaGVtZUhhbmRsZXI6
IHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+IHsKIHB1YmxpYzoKLSAg
ICBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKCkKLSAgICAgICAgOiBtX2NhbGxiYWNrKDApCi0gICAg
ICAgICwgbV91c2VyRGF0YSgwKQotICAgICAgICAsIG1fZGVzdHJveU5vdGlmeSgwKQotICAgIHsK
LSAgICB9CiAgICAgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
Q2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95
Tm90aWZ5KQogICAgICAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgICAgICwgbV91c2Vy
RGF0YSh1c2VyRGF0YSkKQEAgLTE0Nyw5ICsxNDIsOSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2
YXRlOgotICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayBtX2NhbGxiYWNrOwotICAg
IHZvaWQqIG1fdXNlckRhdGE7Ci0gICAgR0Rlc3Ryb3lOb3RpZnkgbV9kZXN0cm95Tm90aWZ5Owor
ICAgIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RDYWxsYmFjayBtX2NhbGxiYWNrIHsgbnVsbHB0ciB9
OworICAgIHZvaWQqIG1fdXNlckRhdGEgeyBudWxscHRyIH07CisgICAgR0Rlc3Ryb3lOb3RpZnkg
bV9kZXN0cm95Tm90aWZ5IHsgbnVsbHB0ciB9OwogfTsKIAogdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+ID4gVVJJU2NoZW1lSGFuZGxlck1hcDsK
QEAgLTE2Miw3ICsxNTcsNiBAQCBzdHJ1Y3QgX1dlYktpdFdlYkNvbnRleHRQcml2YXRlIHsKICAg
ICBHUmVmUHRyPFdlYktpdENvb2tpZU1hbmFnZXI+IGNvb2tpZU1hbmFnZXI7CiAgICAgR1JlZlB0
cjxXZWJLaXRGYXZpY29uRGF0YWJhc2U+IGZhdmljb25EYXRhYmFzZTsKICAgICBHUmVmUHRyPFdl
YktpdFNlY3VyaXR5TWFuYWdlcj4gc2VjdXJpdHlNYW5hZ2VyOwotICAgIFJlZlB0cjxXZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4gcmVxdWVzdE1hbmFnZXI7CiAgICAgVVJJU2No
ZW1lSGFuZGxlck1hcCB1cmlTY2hlbWVIYW5kbGVyczsKICAgICBVUklTY2hlbWVSZXF1ZXN0TWFw
IHVyaVNjaGVtZVJlcXVlc3RzOwogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKQEAgLTI3NSw4ICsy
NjksNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCog
b2JqZWN0KQogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyKQogICAgICAgICBwcml2
LT53ZWJzaXRlRGF0YU1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
Q3JlYXRlKHdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uRm9yV2ViUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pKSk7CiAKLSAgICBwcml2LT5yZXF1ZXN0TWFuYWdlciA9
IHByaXYtPnByb2Nlc3NQb29sLT5zdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyPigpOwotCiAgICAgcHJpdi0+dGxzRXJyb3JzUG9saWN5ID0gV0VCS0lUX1RMU19F
UlJPUlNfUE9MSUNZX0ZBSUw7CiAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldElnbm9yZVRMU0Vy
cm9ycyhmYWxzZSk7CiAKQEAgLTI4Nyw3ICsyNzksNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJD
b250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgYXR0YWNoSW5qZWN0ZWRC
dW5kbGVDbGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7CiAgICAgYXR0YWNoRG93bmxvYWRDbGll
bnRUb0NvbnRleHQod2ViQ29udGV4dCk7Ci0gICAgYXR0YWNoUmVxdWVzdE1hbmFnZXJDbGllbnRU
b0NvbnRleHQod2ViQ29udGV4dCk7CisgICAgYXR0YWNoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50VG9Db250ZXh0KHdlYkNvbnRleHQpOwogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogICAg
IHByaXYtPmdlb2xvY2F0aW9uUHJvdmlkZXIgPSBXZWJLaXRHZW9sb2NhdGlvblByb3ZpZGVyOjpj
cmVhdGUocHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHk+KCkpOwpAQCAtMzA0LDYgKzI5Niw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRl
eHREaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKICAgICAgICAgcHJpdi0+Y2xpZW50c0RldGFjaGVk
ID0gdHJ1ZTsKICAgICAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVJbmplY3RlZEJ1
bmRsZUNsaWVudChudWxscHRyKTsKICAgICAgICAgcHJpdi0+cHJvY2Vzc1Bvb2wtPnNldERvd25s
b2FkQ2xpZW50KG51bGxwdHIpOworICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyQ2xpZW50KG51bGxwdHIpOwogICAgIH0KIAogICAgIEdfT0JKRUNUX0NM
QVNTKHdlYmtpdF93ZWJfY29udGV4dF9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CkBA
IC04NDksOCArODQyLDkgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfcmVnaXN0ZXJfdXJpX3Nj
aGVtZShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGEKICAgICBnX3JldHVybl9p
Zl9mYWlsKGNhbGxiYWNrKTsKIAogICAgIFJlZlB0cjxXZWJLaXRVUklTY2hlbWVIYW5kbGVyPiBo
YW5kbGVyID0gYWRvcHRSZWYobmV3IFdlYktpdFVSSVNjaGVtZUhhbmRsZXIoY2FsbGJhY2ssIHVz
ZXJEYXRhLCBkZXN0cm95Tm90aWZ5KSk7Ci0gICAgY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lSGFu
ZGxlcnMuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKSwgaGFuZGxlci5nZXQoKSk7Ci0gICAg
Y29udGV4dC0+cHJpdi0+cmVxdWVzdE1hbmFnZXItPnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJv
dG9jb2woU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IGNv
bnRleHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJzLnNldChTdHJpbmc6OmZyb21VVEY4KHNjaGVt
ZSksIGhhbmRsZXIuZ2V0KCkpOworICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAg
ICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJv
dG9jb2woU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpKTsKIH0KIAogLyoqCkBAIC0xMjY2LDE0ICsx
MjYwLDkgQEAgV2ViUHJvY2Vzc1Bvb2wqIHdlYmtpdFdlYkNvbnRleHRHZXRQcm9jZXNzUG9vbChX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogICAgIHJldHVybiBjb250ZXh0LT5wcml2LT5wcm9j
ZXNzUG9vbC5nZXQoKTsKIH0KIAotV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIq
IHdlYmtpdFdlYkNvbnRleHRHZXRSZXF1ZXN0TWFuYWdlcihXZWJLaXRXZWJDb250ZXh0KiBjb250
ZXh0KQotewotICAgIHJldHVybiBjb250ZXh0LT5wcml2LT5yZXF1ZXN0TWFuYWdlci5nZXQoKTsK
LX0KLQotdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgQVBJOjpV
UkxSZXF1ZXN0KiB1cmxSZXF1ZXN0KQordm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5n
Q3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QsIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyKQogewotICAgIEdSZWZQdHI8
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRVUklTY2hl
bWVSZXF1ZXN0Q3JlYXRlKGN1c3RvbVByb3RvY29sSUQsIGNvbnRleHQsIHVybFJlcXVlc3QpKTsK
KyAgICBHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYo
d2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZShjdXN0b21Qcm90b2NvbElELCBjb250ZXh0LCBy
ZXNvdXJjZVJlcXVlc3QsIG1hbmFnZXIpKTsKICAgICBTdHJpbmcgc2NoZW1lKFN0cmluZzo6ZnJv
bVVURjgod2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfc2NoZW1lKHJlcXVlc3QuZ2V0KCkp
KSk7CiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+IGhhbmRsZXIgPSBjb250ZXh0
LT5wcml2LT51cmlTY2hlbWVIYW5kbGVycy5nZXQoc2NoZW1lKTsKICAgICBBU1NFUlQoaGFuZGxl
ci5nZXQoKSk7CkBAIC0xMjkyLDYgKzEyODEsMTYgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0U3Rv
cExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjQK
ICAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKHJlcXVlc3QuZ2V0KCkpOwogfQogCit2
b2lkIHdlYmtpdFdlYkNvbnRleHRJbnZhbGlkYXRlQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0cyhXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0LCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdl
cikKK3sKKyAgICBWZWN0b3I8R1JlZlB0cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0Pj4gcmVxdWVz
dHM7CisgICAgY29weVZhbHVlc1RvVmVjdG9yKGNvbnRleHQtPnByaXYtPnVyaVNjaGVtZVJlcXVl
c3RzLCByZXF1ZXN0cyk7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVzdHMpIHsKKyAg
ICAgICAgaWYgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RHZXRNYW5hZ2VyKHJlcXVlc3QuZ2V0KCkp
ID09ICZtYW5hZ2VyKQorICAgICAgICAgICAgd2Via2l0VVJJU2NoZW1lUmVxdWVzdEludmFsaWRh
dGUocmVxdWVzdC5nZXQoKSk7CisgICAgfQorfQorCiB2b2lkIHdlYmtpdFdlYkNvbnRleHREaWRG
aW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgdWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKIHsKICAgICBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVS
ZXF1ZXN0cy5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaAppbmRl
eCA3ZWU5NmIxLi42M2ViMjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKQEAgLTI2LDIxICsyNiwy
MiBAQAogI2lmbmRlZiBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZV9oCiAjZGVmaW5lIFdlYktpdFdl
YkNvbnRleHRQcml2YXRlX2gKIAorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUu
aCIKICNpbmNsdWRlICJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJL
aXRXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VSZXF1ZXN0Lmg+CiAKIFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqIHdlYmtpdFdlYkNv
bnRleHRHZXRQcm9jZXNzUG9vbChXZWJLaXRXZWJDb250ZXh0Kik7CiBXZWJLaXREb3dubG9hZCog
d2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZFByb3h5
Kik7CiBXZWJLaXREb3dubG9hZCogd2Via2l0V2ViQ29udGV4dFN0YXJ0RG93bmxvYWQoV2ViS2l0
V2ViQ29udGV4dCosIGNvbnN0IGNoYXIqIHVyaSwgV2ViS2l0OjpXZWJQYWdlUHJveHkqKTsKIHZv
aWQgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKFdlYktpdDo6RG93bmxvYWRQcm94eSop
Owogdm9pZCB3ZWJraXRXZWJDb250ZXh0RG93bmxvYWRTdGFydGVkKFdlYktpdFdlYkNvbnRleHQq
LCBXZWJLaXREb3dubG9hZCopOwotV2ViS2l0OjpXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlciogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKFdlYktpdFdlYkNvbnRl
eHQqKTsKLXZvaWQgd2Via2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKFdl
YktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBBUEk6OlVSTFJlcXVl
c3QqKTsKK3ZvaWQgd2Via2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKFdl
YktpdFdlYkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Jik7
CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRTdG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdl
YkNvbnRleHQqLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKK3ZvaWQgd2Via2l0V2ViQ29u
dGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKFdlYktpdFdlYkNvbnRleHQqLCBX
ZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Jik7CiB2b2lkIHdlYmtpdFdlYkNvbnRl
eHREaWRGaW5pc2hMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQpOwogYm9vbCB3ZWJraXRXZWJDb250ZXh0SXNMb2FkaW5nQ3Vz
dG9tUHJvdG9jb2woV2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQp
Owogdm9pZCB3ZWJraXRXZWJDb250ZXh0Q3JlYXRlUGFnZUZvcldlYlZpZXcoV2ViS2l0V2ViQ29u
dGV4dCosIFdlYktpdFdlYlZpZXcqLCBXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRX
ZWJWaWV3Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eS5oCmluZGV4IGIzODc1ZjMuLjRjNzQzY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oCkBAIC0zNCw4ICszNCwxNCBAQAog
T0JKQ19DTEFTUyBXS0N1c3RvbVByb3RvY29sTG9hZGVyOwogI2VuZGlmCiAKK25hbWVzcGFjZSBJ
UEMgeworY2xhc3MgRGF0YVJlZmVyZW5jZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFJlc291cmNl
UmVzcG9uc2U7CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNTEsNiArNTcsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRMb2FkaW5nKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZvaWQgc3RvcExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiAKKyAgICB2b2lk
IHByb2Nlc3NEaWRDbG9zZSgpOworCisjaWYgVVNFKFNPVVApCisgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBkaWRGYWlsV2l0aEVy
cm9yKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eU1hYy5tbQppbmRleCBhZDUzZTk4Li45NzliMGQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFj
L0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNYWMubW0KQEAgLTE2MCw0ICsxNjAsOCBAQCB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogICAgIG1fbG9h
ZGVyTWFwLnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsKIH0KIAordm9pZCBDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKK3sKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0
b21Qcm90b2NvbHMvc291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9t
UHJvdG9jb2xNYW5hZ2VyUHJveHlTb3VwLmNwcAppbmRleCAwNTlmNDY1Li4zZmIzNDVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
c291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5U291cC5jcHAKQEAgLTIwLDEzICsyMCwxOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAKKyNpbmNsdWRl
ICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRlICJDaGlsZFByb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogCisjaWYg
UExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+CisjZWxpZiBQTEFU
Rk9STShFRkwpCisjaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNFZmwuaD4KKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OkN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5KENoaWxkUHJvY2Vzc1Byb3h5KiBjaGlsZFByb2Nlc3NQcm94eSwgV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQpAQCAtNDIsMTQgKzQ4LDQwIEBAIEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5Ojp+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkoKQogICAgIG1fY2hp
bGRQcm9jZXNzUHJveHktPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiB9CiAKK3ZvaWQgQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCit7CisgICAgbV9wcm9j
ZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoKS5pbnZhbGlkYXRlKCp0aGlzKTsK
K30KKwogdm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6c3RhcnRMb2FkaW5nKHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKIHsKLSAgICBtX3Byb2Nlc3NQb29sLnN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI+KCktPnN0YXJ0TG9hZGluZyhjdXN0b21Qcm90b2NvbElELCByZXF1
ZXN0KTsKKyAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wuY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
KCkuc3RhcnRMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSkKKyAgICAg
ICAgZGlkRmFpbFdpdGhFcnJvcihjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpjYW5ub3RTaG93
VVJMRXJyb3IocmVxdWVzdCkpOwogfQogCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
OjpzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewotICAgIG1fcHJvY2Vz
c1Bvb2wuc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKS0+
c3RvcExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgbV9wcm9jZXNzUG9vbC5jdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQoKS5zdG9wTG9hZGluZygqdGhpcywgY3VzdG9tUHJvdG9jb2xJ
RCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVSZXNw
b25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3Nh
Z2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZFJlY2VpdmVSZXNwb25zZShjdXN0b21Qcm90
b2NvbElELCByZXNwb25zZSwgMCksIDApOworfQorCit2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdl
clByb3h5OjpkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+c2VuZChN
ZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRMb2FkRGF0YShjdXN0b21Qcm90b2Nv
bElELCBkYXRhKSwgMCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRp
ZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgbV9jaGlsZFByb2Nlc3NQcm94eS0+c2VuZChN
ZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRGYWlsV2l0aEVycm9yKGN1c3RvbVBy
b3RvY29sSUQsIGVycm9yKSwgMCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHk6OmRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKK3sKKyAgICBt
X2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6
OkRpZEZpbmlzaExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCksIDApOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9z
b3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjY1NWU0My4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKLQotI2luY2x1
ZGUgIkFQSURhdGEuaCIKLSNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5o
IgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KLQotI2lmIFBMQVRGT1JNKEdUSykKLSNpbmNs
dWRlIDxXZWJDb3JlL0Vycm9yc0d0ay5oPgotI2VsaWYgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUg
PFdlYkNvcmUvRXJyb3JzRWZsLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNv
bnN0IGNoYXIqIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdXBwbGVtZW50
TmFtZSgpCi17Ci0gICAgcmV0dXJuICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ciI7Ci19Ci0KLVJlZjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4gV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCogcHJv
Y2Vzc1Bvb2wpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIocHJvY2Vzc1Bvb2wpKTsKLX0KLQotV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKFdl
YlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKLSAgICA6IFdlYkNvbnRleHRTdXBwbGVtZW50KHBy
b2Nlc3NQb29sKQotewotfQotCi1XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6
fldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKCkKLXsKLX0KLQotdm9pZCBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSogY2xpZW50KQotewot
ICAgIG1fY2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKLX0KLQotLy8gV2ViQ29udGV4dFN1cHBs
ZW1lbnQKLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnByb2Nlc3NQ
b29sRGVzdHJveWVkKCkKLXsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6cHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopCi17Ci19Ci0KLXZvaWQg
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnJlZldlYkNvbnRleHRTdXBwbGVt
ZW50KCkKLXsKLSAgICBBUEk6Ok9iamVjdDo6cmVmKCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQotewot
ICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyOjpyZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQotewotICAgIEFTU0VSVCghc2NoZW1lLmlzTnVsbCgpKTsKLSAgICBpZiAo
bV9yZWdpc3RlcmVkU2NoZW1lcy5jb250YWlucyhzY2hlbWUpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQ
b29sKCktPnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woc2NoZW1lKTsKLQotICAgIG1f
cmVnaXN0ZXJlZFNjaGVtZXMuYXBwZW5kKHNjaGVtZSk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2Nv
bChjb25zdCBTdHJpbmcmIHNjaGVtZSkKLXsKLSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0
b21Qcm90b2NvbChzY2hlbWUpOwotCi0gICAgYm9vbCByZW1vdmVkID0gbV9yZWdpc3RlcmVkU2No
ZW1lcy5yZW1vdmVGaXJzdChzY2hlbWUpOwotICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZCwgcmVt
b3ZlZCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnN0
YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5zdGFydExvYWRpbmco
dGhpcywgY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCkpCi0gICAgICAgIGRpZEZhaWxXaXRoRXJy
b3IoY3VzdG9tUHJvdG9jb2xJRCwgV2ViQ29yZTo6Y2Fubm90U2hvd1VSTEVycm9yKHJlcXVlc3Qp
KTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6c3RvcExv
YWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKLXsKLSAgICBtX2NsaWVudC5zdG9wTG9h
ZGluZyh0aGlzLCBjdXN0b21Qcm90b2NvbElEKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotewot
ICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bv
b2woKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkN1c3Rv
bVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKGN1c3RvbVByb3RvY29sSUQsIHJl
c3BvbnNlLCAwKSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXI6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IEFQSTo6
RGF0YSogZGF0YSkKLXsKLSAgICBpZiAoIXByb2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHByb2Nlc3NQb29sKCktPm5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKGN1c3RvbVByb3Rv
Y29sSUQsIGRhdGEtPmRhdGFSZWZlcmVuY2UoKSksIDApOwotfQotCi12b2lkIFdlYlNvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQotewotICAg
IGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bvb2wo
KS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6RGlkRmFpbFdpdGhFcnJvcihjdXN0b21Qcm90b2NvbElELCBlcnJvciks
IDApOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRG
aW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCi17Ci0gICAgaWYgKCFwcm9j
ZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9vbCgpLT5uZXR3b3Jr
aW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyOjpEaWRGaW5pc2hMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQpLCAwKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0
d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNjQ3NzU2ZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIFdlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyX2gKLSNkZWZpbmUgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJfaAotCi0jaW5jbHVkZSAiQVBJT2JqZWN0LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4
dFN1cHBsZW1lbnQuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlckNsaWVudC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEFQSSB7Ci1jbGFzcyBEYXRhOwotfQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBSZXNvdXJjZUVycm9yOwotY2xhc3MgUmVzb3VyY2VSZXF1
ZXN0OwotY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LWNsYXNzIFdlYlByb2Nlc3NQb29sOwotCi1jbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlciA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiwgcHVibGljIFdlYkNvbnRleHRTdXBwbGVt
ZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsK
LQotICAgIHN0YXRpYyBSZWY8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+IGNy
ZWF0ZShXZWJQcm9jZXNzUG9vbCopOwotICAgIHZpcnR1YWwgfldlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyKCk7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVDbGllbnQoY29uc3QgV0tT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqKTsKLQotICAgIHZvaWQg
cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSk7Ci0g
ICAgdm9pZCB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3QgU3RyaW5nJiBz
Y2hlbWUpOwotCi0gICAgdm9pZCBzdGFydExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdm9pZCBzdG9wTG9hZGlu
Zyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKLQotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmKTsKLSAgICB2b2lkIGRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQs
IGNvbnN0IEFQSTo6RGF0YSopOwotICAgIHZvaWQgZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBj
dXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci0gICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotCi0gICAgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9jb2xzKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWdpc3RlcmVkU2NoZW1lczsgfQotCi0gICAgdXNpbmcgQVBJOjpP
YmplY3Q6OnJlZjsKLSAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7Ci0KLXByaXZhdGU6Ci0g
ICAgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIoV2ViUHJvY2Vzc1Bvb2wqKTsK
LQotICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50Ci0gICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ry
b3llZCgpIG92ZXJyaWRlOwotICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94
eSopIG92ZXJyaWRlOwotICAgIHZvaWQgcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKLQotICAg
IFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50IG1fY2xpZW50OwotICAg
IFZlY3RvcjxTdHJpbmc+IG1fcmVnaXN0ZXJlZFNjaGVtZXM7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYzRkZWY2Mi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVu
dC5oIgotCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWJvb2wgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyhXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlciogc291cFJlcXVlc3RNYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCi17Ci0gICAgaWYgKCFtX2Ns
aWVudC5zdGFydExvYWRpbmcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFJlZjxBUEk6
OlVSTFJlcXVlc3Q+IHVybFJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0
KTsKLSAgICBtX2NsaWVudC5zdGFydExvYWRpbmcodG9BUEkoc291cFJlcXVlc3RNYW5hZ2VyKSwg
Y3VzdG9tUHJvdG9jb2xJRCwgdG9BUEkodXJsUmVxdWVzdC5wdHIoKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQ6OnN0b3BMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyKiBzb3VwUmVxdWVzdE1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQpCi17Ci0gICAgaWYgKG1fY2xpZW50LnN0b3BMb2FkaW5nKQotICAgICAgICBtX2Ns
aWVudC5zdG9wTG9hZGluZyh0b0FQSShzb3VwUmVxdWVzdE1hbmFnZXIpLCBjdXN0b21Qcm90b2Nv
bElELCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9X
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkZWJiMjIxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRfaAotI2RlZmluZSBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9oCi0KLSNpbmNsdWRlICJBUElDbGllbnQuaCIKLSNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyLmgiCi0KLW5hbWVzcGFjZSBBUEkgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBDbGll
bnRUcmFpdHM8V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2U+IHsK
LSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ckNsaWVudFYwPiBWZXJzaW9uczsKLX07Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IFJlc291cmNlUmVxdWVzdDsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOwotCi1jbGFzcyBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZT4gewotcHVibGljOgotICAgIGJvb2wg
c3RhcnRMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKiwgdWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0g
ICAgdm9pZCBzdG9wTG9hZGluZyhXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcios
IHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IGI5OTFiN2EuLjg4Y2NjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CkBAIC0yMTksNiArMjE5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJ
UEM6OkNvbm5lY3Rpb24mKQogewogICAgIGlmIChtX2Rvd25sb2FkUHJveHlNYXApCiAgICAgICAg
IG1fZG93bmxvYWRQcm94eU1hcC0+cHJvY2Vzc0RpZENsb3NlKCk7CisgICAgbV9jdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eS5wcm9jZXNzRGlkQ2xvc2UoKTsKIAogICAgIG1fdG9rZW5Gb3JIb2xk
aW5nTG9ja2VkRmlsZXMgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAppbmRleCBiMGZiN2RjLi5mODE1MTI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5oIgorI2lu
Y2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkFQSURv
d25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQu
aCIKICNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgpAQCAtOTAsMTAgKzkxLDYgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3IuaD4KICNlbmRpZgogCi0j
aWYgVVNFKFNPVVApCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuaCIKLSNlbmRpZgotCiAjaWYgT1MoTElOVVgpCiAjaW5jbHVkZSAiTWVtb3J5UHJlc3N1cmVN
b25pdG9yLmgiCiAjZW5kaWYKQEAgLTE1Nyw2ICsxNTQsOSBAQCBXZWJQcm9jZXNzUG9vbDo6V2Vi
UHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
CiAgICAgLCBtX2F1dG9tYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkF1dG9tYXRp
b25DbGllbnQ+KCkpCiAgICAgLCBtX2Rvd25sb2FkQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpEb3dubG9hZENsaWVudD4oKSkKICAgICAsIG1faGlzdG9yeUNsaWVudChzdGQ6Om1ha2VfdW5p
cXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+KCkpCisjaWYgVVNFKFNPVVApCisg
ICAgLCBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PigpKQorI2VuZGlmCiAgICAgLCBtX3Zpc2l0ZWRM
aW5rU3RvcmUoVmlzaXRlZExpbmtTdG9yZTo6Y3JlYXRlKCkpCiAgICAgLCBtX3Zpc2l0ZWRMaW5r
c1BvcHVsYXRlZChmYWxzZSkKICAgICAsIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIodGhpcykK
QEAgLTE2NSw5ICsxNjUsNiBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX21lbW9yeVNh
bXBsZXJFbmFibGVkKGZhbHNlKQogICAgICwgbV9tZW1vcnlTYW1wbGVySW50ZXJ2YWwoMTQwMC4w
KQogICAgICwgbV93ZWJzaXRlRGF0YVN0b3JlKG1fY29uZmlndXJhdGlvbi0+c2hvdWxkSGF2ZUxl
Z2FjeURhdGFTdG9yZSgpID8gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUobGVnYWN5V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9uKSkucHRyKCkgOiBudWxs
cHRyKQotI2lmIFVTRShTT1VQKQotICAgICwgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGlj
eShIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4pCi0jZW5k
aWYKICAgICAsIG1fc2hvdWxkVXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKGZhbHNlKQogICAgICwg
bV9wcm9jZXNzVGVybWluYXRpb25FbmFibGVkKHRydWUpCiAgICAgLCBtX2NhbkhhbmRsZUhUVFBT
U2VydmVyVHJ1c3RFdmFsdWF0aW9uKHRydWUpCkBAIC0xOTcsOSArMTk0LDYgQEAgV2ViUHJvY2Vz
c1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25m
aWd1cmF0aW9uKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwog
ICAgIGFkZFN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CiAgICAgYWRk
U3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCk7Ci0jaWYgVVNFKFNPVVAp
Ci0gICAgYWRkU3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4o
KTsKLSNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogICAgIGFkZFN1cHBsZW1lbnQ8
V2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyPigpOwogI2VuZGlmCkBAIC0yOTksNiArMjkzLDE2
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6QXV0b21hdGlvbkNsaWVudD4KICAgICAgICAgbV9hdXRvbWF0aW9uQ2xpZW50ID0g
V1RGTW92ZShhdXRvbWF0aW9uQ2xpZW50KTsKIH0KIAorI2lmIFVTRShTT1VQKQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4gY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KQoreworICAgIGlmICghY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KQorICAgICAg
ICBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCk7CisgICAgZWxzZQorICAgICAgICBtX2N1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudCA9IFdURk1vdmUoY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50KTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRNYXhpbXVtTnVtYmVy
T2ZQcm9jZXNzZXModW5zaWduZWQgbWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKQogewogICAgIC8v
IEd1YXJkIGFnYWluc3QgQVBJIG1pc3VzZS4KQEAgLTEzNjQsMTEgKzEzNjgsMTcgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6c2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJp
ZXNBZGRlZEFmdGVyVGltZSgKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJTY2hlbWVG
b3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKKyNpZiBVU0UoU09VUCkK
KyAgICBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFkZChzY2hlbWUp
OworI2VuZGlmCiAgICAgc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6OkN1c3RvbVBy
b3RvY29sTWFuYWdlcjo6UmVnaXN0ZXJTY2hlbWUoc2NoZW1lKSk7CiB9CiAKIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcm
IHNjaGVtZSkKIHsKKyNpZiBVU0UoU09VUCkKKyAgICBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9y
Q3VzdG9tUHJvdG9jb2xzLnJlbW92ZShzY2hlbWUpOworI2VuZGlmCiAgICAgc2VuZFRvTmV0d29y
a2luZ1Byb2Nlc3MoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6VW5yZWdpc3RlclNj
aGVtZShzY2hlbWUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAppbmRleCBmY2RlOWEwLi5kNWU0YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaApAQCAtNzAsNiArNzAsNyBAQCBPQkpDX0NMQVNTIE5TU3RyaW5nOwog
CiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF1dG9tYXRpb25DbGllbnQ7CitjbGFzcyBDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKIGNsYXNzIExlZ2Fj
eUNvbnRleHRIaXN0b3J5Q2xpZW50OwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CkBAIC0xMzUs
NiArMTM2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGlzdG9yeUNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4pOwogICAgIHZvaWQgc2V0RG93
bmxvYWRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RG93bmxvYWRDbGllbnQ+KTsKICAgICB2
b2lkIHNldEF1dG9tYXRpb25DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvbkNs
aWVudD4pOworI2lmIFVTRShTT1VQKQorICAgIHZvaWQgc2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4p
OworI2VuZGlmCiAKICAgICB2b2lkIHNldE1heGltdW1OdW1iZXJPZlByb2Nlc3Nlcyh1bnNpZ25l
ZCk7IC8vIENhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBubyBwcm9jZXNzZXMgcnVu
bmluZy4KICAgICB1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMoKSBjb25zdCB7IHJl
dHVybiAhbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCkgPyBVSU5UX01BWCA6
IG1fY29uZmlndXJhdGlvbi0+bWF4aW11bVByb2Nlc3NDb3VudCgpOyB9CkBAIC0yMjUsNiArMjI5
LDEwIEBAIHB1YmxpYzoKICAgICBBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50JiBoaXN0
b3J5Q2xpZW50KCkgeyByZXR1cm4gKm1faGlzdG9yeUNsaWVudDsgfQogICAgIFdlYkNvbnRleHRD
bGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKKyNpZiBVU0UoU09VUCkKKyAg
ICBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCYgY3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KCkgY29uc3QgeyByZXR1cm4gKm1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OyB9
CisjZW5kaWYKKwogICAgIFdlYkljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pY29uRGF0YWJhc2UuZ2V0KCk7IH0KIAogICAgIHN0cnVjdCBTdGF0aXN0aWNzIHsK
QEAgLTQ1NSw2ICs0NjMsOSBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkF1
dG9tYXRpb25DbGllbnQ+IG1fYXV0b21hdGlvbkNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpEb3dubG9hZENsaWVudD4gbV9kb3dubG9hZENsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4gbV9oaXN0b3J5Q2xpZW50OworI2lm
IFVTRShTT1VQKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdl
ckNsaWVudD4gbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CisjZW5kaWYKIAogICAgIFJl
ZlB0cjxXZWJBdXRvbWF0aW9uU2Vzc2lvbj4gbV9hdXRvbWF0aW9uU2Vzc2lvbjsKIApAQCAtNDk5
LDcgKzUxMCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29udGV4dFN1cHBsZW1lbnRNYXAgbV9zdXBw
bGVtZW50czsKIAogI2lmIFVTRShTT1VQKQotICAgIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgbV9p
bml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeTsKKyAgICBIVFRQQ29va2llQWNjZXB0UG9saWN5
IG1faW5pdGlhbEhUVFBDb29raWVBY2NlcHRQb2xpY3kgeyBIVFRQQ29va2llQWNjZXB0UG9saWN5
T25seUZyb21NYWluRG9jdW1lbnREb21haW4gfTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFD
KQpAQCAtNTMwLDYgKzU0MSw3IEBAIHByaXZhdGU6CiAKICNpZiBVU0UoU09VUCkKICAgICBib29s
IG1faWdub3JlVExTRXJyb3JzIHsgdHJ1ZSB9OworICAgIEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2Nv
bHM7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9tZW1vcnlDYWNoZURpc2FibGVkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmNwcAppbmRleCBiOWE2NTdmLi4xMWFkNmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcApAQCAtMjYsNTIg
KzI2LDU5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwuaCIKIAorI2luY2x1ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5o
IgorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiZXdr
X2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJp
dmF0ZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIGlubGluZSBSZXF1ZXN0TWFu
YWdlckNsaWVudEVmbCogdG9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbChjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZXF1ZXN0TWFuYWdlckNsaWVudEVm
bCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLX0KLQotUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmw6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKFdLQ29udGV4dFJlZiBjb250ZXh0KQot
ewotICAgIG1fcmVxdWVzdE1hbmFnZXIgPSB0b0FQSSh0b0ltcGwoY29udGV4dCktPnN1cHBsZW1l
bnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+KCkpOwotICAgIEFTU0VSVCht
X3JlcXVlc3RNYW5hZ2VyKTsKK2NsYXNzIEN1c3RvbVByb2NvbE1hbmFnZXJDbGllbnQgZmluYWwg
OiBwdWJsaWMgQVBJOjpDdXN0b21Qcm9jb2xNYW5hZ2VyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBDdXN0b21Qcm9jb2xNYW5hZ2VyQ2xpZW50KFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
KiBjbGllbnQpCisgICAgICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgIHsKKyAgICB9CiAKLSAg
ICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjAgd2tSZXF1ZXN0TWFu
YWdlckNsaWVudDsKLSAgICBtZW1zZXQoJndrUmVxdWVzdE1hbmFnZXJDbGllbnQsIDAsIHNpemVv
ZihXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjApKTsKK3ByaXZhdGU6
CisgICAgYm9vbCBzdGFydExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFn
ZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgUmVmUHRyPEV3a1VybFNjaGVt
ZVJlcXVlc3Q+IHJlcXVlc3QgPSBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpjcmVhdGUobWFuYWdlciwg
dG9BUEkoQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVzcG9uc2UpLnB0cigpKSwgY3VzdG9tUHJv
dG9jb2xJRCk7CisgICAgICAgIFN0cmluZyBzY2hlbWUoU3RyaW5nOjpmcm9tVVRGOChyZXF1ZXN0
LmdldCgpLT5zY2hlbWUoKSkpOworICAgICAgICBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxl
cj4gaGFuZGxlciA9IChtX2NsaWVudC0+bV91cmlTY2hlbWVIYW5kbGVycykuZ2V0KHNjaGVtZSk7
CisgICAgICAgIEFTU0VSVChoYW5kbGVyLmdldCgpKTsKKyAgICAgICAgaWYgKCFoYW5kbGVyLT5o
YXNDYWxsYmFjaygpKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgd2tSZXF1ZXN0TWFuYWdl
ckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQuYmFz
ZS5jbGllbnRJbmZvID0gdGhpczsKLSAgICB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LnN0YXJ0TG9h
ZGluZyA9IHN0YXJ0TG9hZGluZzsKLSAgICB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LnN0b3BMb2Fk
aW5nID0gc3RvcExvYWRpbmc7CisgICAgICAgIChtX2NsaWVudC0+bV91cmlTY2hlbWVSZXF1ZXN0
cykuc2V0KGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3QpOworICAgICAgICBoYW5kbGVyLT5wZXJm
b3JtQ2FsbGJhY2socmVxdWVzdC5nZXQoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
IAotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQobV9yZXF1
ZXN0TWFuYWdlci5nZXQoKSwgJndrUmVxdWVzdE1hbmFnZXJDbGllbnQuYmFzZSk7Ci19CisgICAg
dm9pZCBzdG9wTG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYsIHVpbnQ2NF90IGN1
c3RvbVByb3RvY29sSUQpIG92ZXJyaWRlCisgICAgeworICAgICAgICAobV9jbGllbnQtPm1fdXJp
U2NoZW1lUmVxdWVzdHMpLnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsKKyAgICB9CiAKLXZvaWQg
UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OnN0YXJ0TG9hZGluZyhXS1NvdXBDdXN0b21Qcm90b2Nv
bFJlcXVlc3RNYW5hZ2VyUmVmIG1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdL
VVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAg
IFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKiBjbGllbnQgPSB0b1JlcXVlc3RNYW5hZ2VyQ2xpZW50
RWZsKGNsaWVudEluZm8pOwotICAgIFJlZlB0cjxFd2tVcmxTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0
ID0gRXdrVXJsU2NoZW1lUmVxdWVzdDo6Y3JlYXRlKG1hbmFnZXIsIHRvSW1wbChyZXF1ZXN0UmVm
KSwgY3VzdG9tUHJvdG9jb2xJRCk7Ci0gICAgU3RyaW5nIHNjaGVtZShTdHJpbmc6OmZyb21VVEY4
KHJlcXVlc3QuZ2V0KCktPnNjaGVtZSgpKSk7Ci0gICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhh
bmRsZXI+IGhhbmRsZXIgPSAoY2xpZW50LT5tX3VyaVNjaGVtZUhhbmRsZXJzKS5nZXQoc2NoZW1l
KTsKLSAgICBBU1NFUlQoaGFuZGxlci5nZXQoKSk7Ci0gICAgaWYgKCFoYW5kbGVyLT5oYXNDYWxs
YmFjaygpKQotICAgICAgICByZXR1cm47CisgICAgdm9pZCBpbnZhbGlkYXRlKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiBtYW5hZ2VyKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVmVjdG9y
PFJlZlB0cjxFd2tVcmxTY2hlbWVSZXF1ZXN0Pj4gcmVxdWVzdHM7CisgICAgICAgIGNvcHlWYWx1
ZXNUb1ZlY3RvcihtX2NsaWVudC0+bV91cmlTY2hlbWVSZXF1ZXN0cywgcmVxdWVzdHMpOworICAg
ICAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0cykgeworICAgICAgICAgICAgaWYgKHJl
cXVlc3QtPm1hbmFnZXIoKSA9PSAmbWFuYWdlcikgeworICAgICAgICAgICAgICAgIHJlcXVlc3Qt
PmludmFsaWRhdGUoKTsKKyAgICAgICAgICAgICAgICBzdG9wTG9hZGluZyhtYW5hZ2VyLCByZXF1
ZXN0LT5pZCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAotICAgIChjbGll
bnQtPm1fdXJpU2NoZW1lUmVxdWVzdHMpLnNldChjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KTsK
LSAgICBoYW5kbGVyLT5wZXJmb3JtQ2FsbGJhY2socmVxdWVzdC5nZXQoKSk7Ci19CisgICAgUmVx
dWVzdE1hbmFnZXJDbGllbnRFZmwqIG1fY2xpZW50OworfTsKIAotdm9pZCBSZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbDo6c3RvcExvYWRpbmcoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
clJlZiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQorUmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
KFdLQ29udGV4dFJlZiBjb250ZXh0KQogewotICAgIFVOVVNFRF9QQVJBTShtYW5hZ2VyKTsKLQot
ICAgIFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKiBjbGllbnQgPSB0b1JlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsKGNsaWVudEluZm8pOwotICAgIChjbGllbnQtPm1fdXJpU2NoZW1lUmVxdWVzdHMpLnJl
bW92ZShjdXN0b21Qcm90b2NvbElEKTsKKyAgICBtX3Byb2Nlc3NQb29sID0gdG9JbXBsKGNvbnRl
eHQpOworICAgIG1fcHJvY2Vzc1Bvb2wtPnNldEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudChz
dGQ6Om1ha2VfdW5pcXVlPEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4odGhpcykpOwogfQog
CiB2b2lkIFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpyZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIo
Y29uc3QgU3RyaW5nJiBzY2hlbWUsIEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgY2FsbGJhY2ss
IHZvaWQqIHVzZXJEYXRhKQpAQCAtNzksOCArODYsOSBAQCB2b2lkIFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsOjpyZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIEV3
awogICAgIEFTU0VSVChjYWxsYmFjayk7CiAKICAgICBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFu
ZGxlcj4gaGFuZGxlciA9IGFkb3B0UmVmKG5ldyBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKGNhbGxi
YWNrLCB1c2VyRGF0YSkpOwotICAgIG1fdXJpU2NoZW1lSGFuZGxlcnMuc2V0KHNjaGVtZSwgaGFu
ZGxlcik7Ci0gICAgdG9JbXBsKG1fcmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5yZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKHNjaGVtZSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3VyaVNj
aGVtZUhhbmRsZXJzLnNldChzY2hlbWUsIGhhbmRsZXIpOworICAgIGlmIChhZGRSZXN1bHQuaXNO
ZXdFbnRyeSkKKyAgICAgICAgbV9wcm9jZXNzUG9vbC0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChzY2hlbWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuaApp
bmRleCA4N2QzNjBlLi4xZDI5OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5oCkBAIC0yNyw3ICsyNyw2IEBACiAj
ZGVmaW5lIFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsX2gKIAogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
b29sLmgiCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIK
ICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9zY2hl
bWVfcmVxdWVzdF9wcml2YXRlLmgiCiAKQEAgLTc5LDEwICs3OCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgRXdrX1Vy
bF9TY2hlbWVfUmVxdWVzdF9DYiBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEpOwogCiBwcml2YXRl
OgotICAgIHN0YXRpYyB2b2lkIHN0YXJ0TG9hZGluZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBXS1VSTFJlcXVlc3RSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAgIHN0YXRpYyB2b2lkIHN0b3BMb2FkaW5nKFdL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVByb3Rv
Y29sSUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotCi0gICAgV0tSZXRhaW5QdHI8V0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZj4gbV9yZXF1ZXN0TWFuYWdlcjsKKyAgICBX
ZWJQcm9jZXNzUG9vbCogbV9wcm9jZXNzUG9vbDsKICAgICBVUklTY2hlbWVIYW5kbGVyTWFwIG1f
dXJpU2NoZW1lSGFuZGxlcnM7CiAgICAgVVJJU2NoZW1lUmVxdWVzdE1hcCBtX3VyaVNjaGVtZVJl
cXVlc3RzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
UHJvY2Vzc1Bvb2xFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQcm9j
ZXNzUG9vbEVmbC5jcHAKaW5kZXggM2YyNjQwZS4uZmZhMmQ1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAKQEAgLTMyLDcgKzMy
LDYgQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgi
Ci0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNs
dWRlIDxFZnJlZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKaW5kZXggODE5N2ZkMy4u
NDEwYTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9j
ZXNzUG9vbEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9j
ZXNzUG9vbEd0ay5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JT
ZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hl
bWVSZWdpc3RyeS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAv
V2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dl
YlByb2Nlc3NQb29sU291cC5jcHAKaW5kZXggZDVkYjI0NC4uOTNhN2MwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCkBA
IC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
Q29va2llTWFuYWdlclByb3h5LmgiCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtNDAsNyArMzksOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYQogICAg
IHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5ID0gbV9pbml0aWFsSFRUUENvb2tpZUFjY2Vw
dFBvbGljeTsKICAgICBwYXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyA9IG1faWdub3JlVExTRXJy
b3JzOwogICAgIHBhcmFtZXRlcnMubGFuZ3VhZ2VzID0gV2ViQ29yZTo6dXNlclByZWZlcnJlZExh
bmd1YWdlcygpOwotICAgIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Q
cm90b2NvbHMgPSBzdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
PigpLT5yZWdpc3RlcmVkU2NoZW1lc0ZvckN1c3RvbVByb3RvY29scygpOworICAgIGZvciAoY29u
c3QgYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29s
cykKKyAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29scy5hcHBlbmQoc2NoZW1lKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtD
YWNoZUVmZmljYWN5TG9nZ2luZyA9IGZhbHNlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295152</attachid>
            <date>2016-11-18 08:33:20 -0800</date>
            <delta_ts>2016-11-18 08:42:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-custom-protocols-soup.diff</filename>
            <type>text/plain</type>
            <size>82806</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0Yjg5MTk0Li5hMzNhYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsOTIg
QEAKIDIwMTYtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtTT1VQXSBTaW1wbGlmeSBjdXN0b20gcHJvdG9jb2xzIGhhbmRsZXIgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDkyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGFyZSB1c2luZyB0b28gbWFueSBjbGFzc2VzIGZvciB0aGlzIGFuZCBhbHNvIHRoZSBD
IEFQSSB0aGF0IGlzIG5vdCBuZWVkZWQsIGJlY2F1c2UgYm90aCBHVEsrIGFuZCBFRkwgaGF2ZQor
ICAgICAgICB0aGVpciBvd24gQVBJcyBhbmQgdGhpcyBpcyBub3QgdXNlZCBieSBXVFIgYXQgYWxs
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IFJlbW92ZSBmaWxlcyBmcm9tIGNvbXBp
bGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBT
aGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNl
U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoQVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgIChB
UEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcpOgorICAgICAgICAo
QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OmludmFsaWRhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
c291cC9XS0FQSUNhc3RTb3VwLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tDb250ZXh0U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1Nv
dXBSZXF1ZXN0TWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcDogUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHA6IFVzZSBDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSBpbnN0ZWFkIG9mIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYuCisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjpFd2tVcmxTY2hlbWVSZXF1
ZXN0KToKKyAgICAgICAgKEV3a1VybFNjaGVtZVJlcXVlc3Q6OmZpbmlzaCk6CisgICAgICAgIChF
d2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a1VybFNj
aGVtZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjptYW5h
Z2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKGF0dGFjaEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcDogVXNlIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGluc3RlYWQgb2YgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuCisgICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwpOgorICAg
ICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIpOgorICAgICAgICAod2Via2l0
VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUpOgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVx
dWVzdFJlYWRDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zp
bmlzaF9lcnJvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6CisgICAg
ICAgICh3ZWJraXRXZWJDb250ZXh0RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRl
eHRfcmVnaXN0ZXJfdXJpX3NjaGVtZSk6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0U3RhcnRM
b2FkaW5nQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dEludmFsaWRh
dGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOiBJ
bnZhbGlkYXRlIHRoZSBjbGllbnQuCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5OjpzdGFydExvYWRpbmcpOiBOb3RpZnkgdGhlIGNsaWVudC4KKyAgICAgICAgKFdl
YktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVz
cG9uc2UpOiBOb3RpZnkgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZExvYWREYXRhKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGYWlsV2l0aEVycm9yKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGaW5p
c2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZENsb3NlKTogTm90aWZ5IHRoZSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOiBJbml0aWFsaXplIHRoZSBDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQgYW5kIHJlbW92ZSB0aGUgYWxsIHN1cHBsZW1lbnQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbCk6IEluIGNhc2Ugb2Ygc291cCBjYWNoZSB0aGUgZ2l2ZW4gcHJvdG9jb2wu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2wpOiBJbiBjYXNlIG9mIHNvdXAgZGVsZXRlIHRoZSBnaXZlbiBwcm90b2NvbCBm
cm9tIHRoZSBjYWNoZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcDogRG8gbm90
IHVzZSB0aGUgQyBBUEksIGJ1dCBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC4KKyAg
ICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OlJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OnJlZ2lz
dGVyVVJMU2NoZW1lSGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFu
YWdlckNsaWVudEVmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xF
ZmwuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyk6IFVzZSBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzIHRvCisgICAg
ICAgIGJ1aWxkIHRoZSBsaXN0IG9mIGN1c3RvbSBwcm90b2NvbHMgdG8gc2VuZCB0byB0aGUgbmV0
d29yayBwcm9jZXNzLgorCisyMDE2LTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBSZW1vdmUgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSBmcm9tIFdlYlByb2Nlc3NQcm94eQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTA4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
NmU3N2VlNi4uOTk0NGFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTc2LDcgKzc2
LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS1ZpZXdFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tpZU1hbmFn
ZXJTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcAogCkBAIC0xMzEsOCArMTMwLDYgQEAgbGlzdChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1
bmNoZXJFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291
cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nlc3Mv
UGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCiAgICAgVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtMjU2LDYgKzI1Myw3IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElS
fS9TaGFyZWQvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vU2hhcmVkL3VuaXgiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9jYWlybyIKICAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9lZmwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
CmluZGV4IDlmZDJkMTYuLjU5NTRiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0x
MDEsNyArMTAxLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNz
L0FQSS9DL2d0ay9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tp
ZU1hbmFnZXJTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9BUElXZWJz
aXRlRGF0YVN0b3JlR3RrLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcApAQCAtMTM0LDYgKzEzMyw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlLmgKICAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDcmVkZW50aWFsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENyZWRlbnRpYWwuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERl
ZmluZXMuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmgKQEAgLTIxMCw4ICsyMTEsNiBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmlu
dE9wZXJhdGlvblByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCi0gICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCi0gICAgVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUuaApAQCAtMjgzLDggKzI4Miw2IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVz
c3VyZU1vbml0b3IuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
c291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCi0gICAgVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXIuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nl
c3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgKaW5kZXggOTQ4ZTE2MC4uMzJmYmM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0Jhc2UuaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNl
R3RrLmg+CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoVVNFX1NPVVApCi0jaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZVNvdXAuaD4KLSNlbmRpZgotCiAjaWYgZGVmaW5lZChCVUlMRElOR19FRkxfXykKICNp
bmNsdWRlIDxXZWJLaXQvV0tCYXNlRWZsLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjAwZjA4NS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mvc291
cC9XS0Jhc2VTb3VwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tCYXNlU291
cF9oCi0jZGVmaW5lIFdLQmFzZVNvdXBfaAotCi0jaWZuZGVmIFdLQmFzZV9oCi0jZXJyb3IgIlBs
ZWFzZSAjaW5jbHVkZSBcIldLQmFzZS5oXCIgaW5zdGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHku
IgotI2VuZGlmCi0KLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU291cFJlcXVlc3RNYW5h
Z2VyKiBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZjsKLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIFdLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJSZWY7Ci0KLSNlbmRpZiAvKiBXS0Jhc2VTb3VwX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50LmgKc2ltaWxhcml0eSBpbmRleCA2OCUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCmluZGV4IDJk
ZjYzZjIuLjUxZTE4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLQVBJQ2FzdFNvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChD
KSAyMDE2IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDE5ICsyMywyOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgV0tBUElDYXN0U291cF9oCi0jZGVmaW5lIFdLQVBJQ2FzdFNvdXBfaAorI3ByYWdt
YSBvbmNlCiAKLSNpZm5kZWYgV0tBUElDYXN0X2gKLSNlcnJvciAiUGxlYXNlICNpbmNsdWRlIFwi
V0tBUElDYXN0LmhcIiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCi0jZW5kaWYKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OworfQogCi1jbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlcjsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlUmVxdWVz
dDsKK30KIAotV0tfQUREX0FQSV9NQVBQSU5HKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYsIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKQorbmFtZXNwYWNl
IEFQSSB7CiAKLX0KK2NsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkgeyB9CisKKyAgICB2
aXJ0dWFsIGJvb2wgc3RhcnRMb2FkaW5nKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkmLCB1aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzdG9wTG9h
ZGluZyhXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3Vz
dG9tUHJvdG9jb2xJRCAqLykgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShXZWJL
aXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JikgeyB9Cit9OwogCi0jZW5kaWYgLy8gV0tB
UElDYXN0U291cF9oCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCA3YjRhNGQ1Li5mN2YzYTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC01NTIsMTAgKzU1Miw2IEBAIGlu
bGluZSBQcm94eWluZ1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiB0b0FQSShjb25zdCBXZWJDb3Jl
OjpHcmFtbWFyRGV0YWlsJiBncmFtCiAjaW5jbHVkZSAiV0tBUElDYXN0R3RrLmgiCiAjZW5kaWYK
IAotI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIldLQVBJQ2FzdFNvdXAuaCIKLSNlbmRpZgotCiAj
aWYgZGVmaW5lZChCVUlMRElOR19FRkxfXykKICNpbmNsdWRlICJXS0FQSUNhc3RFZmwuaCIKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tD
b250ZXh0U291cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250
ZXh0U291cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDQyZjM5Li4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0NvbnRleHRTb3VwX2gKLSNkZWZp
bmUgV0tDb250ZXh0U291cF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0jaW5jbHVk
ZSA8V2ViS2l0L1dLU291cFJlcXVlc3RNYW5hZ2VyLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwot
ZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLU291cFJlcXVlc3RNYW5hZ2VyUmVm
IFdLQ29udGV4dEdldFNvdXBSZXF1ZXN0TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7Ci0K
LSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS0NvbnRleHRTb3Vw
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ZDM2ZjYuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCi0KLSNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCkKLXsKLSAgICByZXR1cm4g
dG9BUEkoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OkFQSVR5cGUpOwotfQot
Ci12b2lkIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIGNv
bnN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiB3a0NsaWVu
dCkKLXsKLSAgICB0b0ltcGwoc291cFJlcXVlc3RNYW5hZ2VyUmVmKS0+aW5pdGlhbGl6ZUNsaWVu
dCh3a0NsaWVudCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMmE3NjIuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyX2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lm
ZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKCpX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU3RhcnRMb2FkaW5nQ2FsbGJhY2spKFdL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgc291cE1hbmFnZXJSZWYsIHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXJTdG9wTG9hZGluZ0NhbGxiYWNrKShXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyUmVmIHNvdXBNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZv
aWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZv
OwotfSBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZTsKLQotdHlw
ZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwIHsK
LSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAg
ICAgYmFzZTsKLQotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTdGFydExv
YWRpbmdDYWxsYmFjayBzdGFydExvYWRpbmc7Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlclN0b3BMb2FkaW5nQ2FsbGJhY2sgIHN0b3BMb2FkaW5nOwotfSBXS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjA7Ci0KLVdLX0VYUE9SVCBXS1R5cGVJRCBX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9S
VCB2b2lkIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLQotI2VuZGlmIC8qIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3Vw
UmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cFJlcXVlc3RNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2Njdl
ZGUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tT
b3VwUmVxdWVzdE1hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS1Nv
dXBSZXF1ZXN0TWFuYWdlcl9oCi0jZGVmaW5lIFdLU291cFJlcXVlc3RNYW5hZ2VyX2gKLQotI2lu
Y2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMi
IHsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKCpXS1NvdXBSZXF1ZXN0TWFuYWdlckRpZFJlY2Vp
dmVVUklSZXF1ZXN0Q2FsbGJhY2spKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0
TWFuYWdlclJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS1BhZ2VSZWYgcGFnZVJlZiwgdWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLU291
cFJlcXVlc3RNYW5hZ2VyRGlkRmFpbFRvTG9hZFVSSVJlcXVlc3RDYWxsYmFjaykoV0tTb3VwUmVx
dWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotCi10eXBlZGVmIHN0cnVjdCBXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotfSBXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2U7Ci0KLXR5cGVkZWYgc3RydWN0IFdLU291cFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50VjAgewotICAgIFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAgICAg
ICAgICAgICAgICBiYXNlOwotCi0gICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRSZWNlaXZlVVJJ
UmVxdWVzdENhbGxiYWNrICAgIGRpZFJlY2VpdmVVUklSZXF1ZXN0OwotICAgIFdLU291cFJlcXVl
c3RNYW5hZ2VyRGlkRmFpbFRvTG9hZFVSSVJlcXVlc3RDYWxsYmFjayBkaWRGYWlsVG9Mb2FkVVJJ
UmVxdWVzdDsKLX0gV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRWMDsKLQotV0tfRVhQT1JUIFdL
VHlwZUlEIFdLU291cFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9SVCB2b2lk
IFdLU291cFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBj
b25zdCBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqIGNsaWVudCk7Ci1XS19FWFBPUlQg
dm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZ2lzdGVyVVJJU2NoZW1lKFdLU291cFJlcXVlc3RN
YW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBzY2hlbWVSZWYpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3Vw
UmVxdWVzdE1hbmFnZXJEaWRIYW5kbGVVUklSZXF1ZXN0KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVm
LCBXS0RhdGFSZWYsIHVpbnQ2NF90IGNvbnRlbnRMZW5ndGgsIFdLU3RyaW5nUmVmIG1pbWVUeXBl
UmVmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3VwUmVxdWVzdE1h
bmFnZXJEaWRSZWNlaXZlVVJJUmVxdWVzdERhdGEoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdL
RGF0YVJlZiwgdWludDY0X3QgcmVxdWVzdElEKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLQotI2VuZGlmIC8qIFdLU291cFJlcXVlc3RNYW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRleCAxNzk1MjY5
Li5iNGVkZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0NvbnRleHRQ
cml2YXRlLmgiCi0jaW5jbHVkZSAiV0tDb250ZXh0U291cC5oIgogI2luY2x1ZGUgIldLTnVtYmVy
LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2No
ZW1lX3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5jcHAKaW5kZXggOTg4Yjk5Ni4uZjU1NDg0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVf
cmVxdWVzdC5jcHAKQEAgLTMxLDE0ICszMSwxMyBAQAogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV0tVUkwuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogCiAjaW5jbHVkZSAiZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
LUV3a1VybFNjaGVtZVJlcXVlc3Q6OkV3a1VybFNjaGVtZVJlcXVlc3QoV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVl
c3QsIHVpbnQ2NF90IHJlcXVlc3RJRCkKLSAgICA6IG1fd2tSZXF1ZXN0TWFuYWdlcihtYW5hZ2Vy
KQorRXdrVXJsU2NoZW1lUmVxdWVzdDo6RXdrVXJsU2NoZW1lUmVxdWVzdChDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50
NjRfdCByZXF1ZXN0SUQpCisgICAgOiBtX3drUmVxdWVzdE1hbmFnZXIoJm1hbmFnZXIpCiAgICAg
LCBtX3JlcXVlc3RJRChyZXF1ZXN0SUQpCiB7CiAgICAgV0tVUkxSZWYgdXJsID0gdG9Db3BpZWRV
UkxBUEkodXJsUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOwpAQCAtNjksNiArNjgs
OSBAQCBjb25zdCBjaGFyKiBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpwYXRoKCkgY29uc3QKIAogdm9p
ZCBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpmaW5pc2goY29uc3Qgdm9pZCogY29udGVudERhdGEsIHVp
bnQ2NF90IGNvbnRlbnRMZW5ndGgsIGNvbnN0IGNoYXIqIG1pbWVUeXBlKQogeworICAgIGlmICgh
bV93a1JlcXVlc3RNYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKICAgICBXS1JldGFpblB0cjxX
S0RhdGFSZWY+IHdrRGF0YShBZG9wdFdLLCBXS0RhdGFDcmVhdGUoY29udGVudExlbmd0aCA/IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGNvbnRlbnREYXRhKSA6IDAsIGNv
bnRlbnRMZW5ndGgpKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNaW1lVHlwZSA9
IG1pbWVUeXBlID8gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhtaW1lVHlw
ZSkpIDogMDsKIApAQCAtNzYsMTAgKzc4LDE1IEBAIHZvaWQgRXdrVXJsU2NoZW1lUmVxdWVzdDo6
ZmluaXNoKGNvbnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50NjRfdCBjb250ZW50TGVuZ3RoCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgobV91cmwpKSwKICAgICAgICAgU3RyaW5nOjpmcm9t
VVRGOChtaW1lVHlwZSksIGNvbnRlbnRMZW5ndGgsIGVtcHR5U3RyaW5nKCkpOwogCi0gICAgdG9J
bXBsKG1fd2tSZXF1ZXN0TWFuYWdlci5nZXQoKSktPmRpZFJlY2VpdmVSZXNwb25zZShtX3JlcXVl
c3RJRCwgcmVzcG9uc2UpOwotICAgIHRvSW1wbChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5k
aWRMb2FkRGF0YShtX3JlcXVlc3RJRCwgdG9JbXBsKHdrRGF0YS5nZXQoKSkpOwotICAgIHRvSW1w
bChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVxdWVzdElE
KTsKLSAgICB0b0ltcGwobV93a1JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+c3RvcExvYWRpbmcobV9y
ZXF1ZXN0SUQpOworICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1f
cmVxdWVzdElELCByZXNwb25zZSk7CisgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0
YShtX3JlcXVlc3RJRCwgdG9JbXBsKHdrRGF0YS5nZXQoKSktPmRhdGFSZWZlcmVuY2UoKSk7Cisg
ICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVxdWVzdElEKTsKKyAg
ICBtX3drUmVxdWVzdE1hbmFnZXItPnN0b3BMb2FkaW5nKG1fcmVxdWVzdElEKTsKK30KKwordm9p
ZCBFd2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX3drUmVxdWVzdE1h
bmFnZXIgPSBudWxscHRyOwogfQogCiBjb25zdCBjaGFyKiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0
X3NjaGVtZV9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3Jl
cXVlc3RfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKaW5kZXggYTM5ODkyYi4uZjU5ZDU1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVx
dWVzdF9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKQEAgLTI2LDExICsyNiwxMSBAQAogI2lmbmRl
ZiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGVfaAogI2RlZmluZSBld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0X3ByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0Jhc2UuaCIKICNpbmNs
dWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgotI2lu
Y2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJl
d2tfb2JqZWN0X3ByaXZhdGUuaCIKIAogLyoqCkBAIC00MSw5ICs0MSw5IEBAIGNsYXNzIEV3a1Vy
bFNjaGVtZVJlcXVlc3QgOiBwdWJsaWMgRXdrT2JqZWN0IHsKIHB1YmxpYzoKICAgICBFV0tfT0JK
RUNUX0RFQ0xBUkUoRXdrVXJsU2NoZW1lUmVxdWVzdCkKIAotICAgIHN0YXRpYyBSZWZQdHI8RXdr
VXJsU2NoZW1lUmVxdWVzdD4gY3JlYXRlKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJSZWYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1
ZXN0SUQpCisgICAgc3RhdGljIFJlZlB0cjxFd2tVcmxTY2hlbWVSZXF1ZXN0PiBjcmVhdGUoV2Vi
S2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0
KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgewotICAgICAgICBpZiAoIW1h
bmFnZXIgfHwgIXVybFJlcXVlc3QpCisgICAgICAgIGlmICghdXJsUmVxdWVzdCkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrVXJs
U2NoZW1lUmVxdWVzdChtYW5hZ2VyLCB1cmxSZXF1ZXN0LCByZXF1ZXN0SUQpKTsKQEAgLTU2LDEw
ICs1NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZpbmlzaChjb25zdCB2b2lkKiBjb250ZW50
RGF0YSwgdWludDY0X3QgY29udGVudExlbmd0aCwgY29uc3QgY2hhciogbWltZVR5cGUpOwogCisg
ICAgV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogbWFuYWdlcigpIGNvbnN0IHsg
cmV0dXJuIG1fd2tSZXF1ZXN0TWFuYWdlcjsgfQorICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCiBw
cml2YXRlOgotICAgIEV3a1VybFNjaGVtZVJlcXVlc3QoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QsIHVpbnQ2
NF90IHJlcXVlc3RJRCk7CisgICAgRXdrVXJsU2NoZW1lUmVxdWVzdChXZWJLaXQ6OkN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3Qs
IHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAKLSAgICBXS1JldGFpblB0cjxXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyUmVmPiBtX3drUmVxdWVzdE1hbmFnZXI7CisgICAgV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogbV93a1JlcXVlc3RNYW5hZ2VyOwogICAgIFdLRWlu
YVNoYXJlZFN0cmluZyBtX3VybDsKICAgICB1aW50NjRfdCBtX3JlcXVlc3RJRDsKICAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgbV9zY2hlbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjJmMzE0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKKworI2luY2x1ZGUgIkFQ
SUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2NsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dCBmaW5hbCA6IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KFdlYktpdFdlYkNv
bnRleHQqIHdlYkNvbnRleHQpCisgICAgICAgIDogbV93ZWJDb250ZXh0KHdlYkNvbnRleHQpCisg
ICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Vi
a2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3Vz
dG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwgbWFuYWdlcik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHZvaWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Vi
a2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2wobV93ZWJDb250ZXh0LCBjdXN0
b21Qcm90b2NvbElEKTsKKyAgICB9CisKKyAgICB2b2lkIGludmFsaWRhdGUoQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICB3ZWJraXRX
ZWJDb250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMobV93ZWJDb250ZXh0LCBt
YW5hZ2VyKTsKKyAgICB9CisKKyAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7Cit9
OworCit2b2lkIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dChXZWJL
aXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQoreworICAgIGF1dG8qIHByb2Nlc3NQb29sID0gd2Vi
a2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpOworICAgIHByb2Nlc3NQb29s
LT5zZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuaApzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oCnJlbmFt
ZSB0byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuaAppbmRleCBhMzY1NTk0Li5jOWM0YzE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTE3LDExICsxNyw5IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFdlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKLSNk
ZWZpbmUgV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCiAKLXZvaWQgYXR0YWNoUmVxdWVzdE1hbmFnZXJDbGll
bnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCopOwordm9pZCBhdHRhY2hDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCopOwogCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAppbmRl
eCA3NWU4YzllLi5kMDcyYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSA8V2ViS2l0
L1dLSW5zcGVjdG9yQ2xpZW50R3RrLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+Ci0jaW5jbHVkZSA8
V2ViS2l0L1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5h
Z2VyQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkxODljOS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0
TWFuYWdlckNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgotCi0jaW5jbHVkZSAiV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotc3RhdGljIHZv
aWQgc3RhcnRMb2FkaW5nKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdD
dXN0b21Qcm90b2NvbChXRUJLSVRfV0VCX0NPTlRFWFQoY2xpZW50SW5mbyksIGN1c3RvbVByb3Rv
Y29sSUQsIHRvSW1wbChyZXF1ZXN0UmVmKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN0b3BMb2FkaW5n
KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgd2Via2l0V2ViQ29udGV4
dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV0VCS0lUX1dFQl9DT05URVhUKGNsaWVudEluZm8p
LCBjdXN0b21Qcm90b2NvbElEKTsKLX0KLQotdm9pZCBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVu
dFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQotewotICAgIFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50
ID0gewotICAgICAgICB7Ci0gICAgICAgICAgICAwLCAvLyB2ZXJzaW9uCi0gICAgICAgICAgICB3
ZWJDb250ZXh0IC8vIGNsaWVudEluZm8KLSAgICAgICAgfSwKLSAgICAgICAgc3RhcnRMb2FkaW5n
LAotICAgICAgICBzdG9wTG9hZGluZwotICAgIH07Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlclNldENsaWVudCh0b0FQSSh3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1h
bmFnZXIod2ViQ29udGV4dCkpLCAmd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5iYXNlKTsKLX0KLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
UklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCA4NzJhNTY0Li5hYmExYjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiAvKioKICAqIFNFQ1RJT046IFdlYktpdFVSSVNjaGVtZVJlcXVlc3QKQEAgLTU0LDcgKzU1LDcg
QEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBnUmVhZEJ1ZmZlclNpemUgPSA4MTkyOwogCiBz
dHJ1Y3QgX1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlIHsKICAgICBXZWJLaXRXZWJDb250
ZXh0KiB3ZWJDb250ZXh0OwotICAgIFJlZlB0cjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcj4gd2ViUmVxdWVzdE1hbmFnZXI7CisgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkqIG1hbmFnZXI7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gaW5pdGlhdGluZ1BhZ2U7CiAg
ICAgdWludDY0X3QgcmVxdWVzdElEOwogICAgIENTdHJpbmcgdXJpOwpAQCAtNzQsMjEgKzc1LDMx
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Q2xhc3MqKQogewogfQogCi1XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0
V2ViQ29udGV4dCogd2ViQ29udGV4dCwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0KQorV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdCogd2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRf
dCByZXF1ZXN0SUQsIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFu
YWdlcikKIHsKLSAgICBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1VS
SV9TQ0hFTUVfUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVVJJX1NDSEVNRV9SRVFV
RVNULCBOVUxMKSk7CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJ
VF9VUklfU0NIRU1FX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VSSV9TQ0hFTUVf
UkVRVUVTVCwgbnVsbHB0cikpOwogICAgIHJlcXVlc3QtPnByaXYtPndlYkNvbnRleHQgPSB3ZWJD
b250ZXh0OwotICAgIHJlcXVlc3QtPnByaXYtPndlYlJlcXVlc3RNYW5hZ2VyID0gd2Via2l0V2Vi
Q29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKHdlYkNvbnRleHQpOwotICAgIHJlcXVlc3QtPnByaXYt
PnVyaSA9IHVybFJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0Zjgo
KTsKLSAgICByZXF1ZXN0LT5wcml2LT5pbml0aWF0aW5nUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6
d2ViUGFnZSh1cmxSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5pbml0aWF0aW5nUGFnZUlEKCkp
OworICAgIHJlcXVlc3QtPnByaXYtPm1hbmFnZXIgPSAmbWFuYWdlcjsKKyAgICByZXF1ZXN0LT5w
cml2LT51cmkgPSByZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpOworICAgIHJl
cXVlc3QtPnByaXYtPmluaXRpYXRpbmdQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHJl
c291cmNlUmVxdWVzdC5pbml0aWF0aW5nUGFnZUlEKCkpOwogICAgIHJlcXVlc3QtPnByaXYtPnJl
cXVlc3RJRCA9IHJlcXVlc3RJRDsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAogdm9pZCB3ZWJr
aXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3Qp
CiB7Ci0gICAgaWYgKHJlcXVlc3QtPnByaXYtPmNhbmNlbGxhYmxlLmdldCgpKQotICAgICAgICBn
X2NhbmNlbGxhYmxlX2NhbmNlbChyZXF1ZXN0LT5wcml2LT5jYW5jZWxsYWJsZS5nZXQoKSk7Cisg
ICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwocmVxdWVzdC0+cHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCkp
OworfQorCitDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogd2Via2l0VVJJU2NoZW1lUmVxdWVz
dEdldE1hbmFnZXIoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICByZXR1
cm4gcmVxdWVzdC0+cHJpdi0+bWFuYWdlcjsKK30KKwordm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0SW52YWxpZGF0ZShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIHJl
cXVlc3QtPnByaXYtPm1hbmFnZXIgPSBudWxscHRyOworICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVl
c3RDYW5jZWwocmVxdWVzdCk7CiB9CiAKIC8qKgpAQCAtMTU5LDggKzE3MCwxNCBAQCBXZWJLaXRX
ZWJWaWV3KiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyhXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZQogc3RhdGljIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRD
YWxsYmFjayhHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogc2NoZW1lUmVxdWVzdCkKIHsKICAgICBHUmVmUHRyPFdl
YktpdFVSSVNjaGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYoc2NoZW1lUmVxdWVzdCk7
CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBnc3NpemUgYnl0ZXNSZWFk
ID0gZ19pbnB1dF9zdHJlYW1fcmVhZF9maW5pc2goaW5wdXRTdHJlYW0sIHJlc3VsdCwgJmVycm9y
Lm91dFB0cigpKTsKKyAgICBpZiAoIXByaXYtPm1hbmFnZXIpIHsKKyAgICAgICAgd2Via2l0V2Vi
Q29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBw
cml2LT5yZXF1ZXN0SUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKGJ5dGVz
UmVhZCA9PSAtMSkgewogICAgICAgICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9l
cnJvcihyZXF1ZXN0LmdldCgpLCBlcnJvci5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3
MSwyMiArMTg4LDIxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2Fs
bGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAgICAgaWYgKCFyZXF1ZXN0
LT5wcml2LT5zdHJlYW0pCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYktpdFVSSVNjaGVtZVJl
cXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKLSAgICBSZWY8QVBJOjpEYXRhPiB3
ZWJEYXRhID0gQVBJOjpEYXRhOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4ocHJpdi0+cmVhZEJ1ZmZlciksIGJ5dGVzUmVhZCk7CisgICAgYXV0byB3ZWJEYXRh
ID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBy
aXYtPnJlYWRCdWZmZXIpLCBieXRlc1JlYWQpOwogICAgIGlmICghcHJpdi0+Ynl0ZXNSZWFkKSB7
CiAgICAgICAgIC8vIEZpcnN0IGNodW5rIHJlYWQuIEluIGNhc2Ugb2YgZW1wdHkgcmVwbHkgYW4g
ZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQgdG8gdGhlIG5ldHdvcmtpbmcgcHJvY2Vzcy4KLSAgICAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVURjgo
cHJpdi0+bWltZVR5cGUuZGF0YSgpKSwKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVU
RjgocHJpdi0+bWltZVR5cGUuZGF0YSgpKSwKICAgICAgICAgICAgIHByaXYtPnN0cmVhbUxlbmd0
aCwgZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRS
ZWNlaXZlUmVzcG9uc2UocHJpdi0+cmVxdWVzdElELCByZXNwb25zZSk7Ci0gICAgICAgIHByaXYt
PndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEu
cHRyKCkpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2UocHJpdi0+
cmVxdWVzdElELCByZXNwb25zZSk7CisgICAgICAgIHByaXYtPm1hbmFnZXItPmRpZExvYWREYXRh
KHByaXYtPnJlcXVlc3RJRCwgd2ViRGF0YSk7CiAgICAgfSBlbHNlIGlmIChieXRlc1JlYWQgfHwg
KCFieXRlc1JlYWQgJiYgIXByaXYtPnN0cmVhbUxlbmd0aCkpIHsKICAgICAgICAgLy8gU3Vic2Vx
dWVudCBjaHVuayByZWFkLiBXZSBvbmx5IHNlbmQgYW4gZW1wdHkgQVBJOjpEYXRhIHRvIHRoZSBu
ZXR3b3JraW5nIHByb2Nlc3Mgd2hlbiBzdHJlYW0gbGVuZ3RoIGlzIHVua25vd24uCi0gICAgICAg
IHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdl
YkRhdGEucHRyKCkpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5y
ZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0KIAogICAgIGlmICghYnl0ZXNSZWFkKSB7Ci0gICAg
ICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRGaW5pc2hMb2FkaW5nKHJlcXVlc3QtPnBy
aXYtPnJlcXVlc3RJRCk7Ci0gICAgICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5n
Q3VzdG9tUHJvdG9jb2wocmVxdWVzdC0+cHJpdi0+d2ViQ29udGV4dCwgcmVxdWVzdC0+cHJpdi0+
cmVxdWVzdElEKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyhwcml2
LT5yZXF1ZXN0SUQpOworICAgICAgICB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1
c3RvbVByb3RvY29sKHByaXYtPndlYkNvbnRleHQsIHByaXYtPnJlcXVlc3RJRCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTIzOSw3ICsyNTUsNyBAQCB2b2lkIHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3Qs
IEdFcgogICAgICAgICByZXR1cm47CiAKICAgICBwcml2LT5zdHJlYW0gPSBudWxscHRyOwotICAg
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhl
cnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNvZGUpLCBXZWJDb3JlOjpVUkwo
cHJpdi0+c291cFVSSS5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsK
LSAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkRmFpbFdpdGhFcnJvcihwcml2LT5yZXF1
ZXN0SUQsIHJlc291cmNlRXJyb3IpOworICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNv
ZGUpLCBVUkwocHJpdi0+c291cFVSSS5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKTsKKyAgICBwcml2LT5tYW5hZ2VyLT5kaWRGYWlsV2l0aEVycm9yKHByaXYtPnJlcXVl
c3RJRCwgcmVzb3VyY2VFcnJvcik7CiAgICAgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRp
bmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0SUQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKaW5kZXggYzcyZmExOC4uNDdiYjhjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oCkBAIC0yMCwxMSArMjAsMTUgQEAKICNpZm5k
ZWYgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGVfaAogI2RlZmluZSBXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0UHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKLVdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtp
dFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXRXZWJDb250
ZXh0KiwgQVBJOjpVUkxSZXF1ZXN0Kik7CitXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiB3ZWJraXRV
UklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0V2ViQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYktpdDo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmKTsKIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdENhbmNlbChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Kik7CitXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0R2V0TWFuYWdlcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
Kik7Cit2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RJbnZhbGlkYXRlKFdlYktpdFVSSVNjaGVt
ZVJlcXVlc3QqKTsKIAogI2VuZGlmIC8vIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKaW5kZXggNzI1MzU1OS4uNzM4MzRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTIwLDYgKzIw
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0Lmgi
CiAKKyNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJBUElEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCkBAIC0zMCw2ICszMSw3
IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRDb29raWVNYW5hZ2VyUHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgog
I2luY2x1ZGUgIldlYktpdERvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxv
YWRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZS5oIgpA
QCAtMzgsNyArNDAsNiBAQAogI2luY2x1ZGUgIldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiV2ViS2l0UGx1Z2luUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZh
dGUuaCIKLSNpbmNsdWRlICJXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUg
IldlYktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRTZXR0aW5n
c1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oIgpA
QCAtMTE1LDEyICsxMTYsNiBAQCBlbnVtIHsKIAogY2xhc3MgV2ViS2l0VVJJU2NoZW1lSGFuZGxl
cjogcHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gewogcHVibGljOgot
ICAgIFdlYktpdFVSSVNjaGVtZUhhbmRsZXIoKQotICAgICAgICA6IG1fY2FsbGJhY2soMCkKLSAg
ICAgICAgLCBtX3VzZXJEYXRhKDApCi0gICAgICAgICwgbV9kZXN0cm95Tm90aWZ5KDApCi0gICAg
ewotICAgIH0KICAgICBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKFdlYktpdFVSSVNjaGVtZVJlcXVl
c3RDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ry
b3lOb3RpZnkpCiAgICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKICAgICAgICAgLCBtX3Vz
ZXJEYXRhKHVzZXJEYXRhKQpAQCAtMTQ3LDkgKzE0Miw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrIG1fY2FsbGJhY2s7Ci0g
ICAgdm9pZCogbV91c2VyRGF0YTsKLSAgICBHRGVzdHJveU5vdGlmeSBtX2Rlc3Ryb3lOb3RpZnk7
CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrIG1fY2FsbGJhY2sgeyBudWxscHRy
IH07CisgICAgdm9pZCogbV91c2VyRGF0YSB7IG51bGxwdHIgfTsKKyAgICBHRGVzdHJveU5vdGlm
eSBtX2Rlc3Ryb3lOb3RpZnkgeyBudWxscHRyIH07CiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gPiBVUklTY2hlbWVIYW5kbGVyTWFw
OwpAQCAtMTYyLDcgKzE1Nyw2IEBAIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewog
ICAgIEdSZWZQdHI8V2ViS2l0Q29va2llTWFuYWdlcj4gY29va2llTWFuYWdlcjsKICAgICBHUmVm
UHRyPFdlYktpdEZhdmljb25EYXRhYmFzZT4gZmF2aWNvbkRhdGFiYXNlOwogICAgIEdSZWZQdHI8
V2ViS2l0U2VjdXJpdHlNYW5hZ2VyPiBzZWN1cml0eU1hbmFnZXI7Ci0gICAgUmVmUHRyPFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiByZXF1ZXN0TWFuYWdlcjsKICAgICBVUklT
Y2hlbWVIYW5kbGVyTWFwIHVyaVNjaGVtZUhhbmRsZXJzOwogICAgIFVSSVNjaGVtZVJlcXVlc3RN
YXAgdXJpU2NoZW1lUmVxdWVzdHM7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQpAQCAtMjc1LDgg
KzI2OSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpCiAgICAgICAgIHBy
aXYtPndlYnNpdGVEYXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJDcmVhdGUod2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Gb3JXZWJQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikpKTsKIAotICAgIHByaXYtPnJlcXVlc3RNYW5hZ2Vy
ID0gcHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXI+KCk7Ci0KICAgICBwcml2LT50bHNFcnJvcnNQb2xpY3kgPSBXRUJLSVRfVExT
X0VSUk9SU19QT0xJQ1lfRkFJTDsKICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0SWdub3JlVExT
RXJyb3JzKGZhbHNlKTsKIApAQCAtMjg3LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBhdHRhY2hJbmplY3Rl
ZEJ1bmRsZUNsaWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKICAgICBhdHRhY2hEb3dubG9hZENs
aWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKLSAgICBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVu
dFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKKyAgICBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAg
ICAgcHJpdi0+Z2VvbG9jYXRpb25Qcm92aWRlciA9IFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6
OmNyZWF0ZShwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eT4oKSk7CkBAIC0zMDQsNiArMjk2LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29u
dGV4dERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogICAgICAgICBwcml2LT5jbGllbnRzRGV0YWNo
ZWQgPSB0cnVlOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+aW5pdGlhbGl6ZUluamVjdGVk
QnVuZGxlQ2xpZW50KG51bGxwdHIpOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0RG93
bmxvYWRDbGllbnQobnVsbHB0cik7CisgICAgICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobnVsbHB0cik7CiAgICAgfQogCiAgICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X3dlYl9jb250ZXh0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsK
QEAgLTg0OSw4ICs4NDIsOSBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlf
c2NoZW1lKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYQogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoY2FsbGJhY2spOwogCiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+
IGhhbmRsZXIgPSBhZG9wdFJlZihuZXcgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihjYWxsYmFjaywg
dXNlckRhdGEsIGRlc3Ryb3lOb3RpZnkpKTsKLSAgICBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVI
YW5kbGVycy5zZXQoU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpLCBoYW5kbGVyLmdldCgpKTsKLSAg
ICBjb250ZXh0LT5wcml2LT5yZXF1ZXN0TWFuYWdlci0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0g
Y29udGV4dC0+cHJpdi0+dXJpU2NoZW1lSGFuZGxlcnMuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2No
ZW1lKSwgaGFuZGxlci5nZXQoKSk7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkpOwogfQogCiAvKioKQEAgLTEyNjYsMTQg
KzEyNjAsOSBAQCBXZWJQcm9jZXNzUG9vbCogd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29s
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnBy
b2Nlc3NQb29sLmdldCgpOwogfQogCi1XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ciogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKFdlYktpdFdlYkNvbnRleHQqIGNv
bnRleHQpCi17Ci0gICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnJlcXVlc3RNYW5hZ2VyLmdldCgp
OwotfQotCi12b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0b21Qcm90b2NvbChX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBBUEk6
OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QpCit2b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRp
bmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCwgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpCiB7Ci0gICAgR1JlZlB0
cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVSSVNj
aGVtZVJlcXVlc3RDcmVhdGUoY3VzdG9tUHJvdG9jb2xJRCwgY29udGV4dCwgdXJsUmVxdWVzdCkp
OworICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1Jl
Zih3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKGN1c3RvbVByb3RvY29sSUQsIGNvbnRleHQs
IHJlc291cmNlUmVxdWVzdCwgbWFuYWdlcikpOwogICAgIFN0cmluZyBzY2hlbWUoU3RyaW5nOjpm
cm9tVVRGOCh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9zY2hlbWUocmVxdWVzdC5nZXQo
KSkpKTsKICAgICBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IGNvbnRl
eHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJzLmdldChzY2hlbWUpOwogICAgIEFTU0VSVChoYW5k
bGVyLmdldCgpKTsKQEAgLTEyOTIsNiArMTI4MSwxNiBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRT
dG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIHVpbnQ2
NAogICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwocmVxdWVzdC5nZXQoKSk7CiB9CiAK
K3ZvaWQgd2Via2l0V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQsIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5h
Z2VyKQoreworICAgIFZlY3RvcjxHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+PiByZXF1
ZXN0czsKKyAgICBjb3B5VmFsdWVzVG9WZWN0b3IoY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVx
dWVzdHMsIHJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0cykgewor
ICAgICAgICBpZiAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIocmVxdWVzdC5nZXQo
KSkgPT0gJm1hbmFnZXIpCisgICAgICAgICAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0SW52YWxp
ZGF0ZShyZXF1ZXN0LmdldCgpKTsKKyAgICB9Cit9CisKIHZvaWQgd2Via2l0V2ViQ29udGV4dERp
ZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewogICAgIGNvbnRleHQtPnByaXYtPnVyaVNjaGVt
ZVJlcXVlc3RzLnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCmlu
ZGV4IDdlZTk2YjEuLjYzZWIyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaApAQCAtMjYsMjEgKzI2
LDIyIEBACiAjaWZuZGVmIFdlYktpdFdlYkNvbnRleHRQcml2YXRlX2gKICNkZWZpbmUgV2ViS2l0
V2ViQ29udGV4dFByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIldl
YktpdFdlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUg
IldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCogd2Via2l0V2Vi
Q29udGV4dEdldFByb2Nlc3NQb29sKFdlYktpdFdlYkNvbnRleHQqKTsKIFdlYktpdERvd25sb2Fk
KiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkqKTsKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZChXZWJL
aXRXZWJDb250ZXh0KiwgY29uc3QgY2hhciogdXJpLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwog
dm9pZCB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZFByb3h5
Kik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQoV2ViS2l0V2ViQ29udGV4
dCosIFdlYktpdERvd25sb2FkKik7Ci1XZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyKiB3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1hbmFnZXIoV2ViS2l0V2ViQ29u
dGV4dCopOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2wo
V2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIEFQSTo6VVJMUmVx
dWVzdCopOwordm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2wo
V2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
KTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0
V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwordm9pZCB3ZWJraXRXZWJD
b250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMoV2ViS2l0V2ViQ29udGV4dCos
IFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmKTsKIHZvaWQgd2Via2l0V2ViQ29u
dGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiBib29sIHdlYmtpdFdlYkNvbnRleHRJc0xvYWRpbmdD
dXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCk7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJD
b250ZXh0KiwgV2ViS2l0V2ViVmlldyosIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdlYktp
dFdlYlZpZXcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmgKaW5kZXggYjM4NzVmMy4uNGM3NDNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKQEAgLTM0LDggKzM0LDE0IEBA
CiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CiAjZW5kaWYKIAorbmFtZXNwYWNl
IElQQyB7CitjbGFzcyBEYXRhUmVmZXJlbmNlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01MSw2ICs1NywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydExvYWRpbmcodWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgdm9pZCBzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKIAorICAgIHZv
aWQgcHJvY2Vzc0RpZENsb3NlKCk7CisKKyNpZiBVU0UoU09VUCkKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRpZEZhaWxXaXRo
RXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCmluZGV4IGFkNTNlOTguLjk3OWIwZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9t
YWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eU1hYy5tbQpAQCAtMTYwLDQgKzE2MCw4IEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiAgICAgbV9s
b2FkZXJNYXAucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOwogfQogCit2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoKQoreworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCmluZGV4IDA1OWY0NjUuLjNmYjM0NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHlTb3VwLmNwcApAQCAtMjAsMTMgKzIwLDE5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKIAorI2luY2x1
ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkNoaWxkUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKKyNp
ZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNHdGsuaD4KKyNlbGlmIFBM
QVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0VmbC5oPgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9jZXNzUHJveHkqIGNoaWxkUHJvY2Vzc1Byb3h5LCBX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCkBAIC00MiwxNCArNDgsNDAgQEAgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCiAgICAgbV9j
aGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAordm9pZCBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKK3sKKyAgICBtX3By
b2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRoaXMp
OworfQorCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcodWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIG1fcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcj4oKS0+c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQsIHJl
cXVlc3QpOworICAgIGlmICghbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3QpKQorICAg
ICAgICBkaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OmNhbm5vdFNo
b3dVUkxFcnJvcihyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiB7Ci0gICAgbV9wcm9j
ZXNzUG9vbC5zdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigp
LT5zdG9wTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKTsKKyAgICBtX3Byb2Nlc3NQb29sLmN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudCgpLnN0b3BMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2Nv
bElEKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIG1fY2hpbGRQcm9jZXNzUHJveHktPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKGN1c3RvbVBy
b3RvY29sSUQsIHJlc3BvbnNlLCAwKSwgMCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKGN1c3RvbVByb3Rv
Y29sSUQsIGRhdGEpLCAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6
ZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZEZhaWxXaXRoRXJyb3IoY3VzdG9t
UHJvdG9jb2xJRCwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTo6ZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQoreworICAg
IG1fY2hpbGRQcm9jZXNzUHJveHktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdl
cjo6RGlkRmluaXNoTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKSwgMCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiNjU1ZTQzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgotCi0jaW5j
bHVkZSAiQVBJRGF0YS5oIgotI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotCi0jaWYgUExBVEZPUk0oR1RLKQotI2lu
Y2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+Ci0jZWxpZiBQTEFURk9STShFRkwpCi0jaW5jbHVk
ZSA8V2ViQ29yZS9FcnJvcnNFZmwuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y29uc3QgY2hhciogV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnN1cHBsZW1l
bnROYW1lKCkKLXsKLSAgICByZXR1cm4gIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyIjsKLX0KLQotUmVmPFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG9vbCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcihwcm9jZXNzUG9vbCkpOwotfQotCi1XZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcjo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIo
V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQotICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQo
cHJvY2Vzc1Bvb2wpCi17Ci19Ci0KLVdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Ojp+V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIoKQotewotfQotCi12b2lkIFdl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjppbml0aWFsaXplQ2xpZW50KGNvbnN0
IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpCi17
Ci0gICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwotfQotCi0vLyBXZWJDb250ZXh0U3Vw
cGxlbWVudAotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cHJvY2Vz
c1Bvb2xEZXN0cm95ZWQoKQotewotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyOjpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKLXsKLX0KLQotdm9p
ZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKQotewotICAgIEFQSTo6T2JqZWN0OjpyZWYoKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCi17
Ci0gICAgQVBJOjpPYmplY3Q6OmRlcmVmKCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgQVNTRVJUKCFzY2hlbWUuaXNOdWxsKCkpOwotICAgIGlm
IChtX3JlZ2lzdGVyZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vz
c1Bvb2woKS0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOwotCi0gICAg
bV9yZWdpc3RlcmVkU2NoZW1lcy5hcHBlbmQoc2NoZW1lKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3Rv
Y29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+dW5yZWdpc3RlclNjaGVtZUZvckN1
c3RvbVByb3RvY29sKHNjaGVtZSk7Ci0KLSAgICBib29sIHJlbW92ZWQgPSBtX3JlZ2lzdGVyZWRT
Y2hlbWVzLnJlbW92ZUZpcnN0KHNjaGVtZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCBy
ZW1vdmVkKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6
c3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAoIW1fY2xpZW50LnN0YXJ0TG9hZGlu
Zyh0aGlzLCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSkKLSAgICAgICAgZGlkRmFpbFdpdGhF
cnJvcihjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IocmVxdWVz
dCkpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdG9w
TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQotewotICAgIG1fY2xpZW50LnN0b3BM
b2FkaW5nKHRoaXMsIGN1c3RvbVByb3RvY29sSUQpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17
Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNz
UG9vbCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRSZWNlaXZlUmVzcG9uc2UoY3VzdG9tUHJvdG9jb2xJRCwg
cmVzcG9uc2UsIDApLCAwKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6ZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgQVBJ
OjpEYXRhKiBkYXRhKQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkTG9hZERhdGEoY3VzdG9tUHJv
dG9jb2xJRCwgZGF0YS0+ZGF0YVJlZmVyZW5jZSgpKSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0g
ICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9v
bCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpEaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIGVycm9y
KSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRp
ZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKLXsKLSAgICBpZiAoIXBy
b2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPm5ldHdv
cmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OkRpZEZpbmlzaExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCksIDApOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2NDc3NTZlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlcl9oCi0KLSNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJDb250
ZXh0U3VwcGxlbWVudC5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLWNsYXNzIERhdGE7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Ci0KLWNsYXNzIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBs
ZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwotCi0gICAgc3RhdGljIFJlZjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4g
Y3JlYXRlKFdlYlByb2Nlc3NQb29sKik7Ci0gICAgdmlydHVhbCB+V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSopOwotCi0gICAgdm9p
ZCByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsK
LSAgICB2b2lkIHVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcm
IHNjaGVtZSk7Ci0KLSAgICB2b2lkIHN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIHN0b3BMb2Fk
aW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIHZvaWQgZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCwgY29uc3QgQVBJOjpEYXRhKik7Ci0gICAgdm9pZCBkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Ci0KLSAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Qcm90b2NvbHMo
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9Ci0KLSAgICB1c2luZyBBUEk6
Ok9iamVjdDo6cmVmOwotICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKLQotcHJpdmF0ZToK
LSAgICBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcihXZWJQcm9jZXNzUG9vbCop
OwotCi0gICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKLSAgICB2b2lkIHByb2Nlc3NQb29sRGVz
dHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1By
b3h5Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwotCi0g
ICAgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQgbV9jbGllbnQ7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gbV9yZWdpc3RlcmVkU2NoZW1lczsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGRlZjYyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50LmgiCi0KLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5o
IgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotYm9vbCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlckNsaWVudDo6c3RhcnRMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyKiBzb3VwUmVxdWVzdE1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAoIW1f
Y2xpZW50LnN0YXJ0TG9hZGluZykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVmPEFQ
STo6VVJMUmVxdWVzdD4gdXJsUmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlcXVl
c3QpOwotICAgIG1fY2xpZW50LnN0YXJ0TG9hZGluZyh0b0FQSShzb3VwUmVxdWVzdE1hbmFnZXIp
LCBjdXN0b21Qcm90b2NvbElELCB0b0FQSSh1cmxSZXF1ZXN0LnB0cigpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcoV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIqIHNvdXBSZXF1ZXN0TWFuYWdlciwgdWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCkKLXsKLSAgICBpZiAobV9jbGllbnQuc3RvcExvYWRpbmcpCi0gICAgICAgIG1f
Y2xpZW50LnN0b3BMb2FkaW5nKHRvQVBJKHNvdXBSZXF1ZXN0TWFuYWdlciksIGN1c3RvbVByb3Rv
Y29sSUQsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlYmIyMjEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9oCi0jZGVmaW5lIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKLQotI2luY2x1ZGUgIkFQSUNsaWVudC5oIgot
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IENs
aWVudFRyYWl0czxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZT4g
ewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyQ2xpZW50VjA+IFZlcnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI7Ci0KLWNsYXNzIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgYm9v
bCBzdGFydExvYWRpbmcoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqLCB1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
LSAgICB2b2lkIHN0b3BMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYjk5MWI3YS4uODhjY2NhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTIxOSw2ICsyMTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpCiB7CiAgICAgaWYgKG1fZG93bmxvYWRQcm94eU1hcCkKICAgICAg
ICAgbV9kb3dubG9hZFByb3h5TWFwLT5wcm9jZXNzRGlkQ2xvc2UoKTsKKyAgICBtX2N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5LnByb2Nlc3NEaWRDbG9zZSgpOwogCiAgICAgbV90b2tlbkZvckhv
bGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGIwZmI3ZGMuLmY4MTUxMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElBdXRvbWF0aW9uQ2xpZW50LmgiCisj
aW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCkBAIC05MCwxMCArOTEsNiBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2VuZGlmCiAK
LSNpZiBVU0UoU09VUCkKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5oIgotI2VuZGlmCi0KICNpZiBPUyhMSU5VWCkKICNpbmNsdWRlICJNZW1vcnlQcmVzc3Vy
ZU1vbml0b3IuaCIKICNlbmRpZgpAQCAtMTU3LDYgKzE1NCw5IEBAIFdlYlByb2Nlc3NQb29sOjpX
ZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikKICAgICAsIG1fYXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21h
dGlvbkNsaWVudD4oKSkKICAgICAsIG1fZG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkRvd25sb2FkQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKKyNpZiBVU0UoU09VUCkK
KyAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCisjZW5kaWYKICAgICAsIG1fdmlzaXRl
ZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICAgICAsIG1fdmlzaXRlZExp
bmtzUG9wdWxhdGVkKGZhbHNlKQogICAgICwgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlcih0aGlz
KQpAQCAtMTY1LDkgKzE2NSw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fbWVtb3J5
U2FtcGxlckVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX21lbW9yeVNhbXBsZXJJbnRlcnZhbCgxNDAw
LjApCiAgICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUobV9jb25maWd1cmF0aW9uLT5zaG91bGRIYXZl
TGVnYWN5RGF0YVN0b3JlKCkgPyBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShsZWdhY3lX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKS5wdHIoKSA6IG51
bGxwdHIpCi0jaWYgVVNFKFNPVVApCi0gICAgLCBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9s
aWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbikKLSNl
bmRpZgogICAgICwgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oZmFsc2UpCiAgICAg
LCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQodHJ1ZSkKICAgICAsIG1fY2FuSGFuZGxlSFRU
UFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24odHJ1ZSkKQEAgLTE5Nyw5ICsxOTQsNiBAQCBXZWJQcm9j
ZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCiAgICAgYWRkU3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7
CiAgICAgYWRkU3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKICAgICBh
ZGRTdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKTsKLSNpZiBVU0UoU09V
UCkKLSAgICBhZGRTdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
PigpOwotI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAgICAgYWRkU3VwcGxlbWVu
dDxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+KCk7CiAjZW5kaWYKQEAgLTI5OSw2ICsyOTMs
MTYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PgogICAgICAgICBtX2F1dG9tYXRpb25DbGllbnQg
PSBXVEZNb3ZlKGF1dG9tYXRpb25DbGllbnQpOwogfQogCisjaWYgVVNFKFNPVVApCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PiBjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQpCit7CisgICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpCisgICAg
ICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKKyAgICBlbHNlCisgICAgICAgIG1fY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQpOworfQorI2VuZGlmCisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1i
ZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMpCiB7CiAgICAg
Ly8gR3VhcmQgYWdhaW5zdCBBUEkgbWlzdXNlLgpAQCAtMTM2NCwxMSArMTM2OCwxNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50
cmllc0FkZGVkQWZ0ZXJUaW1lKAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogeworI2lmIFVTRShTT1VQ
KQorICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYWRkKHNjaGVt
ZSk7CisjZW5kaWYKICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpSZWdpc3RlclNjaGVtZShzY2hlbWUpKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKQogeworI2lmIFVTRShTT1VQKQorICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRG
b3JDdXN0b21Qcm90b2NvbHMucmVtb3ZlKHNjaGVtZSk7CisjZW5kaWYKICAgICBzZW5kVG9OZXR3
b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpVbnJlZ2lzdGVy
U2NoZW1lKHNjaGVtZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCmluZGV4IGZjZGU5YTAuLmQ1ZTRiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03MCw2ICs3MCw3IEBAIE9CSkNfQ0xBU1MgTlNTdHJpbmc7
CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKK2NsYXNzIEN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKQEAgLTEz
NSw2ICsxMzYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Pik7CiAgICAgdm9pZCBzZXRE
b3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOwogICAg
IHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9u
Q2xpZW50Pik7CisjaWYgVVNFKFNPVVApCisgICAgdm9pZCBzZXRDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
Pik7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2ln
bmVkKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBy
dW5uaW5nLgogICAgIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsg
cmV0dXJuICFtX2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/IFVJTlRfTUFY
IDogbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0KQEAgLTIyNSw2ICsy
MjksMTAgQEAgcHVibGljOgogICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQmIGhp
c3RvcnlDbGllbnQoKSB7IHJldHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAgV2ViQ29udGV4
dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAorI2lmIFVTRShTT1VQKQor
ICAgIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50JiBjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7
IH0KKyNlbmRpZgorCiAgICAgV2ViSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2UoKSBjb25zdCB7
IHJldHVybiBtX2ljb25EYXRhYmFzZS5nZXQoKTsgfQogCiAgICAgc3RydWN0IFN0YXRpc3RpY3Mg
ewpAQCAtNDU1LDYgKzQ2Myw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6
QXV0b21hdGlvbkNsaWVudD4gbV9hdXRvbWF0aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkRvd25sb2FkQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PiBtX2hpc3RvcnlDbGllbnQ7Cisj
aWYgVVNFKFNPVVApCisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50PiBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsKKyNlbmRpZgogCiAgICAg
UmVmUHRyPFdlYkF1dG9tYXRpb25TZXNzaW9uPiBtX2F1dG9tYXRpb25TZXNzaW9uOwogCkBAIC00
OTksNyArNTEwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudE1hcCBtX3N1
cHBsZW1lbnRzOwogCiAjaWYgVVNFKFNPVVApCi0gICAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBt
X2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5OworICAgIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeSB7IEhUVFBDb29raWVBY2NlcHRQb2xp
Y3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB9OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCkBAIC01MzAsNiArNTQxLDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShTT1VQKQogICAgIGJv
b2wgbV9pZ25vcmVUTFNFcnJvcnMgeyB0cnVlIH07CisgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4gbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29sczsKICNlbmRpZgogCiAgICAgYm9vbCBtX21lbW9yeUNhY2hlRGlzYWJsZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRF
ZmwuY3BwCmluZGV4IGI5YTY1N2YuLjMzNmMyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCkBAIC0yNiw1
MiArMjYsNTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbC5oIgogCisjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmgiCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9w
cml2YXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgaW5saW5lIFJlcXVlc3RN
YW5hZ2VyQ2xpZW50RWZsKiB0b1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlcXVlc3RNYW5hZ2VyQ2xpZW50
RWZsKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotfQotCi1SZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwoV0tDb250ZXh0UmVmIGNvbnRleHQp
Ci17Ci0gICAgbV9yZXF1ZXN0TWFuYWdlciA9IHRvQVBJKHRvSW1wbChjb250ZXh0KS0+c3VwcGxl
bWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKSk7Ci0gICAgQVNTRVJU
KG1fcmVxdWVzdE1hbmFnZXIpOworY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwqIGNsaWVudCkKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgeworICAg
IH0KIAotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB3a1Jl
cXVlc3RNYW5hZ2VyQ2xpZW50OwotICAgIG1lbXNldCgmd2tSZXF1ZXN0TWFuYWdlckNsaWVudCwg
MCwgc2l6ZW9mKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCkpOwor
cHJpdmF0ZToKKyAgICBib29sIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QpIG92ZXJyaWRlCisgICAgeworICAgICAgICBSZWZQdHI8RXdr
VXJsU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IEV3a1VybFNjaGVtZVJlcXVlc3Q6OmNyZWF0ZSht
YW5hZ2VyLCB0b0FQSShBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNwb25zZSkucHRyKCkpLCBj
dXN0b21Qcm90b2NvbElEKTsKKyAgICAgICAgU3RyaW5nIHNjaGVtZShTdHJpbmc6OmZyb21VVEY4
KHJlcXVlc3QuZ2V0KCktPnNjaGVtZSgpKSk7CisgICAgICAgIFJlZlB0cjxXZWJLaXRVUklTY2hl
bWVIYW5kbGVyPiBoYW5kbGVyID0gKG1fY2xpZW50LT5tX3VyaVNjaGVtZUhhbmRsZXJzKS5nZXQo
c2NoZW1lKTsKKyAgICAgICAgQVNTRVJUKGhhbmRsZXIuZ2V0KCkpOworICAgICAgICBpZiAoIWhh
bmRsZXItPmhhc0NhbGxiYWNrKCkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICB3a1JlcXVl
c3RNYW5hZ2VyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgd2tSZXF1ZXN0TWFuYWdlckNs
aWVudC5iYXNlLmNsaWVudEluZm8gPSB0aGlzOwotICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQu
c3RhcnRMb2FkaW5nID0gc3RhcnRMb2FkaW5nOwotICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQu
c3RvcExvYWRpbmcgPSBzdG9wTG9hZGluZzsKKyAgICAgICAgKG1fY2xpZW50LT5tX3VyaVNjaGVt
ZVJlcXVlc3RzKS5zZXQoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCk7CisgICAgICAgIGhhbmRs
ZXItPnBlcmZvcm1DYWxsYmFjayhyZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQogCi0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclNldENsaWVu
dChtX3JlcXVlc3RNYW5hZ2VyLmdldCgpLCAmd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5iYXNlKTsK
LX0KKyAgICB2b2lkIHN0b3BMb2FkaW5nKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIChtX2NsaWVu
dC0+bV91cmlTY2hlbWVSZXF1ZXN0cykucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOworICAgIH0K
IAotdm9pZCBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6c3RhcnRMb2FkaW5nKFdLU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Ci17Ci0gICAgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwqIGNsaWVudCA9IHRvUmVxdWVzdE1hbmFn
ZXJDbGllbnRFZmwoY2xpZW50SW5mbyk7Ci0gICAgUmVmUHRyPEV3a1VybFNjaGVtZVJlcXVlc3Q+
IHJlcXVlc3QgPSBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpjcmVhdGUobWFuYWdlciwgdG9JbXBsKHJl
cXVlc3RSZWYpLCBjdXN0b21Qcm90b2NvbElEKTsKLSAgICBTdHJpbmcgc2NoZW1lKFN0cmluZzo6
ZnJvbVVURjgocmVxdWVzdC5nZXQoKS0+c2NoZW1lKCkpKTsKLSAgICBSZWZQdHI8V2ViS2l0VVJJ
U2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IChjbGllbnQtPm1fdXJpU2NoZW1lSGFuZGxlcnMpLmdl
dChzY2hlbWUpOwotICAgIEFTU0VSVChoYW5kbGVyLmdldCgpKTsKLSAgICBpZiAoIWhhbmRsZXIt
Pmhhc0NhbGxiYWNrKCkpCi0gICAgICAgIHJldHVybjsKKyAgICB2b2lkIGludmFsaWRhdGUoQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBWZWN0b3I8UmVmUHRyPEV3a1VybFNjaGVtZVJlcXVlc3Q+PiByZXF1ZXN0czsKKyAgICAgICAg
Y29weVZhbHVlc1RvVmVjdG9yKG1fY2xpZW50LT5tX3VyaVNjaGVtZVJlcXVlc3RzLCByZXF1ZXN0
cyk7CisgICAgICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IHJlcXVlc3RzKSB7CisgICAgICAgICAg
ICBpZiAocmVxdWVzdC0+bWFuYWdlcigpID09ICZtYW5hZ2VyKSB7CisgICAgICAgICAgICAgICAg
cmVxdWVzdC0+aW52YWxpZGF0ZSgpOworICAgICAgICAgICAgICAgIHN0b3BMb2FkaW5nKG1hbmFn
ZXIsIHJlcXVlc3QtPmlkKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogCi0g
ICAgKGNsaWVudC0+bV91cmlTY2hlbWVSZXF1ZXN0cykuc2V0KGN1c3RvbVByb3RvY29sSUQsIHJl
cXVlc3QpOwotICAgIGhhbmRsZXItPnBlcmZvcm1DYWxsYmFjayhyZXF1ZXN0LmdldCgpKTsKLX0K
KyAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogbV9jbGllbnQ7Cit9OwogCi12b2lkIFJlcXVl
c3RNYW5hZ2VyQ2xpZW50RWZsOjpzdG9wTG9hZGluZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyUmVmIG1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCitSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6UmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwoV0tDb250ZXh0UmVmIGNvbnRleHQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1hbmFn
ZXIpOwotCi0gICAgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwqIGNsaWVudCA9IHRvUmVxdWVzdE1h
bmFnZXJDbGllbnRFZmwoY2xpZW50SW5mbyk7Ci0gICAgKGNsaWVudC0+bV91cmlTY2hlbWVSZXF1
ZXN0cykucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOworICAgIG1fcHJvY2Vzc1Bvb2wgPSB0b0lt
cGwoY29udGV4dCk7CisgICAgbV9wcm9jZXNzUG9vbC0+c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Pih0aGlz
KSk7CiB9CiAKIHZvaWQgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OnJlZ2lzdGVyVVJMU2NoZW1l
SGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYiBj
YWxsYmFjaywgdm9pZCogdXNlckRhdGEpCkBAIC03OSw4ICs4Niw5IEBAIHZvaWQgUmVxdWVzdE1h
bmFnZXJDbGllbnRFZmw6OnJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihjb25zdCBTdHJpbmcmIHNj
aGVtZSwgRXdrCiAgICAgQVNTRVJUKGNhbGxiYWNrKTsKIAogICAgIFJlZlB0cjxXZWJLaXRVUklT
Y2hlbWVIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHRSZWYobmV3IFdlYktpdFVSSVNjaGVtZUhhbmRs
ZXIoY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgbV91cmlTY2hlbWVIYW5kbGVycy5zZXQoc2No
ZW1lLCBoYW5kbGVyKTsKLSAgICB0b0ltcGwobV9yZXF1ZXN0TWFuYWdlci5nZXQoKSktPnJlZ2lz
dGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woc2NoZW1lKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fdXJpU2NoZW1lSGFuZGxlcnMuc2V0KHNjaGVtZSwgaGFuZGxlcik7CisgICAgaWYgKGFkZFJl
c3VsdC5pc05ld0VudHJ5KQorICAgICAgICBtX3Byb2Nlc3NQb29sLT5yZWdpc3RlclNjaGVtZUZv
ckN1c3RvbVByb3RvY29sKHNjaGVtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbC5oCmluZGV4IDg3ZDM2MGUuLjFkMjk4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmgKQEAgLTI3LDcgKzI3
LDYgQEAKICNkZWZpbmUgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmxfaAogCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tf
dXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaCIKIApAQCAtNzksMTAgKzc4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYgc2NoZW1l
LCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrLCB2b2lkKiB1c2VyRGF0YSk7CiAK
IHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQgc3RhcnRMb2FkaW5nKFdLU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVx
dWVzdFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQgc3RvcExv
YWRpbmcoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiwgdWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0KLSAgICBXS1JldGFpblB0
cjxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmPiBtX3JlcXVlc3RNYW5hZ2Vy
OworICAgIFdlYlByb2Nlc3NQb29sKiBtX3Byb2Nlc3NQb29sOwogICAgIFVSSVNjaGVtZUhhbmRs
ZXJNYXAgbV91cmlTY2hlbWVIYW5kbGVyczsKICAgICBVUklTY2hlbWVSZXF1ZXN0TWFwIG1fdXJp
U2NoZW1lUmVxdWVzdHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlByb2Nlc3NQb29sRWZsLmNwcAppbmRleCAzZjI2NDBlLi5mZmEyZDUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNwcApAQCAt
MzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVz
c2FnZXMuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5o
IgogI2luY2x1ZGUgPEVmcmVldC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAppbmRleCA4
MTk3ZmQzLi40MTBhOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYlByb2Nlc3NQb29sR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYlByb2Nlc3NQb29sR3RrLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIldlYklu
c3BlY3RvclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcAppbmRleCBkNWRiMjQ0Li45M2E3YzBiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291
cC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGFuZ3VhZ2UuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MCw3ICszOSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhCiAgICAgcGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3kgPSBtX2luaXRpYWxIVFRQQ29v
a2llQWNjZXB0UG9saWN5OwogICAgIHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3JzID0gbV9pZ25v
cmVUTFNFcnJvcnM7CiAgICAgcGFyYW1ldGVycy5sYW5ndWFnZXMgPSBXZWJDb3JlOjp1c2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKCk7Ci0gICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZv
ckN1c3RvbVByb3RvY29scyA9IHN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXI+KCktPnJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9jb2xzKCk7CisgICAg
Zm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9t
UHJvdG9jb2xzKQorICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3Vz
dG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxl
TmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nID0gZmFsc2U7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295155</attachid>
            <date>2016-11-18 08:42:56 -0800</date>
            <delta_ts>2016-11-18 08:48:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-custom-protocols-soup.diff</filename>
            <type>text/plain</type>
            <size>83047</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0Yjg5MTk0Li5hMzNhYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsOTIg
QEAKIDIwMTYtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtTT1VQXSBTaW1wbGlmeSBjdXN0b20gcHJvdG9jb2xzIGhhbmRsZXIgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDkyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGFyZSB1c2luZyB0b28gbWFueSBjbGFzc2VzIGZvciB0aGlzIGFuZCBhbHNvIHRoZSBD
IEFQSSB0aGF0IGlzIG5vdCBuZWVkZWQsIGJlY2F1c2UgYm90aCBHVEsrIGFuZCBFRkwgaGF2ZQor
ICAgICAgICB0aGVpciBvd24gQVBJcyBhbmQgdGhpcyBpcyBub3QgdXNlZCBieSBXVFIgYXQgYWxs
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IFJlbW92ZSBmaWxlcyBmcm9tIGNvbXBp
bGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBT
aGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNl
U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoQVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgIChB
UEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcpOgorICAgICAgICAo
QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OmludmFsaWRhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
c291cC9XS0FQSUNhc3RTb3VwLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tDb250ZXh0U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1Nv
dXBSZXF1ZXN0TWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcDogUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHA6IFVzZSBDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSBpbnN0ZWFkIG9mIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYuCisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjpFd2tVcmxTY2hlbWVSZXF1
ZXN0KToKKyAgICAgICAgKEV3a1VybFNjaGVtZVJlcXVlc3Q6OmZpbmlzaCk6CisgICAgICAgIChF
d2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a1VybFNj
aGVtZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjptYW5h
Z2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKGF0dGFjaEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcDogVXNlIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGluc3RlYWQgb2YgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuCisgICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwpOgorICAg
ICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIpOgorICAgICAgICAod2Via2l0
VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUpOgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVx
dWVzdFJlYWRDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zp
bmlzaF9lcnJvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6CisgICAg
ICAgICh3ZWJraXRXZWJDb250ZXh0RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRl
eHRfcmVnaXN0ZXJfdXJpX3NjaGVtZSk6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0U3RhcnRM
b2FkaW5nQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dEludmFsaWRh
dGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOiBJ
bnZhbGlkYXRlIHRoZSBjbGllbnQuCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5OjpzdGFydExvYWRpbmcpOiBOb3RpZnkgdGhlIGNsaWVudC4KKyAgICAgICAgKFdl
YktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVz
cG9uc2UpOiBOb3RpZnkgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZExvYWREYXRhKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGYWlsV2l0aEVycm9yKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGaW5p
c2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZENsb3NlKTogTm90aWZ5IHRoZSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOiBJbml0aWFsaXplIHRoZSBDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQgYW5kIHJlbW92ZSB0aGUgYWxsIHN1cHBsZW1lbnQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbCk6IEluIGNhc2Ugb2Ygc291cCBjYWNoZSB0aGUgZ2l2ZW4gcHJvdG9jb2wu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2wpOiBJbiBjYXNlIG9mIHNvdXAgZGVsZXRlIHRoZSBnaXZlbiBwcm90b2NvbCBm
cm9tIHRoZSBjYWNoZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcDogRG8gbm90
IHVzZSB0aGUgQyBBUEksIGJ1dCBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC4KKyAg
ICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OlJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OnJlZ2lz
dGVyVVJMU2NoZW1lSGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFu
YWdlckNsaWVudEVmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xF
ZmwuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyk6IFVzZSBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzIHRvCisgICAg
ICAgIGJ1aWxkIHRoZSBsaXN0IG9mIGN1c3RvbSBwcm90b2NvbHMgdG8gc2VuZCB0byB0aGUgbmV0
d29yayBwcm9jZXNzLgorCisyMDE2LTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBSZW1vdmUgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSBmcm9tIFdlYlByb2Nlc3NQcm94eQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTA4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
NmU3N2VlNi4uOTk0NGFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTc2LDcgKzc2
LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS1ZpZXdFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tpZU1hbmFn
ZXJTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcAogCkBAIC0xMzEsOCArMTMwLDYgQEAgbGlzdChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1
bmNoZXJFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291
cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nlc3Mv
UGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCiAgICAgVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtMjU2LDYgKzI1Myw3IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElS
fS9TaGFyZWQvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vU2hhcmVkL3VuaXgiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9jYWlybyIKICAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9lZmwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
CmluZGV4IDlmZDJkMTYuLjU5NTRiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0x
MDEsNyArMTAxLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNz
L0FQSS9DL2d0ay9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tp
ZU1hbmFnZXJTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9BUElXZWJz
aXRlRGF0YVN0b3JlR3RrLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcApAQCAtMTM0LDYgKzEzMyw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlLmgKICAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDcmVkZW50aWFsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENyZWRlbnRpYWwuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERl
ZmluZXMuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmgKQEAgLTIxMCw4ICsyMTEsNiBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmlu
dE9wZXJhdGlvblByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCi0gICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCi0gICAgVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUuaApAQCAtMjgzLDggKzI4Miw2IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVz
c3VyZU1vbml0b3IuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
c291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCi0gICAgVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXIuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nl
c3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgKaW5kZXggOTQ4ZTE2MC4uMzJmYmM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0Jhc2UuaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNl
R3RrLmg+CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoVVNFX1NPVVApCi0jaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZVNvdXAuaD4KLSNlbmRpZgotCiAjaWYgZGVmaW5lZChCVUlMRElOR19FRkxfXykKICNp
bmNsdWRlIDxXZWJLaXQvV0tCYXNlRWZsLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjAwZjA4NS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mvc291
cC9XS0Jhc2VTb3VwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tCYXNlU291
cF9oCi0jZGVmaW5lIFdLQmFzZVNvdXBfaAotCi0jaWZuZGVmIFdLQmFzZV9oCi0jZXJyb3IgIlBs
ZWFzZSAjaW5jbHVkZSBcIldLQmFzZS5oXCIgaW5zdGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHku
IgotI2VuZGlmCi0KLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU291cFJlcXVlc3RNYW5h
Z2VyKiBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZjsKLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIFdLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJSZWY7Ci0KLSNlbmRpZiAvKiBXS0Jhc2VTb3VwX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50LmgKc2ltaWxhcml0eSBpbmRleCA2OCUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCmluZGV4IDJk
ZjYzZjIuLjUxZTE4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLQVBJQ2FzdFNvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChD
KSAyMDE2IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDE5ICsyMywyOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgV0tBUElDYXN0U291cF9oCi0jZGVmaW5lIFdLQVBJQ2FzdFNvdXBfaAorI3ByYWdt
YSBvbmNlCiAKLSNpZm5kZWYgV0tBUElDYXN0X2gKLSNlcnJvciAiUGxlYXNlICNpbmNsdWRlIFwi
V0tBUElDYXN0LmhcIiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCi0jZW5kaWYKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OworfQogCi1jbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlcjsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlUmVxdWVz
dDsKK30KIAotV0tfQUREX0FQSV9NQVBQSU5HKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYsIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKQorbmFtZXNwYWNl
IEFQSSB7CiAKLX0KK2NsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkgeyB9CisKKyAgICB2
aXJ0dWFsIGJvb2wgc3RhcnRMb2FkaW5nKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkmLCB1aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzdG9wTG9h
ZGluZyhXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3Vz
dG9tUHJvdG9jb2xJRCAqLykgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShXZWJL
aXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JikgeyB9Cit9OwogCi0jZW5kaWYgLy8gV0tB
UElDYXN0U291cF9oCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCA3YjRhNGQ1Li5mN2YzYTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC01NTIsMTAgKzU1Miw2IEBAIGlu
bGluZSBQcm94eWluZ1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiB0b0FQSShjb25zdCBXZWJDb3Jl
OjpHcmFtbWFyRGV0YWlsJiBncmFtCiAjaW5jbHVkZSAiV0tBUElDYXN0R3RrLmgiCiAjZW5kaWYK
IAotI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIldLQVBJQ2FzdFNvdXAuaCIKLSNlbmRpZgotCiAj
aWYgZGVmaW5lZChCVUlMRElOR19FRkxfXykKICNpbmNsdWRlICJXS0FQSUNhc3RFZmwuaCIKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tD
b250ZXh0U291cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250
ZXh0U291cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDQyZjM5Li4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0NvbnRleHRTb3VwX2gKLSNkZWZp
bmUgV0tDb250ZXh0U291cF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0jaW5jbHVk
ZSA8V2ViS2l0L1dLU291cFJlcXVlc3RNYW5hZ2VyLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwot
ZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLU291cFJlcXVlc3RNYW5hZ2VyUmVm
IFdLQ29udGV4dEdldFNvdXBSZXF1ZXN0TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7Ci0K
LSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS0NvbnRleHRTb3Vw
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ZDM2ZjYuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCi0KLSNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCkKLXsKLSAgICByZXR1cm4g
dG9BUEkoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OkFQSVR5cGUpOwotfQot
Ci12b2lkIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIGNv
bnN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiB3a0NsaWVu
dCkKLXsKLSAgICB0b0ltcGwoc291cFJlcXVlc3RNYW5hZ2VyUmVmKS0+aW5pdGlhbGl6ZUNsaWVu
dCh3a0NsaWVudCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMmE3NjIuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyX2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lm
ZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKCpX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU3RhcnRMb2FkaW5nQ2FsbGJhY2spKFdL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgc291cE1hbmFnZXJSZWYsIHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXJTdG9wTG9hZGluZ0NhbGxiYWNrKShXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyUmVmIHNvdXBNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZv
aWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZv
OwotfSBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZTsKLQotdHlw
ZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwIHsK
LSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAg
ICAgYmFzZTsKLQotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTdGFydExv
YWRpbmdDYWxsYmFjayBzdGFydExvYWRpbmc7Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlclN0b3BMb2FkaW5nQ2FsbGJhY2sgIHN0b3BMb2FkaW5nOwotfSBXS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjA7Ci0KLVdLX0VYUE9SVCBXS1R5cGVJRCBX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9S
VCB2b2lkIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLQotI2VuZGlmIC8qIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3Vw
UmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cFJlcXVlc3RNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2Njdl
ZGUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tT
b3VwUmVxdWVzdE1hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS1Nv
dXBSZXF1ZXN0TWFuYWdlcl9oCi0jZGVmaW5lIFdLU291cFJlcXVlc3RNYW5hZ2VyX2gKLQotI2lu
Y2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMi
IHsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKCpXS1NvdXBSZXF1ZXN0TWFuYWdlckRpZFJlY2Vp
dmVVUklSZXF1ZXN0Q2FsbGJhY2spKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0
TWFuYWdlclJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS1BhZ2VSZWYgcGFnZVJlZiwgdWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLU291
cFJlcXVlc3RNYW5hZ2VyRGlkRmFpbFRvTG9hZFVSSVJlcXVlc3RDYWxsYmFjaykoV0tTb3VwUmVx
dWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotCi10eXBlZGVmIHN0cnVjdCBXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotfSBXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2U7Ci0KLXR5cGVkZWYgc3RydWN0IFdLU291cFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50VjAgewotICAgIFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAgICAg
ICAgICAgICAgICBiYXNlOwotCi0gICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRSZWNlaXZlVVJJ
UmVxdWVzdENhbGxiYWNrICAgIGRpZFJlY2VpdmVVUklSZXF1ZXN0OwotICAgIFdLU291cFJlcXVl
c3RNYW5hZ2VyRGlkRmFpbFRvTG9hZFVSSVJlcXVlc3RDYWxsYmFjayBkaWRGYWlsVG9Mb2FkVVJJ
UmVxdWVzdDsKLX0gV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRWMDsKLQotV0tfRVhQT1JUIFdL
VHlwZUlEIFdLU291cFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9SVCB2b2lk
IFdLU291cFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBj
b25zdCBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqIGNsaWVudCk7Ci1XS19FWFBPUlQg
dm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZ2lzdGVyVVJJU2NoZW1lKFdLU291cFJlcXVlc3RN
YW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBzY2hlbWVSZWYpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3Vw
UmVxdWVzdE1hbmFnZXJEaWRIYW5kbGVVUklSZXF1ZXN0KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVm
LCBXS0RhdGFSZWYsIHVpbnQ2NF90IGNvbnRlbnRMZW5ndGgsIFdLU3RyaW5nUmVmIG1pbWVUeXBl
UmVmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3VwUmVxdWVzdE1h
bmFnZXJEaWRSZWNlaXZlVVJJUmVxdWVzdERhdGEoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdL
RGF0YVJlZiwgdWludDY0X3QgcmVxdWVzdElEKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLQotI2VuZGlmIC8qIFdLU291cFJlcXVlc3RNYW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRleCAxNzk1MjY5
Li5iNGVkZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0NvbnRleHRQ
cml2YXRlLmgiCi0jaW5jbHVkZSAiV0tDb250ZXh0U291cC5oIgogI2luY2x1ZGUgIldLTnVtYmVy
LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2No
ZW1lX3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5jcHAKaW5kZXggOTg4Yjk5Ni4uZjU1NDg0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVf
cmVxdWVzdC5jcHAKQEAgLTMxLDE0ICszMSwxMyBAQAogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV0tVUkwuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogCiAjaW5jbHVkZSAiZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
LUV3a1VybFNjaGVtZVJlcXVlc3Q6OkV3a1VybFNjaGVtZVJlcXVlc3QoV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVl
c3QsIHVpbnQ2NF90IHJlcXVlc3RJRCkKLSAgICA6IG1fd2tSZXF1ZXN0TWFuYWdlcihtYW5hZ2Vy
KQorRXdrVXJsU2NoZW1lUmVxdWVzdDo6RXdrVXJsU2NoZW1lUmVxdWVzdChDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50
NjRfdCByZXF1ZXN0SUQpCisgICAgOiBtX3drUmVxdWVzdE1hbmFnZXIoJm1hbmFnZXIpCiAgICAg
LCBtX3JlcXVlc3RJRChyZXF1ZXN0SUQpCiB7CiAgICAgV0tVUkxSZWYgdXJsID0gdG9Db3BpZWRV
UkxBUEkodXJsUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOwpAQCAtNjksNiArNjgs
OSBAQCBjb25zdCBjaGFyKiBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpwYXRoKCkgY29uc3QKIAogdm9p
ZCBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpmaW5pc2goY29uc3Qgdm9pZCogY29udGVudERhdGEsIHVp
bnQ2NF90IGNvbnRlbnRMZW5ndGgsIGNvbnN0IGNoYXIqIG1pbWVUeXBlKQogeworICAgIGlmICgh
bV93a1JlcXVlc3RNYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKICAgICBXS1JldGFpblB0cjxX
S0RhdGFSZWY+IHdrRGF0YShBZG9wdFdLLCBXS0RhdGFDcmVhdGUoY29udGVudExlbmd0aCA/IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGNvbnRlbnREYXRhKSA6IDAsIGNv
bnRlbnRMZW5ndGgpKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNaW1lVHlwZSA9
IG1pbWVUeXBlID8gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhtaW1lVHlw
ZSkpIDogMDsKIApAQCAtNzYsMTAgKzc4LDE1IEBAIHZvaWQgRXdrVXJsU2NoZW1lUmVxdWVzdDo6
ZmluaXNoKGNvbnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50NjRfdCBjb250ZW50TGVuZ3RoCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgobV91cmwpKSwKICAgICAgICAgU3RyaW5nOjpmcm9t
VVRGOChtaW1lVHlwZSksIGNvbnRlbnRMZW5ndGgsIGVtcHR5U3RyaW5nKCkpOwogCi0gICAgdG9J
bXBsKG1fd2tSZXF1ZXN0TWFuYWdlci5nZXQoKSktPmRpZFJlY2VpdmVSZXNwb25zZShtX3JlcXVl
c3RJRCwgcmVzcG9uc2UpOwotICAgIHRvSW1wbChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5k
aWRMb2FkRGF0YShtX3JlcXVlc3RJRCwgdG9JbXBsKHdrRGF0YS5nZXQoKSkpOwotICAgIHRvSW1w
bChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVxdWVzdElE
KTsKLSAgICB0b0ltcGwobV93a1JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+c3RvcExvYWRpbmcobV9y
ZXF1ZXN0SUQpOworICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1f
cmVxdWVzdElELCByZXNwb25zZSk7CisgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0
YShtX3JlcXVlc3RJRCwgdG9JbXBsKHdrRGF0YS5nZXQoKSktPmRhdGFSZWZlcmVuY2UoKSk7Cisg
ICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVxdWVzdElEKTsKKyAg
ICBtX3drUmVxdWVzdE1hbmFnZXItPnN0b3BMb2FkaW5nKG1fcmVxdWVzdElEKTsKK30KKwordm9p
ZCBFd2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX3drUmVxdWVzdE1h
bmFnZXIgPSBudWxscHRyOwogfQogCiBjb25zdCBjaGFyKiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0
X3NjaGVtZV9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3Jl
cXVlc3RfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKaW5kZXggYTM5ODkyYi4uZjU5ZDU1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVx
dWVzdF9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKQEAgLTI2LDExICsyNiwxMSBAQAogI2lmbmRl
ZiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGVfaAogI2RlZmluZSBld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0X3ByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0Jhc2UuaCIKICNpbmNs
dWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgotI2lu
Y2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJl
d2tfb2JqZWN0X3ByaXZhdGUuaCIKIAogLyoqCkBAIC00MSw5ICs0MSw5IEBAIGNsYXNzIEV3a1Vy
bFNjaGVtZVJlcXVlc3QgOiBwdWJsaWMgRXdrT2JqZWN0IHsKIHB1YmxpYzoKICAgICBFV0tfT0JK
RUNUX0RFQ0xBUkUoRXdrVXJsU2NoZW1lUmVxdWVzdCkKIAotICAgIHN0YXRpYyBSZWZQdHI8RXdr
VXJsU2NoZW1lUmVxdWVzdD4gY3JlYXRlKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJSZWYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1
ZXN0SUQpCisgICAgc3RhdGljIFJlZlB0cjxFd2tVcmxTY2hlbWVSZXF1ZXN0PiBjcmVhdGUoV2Vi
S2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0
KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgewotICAgICAgICBpZiAoIW1h
bmFnZXIgfHwgIXVybFJlcXVlc3QpCisgICAgICAgIGlmICghdXJsUmVxdWVzdCkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrVXJs
U2NoZW1lUmVxdWVzdChtYW5hZ2VyLCB1cmxSZXF1ZXN0LCByZXF1ZXN0SUQpKTsKQEAgLTU2LDEw
ICs1NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZpbmlzaChjb25zdCB2b2lkKiBjb250ZW50
RGF0YSwgdWludDY0X3QgY29udGVudExlbmd0aCwgY29uc3QgY2hhciogbWltZVR5cGUpOwogCisg
ICAgV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogbWFuYWdlcigpIGNvbnN0IHsg
cmV0dXJuIG1fd2tSZXF1ZXN0TWFuYWdlcjsgfQorICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCiBw
cml2YXRlOgotICAgIEV3a1VybFNjaGVtZVJlcXVlc3QoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QsIHVpbnQ2
NF90IHJlcXVlc3RJRCk7CisgICAgRXdrVXJsU2NoZW1lUmVxdWVzdChXZWJLaXQ6OkN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3Qs
IHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAKLSAgICBXS1JldGFpblB0cjxXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyUmVmPiBtX3drUmVxdWVzdE1hbmFnZXI7CisgICAgV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogbV93a1JlcXVlc3RNYW5hZ2VyOwogICAgIFdLRWlu
YVNoYXJlZFN0cmluZyBtX3VybDsKICAgICB1aW50NjRfdCBtX3JlcXVlc3RJRDsKICAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgbV9zY2hlbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjJmMzE0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKKworI2luY2x1ZGUgIkFQ
SUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2NsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dCBmaW5hbCA6IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KFdlYktpdFdlYkNv
bnRleHQqIHdlYkNvbnRleHQpCisgICAgICAgIDogbV93ZWJDb250ZXh0KHdlYkNvbnRleHQpCisg
ICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Vi
a2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3Vz
dG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwgbWFuYWdlcik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHZvaWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Vi
a2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2wobV93ZWJDb250ZXh0LCBjdXN0
b21Qcm90b2NvbElEKTsKKyAgICB9CisKKyAgICB2b2lkIGludmFsaWRhdGUoQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICB3ZWJraXRX
ZWJDb250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMobV93ZWJDb250ZXh0LCBt
YW5hZ2VyKTsKKyAgICB9CisKKyAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7Cit9
OworCit2b2lkIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dChXZWJL
aXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQoreworICAgIGF1dG8qIHByb2Nlc3NQb29sID0gd2Vi
a2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpOworICAgIHByb2Nlc3NQb29s
LT5zZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuaApzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oCnJlbmFt
ZSB0byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuaAppbmRleCBhMzY1NTk0Li5jOWM0YzE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTE3LDExICsxNyw5IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFdlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKLSNk
ZWZpbmUgV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCiAKLXZvaWQgYXR0YWNoUmVxdWVzdE1hbmFnZXJDbGll
bnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCopOwordm9pZCBhdHRhY2hDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCopOwogCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAppbmRl
eCA3NWU4YzllLi5kMDcyYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSA8V2ViS2l0
L1dLSW5zcGVjdG9yQ2xpZW50R3RrLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+Ci0jaW5jbHVkZSA8
V2ViS2l0L1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5h
Z2VyQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkxODljOS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0
TWFuYWdlckNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgotCi0jaW5jbHVkZSAiV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotc3RhdGljIHZv
aWQgc3RhcnRMb2FkaW5nKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdD
dXN0b21Qcm90b2NvbChXRUJLSVRfV0VCX0NPTlRFWFQoY2xpZW50SW5mbyksIGN1c3RvbVByb3Rv
Y29sSUQsIHRvSW1wbChyZXF1ZXN0UmVmKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN0b3BMb2FkaW5n
KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgd2Via2l0V2ViQ29udGV4
dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV0VCS0lUX1dFQl9DT05URVhUKGNsaWVudEluZm8p
LCBjdXN0b21Qcm90b2NvbElEKTsKLX0KLQotdm9pZCBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVu
dFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQotewotICAgIFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50
ID0gewotICAgICAgICB7Ci0gICAgICAgICAgICAwLCAvLyB2ZXJzaW9uCi0gICAgICAgICAgICB3
ZWJDb250ZXh0IC8vIGNsaWVudEluZm8KLSAgICAgICAgfSwKLSAgICAgICAgc3RhcnRMb2FkaW5n
LAotICAgICAgICBzdG9wTG9hZGluZwotICAgIH07Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlclNldENsaWVudCh0b0FQSSh3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1h
bmFnZXIod2ViQ29udGV4dCkpLCAmd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5iYXNlKTsKLX0KLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
UklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCA4NzJhNTY0Li5hYmExYjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiAvKioKICAqIFNFQ1RJT046IFdlYktpdFVSSVNjaGVtZVJlcXVlc3QKQEAgLTU0LDcgKzU1LDcg
QEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBnUmVhZEJ1ZmZlclNpemUgPSA4MTkyOwogCiBz
dHJ1Y3QgX1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlIHsKICAgICBXZWJLaXRXZWJDb250
ZXh0KiB3ZWJDb250ZXh0OwotICAgIFJlZlB0cjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcj4gd2ViUmVxdWVzdE1hbmFnZXI7CisgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkqIG1hbmFnZXI7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gaW5pdGlhdGluZ1BhZ2U7CiAg
ICAgdWludDY0X3QgcmVxdWVzdElEOwogICAgIENTdHJpbmcgdXJpOwpAQCAtNzQsMjEgKzc1LDMx
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Q2xhc3MqKQogewogfQogCi1XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0
V2ViQ29udGV4dCogd2ViQ29udGV4dCwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0KQorV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdCogd2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRf
dCByZXF1ZXN0SUQsIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFu
YWdlcikKIHsKLSAgICBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1VS
SV9TQ0hFTUVfUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVVJJX1NDSEVNRV9SRVFV
RVNULCBOVUxMKSk7CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJ
VF9VUklfU0NIRU1FX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VSSV9TQ0hFTUVf
UkVRVUVTVCwgbnVsbHB0cikpOwogICAgIHJlcXVlc3QtPnByaXYtPndlYkNvbnRleHQgPSB3ZWJD
b250ZXh0OwotICAgIHJlcXVlc3QtPnByaXYtPndlYlJlcXVlc3RNYW5hZ2VyID0gd2Via2l0V2Vi
Q29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKHdlYkNvbnRleHQpOwotICAgIHJlcXVlc3QtPnByaXYt
PnVyaSA9IHVybFJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0Zjgo
KTsKLSAgICByZXF1ZXN0LT5wcml2LT5pbml0aWF0aW5nUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6
d2ViUGFnZSh1cmxSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5pbml0aWF0aW5nUGFnZUlEKCkp
OworICAgIHJlcXVlc3QtPnByaXYtPm1hbmFnZXIgPSAmbWFuYWdlcjsKKyAgICByZXF1ZXN0LT5w
cml2LT51cmkgPSByZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpOworICAgIHJl
cXVlc3QtPnByaXYtPmluaXRpYXRpbmdQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHJl
c291cmNlUmVxdWVzdC5pbml0aWF0aW5nUGFnZUlEKCkpOwogICAgIHJlcXVlc3QtPnByaXYtPnJl
cXVlc3RJRCA9IHJlcXVlc3RJRDsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAogdm9pZCB3ZWJr
aXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3Qp
CiB7Ci0gICAgaWYgKHJlcXVlc3QtPnByaXYtPmNhbmNlbGxhYmxlLmdldCgpKQotICAgICAgICBn
X2NhbmNlbGxhYmxlX2NhbmNlbChyZXF1ZXN0LT5wcml2LT5jYW5jZWxsYWJsZS5nZXQoKSk7Cisg
ICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwocmVxdWVzdC0+cHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCkp
OworfQorCitDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogd2Via2l0VVJJU2NoZW1lUmVxdWVz
dEdldE1hbmFnZXIoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICByZXR1
cm4gcmVxdWVzdC0+cHJpdi0+bWFuYWdlcjsKK30KKwordm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0SW52YWxpZGF0ZShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIHJl
cXVlc3QtPnByaXYtPm1hbmFnZXIgPSBudWxscHRyOworICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVl
c3RDYW5jZWwocmVxdWVzdCk7CiB9CiAKIC8qKgpAQCAtMTU5LDggKzE3MCwxNCBAQCBXZWJLaXRX
ZWJWaWV3KiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyhXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZQogc3RhdGljIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRD
YWxsYmFjayhHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogc2NoZW1lUmVxdWVzdCkKIHsKICAgICBHUmVmUHRyPFdl
YktpdFVSSVNjaGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYoc2NoZW1lUmVxdWVzdCk7
CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBnc3NpemUgYnl0ZXNSZWFk
ID0gZ19pbnB1dF9zdHJlYW1fcmVhZF9maW5pc2goaW5wdXRTdHJlYW0sIHJlc3VsdCwgJmVycm9y
Lm91dFB0cigpKTsKKyAgICBpZiAoIXByaXYtPm1hbmFnZXIpIHsKKyAgICAgICAgd2Via2l0V2Vi
Q29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBw
cml2LT5yZXF1ZXN0SUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKGJ5dGVz
UmVhZCA9PSAtMSkgewogICAgICAgICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9l
cnJvcihyZXF1ZXN0LmdldCgpLCBlcnJvci5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3
MSwyMiArMTg4LDIxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2Fs
bGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAgICAgaWYgKCFyZXF1ZXN0
LT5wcml2LT5zdHJlYW0pCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYktpdFVSSVNjaGVtZVJl
cXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKLSAgICBSZWY8QVBJOjpEYXRhPiB3
ZWJEYXRhID0gQVBJOjpEYXRhOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4ocHJpdi0+cmVhZEJ1ZmZlciksIGJ5dGVzUmVhZCk7CisgICAgYXV0byB3ZWJEYXRh
ID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBy
aXYtPnJlYWRCdWZmZXIpLCBieXRlc1JlYWQpOwogICAgIGlmICghcHJpdi0+Ynl0ZXNSZWFkKSB7
CiAgICAgICAgIC8vIEZpcnN0IGNodW5rIHJlYWQuIEluIGNhc2Ugb2YgZW1wdHkgcmVwbHkgYW4g
ZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQgdG8gdGhlIG5ldHdvcmtpbmcgcHJvY2Vzcy4KLSAgICAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVURjgo
cHJpdi0+bWltZVR5cGUuZGF0YSgpKSwKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVU
RjgocHJpdi0+bWltZVR5cGUuZGF0YSgpKSwKICAgICAgICAgICAgIHByaXYtPnN0cmVhbUxlbmd0
aCwgZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRS
ZWNlaXZlUmVzcG9uc2UocHJpdi0+cmVxdWVzdElELCByZXNwb25zZSk7Ci0gICAgICAgIHByaXYt
PndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEu
cHRyKCkpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2UocHJpdi0+
cmVxdWVzdElELCByZXNwb25zZSk7CisgICAgICAgIHByaXYtPm1hbmFnZXItPmRpZExvYWREYXRh
KHByaXYtPnJlcXVlc3RJRCwgd2ViRGF0YSk7CiAgICAgfSBlbHNlIGlmIChieXRlc1JlYWQgfHwg
KCFieXRlc1JlYWQgJiYgIXByaXYtPnN0cmVhbUxlbmd0aCkpIHsKICAgICAgICAgLy8gU3Vic2Vx
dWVudCBjaHVuayByZWFkLiBXZSBvbmx5IHNlbmQgYW4gZW1wdHkgQVBJOjpEYXRhIHRvIHRoZSBu
ZXR3b3JraW5nIHByb2Nlc3Mgd2hlbiBzdHJlYW0gbGVuZ3RoIGlzIHVua25vd24uCi0gICAgICAg
IHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdl
YkRhdGEucHRyKCkpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5y
ZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0KIAogICAgIGlmICghYnl0ZXNSZWFkKSB7Ci0gICAg
ICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRGaW5pc2hMb2FkaW5nKHJlcXVlc3QtPnBy
aXYtPnJlcXVlc3RJRCk7Ci0gICAgICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5n
Q3VzdG9tUHJvdG9jb2wocmVxdWVzdC0+cHJpdi0+d2ViQ29udGV4dCwgcmVxdWVzdC0+cHJpdi0+
cmVxdWVzdElEKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyhwcml2
LT5yZXF1ZXN0SUQpOworICAgICAgICB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1
c3RvbVByb3RvY29sKHByaXYtPndlYkNvbnRleHQsIHByaXYtPnJlcXVlc3RJRCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTIzOSw3ICsyNTUsNyBAQCB2b2lkIHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3Qs
IEdFcgogICAgICAgICByZXR1cm47CiAKICAgICBwcml2LT5zdHJlYW0gPSBudWxscHRyOwotICAg
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhl
cnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNvZGUpLCBXZWJDb3JlOjpVUkwo
cHJpdi0+c291cFVSSS5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsK
LSAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkRmFpbFdpdGhFcnJvcihwcml2LT5yZXF1
ZXN0SUQsIHJlc291cmNlRXJyb3IpOworICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNv
ZGUpLCBVUkwocHJpdi0+c291cFVSSS5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKTsKKyAgICBwcml2LT5tYW5hZ2VyLT5kaWRGYWlsV2l0aEVycm9yKHByaXYtPnJlcXVl
c3RJRCwgcmVzb3VyY2VFcnJvcik7CiAgICAgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRp
bmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0SUQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKaW5kZXggYzcyZmExOC4uNDdiYjhjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oCkBAIC0yMCwxMSArMjAsMTUgQEAKICNpZm5k
ZWYgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGVfaAogI2RlZmluZSBXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0UHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKLVdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtp
dFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXRXZWJDb250
ZXh0KiwgQVBJOjpVUkxSZXF1ZXN0Kik7CitXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiB3ZWJraXRV
UklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0V2ViQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYktpdDo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmKTsKIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdENhbmNlbChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Kik7CitXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0R2V0TWFuYWdlcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
Kik7Cit2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RJbnZhbGlkYXRlKFdlYktpdFVSSVNjaGVt
ZVJlcXVlc3QqKTsKIAogI2VuZGlmIC8vIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKaW5kZXggNzI1MzU1OS4uNzM4MzRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTIwLDYgKzIw
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0Lmgi
CiAKKyNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJBUElEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCkBAIC0zMCw2ICszMSw3
IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRDb29raWVNYW5hZ2VyUHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgog
I2luY2x1ZGUgIldlYktpdERvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxv
YWRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZS5oIgpA
QCAtMzgsNyArNDAsNiBAQAogI2luY2x1ZGUgIldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiV2ViS2l0UGx1Z2luUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZh
dGUuaCIKLSNpbmNsdWRlICJXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUg
IldlYktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRTZXR0aW5n
c1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oIgpA
QCAtMTE1LDEyICsxMTYsNiBAQCBlbnVtIHsKIAogY2xhc3MgV2ViS2l0VVJJU2NoZW1lSGFuZGxl
cjogcHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gewogcHVibGljOgot
ICAgIFdlYktpdFVSSVNjaGVtZUhhbmRsZXIoKQotICAgICAgICA6IG1fY2FsbGJhY2soMCkKLSAg
ICAgICAgLCBtX3VzZXJEYXRhKDApCi0gICAgICAgICwgbV9kZXN0cm95Tm90aWZ5KDApCi0gICAg
ewotICAgIH0KICAgICBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKFdlYktpdFVSSVNjaGVtZVJlcXVl
c3RDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ry
b3lOb3RpZnkpCiAgICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKICAgICAgICAgLCBtX3Vz
ZXJEYXRhKHVzZXJEYXRhKQpAQCAtMTQ3LDkgKzE0Miw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrIG1fY2FsbGJhY2s7Ci0g
ICAgdm9pZCogbV91c2VyRGF0YTsKLSAgICBHRGVzdHJveU5vdGlmeSBtX2Rlc3Ryb3lOb3RpZnk7
CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrIG1fY2FsbGJhY2sgeyBudWxscHRy
IH07CisgICAgdm9pZCogbV91c2VyRGF0YSB7IG51bGxwdHIgfTsKKyAgICBHRGVzdHJveU5vdGlm
eSBtX2Rlc3Ryb3lOb3RpZnkgeyBudWxscHRyIH07CiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gPiBVUklTY2hlbWVIYW5kbGVyTWFw
OwpAQCAtMTYyLDcgKzE1Nyw2IEBAIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewog
ICAgIEdSZWZQdHI8V2ViS2l0Q29va2llTWFuYWdlcj4gY29va2llTWFuYWdlcjsKICAgICBHUmVm
UHRyPFdlYktpdEZhdmljb25EYXRhYmFzZT4gZmF2aWNvbkRhdGFiYXNlOwogICAgIEdSZWZQdHI8
V2ViS2l0U2VjdXJpdHlNYW5hZ2VyPiBzZWN1cml0eU1hbmFnZXI7Ci0gICAgUmVmUHRyPFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiByZXF1ZXN0TWFuYWdlcjsKICAgICBVUklT
Y2hlbWVIYW5kbGVyTWFwIHVyaVNjaGVtZUhhbmRsZXJzOwogICAgIFVSSVNjaGVtZVJlcXVlc3RN
YXAgdXJpU2NoZW1lUmVxdWVzdHM7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQpAQCAtMjc1LDgg
KzI2OSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpCiAgICAgICAgIHBy
aXYtPndlYnNpdGVEYXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJDcmVhdGUod2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Gb3JXZWJQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikpKTsKIAotICAgIHByaXYtPnJlcXVlc3RNYW5hZ2Vy
ID0gcHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXI+KCk7Ci0KICAgICBwcml2LT50bHNFcnJvcnNQb2xpY3kgPSBXRUJLSVRfVExT
X0VSUk9SU19QT0xJQ1lfRkFJTDsKICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0SWdub3JlVExT
RXJyb3JzKGZhbHNlKTsKIApAQCAtMjg3LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBhdHRhY2hJbmplY3Rl
ZEJ1bmRsZUNsaWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKICAgICBhdHRhY2hEb3dubG9hZENs
aWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKLSAgICBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVu
dFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKKyAgICBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAg
ICAgcHJpdi0+Z2VvbG9jYXRpb25Qcm92aWRlciA9IFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6
OmNyZWF0ZShwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eT4oKSk7CkBAIC0zMDQsNiArMjk2LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29u
dGV4dERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogICAgICAgICBwcml2LT5jbGllbnRzRGV0YWNo
ZWQgPSB0cnVlOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+aW5pdGlhbGl6ZUluamVjdGVk
QnVuZGxlQ2xpZW50KG51bGxwdHIpOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0RG93
bmxvYWRDbGllbnQobnVsbHB0cik7CisgICAgICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobnVsbHB0cik7CiAgICAgfQogCiAgICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X3dlYl9jb250ZXh0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsK
QEAgLTg0OSw4ICs4NDIsOSBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlf
c2NoZW1lKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYQogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoY2FsbGJhY2spOwogCiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+
IGhhbmRsZXIgPSBhZG9wdFJlZihuZXcgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihjYWxsYmFjaywg
dXNlckRhdGEsIGRlc3Ryb3lOb3RpZnkpKTsKLSAgICBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVI
YW5kbGVycy5zZXQoU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpLCBoYW5kbGVyLmdldCgpKTsKLSAg
ICBjb250ZXh0LT5wcml2LT5yZXF1ZXN0TWFuYWdlci0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0g
Y29udGV4dC0+cHJpdi0+dXJpU2NoZW1lSGFuZGxlcnMuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2No
ZW1lKSwgaGFuZGxlci5nZXQoKSk7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkpOwogfQogCiAvKioKQEAgLTEyNjYsMTQg
KzEyNjAsOSBAQCBXZWJQcm9jZXNzUG9vbCogd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29s
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnBy
b2Nlc3NQb29sLmdldCgpOwogfQogCi1XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ciogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKFdlYktpdFdlYkNvbnRleHQqIGNv
bnRleHQpCi17Ci0gICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnJlcXVlc3RNYW5hZ2VyLmdldCgp
OwotfQotCi12b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0b21Qcm90b2NvbChX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBBUEk6
OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QpCit2b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRp
bmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCwgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpCiB7Ci0gICAgR1JlZlB0
cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVSSVNj
aGVtZVJlcXVlc3RDcmVhdGUoY3VzdG9tUHJvdG9jb2xJRCwgY29udGV4dCwgdXJsUmVxdWVzdCkp
OworICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1Jl
Zih3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKGN1c3RvbVByb3RvY29sSUQsIGNvbnRleHQs
IHJlc291cmNlUmVxdWVzdCwgbWFuYWdlcikpOwogICAgIFN0cmluZyBzY2hlbWUoU3RyaW5nOjpm
cm9tVVRGOCh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9zY2hlbWUocmVxdWVzdC5nZXQo
KSkpKTsKICAgICBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IGNvbnRl
eHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJzLmdldChzY2hlbWUpOwogICAgIEFTU0VSVChoYW5k
bGVyLmdldCgpKTsKQEAgLTEyOTIsNiArMTI4MSwxNiBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRT
dG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIHVpbnQ2
NAogICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwocmVxdWVzdC5nZXQoKSk7CiB9CiAK
K3ZvaWQgd2Via2l0V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQsIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5h
Z2VyKQoreworICAgIFZlY3RvcjxHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+PiByZXF1
ZXN0czsKKyAgICBjb3B5VmFsdWVzVG9WZWN0b3IoY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVx
dWVzdHMsIHJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0cykgewor
ICAgICAgICBpZiAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIocmVxdWVzdC5nZXQo
KSkgPT0gJm1hbmFnZXIpCisgICAgICAgICAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0SW52YWxp
ZGF0ZShyZXF1ZXN0LmdldCgpKTsKKyAgICB9Cit9CisKIHZvaWQgd2Via2l0V2ViQ29udGV4dERp
ZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewogICAgIGNvbnRleHQtPnByaXYtPnVyaVNjaGVt
ZVJlcXVlc3RzLnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCmlu
ZGV4IDdlZTk2YjEuLjYzZWIyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaApAQCAtMjYsMjEgKzI2
LDIyIEBACiAjaWZuZGVmIFdlYktpdFdlYkNvbnRleHRQcml2YXRlX2gKICNkZWZpbmUgV2ViS2l0
V2ViQ29udGV4dFByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIldl
YktpdFdlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUg
IldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCogd2Via2l0V2Vi
Q29udGV4dEdldFByb2Nlc3NQb29sKFdlYktpdFdlYkNvbnRleHQqKTsKIFdlYktpdERvd25sb2Fk
KiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkqKTsKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZChXZWJL
aXRXZWJDb250ZXh0KiwgY29uc3QgY2hhciogdXJpLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwog
dm9pZCB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZFByb3h5
Kik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQoV2ViS2l0V2ViQ29udGV4
dCosIFdlYktpdERvd25sb2FkKik7Ci1XZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyKiB3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1hbmFnZXIoV2ViS2l0V2ViQ29u
dGV4dCopOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2wo
V2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIEFQSTo6VVJMUmVx
dWVzdCopOwordm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2wo
V2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
KTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0
V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwordm9pZCB3ZWJraXRXZWJD
b250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMoV2ViS2l0V2ViQ29udGV4dCos
IFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmKTsKIHZvaWQgd2Via2l0V2ViQ29u
dGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiBib29sIHdlYmtpdFdlYkNvbnRleHRJc0xvYWRpbmdD
dXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCk7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJD
b250ZXh0KiwgV2ViS2l0V2ViVmlldyosIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdlYktp
dFdlYlZpZXcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmgKaW5kZXggYjM4NzVmMy4uNGM3NDNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKQEAgLTM0LDggKzM0LDE0IEBA
CiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CiAjZW5kaWYKIAorbmFtZXNwYWNl
IElQQyB7CitjbGFzcyBEYXRhUmVmZXJlbmNlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01MSw2ICs1NywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydExvYWRpbmcodWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgdm9pZCBzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKIAorICAgIHZv
aWQgcHJvY2Vzc0RpZENsb3NlKCk7CisKKyNpZiBVU0UoU09VUCkKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRpZEZhaWxXaXRo
RXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCmluZGV4IGFkNTNlOTguLjk3OWIwZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9t
YWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eU1hYy5tbQpAQCAtMTYwLDQgKzE2MCw4IEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiAgICAgbV9s
b2FkZXJNYXAucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOwogfQogCit2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoKQoreworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCmluZGV4IDA1OWY0NjUuLjNmYjM0NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHlTb3VwLmNwcApAQCAtMjAsMTMgKzIwLDE5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKIAorI2luY2x1
ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkNoaWxkUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKKyNp
ZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNHdGsuaD4KKyNlbGlmIFBM
QVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0VmbC5oPgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9jZXNzUHJveHkqIGNoaWxkUHJvY2Vzc1Byb3h5LCBX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCkBAIC00MiwxNCArNDgsNDAgQEAgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCiAgICAgbV9j
aGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAordm9pZCBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKK3sKKyAgICBtX3By
b2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRoaXMp
OworfQorCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcodWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIG1fcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcj4oKS0+c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQsIHJl
cXVlc3QpOworICAgIGlmICghbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3QpKQorICAg
ICAgICBkaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OmNhbm5vdFNo
b3dVUkxFcnJvcihyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiB7Ci0gICAgbV9wcm9j
ZXNzUG9vbC5zdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigp
LT5zdG9wTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKTsKKyAgICBtX3Byb2Nlc3NQb29sLmN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudCgpLnN0b3BMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2Nv
bElEKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIG1fY2hpbGRQcm9jZXNzUHJveHktPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKGN1c3RvbVBy
b3RvY29sSUQsIHJlc3BvbnNlLCAwKSwgMCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKGN1c3RvbVByb3Rv
Y29sSUQsIGRhdGEpLCAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6
ZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZEZhaWxXaXRoRXJyb3IoY3VzdG9t
UHJvdG9jb2xJRCwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTo6ZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQoreworICAg
IG1fY2hpbGRQcm9jZXNzUHJveHktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdl
cjo6RGlkRmluaXNoTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKSwgMCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiNjU1ZTQzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgotCi0jaW5j
bHVkZSAiQVBJRGF0YS5oIgotI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotCi0jaWYgUExBVEZPUk0oR1RLKQotI2lu
Y2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+Ci0jZWxpZiBQTEFURk9STShFRkwpCi0jaW5jbHVk
ZSA8V2ViQ29yZS9FcnJvcnNFZmwuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y29uc3QgY2hhciogV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnN1cHBsZW1l
bnROYW1lKCkKLXsKLSAgICByZXR1cm4gIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyIjsKLX0KLQotUmVmPFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG9vbCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcihwcm9jZXNzUG9vbCkpOwotfQotCi1XZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcjo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIo
V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQotICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQo
cHJvY2Vzc1Bvb2wpCi17Ci19Ci0KLVdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Ojp+V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIoKQotewotfQotCi12b2lkIFdl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjppbml0aWFsaXplQ2xpZW50KGNvbnN0
IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpCi17
Ci0gICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwotfQotCi0vLyBXZWJDb250ZXh0U3Vw
cGxlbWVudAotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cHJvY2Vz
c1Bvb2xEZXN0cm95ZWQoKQotewotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyOjpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKLXsKLX0KLQotdm9p
ZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKQotewotICAgIEFQSTo6T2JqZWN0OjpyZWYoKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCi17
Ci0gICAgQVBJOjpPYmplY3Q6OmRlcmVmKCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgQVNTRVJUKCFzY2hlbWUuaXNOdWxsKCkpOwotICAgIGlm
IChtX3JlZ2lzdGVyZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vz
c1Bvb2woKS0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOwotCi0gICAg
bV9yZWdpc3RlcmVkU2NoZW1lcy5hcHBlbmQoc2NoZW1lKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3Rv
Y29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+dW5yZWdpc3RlclNjaGVtZUZvckN1
c3RvbVByb3RvY29sKHNjaGVtZSk7Ci0KLSAgICBib29sIHJlbW92ZWQgPSBtX3JlZ2lzdGVyZWRT
Y2hlbWVzLnJlbW92ZUZpcnN0KHNjaGVtZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCBy
ZW1vdmVkKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6
c3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAoIW1fY2xpZW50LnN0YXJ0TG9hZGlu
Zyh0aGlzLCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSkKLSAgICAgICAgZGlkRmFpbFdpdGhF
cnJvcihjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IocmVxdWVz
dCkpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdG9w
TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQotewotICAgIG1fY2xpZW50LnN0b3BM
b2FkaW5nKHRoaXMsIGN1c3RvbVByb3RvY29sSUQpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17
Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNz
UG9vbCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRSZWNlaXZlUmVzcG9uc2UoY3VzdG9tUHJvdG9jb2xJRCwg
cmVzcG9uc2UsIDApLCAwKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6ZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgQVBJ
OjpEYXRhKiBkYXRhKQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkTG9hZERhdGEoY3VzdG9tUHJv
dG9jb2xJRCwgZGF0YS0+ZGF0YVJlZmVyZW5jZSgpKSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0g
ICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9v
bCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpEaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIGVycm9y
KSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRp
ZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKLXsKLSAgICBpZiAoIXBy
b2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPm5ldHdv
cmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OkRpZEZpbmlzaExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCksIDApOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2NDc3NTZlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlcl9oCi0KLSNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJDb250
ZXh0U3VwcGxlbWVudC5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLWNsYXNzIERhdGE7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Ci0KLWNsYXNzIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBs
ZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwotCi0gICAgc3RhdGljIFJlZjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4g
Y3JlYXRlKFdlYlByb2Nlc3NQb29sKik7Ci0gICAgdmlydHVhbCB+V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSopOwotCi0gICAgdm9p
ZCByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsK
LSAgICB2b2lkIHVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcm
IHNjaGVtZSk7Ci0KLSAgICB2b2lkIHN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIHN0b3BMb2Fk
aW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIHZvaWQgZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCwgY29uc3QgQVBJOjpEYXRhKik7Ci0gICAgdm9pZCBkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Ci0KLSAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Qcm90b2NvbHMo
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9Ci0KLSAgICB1c2luZyBBUEk6
Ok9iamVjdDo6cmVmOwotICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKLQotcHJpdmF0ZToK
LSAgICBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcihXZWJQcm9jZXNzUG9vbCop
OwotCi0gICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKLSAgICB2b2lkIHByb2Nlc3NQb29sRGVz
dHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1By
b3h5Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwotCi0g
ICAgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQgbV9jbGllbnQ7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gbV9yZWdpc3RlcmVkU2NoZW1lczsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGRlZjYyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50LmgiCi0KLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5o
IgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotYm9vbCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlckNsaWVudDo6c3RhcnRMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyKiBzb3VwUmVxdWVzdE1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAoIW1f
Y2xpZW50LnN0YXJ0TG9hZGluZykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVmPEFQ
STo6VVJMUmVxdWVzdD4gdXJsUmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlcXVl
c3QpOwotICAgIG1fY2xpZW50LnN0YXJ0TG9hZGluZyh0b0FQSShzb3VwUmVxdWVzdE1hbmFnZXIp
LCBjdXN0b21Qcm90b2NvbElELCB0b0FQSSh1cmxSZXF1ZXN0LnB0cigpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcoV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIqIHNvdXBSZXF1ZXN0TWFuYWdlciwgdWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCkKLXsKLSAgICBpZiAobV9jbGllbnQuc3RvcExvYWRpbmcpCi0gICAgICAgIG1f
Y2xpZW50LnN0b3BMb2FkaW5nKHRvQVBJKHNvdXBSZXF1ZXN0TWFuYWdlciksIGN1c3RvbVByb3Rv
Y29sSUQsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlYmIyMjEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9oCi0jZGVmaW5lIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKLQotI2luY2x1ZGUgIkFQSUNsaWVudC5oIgot
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IENs
aWVudFRyYWl0czxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZT4g
ewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyQ2xpZW50VjA+IFZlcnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI7Ci0KLWNsYXNzIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgYm9v
bCBzdGFydExvYWRpbmcoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqLCB1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
LSAgICB2b2lkIHN0b3BMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYjk5MWI3YS4uODhjY2NhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTIxOSw2ICsyMTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpCiB7CiAgICAgaWYgKG1fZG93bmxvYWRQcm94eU1hcCkKICAgICAg
ICAgbV9kb3dubG9hZFByb3h5TWFwLT5wcm9jZXNzRGlkQ2xvc2UoKTsKKyAgICBtX2N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5LnByb2Nlc3NEaWRDbG9zZSgpOwogCiAgICAgbV90b2tlbkZvckhv
bGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGIwZmI3ZGMuLmY4MTUxMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElBdXRvbWF0aW9uQ2xpZW50LmgiCisj
aW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCkBAIC05MCwxMCArOTEsNiBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2VuZGlmCiAK
LSNpZiBVU0UoU09VUCkKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5oIgotI2VuZGlmCi0KICNpZiBPUyhMSU5VWCkKICNpbmNsdWRlICJNZW1vcnlQcmVzc3Vy
ZU1vbml0b3IuaCIKICNlbmRpZgpAQCAtMTU3LDYgKzE1NCw5IEBAIFdlYlByb2Nlc3NQb29sOjpX
ZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikKICAgICAsIG1fYXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21h
dGlvbkNsaWVudD4oKSkKICAgICAsIG1fZG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkRvd25sb2FkQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKKyNpZiBVU0UoU09VUCkK
KyAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCisjZW5kaWYKICAgICAsIG1fdmlzaXRl
ZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICAgICAsIG1fdmlzaXRlZExp
bmtzUG9wdWxhdGVkKGZhbHNlKQogICAgICwgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlcih0aGlz
KQpAQCAtMTY1LDkgKzE2NSw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fbWVtb3J5
U2FtcGxlckVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX21lbW9yeVNhbXBsZXJJbnRlcnZhbCgxNDAw
LjApCiAgICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUobV9jb25maWd1cmF0aW9uLT5zaG91bGRIYXZl
TGVnYWN5RGF0YVN0b3JlKCkgPyBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShsZWdhY3lX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKS5wdHIoKSA6IG51
bGxwdHIpCi0jaWYgVVNFKFNPVVApCi0gICAgLCBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9s
aWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbikKLSNl
bmRpZgogICAgICwgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oZmFsc2UpCiAgICAg
LCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQodHJ1ZSkKICAgICAsIG1fY2FuSGFuZGxlSFRU
UFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24odHJ1ZSkKQEAgLTE5Nyw5ICsxOTQsNiBAQCBXZWJQcm9j
ZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCiAgICAgYWRkU3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7
CiAgICAgYWRkU3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKICAgICBh
ZGRTdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKTsKLSNpZiBVU0UoU09V
UCkKLSAgICBhZGRTdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
PigpOwotI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAgICAgYWRkU3VwcGxlbWVu
dDxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+KCk7CiAjZW5kaWYKQEAgLTI5OSw2ICsyOTMs
MTYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PgogICAgICAgICBtX2F1dG9tYXRpb25DbGllbnQg
PSBXVEZNb3ZlKGF1dG9tYXRpb25DbGllbnQpOwogfQogCisjaWYgVVNFKFNPVVApCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PiBjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQpCit7CisgICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpCisgICAg
ICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKKyAgICBlbHNlCisgICAgICAgIG1fY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQpOworfQorI2VuZGlmCisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1i
ZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMpCiB7CiAgICAg
Ly8gR3VhcmQgYWdhaW5zdCBBUEkgbWlzdXNlLgpAQCAtMTM2NCwxMSArMTM2OCwxNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50
cmllc0FkZGVkQWZ0ZXJUaW1lKAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogeworI2lmIFVTRShTT1VQ
KQorICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYWRkKHNjaGVt
ZSk7CisjZW5kaWYKICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpSZWdpc3RlclNjaGVtZShzY2hlbWUpKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKQogeworI2lmIFVTRShTT1VQKQorICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRG
b3JDdXN0b21Qcm90b2NvbHMucmVtb3ZlKHNjaGVtZSk7CisjZW5kaWYKICAgICBzZW5kVG9OZXR3
b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpVbnJlZ2lzdGVy
U2NoZW1lKHNjaGVtZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCmluZGV4IGZjZGU5YTAuLmQ1ZTRiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03MCw2ICs3MCw3IEBAIE9CSkNfQ0xBU1MgTlNTdHJpbmc7
CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKK2NsYXNzIEN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKQEAgLTEz
NSw2ICsxMzYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Pik7CiAgICAgdm9pZCBzZXRE
b3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOwogICAg
IHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9u
Q2xpZW50Pik7CisjaWYgVVNFKFNPVVApCisgICAgdm9pZCBzZXRDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
Pik7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2ln
bmVkKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBy
dW5uaW5nLgogICAgIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsg
cmV0dXJuICFtX2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/IFVJTlRfTUFY
IDogbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0KQEAgLTIyNSw2ICsy
MjksMTAgQEAgcHVibGljOgogICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQmIGhp
c3RvcnlDbGllbnQoKSB7IHJldHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAgV2ViQ29udGV4
dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAorI2lmIFVTRShTT1VQKQor
ICAgIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50JiBjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7
IH0KKyNlbmRpZgorCiAgICAgV2ViSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2UoKSBjb25zdCB7
IHJldHVybiBtX2ljb25EYXRhYmFzZS5nZXQoKTsgfQogCiAgICAgc3RydWN0IFN0YXRpc3RpY3Mg
ewpAQCAtNDU1LDYgKzQ2Myw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6
QXV0b21hdGlvbkNsaWVudD4gbV9hdXRvbWF0aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkRvd25sb2FkQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PiBtX2hpc3RvcnlDbGllbnQ7Cisj
aWYgVVNFKFNPVVApCisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50PiBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsKKyNlbmRpZgogCiAgICAg
UmVmUHRyPFdlYkF1dG9tYXRpb25TZXNzaW9uPiBtX2F1dG9tYXRpb25TZXNzaW9uOwogCkBAIC00
OTksNyArNTEwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudE1hcCBtX3N1
cHBsZW1lbnRzOwogCiAjaWYgVVNFKFNPVVApCi0gICAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBt
X2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5OworICAgIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeSB7IEhUVFBDb29raWVBY2NlcHRQb2xp
Y3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB9OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCkBAIC01MzAsNiArNTQxLDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShTT1VQKQogICAgIGJv
b2wgbV9pZ25vcmVUTFNFcnJvcnMgeyB0cnVlIH07CisgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4gbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29sczsKICNlbmRpZgogCiAgICAgYm9vbCBtX21lbW9yeUNhY2hlRGlzYWJsZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRF
ZmwuY3BwCmluZGV4IGI5YTY1N2YuLjMzNmMyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCkBAIC0yNiw1
MiArMjYsNTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbC5oIgogCisjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmgiCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9w
cml2YXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgaW5saW5lIFJlcXVlc3RN
YW5hZ2VyQ2xpZW50RWZsKiB0b1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlcXVlc3RNYW5hZ2VyQ2xpZW50
RWZsKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotfQotCi1SZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwoV0tDb250ZXh0UmVmIGNvbnRleHQp
Ci17Ci0gICAgbV9yZXF1ZXN0TWFuYWdlciA9IHRvQVBJKHRvSW1wbChjb250ZXh0KS0+c3VwcGxl
bWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKSk7Ci0gICAgQVNTRVJU
KG1fcmVxdWVzdE1hbmFnZXIpOworY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwqIGNsaWVudCkKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgeworICAg
IH0KIAotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB3a1Jl
cXVlc3RNYW5hZ2VyQ2xpZW50OwotICAgIG1lbXNldCgmd2tSZXF1ZXN0TWFuYWdlckNsaWVudCwg
MCwgc2l6ZW9mKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCkpOwor
cHJpdmF0ZToKKyAgICBib29sIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QpIG92ZXJyaWRlCisgICAgeworICAgICAgICBSZWZQdHI8RXdr
VXJsU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IEV3a1VybFNjaGVtZVJlcXVlc3Q6OmNyZWF0ZSht
YW5hZ2VyLCB0b0FQSShBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNwb25zZSkucHRyKCkpLCBj
dXN0b21Qcm90b2NvbElEKTsKKyAgICAgICAgU3RyaW5nIHNjaGVtZShTdHJpbmc6OmZyb21VVEY4
KHJlcXVlc3QuZ2V0KCktPnNjaGVtZSgpKSk7CisgICAgICAgIFJlZlB0cjxXZWJLaXRVUklTY2hl
bWVIYW5kbGVyPiBoYW5kbGVyID0gKG1fY2xpZW50LT5tX3VyaVNjaGVtZUhhbmRsZXJzKS5nZXQo
c2NoZW1lKTsKKyAgICAgICAgQVNTRVJUKGhhbmRsZXIuZ2V0KCkpOworICAgICAgICBpZiAoIWhh
bmRsZXItPmhhc0NhbGxiYWNrKCkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICB3a1JlcXVl
c3RNYW5hZ2VyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgd2tSZXF1ZXN0TWFuYWdlckNs
aWVudC5iYXNlLmNsaWVudEluZm8gPSB0aGlzOwotICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQu
c3RhcnRMb2FkaW5nID0gc3RhcnRMb2FkaW5nOwotICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQu
c3RvcExvYWRpbmcgPSBzdG9wTG9hZGluZzsKKyAgICAgICAgKG1fY2xpZW50LT5tX3VyaVNjaGVt
ZVJlcXVlc3RzKS5zZXQoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVzdCk7CisgICAgICAgIGhhbmRs
ZXItPnBlcmZvcm1DYWxsYmFjayhyZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQogCi0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclNldENsaWVu
dChtX3JlcXVlc3RNYW5hZ2VyLmdldCgpLCAmd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5iYXNlKTsK
LX0KKyAgICB2b2lkIHN0b3BMb2FkaW5nKEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIChtX2NsaWVu
dC0+bV91cmlTY2hlbWVSZXF1ZXN0cykucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOworICAgIH0K
IAotdm9pZCBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6c3RhcnRMb2FkaW5nKFdLU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Ci17Ci0gICAgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwqIGNsaWVudCA9IHRvUmVxdWVzdE1hbmFn
ZXJDbGllbnRFZmwoY2xpZW50SW5mbyk7Ci0gICAgUmVmUHRyPEV3a1VybFNjaGVtZVJlcXVlc3Q+
IHJlcXVlc3QgPSBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpjcmVhdGUobWFuYWdlciwgdG9JbXBsKHJl
cXVlc3RSZWYpLCBjdXN0b21Qcm90b2NvbElEKTsKLSAgICBTdHJpbmcgc2NoZW1lKFN0cmluZzo6
ZnJvbVVURjgocmVxdWVzdC5nZXQoKS0+c2NoZW1lKCkpKTsKLSAgICBSZWZQdHI8V2ViS2l0VVJJ
U2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IChjbGllbnQtPm1fdXJpU2NoZW1lSGFuZGxlcnMpLmdl
dChzY2hlbWUpOwotICAgIEFTU0VSVChoYW5kbGVyLmdldCgpKTsKLSAgICBpZiAoIWhhbmRsZXIt
Pmhhc0NhbGxiYWNrKCkpCi0gICAgICAgIHJldHVybjsKKyAgICB2b2lkIGludmFsaWRhdGUoQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBWZWN0b3I8UmVmUHRyPEV3a1VybFNjaGVtZVJlcXVlc3Q+PiByZXF1ZXN0czsKKyAgICAgICAg
Y29weVZhbHVlc1RvVmVjdG9yKG1fY2xpZW50LT5tX3VyaVNjaGVtZVJlcXVlc3RzLCByZXF1ZXN0
cyk7CisgICAgICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IHJlcXVlc3RzKSB7CisgICAgICAgICAg
ICBpZiAocmVxdWVzdC0+bWFuYWdlcigpID09ICZtYW5hZ2VyKSB7CisgICAgICAgICAgICAgICAg
cmVxdWVzdC0+aW52YWxpZGF0ZSgpOworICAgICAgICAgICAgICAgIHN0b3BMb2FkaW5nKG1hbmFn
ZXIsIHJlcXVlc3QtPmlkKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogCi0g
ICAgKGNsaWVudC0+bV91cmlTY2hlbWVSZXF1ZXN0cykuc2V0KGN1c3RvbVByb3RvY29sSUQsIHJl
cXVlc3QpOwotICAgIGhhbmRsZXItPnBlcmZvcm1DYWxsYmFjayhyZXF1ZXN0LmdldCgpKTsKLX0K
KyAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogbV9jbGllbnQ7Cit9OwogCi12b2lkIFJlcXVl
c3RNYW5hZ2VyQ2xpZW50RWZsOjpzdG9wTG9hZGluZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyUmVmIG1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCitSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6UmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwoV0tDb250ZXh0UmVmIGNvbnRleHQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1hbmFn
ZXIpOwotCi0gICAgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwqIGNsaWVudCA9IHRvUmVxdWVzdE1h
bmFnZXJDbGllbnRFZmwoY2xpZW50SW5mbyk7Ci0gICAgKGNsaWVudC0+bV91cmlTY2hlbWVSZXF1
ZXN0cykucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOworICAgIG1fcHJvY2Vzc1Bvb2wgPSB0b0lt
cGwoY29udGV4dCk7CisgICAgbV9wcm9jZXNzUG9vbC0+c2V0Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Pih0aGlz
KSk7CiB9CiAKIHZvaWQgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OnJlZ2lzdGVyVVJMU2NoZW1l
SGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYiBj
YWxsYmFjaywgdm9pZCogdXNlckRhdGEpCkBAIC03OSw4ICs4Niw5IEBAIHZvaWQgUmVxdWVzdE1h
bmFnZXJDbGllbnRFZmw6OnJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihjb25zdCBTdHJpbmcmIHNj
aGVtZSwgRXdrCiAgICAgQVNTRVJUKGNhbGxiYWNrKTsKIAogICAgIFJlZlB0cjxXZWJLaXRVUklT
Y2hlbWVIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHRSZWYobmV3IFdlYktpdFVSSVNjaGVtZUhhbmRs
ZXIoY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgbV91cmlTY2hlbWVIYW5kbGVycy5zZXQoc2No
ZW1lLCBoYW5kbGVyKTsKLSAgICB0b0ltcGwobV9yZXF1ZXN0TWFuYWdlci5nZXQoKSktPnJlZ2lz
dGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woc2NoZW1lKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fdXJpU2NoZW1lSGFuZGxlcnMuc2V0KHNjaGVtZSwgaGFuZGxlcik7CisgICAgaWYgKGFkZFJl
c3VsdC5pc05ld0VudHJ5KQorICAgICAgICBtX3Byb2Nlc3NQb29sLT5yZWdpc3RlclNjaGVtZUZv
ckN1c3RvbVByb3RvY29sKHNjaGVtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbC5oCmluZGV4IDg3ZDM2MGUuLmU1ZDM0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmgKQEAgLTI3LDcgKzI3
LDYgQEAKICNkZWZpbmUgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmxfaAogCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tf
dXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaCIKIApAQCAtMzgsNiArMzcsOCBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OworCiBj
bGFzcyBXZWJLaXRVUklTY2hlbWVIYW5kbGVyOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJLaXRVUklT
Y2hlbWVIYW5kbGVyPiB7CiBwdWJsaWM6CiAgICAgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcigpCkBA
IC03OSwxMCArODAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUhhbmRs
ZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIEV3a19VcmxfU2NoZW1lX1JlcXVlc3RfQ2IgY2FsbGJh
Y2ssIHZvaWQqIHVzZXJEYXRhKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgdm9pZCBzdGFydExv
YWRpbmcoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiwgdWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCwgV0tVUkxSZXF1ZXN0UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
LSAgICBzdGF0aWMgdm9pZCBzdG9wTG9hZGluZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKKyAgICBmcmllbmQgY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50OwogCi0g
ICAgV0tSZXRhaW5QdHI8V0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZj4gbV9y
ZXF1ZXN0TWFuYWdlcjsKKyAgICBXZWJQcm9jZXNzUG9vbCogbV9wcm9jZXNzUG9vbDsKICAgICBV
UklTY2hlbWVIYW5kbGVyTWFwIG1fdXJpU2NoZW1lSGFuZGxlcnM7CiAgICAgVVJJU2NoZW1lUmVx
dWVzdE1hcCBtX3VyaVNjaGVtZVJlcXVlc3RzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAKaW5kZXggM2YyNjQwZS4uZmZhMmQ1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9v
bEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9v
bEVmbC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JTZXJ2ZXIu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxFZnJlZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0YWJhc2Uu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bv
b2xHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0
ay5jcHAKaW5kZXggODE5N2ZkMy4uNDEwYTljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNp
bmNsdWRlICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVk
ZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAKaW5kZXggZDVkYjI0NC4u
OTNhN2MwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJv
Y2Vzc1Bvb2xTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQ
cm9jZXNzUG9vbFNvdXAuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCi0jaW5jbHVkZSAiV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xh
bmd1YWdlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDAsNyArMzksOCBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYQogICAgIHBhcmFtZXRlcnMuY29va2llQWNjZXB0UG9saWN5ID0gbV9p
bml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeTsKICAgICBwYXJhbWV0ZXJzLmlnbm9yZVRMU0Vy
cm9ycyA9IG1faWdub3JlVExTRXJyb3JzOwogICAgIHBhcmFtZXRlcnMubGFuZ3VhZ2VzID0gV2Vi
Q29yZTo6dXNlclByZWZlcnJlZExhbmd1YWdlcygpOwotICAgIHBhcmFtZXRlcnMudXJsU2NoZW1l
c1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMgPSBzdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyPigpLT5yZWdpc3RlcmVkU2NoZW1lc0ZvckN1c3RvbVByb3Rv
Y29scygpOworICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1lIDogbV91cmxTY2hlbWVzUmVnaXN0
ZXJlZEZvckN1c3RvbVByb3RvY29scykKKyAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2NoZW1lKTsKICAgICBwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZyA9IGZhbHNlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295156</attachid>
            <date>2016-11-18 08:48:31 -0800</date>
            <delta_ts>2016-11-18 08:53:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-custom-protocols-soup.diff</filename>
            <type>text/plain</type>
            <size>83061</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0Yjg5MTk0Li5hMzNhYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsOTIg
QEAKIDIwMTYtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtTT1VQXSBTaW1wbGlmeSBjdXN0b20gcHJvdG9jb2xzIGhhbmRsZXIgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDkyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGFyZSB1c2luZyB0b28gbWFueSBjbGFzc2VzIGZvciB0aGlzIGFuZCBhbHNvIHRoZSBD
IEFQSSB0aGF0IGlzIG5vdCBuZWVkZWQsIGJlY2F1c2UgYm90aCBHVEsrIGFuZCBFRkwgaGF2ZQor
ICAgICAgICB0aGVpciBvd24gQVBJcyBhbmQgdGhpcyBpcyBub3QgdXNlZCBieSBXVFIgYXQgYWxs
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IFJlbW92ZSBmaWxlcyBmcm9tIGNvbXBp
bGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBT
aGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNl
U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoQVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgIChB
UEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcpOgorICAgICAgICAo
QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OmludmFsaWRhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
c291cC9XS0FQSUNhc3RTb3VwLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tDb250ZXh0U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1Nv
dXBSZXF1ZXN0TWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcDogUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHA6IFVzZSBDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSBpbnN0ZWFkIG9mIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYuCisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjpFd2tVcmxTY2hlbWVSZXF1
ZXN0KToKKyAgICAgICAgKEV3a1VybFNjaGVtZVJlcXVlc3Q6OmZpbmlzaCk6CisgICAgICAgIChF
d2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a1VybFNj
aGVtZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjptYW5h
Z2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKGF0dGFjaEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcDogVXNlIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGluc3RlYWQgb2YgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuCisgICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwpOgorICAg
ICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIpOgorICAgICAgICAod2Via2l0
VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUpOgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVx
dWVzdFJlYWRDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zp
bmlzaF9lcnJvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6CisgICAg
ICAgICh3ZWJraXRXZWJDb250ZXh0RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRl
eHRfcmVnaXN0ZXJfdXJpX3NjaGVtZSk6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0U3RhcnRM
b2FkaW5nQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dEludmFsaWRh
dGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOiBJ
bnZhbGlkYXRlIHRoZSBjbGllbnQuCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5OjpzdGFydExvYWRpbmcpOiBOb3RpZnkgdGhlIGNsaWVudC4KKyAgICAgICAgKFdl
YktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVz
cG9uc2UpOiBOb3RpZnkgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZExvYWREYXRhKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGYWlsV2l0aEVycm9yKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGaW5p
c2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZENsb3NlKTogTm90aWZ5IHRoZSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOiBJbml0aWFsaXplIHRoZSBDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQgYW5kIHJlbW92ZSB0aGUgYWxsIHN1cHBsZW1lbnQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbCk6IEluIGNhc2Ugb2Ygc291cCBjYWNoZSB0aGUgZ2l2ZW4gcHJvdG9jb2wu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2wpOiBJbiBjYXNlIG9mIHNvdXAgZGVsZXRlIHRoZSBnaXZlbiBwcm90b2NvbCBm
cm9tIHRoZSBjYWNoZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcDogRG8gbm90
IHVzZSB0aGUgQyBBUEksIGJ1dCBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC4KKyAg
ICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OlJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OnJlZ2lz
dGVyVVJMU2NoZW1lSGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFu
YWdlckNsaWVudEVmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xF
ZmwuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyk6IFVzZSBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzIHRvCisgICAg
ICAgIGJ1aWxkIHRoZSBsaXN0IG9mIGN1c3RvbSBwcm90b2NvbHMgdG8gc2VuZCB0byB0aGUgbmV0
d29yayBwcm9jZXNzLgorCisyMDE2LTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBSZW1vdmUgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSBmcm9tIFdlYlByb2Nlc3NQcm94eQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTA4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
NmU3N2VlNi4uOTk0NGFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTc2LDcgKzc2
LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS1ZpZXdFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tpZU1hbmFn
ZXJTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcAogCkBAIC0xMzEsOCArMTMwLDYgQEAgbGlzdChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1
bmNoZXJFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291
cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nlc3Mv
UGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCiAgICAgVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtMjU2LDYgKzI1Myw3IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElS
fS9TaGFyZWQvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vU2hhcmVkL3VuaXgiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9jYWlybyIKICAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9lZmwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
CmluZGV4IDlmZDJkMTYuLjU5NTRiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0x
MDEsNyArMTAxLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNz
L0FQSS9DL2d0ay9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tp
ZU1hbmFnZXJTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9BUElXZWJz
aXRlRGF0YVN0b3JlR3RrLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcApAQCAtMTM0LDYgKzEzMyw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlLmgKICAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDcmVkZW50aWFsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENyZWRlbnRpYWwuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERl
ZmluZXMuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmgKQEAgLTIxMCw4ICsyMTEsNiBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmlu
dE9wZXJhdGlvblByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCi0gICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCi0gICAgVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUuaApAQCAtMjgzLDggKzI4Miw2IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVz
c3VyZU1vbml0b3IuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
c291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCi0gICAgVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXIuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nl
c3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgKaW5kZXggOTQ4ZTE2MC4uMzJmYmM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0Jhc2UuaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNl
R3RrLmg+CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoVVNFX1NPVVApCi0jaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZVNvdXAuaD4KLSNlbmRpZgotCiAjaWYgZGVmaW5lZChCVUlMRElOR19FRkxfXykKICNp
bmNsdWRlIDxXZWJLaXQvV0tCYXNlRWZsLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjAwZjA4NS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mvc291
cC9XS0Jhc2VTb3VwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tCYXNlU291
cF9oCi0jZGVmaW5lIFdLQmFzZVNvdXBfaAotCi0jaWZuZGVmIFdLQmFzZV9oCi0jZXJyb3IgIlBs
ZWFzZSAjaW5jbHVkZSBcIldLQmFzZS5oXCIgaW5zdGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHku
IgotI2VuZGlmCi0KLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU291cFJlcXVlc3RNYW5h
Z2VyKiBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZjsKLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIFdLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJSZWY7Ci0KLSNlbmRpZiAvKiBXS0Jhc2VTb3VwX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50LmgKc2ltaWxhcml0eSBpbmRleCA2OCUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCmluZGV4IDJk
ZjYzZjIuLjUxZTE4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLQVBJQ2FzdFNvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChD
KSAyMDE2IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDE5ICsyMywyOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgV0tBUElDYXN0U291cF9oCi0jZGVmaW5lIFdLQVBJQ2FzdFNvdXBfaAorI3ByYWdt
YSBvbmNlCiAKLSNpZm5kZWYgV0tBUElDYXN0X2gKLSNlcnJvciAiUGxlYXNlICNpbmNsdWRlIFwi
V0tBUElDYXN0LmhcIiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCi0jZW5kaWYKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OworfQogCi1jbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlcjsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlUmVxdWVz
dDsKK30KIAotV0tfQUREX0FQSV9NQVBQSU5HKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYsIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKQorbmFtZXNwYWNl
IEFQSSB7CiAKLX0KK2NsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkgeyB9CisKKyAgICB2
aXJ0dWFsIGJvb2wgc3RhcnRMb2FkaW5nKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkmLCB1aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzdG9wTG9h
ZGluZyhXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3Vz
dG9tUHJvdG9jb2xJRCAqLykgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShXZWJL
aXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JikgeyB9Cit9OwogCi0jZW5kaWYgLy8gV0tB
UElDYXN0U291cF9oCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCA3YjRhNGQ1Li5mN2YzYTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC01NTIsMTAgKzU1Miw2IEBAIGlu
bGluZSBQcm94eWluZ1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiB0b0FQSShjb25zdCBXZWJDb3Jl
OjpHcmFtbWFyRGV0YWlsJiBncmFtCiAjaW5jbHVkZSAiV0tBUElDYXN0R3RrLmgiCiAjZW5kaWYK
IAotI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIldLQVBJQ2FzdFNvdXAuaCIKLSNlbmRpZgotCiAj
aWYgZGVmaW5lZChCVUlMRElOR19FRkxfXykKICNpbmNsdWRlICJXS0FQSUNhc3RFZmwuaCIKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tD
b250ZXh0U291cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250
ZXh0U291cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDQyZjM5Li4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0NvbnRleHRTb3VwX2gKLSNkZWZp
bmUgV0tDb250ZXh0U291cF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0jaW5jbHVk
ZSA8V2ViS2l0L1dLU291cFJlcXVlc3RNYW5hZ2VyLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwot
ZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLU291cFJlcXVlc3RNYW5hZ2VyUmVm
IFdLQ29udGV4dEdldFNvdXBSZXF1ZXN0TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7Ci0K
LSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS0NvbnRleHRTb3Vw
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ZDM2ZjYuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCi0KLSNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCkKLXsKLSAgICByZXR1cm4g
dG9BUEkoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OkFQSVR5cGUpOwotfQot
Ci12b2lkIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIGNv
bnN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiB3a0NsaWVu
dCkKLXsKLSAgICB0b0ltcGwoc291cFJlcXVlc3RNYW5hZ2VyUmVmKS0+aW5pdGlhbGl6ZUNsaWVu
dCh3a0NsaWVudCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMmE3NjIuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyX2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lm
ZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKCpX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU3RhcnRMb2FkaW5nQ2FsbGJhY2spKFdL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgc291cE1hbmFnZXJSZWYsIHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXJTdG9wTG9hZGluZ0NhbGxiYWNrKShXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyUmVmIHNvdXBNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZv
aWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZv
OwotfSBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZTsKLQotdHlw
ZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwIHsK
LSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAg
ICAgYmFzZTsKLQotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTdGFydExv
YWRpbmdDYWxsYmFjayBzdGFydExvYWRpbmc7Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlclN0b3BMb2FkaW5nQ2FsbGJhY2sgIHN0b3BMb2FkaW5nOwotfSBXS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjA7Ci0KLVdLX0VYUE9SVCBXS1R5cGVJRCBX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9S
VCB2b2lkIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLQotI2VuZGlmIC8qIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3Vw
UmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cFJlcXVlc3RNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2Njdl
ZGUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tT
b3VwUmVxdWVzdE1hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS1Nv
dXBSZXF1ZXN0TWFuYWdlcl9oCi0jZGVmaW5lIFdLU291cFJlcXVlc3RNYW5hZ2VyX2gKLQotI2lu
Y2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMi
IHsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKCpXS1NvdXBSZXF1ZXN0TWFuYWdlckRpZFJlY2Vp
dmVVUklSZXF1ZXN0Q2FsbGJhY2spKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0
TWFuYWdlclJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS1BhZ2VSZWYgcGFnZVJlZiwgdWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLU291
cFJlcXVlc3RNYW5hZ2VyRGlkRmFpbFRvTG9hZFVSSVJlcXVlc3RDYWxsYmFjaykoV0tTb3VwUmVx
dWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotCi10eXBlZGVmIHN0cnVjdCBXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotfSBXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2U7Ci0KLXR5cGVkZWYgc3RydWN0IFdLU291cFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50VjAgewotICAgIFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAgICAg
ICAgICAgICAgICBiYXNlOwotCi0gICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRSZWNlaXZlVVJJ
UmVxdWVzdENhbGxiYWNrICAgIGRpZFJlY2VpdmVVUklSZXF1ZXN0OwotICAgIFdLU291cFJlcXVl
c3RNYW5hZ2VyRGlkRmFpbFRvTG9hZFVSSVJlcXVlc3RDYWxsYmFjayBkaWRGYWlsVG9Mb2FkVVJJ
UmVxdWVzdDsKLX0gV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRWMDsKLQotV0tfRVhQT1JUIFdL
VHlwZUlEIFdLU291cFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9SVCB2b2lk
IFdLU291cFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBj
b25zdCBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqIGNsaWVudCk7Ci1XS19FWFBPUlQg
dm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZ2lzdGVyVVJJU2NoZW1lKFdLU291cFJlcXVlc3RN
YW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBzY2hlbWVSZWYpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3Vw
UmVxdWVzdE1hbmFnZXJEaWRIYW5kbGVVUklSZXF1ZXN0KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVm
LCBXS0RhdGFSZWYsIHVpbnQ2NF90IGNvbnRlbnRMZW5ndGgsIFdLU3RyaW5nUmVmIG1pbWVUeXBl
UmVmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3VwUmVxdWVzdE1h
bmFnZXJEaWRSZWNlaXZlVVJJUmVxdWVzdERhdGEoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdL
RGF0YVJlZiwgdWludDY0X3QgcmVxdWVzdElEKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLQotI2VuZGlmIC8qIFdLU291cFJlcXVlc3RNYW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRleCAxNzk1MjY5
Li5iNGVkZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0NvbnRleHRQ
cml2YXRlLmgiCi0jaW5jbHVkZSAiV0tDb250ZXh0U291cC5oIgogI2luY2x1ZGUgIldLTnVtYmVy
LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2No
ZW1lX3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5jcHAKaW5kZXggOTg4Yjk5Ni4uZjU1NDg0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVf
cmVxdWVzdC5jcHAKQEAgLTMxLDE0ICszMSwxMyBAQAogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV0tVUkwuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogCiAjaW5jbHVkZSAiZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
LUV3a1VybFNjaGVtZVJlcXVlc3Q6OkV3a1VybFNjaGVtZVJlcXVlc3QoV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVl
c3QsIHVpbnQ2NF90IHJlcXVlc3RJRCkKLSAgICA6IG1fd2tSZXF1ZXN0TWFuYWdlcihtYW5hZ2Vy
KQorRXdrVXJsU2NoZW1lUmVxdWVzdDo6RXdrVXJsU2NoZW1lUmVxdWVzdChDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50
NjRfdCByZXF1ZXN0SUQpCisgICAgOiBtX3drUmVxdWVzdE1hbmFnZXIoJm1hbmFnZXIpCiAgICAg
LCBtX3JlcXVlc3RJRChyZXF1ZXN0SUQpCiB7CiAgICAgV0tVUkxSZWYgdXJsID0gdG9Db3BpZWRV
UkxBUEkodXJsUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOwpAQCAtNjksNiArNjgs
OSBAQCBjb25zdCBjaGFyKiBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpwYXRoKCkgY29uc3QKIAogdm9p
ZCBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpmaW5pc2goY29uc3Qgdm9pZCogY29udGVudERhdGEsIHVp
bnQ2NF90IGNvbnRlbnRMZW5ndGgsIGNvbnN0IGNoYXIqIG1pbWVUeXBlKQogeworICAgIGlmICgh
bV93a1JlcXVlc3RNYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKICAgICBXS1JldGFpblB0cjxX
S0RhdGFSZWY+IHdrRGF0YShBZG9wdFdLLCBXS0RhdGFDcmVhdGUoY29udGVudExlbmd0aCA/IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGNvbnRlbnREYXRhKSA6IDAsIGNv
bnRlbnRMZW5ndGgpKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNaW1lVHlwZSA9
IG1pbWVUeXBlID8gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhtaW1lVHlw
ZSkpIDogMDsKIApAQCAtNzYsMTAgKzc4LDE1IEBAIHZvaWQgRXdrVXJsU2NoZW1lUmVxdWVzdDo6
ZmluaXNoKGNvbnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50NjRfdCBjb250ZW50TGVuZ3RoCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgobV91cmwpKSwKICAgICAgICAgU3RyaW5nOjpmcm9t
VVRGOChtaW1lVHlwZSksIGNvbnRlbnRMZW5ndGgsIGVtcHR5U3RyaW5nKCkpOwogCi0gICAgdG9J
bXBsKG1fd2tSZXF1ZXN0TWFuYWdlci5nZXQoKSktPmRpZFJlY2VpdmVSZXNwb25zZShtX3JlcXVl
c3RJRCwgcmVzcG9uc2UpOwotICAgIHRvSW1wbChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5k
aWRMb2FkRGF0YShtX3JlcXVlc3RJRCwgdG9JbXBsKHdrRGF0YS5nZXQoKSkpOwotICAgIHRvSW1w
bChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVxdWVzdElE
KTsKLSAgICB0b0ltcGwobV93a1JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+c3RvcExvYWRpbmcobV9y
ZXF1ZXN0SUQpOworICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1f
cmVxdWVzdElELCByZXNwb25zZSk7CisgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0
YShtX3JlcXVlc3RJRCwgdG9JbXBsKHdrRGF0YS5nZXQoKSktPmRhdGFSZWZlcmVuY2UoKSk7Cisg
ICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVxdWVzdElEKTsKKyAg
ICBtX3drUmVxdWVzdE1hbmFnZXItPnN0b3BMb2FkaW5nKG1fcmVxdWVzdElEKTsKK30KKwordm9p
ZCBFd2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX3drUmVxdWVzdE1h
bmFnZXIgPSBudWxscHRyOwogfQogCiBjb25zdCBjaGFyKiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0
X3NjaGVtZV9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3Jl
cXVlc3RfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKaW5kZXggYTM5ODkyYi4uZjU5ZDU1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVx
dWVzdF9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKQEAgLTI2LDExICsyNiwxMSBAQAogI2lmbmRl
ZiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGVfaAogI2RlZmluZSBld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0X3ByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0Jhc2UuaCIKICNpbmNs
dWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgotI2lu
Y2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJl
d2tfb2JqZWN0X3ByaXZhdGUuaCIKIAogLyoqCkBAIC00MSw5ICs0MSw5IEBAIGNsYXNzIEV3a1Vy
bFNjaGVtZVJlcXVlc3QgOiBwdWJsaWMgRXdrT2JqZWN0IHsKIHB1YmxpYzoKICAgICBFV0tfT0JK
RUNUX0RFQ0xBUkUoRXdrVXJsU2NoZW1lUmVxdWVzdCkKIAotICAgIHN0YXRpYyBSZWZQdHI8RXdr
VXJsU2NoZW1lUmVxdWVzdD4gY3JlYXRlKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJSZWYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1
ZXN0SUQpCisgICAgc3RhdGljIFJlZlB0cjxFd2tVcmxTY2hlbWVSZXF1ZXN0PiBjcmVhdGUoV2Vi
S2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0
KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgewotICAgICAgICBpZiAoIW1h
bmFnZXIgfHwgIXVybFJlcXVlc3QpCisgICAgICAgIGlmICghdXJsUmVxdWVzdCkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrVXJs
U2NoZW1lUmVxdWVzdChtYW5hZ2VyLCB1cmxSZXF1ZXN0LCByZXF1ZXN0SUQpKTsKQEAgLTU2LDEw
ICs1NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZpbmlzaChjb25zdCB2b2lkKiBjb250ZW50
RGF0YSwgdWludDY0X3QgY29udGVudExlbmd0aCwgY29uc3QgY2hhciogbWltZVR5cGUpOwogCisg
ICAgV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogbWFuYWdlcigpIGNvbnN0IHsg
cmV0dXJuIG1fd2tSZXF1ZXN0TWFuYWdlcjsgfQorICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCiBw
cml2YXRlOgotICAgIEV3a1VybFNjaGVtZVJlcXVlc3QoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QsIHVpbnQ2
NF90IHJlcXVlc3RJRCk7CisgICAgRXdrVXJsU2NoZW1lUmVxdWVzdChXZWJLaXQ6OkN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3Qs
IHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAKLSAgICBXS1JldGFpblB0cjxXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyUmVmPiBtX3drUmVxdWVzdE1hbmFnZXI7CisgICAgV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogbV93a1JlcXVlc3RNYW5hZ2VyOwogICAgIFdLRWlu
YVNoYXJlZFN0cmluZyBtX3VybDsKICAgICB1aW50NjRfdCBtX3JlcXVlc3RJRDsKICAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgbV9zY2hlbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjJmMzE0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKKworI2luY2x1ZGUgIkFQ
SUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2NsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dCBmaW5hbCA6IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KFdlYktpdFdlYkNv
bnRleHQqIHdlYkNvbnRleHQpCisgICAgICAgIDogbV93ZWJDb250ZXh0KHdlYkNvbnRleHQpCisg
ICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Vi
a2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3Vz
dG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwgbWFuYWdlcik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHZvaWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Vi
a2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2wobV93ZWJDb250ZXh0LCBjdXN0
b21Qcm90b2NvbElEKTsKKyAgICB9CisKKyAgICB2b2lkIGludmFsaWRhdGUoQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICB3ZWJraXRX
ZWJDb250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMobV93ZWJDb250ZXh0LCBt
YW5hZ2VyKTsKKyAgICB9CisKKyAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7Cit9
OworCit2b2lkIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dChXZWJL
aXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQoreworICAgIGF1dG8qIHByb2Nlc3NQb29sID0gd2Vi
a2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpOworICAgIHByb2Nlc3NQb29s
LT5zZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuaApzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oCnJlbmFt
ZSB0byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuaAppbmRleCBhMzY1NTk0Li5jOWM0YzE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTE3LDExICsxNyw5IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFdlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKLSNk
ZWZpbmUgV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCiAKLXZvaWQgYXR0YWNoUmVxdWVzdE1hbmFnZXJDbGll
bnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCopOwordm9pZCBhdHRhY2hDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCopOwogCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAppbmRl
eCA3NWU4YzllLi5kMDcyYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSA8V2ViS2l0
L1dLSW5zcGVjdG9yQ2xpZW50R3RrLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+Ci0jaW5jbHVkZSA8
V2ViS2l0L1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5h
Z2VyQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkxODljOS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0
TWFuYWdlckNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgotCi0jaW5jbHVkZSAiV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotc3RhdGljIHZv
aWQgc3RhcnRMb2FkaW5nKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdD
dXN0b21Qcm90b2NvbChXRUJLSVRfV0VCX0NPTlRFWFQoY2xpZW50SW5mbyksIGN1c3RvbVByb3Rv
Y29sSUQsIHRvSW1wbChyZXF1ZXN0UmVmKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN0b3BMb2FkaW5n
KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgd2Via2l0V2ViQ29udGV4
dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV0VCS0lUX1dFQl9DT05URVhUKGNsaWVudEluZm8p
LCBjdXN0b21Qcm90b2NvbElEKTsKLX0KLQotdm9pZCBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVu
dFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQotewotICAgIFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50
ID0gewotICAgICAgICB7Ci0gICAgICAgICAgICAwLCAvLyB2ZXJzaW9uCi0gICAgICAgICAgICB3
ZWJDb250ZXh0IC8vIGNsaWVudEluZm8KLSAgICAgICAgfSwKLSAgICAgICAgc3RhcnRMb2FkaW5n
LAotICAgICAgICBzdG9wTG9hZGluZwotICAgIH07Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlclNldENsaWVudCh0b0FQSSh3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1h
bmFnZXIod2ViQ29udGV4dCkpLCAmd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5iYXNlKTsKLX0KLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
UklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCA4NzJhNTY0Li5hYmExYjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiAvKioKICAqIFNFQ1RJT046IFdlYktpdFVSSVNjaGVtZVJlcXVlc3QKQEAgLTU0LDcgKzU1LDcg
QEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBnUmVhZEJ1ZmZlclNpemUgPSA4MTkyOwogCiBz
dHJ1Y3QgX1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlIHsKICAgICBXZWJLaXRXZWJDb250
ZXh0KiB3ZWJDb250ZXh0OwotICAgIFJlZlB0cjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcj4gd2ViUmVxdWVzdE1hbmFnZXI7CisgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkqIG1hbmFnZXI7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gaW5pdGlhdGluZ1BhZ2U7CiAg
ICAgdWludDY0X3QgcmVxdWVzdElEOwogICAgIENTdHJpbmcgdXJpOwpAQCAtNzQsMjEgKzc1LDMx
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Q2xhc3MqKQogewogfQogCi1XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0
V2ViQ29udGV4dCogd2ViQ29udGV4dCwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0KQorV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdCogd2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRf
dCByZXF1ZXN0SUQsIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFu
YWdlcikKIHsKLSAgICBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1VS
SV9TQ0hFTUVfUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVVJJX1NDSEVNRV9SRVFV
RVNULCBOVUxMKSk7CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJ
VF9VUklfU0NIRU1FX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VSSV9TQ0hFTUVf
UkVRVUVTVCwgbnVsbHB0cikpOwogICAgIHJlcXVlc3QtPnByaXYtPndlYkNvbnRleHQgPSB3ZWJD
b250ZXh0OwotICAgIHJlcXVlc3QtPnByaXYtPndlYlJlcXVlc3RNYW5hZ2VyID0gd2Via2l0V2Vi
Q29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKHdlYkNvbnRleHQpOwotICAgIHJlcXVlc3QtPnByaXYt
PnVyaSA9IHVybFJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0Zjgo
KTsKLSAgICByZXF1ZXN0LT5wcml2LT5pbml0aWF0aW5nUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6
d2ViUGFnZSh1cmxSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5pbml0aWF0aW5nUGFnZUlEKCkp
OworICAgIHJlcXVlc3QtPnByaXYtPm1hbmFnZXIgPSAmbWFuYWdlcjsKKyAgICByZXF1ZXN0LT5w
cml2LT51cmkgPSByZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpOworICAgIHJl
cXVlc3QtPnByaXYtPmluaXRpYXRpbmdQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHJl
c291cmNlUmVxdWVzdC5pbml0aWF0aW5nUGFnZUlEKCkpOwogICAgIHJlcXVlc3QtPnByaXYtPnJl
cXVlc3RJRCA9IHJlcXVlc3RJRDsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAogdm9pZCB3ZWJr
aXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3Qp
CiB7Ci0gICAgaWYgKHJlcXVlc3QtPnByaXYtPmNhbmNlbGxhYmxlLmdldCgpKQotICAgICAgICBn
X2NhbmNlbGxhYmxlX2NhbmNlbChyZXF1ZXN0LT5wcml2LT5jYW5jZWxsYWJsZS5nZXQoKSk7Cisg
ICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwocmVxdWVzdC0+cHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCkp
OworfQorCitDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogd2Via2l0VVJJU2NoZW1lUmVxdWVz
dEdldE1hbmFnZXIoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICByZXR1
cm4gcmVxdWVzdC0+cHJpdi0+bWFuYWdlcjsKK30KKwordm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0SW52YWxpZGF0ZShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIHJl
cXVlc3QtPnByaXYtPm1hbmFnZXIgPSBudWxscHRyOworICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVl
c3RDYW5jZWwocmVxdWVzdCk7CiB9CiAKIC8qKgpAQCAtMTU5LDggKzE3MCwxNCBAQCBXZWJLaXRX
ZWJWaWV3KiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyhXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZQogc3RhdGljIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRD
YWxsYmFjayhHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogc2NoZW1lUmVxdWVzdCkKIHsKICAgICBHUmVmUHRyPFdl
YktpdFVSSVNjaGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYoc2NoZW1lUmVxdWVzdCk7
CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBnc3NpemUgYnl0ZXNSZWFk
ID0gZ19pbnB1dF9zdHJlYW1fcmVhZF9maW5pc2goaW5wdXRTdHJlYW0sIHJlc3VsdCwgJmVycm9y
Lm91dFB0cigpKTsKKyAgICBpZiAoIXByaXYtPm1hbmFnZXIpIHsKKyAgICAgICAgd2Via2l0V2Vi
Q29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBw
cml2LT5yZXF1ZXN0SUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKGJ5dGVz
UmVhZCA9PSAtMSkgewogICAgICAgICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9l
cnJvcihyZXF1ZXN0LmdldCgpLCBlcnJvci5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3
MSwyMiArMTg4LDIxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2Fs
bGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAgICAgaWYgKCFyZXF1ZXN0
LT5wcml2LT5zdHJlYW0pCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYktpdFVSSVNjaGVtZVJl
cXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKLSAgICBSZWY8QVBJOjpEYXRhPiB3
ZWJEYXRhID0gQVBJOjpEYXRhOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4ocHJpdi0+cmVhZEJ1ZmZlciksIGJ5dGVzUmVhZCk7CisgICAgYXV0byB3ZWJEYXRh
ID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBy
aXYtPnJlYWRCdWZmZXIpLCBieXRlc1JlYWQpOwogICAgIGlmICghcHJpdi0+Ynl0ZXNSZWFkKSB7
CiAgICAgICAgIC8vIEZpcnN0IGNodW5rIHJlYWQuIEluIGNhc2Ugb2YgZW1wdHkgcmVwbHkgYW4g
ZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQgdG8gdGhlIG5ldHdvcmtpbmcgcHJvY2Vzcy4KLSAgICAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVURjgo
cHJpdi0+bWltZVR5cGUuZGF0YSgpKSwKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVU
RjgocHJpdi0+bWltZVR5cGUuZGF0YSgpKSwKICAgICAgICAgICAgIHByaXYtPnN0cmVhbUxlbmd0
aCwgZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRS
ZWNlaXZlUmVzcG9uc2UocHJpdi0+cmVxdWVzdElELCByZXNwb25zZSk7Ci0gICAgICAgIHByaXYt
PndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEu
cHRyKCkpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2UocHJpdi0+
cmVxdWVzdElELCByZXNwb25zZSk7CisgICAgICAgIHByaXYtPm1hbmFnZXItPmRpZExvYWREYXRh
KHByaXYtPnJlcXVlc3RJRCwgd2ViRGF0YSk7CiAgICAgfSBlbHNlIGlmIChieXRlc1JlYWQgfHwg
KCFieXRlc1JlYWQgJiYgIXByaXYtPnN0cmVhbUxlbmd0aCkpIHsKICAgICAgICAgLy8gU3Vic2Vx
dWVudCBjaHVuayByZWFkLiBXZSBvbmx5IHNlbmQgYW4gZW1wdHkgQVBJOjpEYXRhIHRvIHRoZSBu
ZXR3b3JraW5nIHByb2Nlc3Mgd2hlbiBzdHJlYW0gbGVuZ3RoIGlzIHVua25vd24uCi0gICAgICAg
IHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdl
YkRhdGEucHRyKCkpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5y
ZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0KIAogICAgIGlmICghYnl0ZXNSZWFkKSB7Ci0gICAg
ICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRGaW5pc2hMb2FkaW5nKHJlcXVlc3QtPnBy
aXYtPnJlcXVlc3RJRCk7Ci0gICAgICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5n
Q3VzdG9tUHJvdG9jb2wocmVxdWVzdC0+cHJpdi0+d2ViQ29udGV4dCwgcmVxdWVzdC0+cHJpdi0+
cmVxdWVzdElEKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyhwcml2
LT5yZXF1ZXN0SUQpOworICAgICAgICB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1
c3RvbVByb3RvY29sKHByaXYtPndlYkNvbnRleHQsIHByaXYtPnJlcXVlc3RJRCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTIzOSw3ICsyNTUsNyBAQCB2b2lkIHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3Qs
IEdFcgogICAgICAgICByZXR1cm47CiAKICAgICBwcml2LT5zdHJlYW0gPSBudWxscHRyOwotICAg
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhl
cnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNvZGUpLCBXZWJDb3JlOjpVUkwo
cHJpdi0+c291cFVSSS5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsK
LSAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkRmFpbFdpdGhFcnJvcihwcml2LT5yZXF1
ZXN0SUQsIHJlc291cmNlRXJyb3IpOworICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNv
ZGUpLCBVUkwocHJpdi0+c291cFVSSS5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKTsKKyAgICBwcml2LT5tYW5hZ2VyLT5kaWRGYWlsV2l0aEVycm9yKHByaXYtPnJlcXVl
c3RJRCwgcmVzb3VyY2VFcnJvcik7CiAgICAgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRp
bmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0SUQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKaW5kZXggYzcyZmExOC4uNDdiYjhjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oCkBAIC0yMCwxMSArMjAsMTUgQEAKICNpZm5k
ZWYgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGVfaAogI2RlZmluZSBXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0UHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKLVdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtp
dFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXRXZWJDb250
ZXh0KiwgQVBJOjpVUkxSZXF1ZXN0Kik7CitXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiB3ZWJraXRV
UklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0V2ViQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYktpdDo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmKTsKIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdENhbmNlbChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Kik7CitXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0R2V0TWFuYWdlcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
Kik7Cit2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RJbnZhbGlkYXRlKFdlYktpdFVSSVNjaGVt
ZVJlcXVlc3QqKTsKIAogI2VuZGlmIC8vIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKaW5kZXggNzI1MzU1OS4uNzM4MzRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTIwLDYgKzIw
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0Lmgi
CiAKKyNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJBUElEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCkBAIC0zMCw2ICszMSw3
IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRDb29raWVNYW5hZ2VyUHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgog
I2luY2x1ZGUgIldlYktpdERvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxv
YWRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZS5oIgpA
QCAtMzgsNyArNDAsNiBAQAogI2luY2x1ZGUgIldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiV2ViS2l0UGx1Z2luUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZh
dGUuaCIKLSNpbmNsdWRlICJXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUg
IldlYktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRTZXR0aW5n
c1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oIgpA
QCAtMTE1LDEyICsxMTYsNiBAQCBlbnVtIHsKIAogY2xhc3MgV2ViS2l0VVJJU2NoZW1lSGFuZGxl
cjogcHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gewogcHVibGljOgot
ICAgIFdlYktpdFVSSVNjaGVtZUhhbmRsZXIoKQotICAgICAgICA6IG1fY2FsbGJhY2soMCkKLSAg
ICAgICAgLCBtX3VzZXJEYXRhKDApCi0gICAgICAgICwgbV9kZXN0cm95Tm90aWZ5KDApCi0gICAg
ewotICAgIH0KICAgICBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKFdlYktpdFVSSVNjaGVtZVJlcXVl
c3RDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ry
b3lOb3RpZnkpCiAgICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKICAgICAgICAgLCBtX3Vz
ZXJEYXRhKHVzZXJEYXRhKQpAQCAtMTQ3LDkgKzE0Miw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrIG1fY2FsbGJhY2s7Ci0g
ICAgdm9pZCogbV91c2VyRGF0YTsKLSAgICBHRGVzdHJveU5vdGlmeSBtX2Rlc3Ryb3lOb3RpZnk7
CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrIG1fY2FsbGJhY2sgeyBudWxscHRy
IH07CisgICAgdm9pZCogbV91c2VyRGF0YSB7IG51bGxwdHIgfTsKKyAgICBHRGVzdHJveU5vdGlm
eSBtX2Rlc3Ryb3lOb3RpZnkgeyBudWxscHRyIH07CiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gPiBVUklTY2hlbWVIYW5kbGVyTWFw
OwpAQCAtMTYyLDcgKzE1Nyw2IEBAIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewog
ICAgIEdSZWZQdHI8V2ViS2l0Q29va2llTWFuYWdlcj4gY29va2llTWFuYWdlcjsKICAgICBHUmVm
UHRyPFdlYktpdEZhdmljb25EYXRhYmFzZT4gZmF2aWNvbkRhdGFiYXNlOwogICAgIEdSZWZQdHI8
V2ViS2l0U2VjdXJpdHlNYW5hZ2VyPiBzZWN1cml0eU1hbmFnZXI7Ci0gICAgUmVmUHRyPFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiByZXF1ZXN0TWFuYWdlcjsKICAgICBVUklT
Y2hlbWVIYW5kbGVyTWFwIHVyaVNjaGVtZUhhbmRsZXJzOwogICAgIFVSSVNjaGVtZVJlcXVlc3RN
YXAgdXJpU2NoZW1lUmVxdWVzdHM7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQpAQCAtMjc1LDgg
KzI2OSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpCiAgICAgICAgIHBy
aXYtPndlYnNpdGVEYXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJDcmVhdGUod2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Gb3JXZWJQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikpKTsKIAotICAgIHByaXYtPnJlcXVlc3RNYW5hZ2Vy
ID0gcHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXI+KCk7Ci0KICAgICBwcml2LT50bHNFcnJvcnNQb2xpY3kgPSBXRUJLSVRfVExT
X0VSUk9SU19QT0xJQ1lfRkFJTDsKICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0SWdub3JlVExT
RXJyb3JzKGZhbHNlKTsKIApAQCAtMjg3LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBhdHRhY2hJbmplY3Rl
ZEJ1bmRsZUNsaWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKICAgICBhdHRhY2hEb3dubG9hZENs
aWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKLSAgICBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVu
dFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKKyAgICBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAg
ICAgcHJpdi0+Z2VvbG9jYXRpb25Qcm92aWRlciA9IFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6
OmNyZWF0ZShwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eT4oKSk7CkBAIC0zMDQsNiArMjk2LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29u
dGV4dERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogICAgICAgICBwcml2LT5jbGllbnRzRGV0YWNo
ZWQgPSB0cnVlOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+aW5pdGlhbGl6ZUluamVjdGVk
QnVuZGxlQ2xpZW50KG51bGxwdHIpOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0RG93
bmxvYWRDbGllbnQobnVsbHB0cik7CisgICAgICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobnVsbHB0cik7CiAgICAgfQogCiAgICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X3dlYl9jb250ZXh0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsK
QEAgLTg0OSw4ICs4NDIsOSBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlf
c2NoZW1lKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYQogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoY2FsbGJhY2spOwogCiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+
IGhhbmRsZXIgPSBhZG9wdFJlZihuZXcgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihjYWxsYmFjaywg
dXNlckRhdGEsIGRlc3Ryb3lOb3RpZnkpKTsKLSAgICBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVI
YW5kbGVycy5zZXQoU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpLCBoYW5kbGVyLmdldCgpKTsKLSAg
ICBjb250ZXh0LT5wcml2LT5yZXF1ZXN0TWFuYWdlci0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0g
Y29udGV4dC0+cHJpdi0+dXJpU2NoZW1lSGFuZGxlcnMuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2No
ZW1lKSwgaGFuZGxlci5nZXQoKSk7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkpOwogfQogCiAvKioKQEAgLTEyNjYsMTQg
KzEyNjAsOSBAQCBXZWJQcm9jZXNzUG9vbCogd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29s
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnBy
b2Nlc3NQb29sLmdldCgpOwogfQogCi1XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ciogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKFdlYktpdFdlYkNvbnRleHQqIGNv
bnRleHQpCi17Ci0gICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnJlcXVlc3RNYW5hZ2VyLmdldCgp
OwotfQotCi12b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0b21Qcm90b2NvbChX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBBUEk6
OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QpCit2b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRp
bmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCwgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpCiB7Ci0gICAgR1JlZlB0
cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVSSVNj
aGVtZVJlcXVlc3RDcmVhdGUoY3VzdG9tUHJvdG9jb2xJRCwgY29udGV4dCwgdXJsUmVxdWVzdCkp
OworICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1Jl
Zih3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKGN1c3RvbVByb3RvY29sSUQsIGNvbnRleHQs
IHJlc291cmNlUmVxdWVzdCwgbWFuYWdlcikpOwogICAgIFN0cmluZyBzY2hlbWUoU3RyaW5nOjpm
cm9tVVRGOCh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9zY2hlbWUocmVxdWVzdC5nZXQo
KSkpKTsKICAgICBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IGNvbnRl
eHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJzLmdldChzY2hlbWUpOwogICAgIEFTU0VSVChoYW5k
bGVyLmdldCgpKTsKQEAgLTEyOTIsNiArMTI4MSwxNiBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRT
dG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIHVpbnQ2
NAogICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwocmVxdWVzdC5nZXQoKSk7CiB9CiAK
K3ZvaWQgd2Via2l0V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQsIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5h
Z2VyKQoreworICAgIFZlY3RvcjxHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+PiByZXF1
ZXN0czsKKyAgICBjb3B5VmFsdWVzVG9WZWN0b3IoY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVx
dWVzdHMsIHJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0cykgewor
ICAgICAgICBpZiAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIocmVxdWVzdC5nZXQo
KSkgPT0gJm1hbmFnZXIpCisgICAgICAgICAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0SW52YWxp
ZGF0ZShyZXF1ZXN0LmdldCgpKTsKKyAgICB9Cit9CisKIHZvaWQgd2Via2l0V2ViQ29udGV4dERp
ZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewogICAgIGNvbnRleHQtPnByaXYtPnVyaVNjaGVt
ZVJlcXVlc3RzLnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCmlu
ZGV4IDdlZTk2YjEuLjYzZWIyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaApAQCAtMjYsMjEgKzI2
LDIyIEBACiAjaWZuZGVmIFdlYktpdFdlYkNvbnRleHRQcml2YXRlX2gKICNkZWZpbmUgV2ViS2l0
V2ViQ29udGV4dFByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIldl
YktpdFdlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUg
IldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCogd2Via2l0V2Vi
Q29udGV4dEdldFByb2Nlc3NQb29sKFdlYktpdFdlYkNvbnRleHQqKTsKIFdlYktpdERvd25sb2Fk
KiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkqKTsKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZChXZWJL
aXRXZWJDb250ZXh0KiwgY29uc3QgY2hhciogdXJpLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwog
dm9pZCB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZFByb3h5
Kik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQoV2ViS2l0V2ViQ29udGV4
dCosIFdlYktpdERvd25sb2FkKik7Ci1XZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyKiB3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1hbmFnZXIoV2ViS2l0V2ViQ29u
dGV4dCopOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2wo
V2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIEFQSTo6VVJMUmVx
dWVzdCopOwordm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2wo
V2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
KTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0
V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwordm9pZCB3ZWJraXRXZWJD
b250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMoV2ViS2l0V2ViQ29udGV4dCos
IFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmKTsKIHZvaWQgd2Via2l0V2ViQ29u
dGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiBib29sIHdlYmtpdFdlYkNvbnRleHRJc0xvYWRpbmdD
dXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCk7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJD
b250ZXh0KiwgV2ViS2l0V2ViVmlldyosIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdlYktp
dFdlYlZpZXcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmgKaW5kZXggYjM4NzVmMy4uNGM3NDNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKQEAgLTM0LDggKzM0LDE0IEBA
CiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CiAjZW5kaWYKIAorbmFtZXNwYWNl
IElQQyB7CitjbGFzcyBEYXRhUmVmZXJlbmNlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01MSw2ICs1NywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydExvYWRpbmcodWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgdm9pZCBzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKIAorICAgIHZv
aWQgcHJvY2Vzc0RpZENsb3NlKCk7CisKKyNpZiBVU0UoU09VUCkKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRpZEZhaWxXaXRo
RXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCmluZGV4IGFkNTNlOTguLjk3OWIwZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9t
YWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eU1hYy5tbQpAQCAtMTYwLDQgKzE2MCw4IEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiAgICAgbV9s
b2FkZXJNYXAucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOwogfQogCit2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoKQoreworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCmluZGV4IDA1OWY0NjUuLjNmYjM0NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHlTb3VwLmNwcApAQCAtMjAsMTMgKzIwLDE5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKIAorI2luY2x1
ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkNoaWxkUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKKyNp
ZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNHdGsuaD4KKyNlbGlmIFBM
QVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0VmbC5oPgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9jZXNzUHJveHkqIGNoaWxkUHJvY2Vzc1Byb3h5LCBX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCkBAIC00MiwxNCArNDgsNDAgQEAgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCiAgICAgbV9j
aGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAordm9pZCBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKK3sKKyAgICBtX3By
b2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRoaXMp
OworfQorCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcodWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIG1fcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcj4oKS0+c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQsIHJl
cXVlc3QpOworICAgIGlmICghbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3QpKQorICAg
ICAgICBkaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OmNhbm5vdFNo
b3dVUkxFcnJvcihyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiB7Ci0gICAgbV9wcm9j
ZXNzUG9vbC5zdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigp
LT5zdG9wTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKTsKKyAgICBtX3Byb2Nlc3NQb29sLmN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudCgpLnN0b3BMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2Nv
bElEKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIG1fY2hpbGRQcm9jZXNzUHJveHktPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKGN1c3RvbVBy
b3RvY29sSUQsIHJlc3BvbnNlLCAwKSwgMCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKGN1c3RvbVByb3Rv
Y29sSUQsIGRhdGEpLCAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6
ZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZEZhaWxXaXRoRXJyb3IoY3VzdG9t
UHJvdG9jb2xJRCwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTo6ZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQoreworICAg
IG1fY2hpbGRQcm9jZXNzUHJveHktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdl
cjo6RGlkRmluaXNoTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKSwgMCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiNjU1ZTQzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgotCi0jaW5j
bHVkZSAiQVBJRGF0YS5oIgotI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotCi0jaWYgUExBVEZPUk0oR1RLKQotI2lu
Y2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+Ci0jZWxpZiBQTEFURk9STShFRkwpCi0jaW5jbHVk
ZSA8V2ViQ29yZS9FcnJvcnNFZmwuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y29uc3QgY2hhciogV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnN1cHBsZW1l
bnROYW1lKCkKLXsKLSAgICByZXR1cm4gIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyIjsKLX0KLQotUmVmPFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG9vbCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcihwcm9jZXNzUG9vbCkpOwotfQotCi1XZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcjo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIo
V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQotICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQo
cHJvY2Vzc1Bvb2wpCi17Ci19Ci0KLVdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Ojp+V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIoKQotewotfQotCi12b2lkIFdl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjppbml0aWFsaXplQ2xpZW50KGNvbnN0
IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpCi17
Ci0gICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwotfQotCi0vLyBXZWJDb250ZXh0U3Vw
cGxlbWVudAotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cHJvY2Vz
c1Bvb2xEZXN0cm95ZWQoKQotewotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyOjpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKLXsKLX0KLQotdm9p
ZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKQotewotICAgIEFQSTo6T2JqZWN0OjpyZWYoKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCi17
Ci0gICAgQVBJOjpPYmplY3Q6OmRlcmVmKCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgQVNTRVJUKCFzY2hlbWUuaXNOdWxsKCkpOwotICAgIGlm
IChtX3JlZ2lzdGVyZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vz
c1Bvb2woKS0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOwotCi0gICAg
bV9yZWdpc3RlcmVkU2NoZW1lcy5hcHBlbmQoc2NoZW1lKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3Rv
Y29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+dW5yZWdpc3RlclNjaGVtZUZvckN1
c3RvbVByb3RvY29sKHNjaGVtZSk7Ci0KLSAgICBib29sIHJlbW92ZWQgPSBtX3JlZ2lzdGVyZWRT
Y2hlbWVzLnJlbW92ZUZpcnN0KHNjaGVtZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCBy
ZW1vdmVkKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6
c3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAoIW1fY2xpZW50LnN0YXJ0TG9hZGlu
Zyh0aGlzLCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSkKLSAgICAgICAgZGlkRmFpbFdpdGhF
cnJvcihjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IocmVxdWVz
dCkpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdG9w
TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQotewotICAgIG1fY2xpZW50LnN0b3BM
b2FkaW5nKHRoaXMsIGN1c3RvbVByb3RvY29sSUQpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17
Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNz
UG9vbCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRSZWNlaXZlUmVzcG9uc2UoY3VzdG9tUHJvdG9jb2xJRCwg
cmVzcG9uc2UsIDApLCAwKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6ZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgQVBJ
OjpEYXRhKiBkYXRhKQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkTG9hZERhdGEoY3VzdG9tUHJv
dG9jb2xJRCwgZGF0YS0+ZGF0YVJlZmVyZW5jZSgpKSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0g
ICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9v
bCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpEaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIGVycm9y
KSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRp
ZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKLXsKLSAgICBpZiAoIXBy
b2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPm5ldHdv
cmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OkRpZEZpbmlzaExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCksIDApOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2NDc3NTZlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlcl9oCi0KLSNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJDb250
ZXh0U3VwcGxlbWVudC5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLWNsYXNzIERhdGE7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Ci0KLWNsYXNzIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBs
ZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwotCi0gICAgc3RhdGljIFJlZjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4g
Y3JlYXRlKFdlYlByb2Nlc3NQb29sKik7Ci0gICAgdmlydHVhbCB+V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSopOwotCi0gICAgdm9p
ZCByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsK
LSAgICB2b2lkIHVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcm
IHNjaGVtZSk7Ci0KLSAgICB2b2lkIHN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIHN0b3BMb2Fk
aW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIHZvaWQgZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCwgY29uc3QgQVBJOjpEYXRhKik7Ci0gICAgdm9pZCBkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Ci0KLSAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Qcm90b2NvbHMo
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9Ci0KLSAgICB1c2luZyBBUEk6
Ok9iamVjdDo6cmVmOwotICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKLQotcHJpdmF0ZToK
LSAgICBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcihXZWJQcm9jZXNzUG9vbCop
OwotCi0gICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKLSAgICB2b2lkIHByb2Nlc3NQb29sRGVz
dHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1By
b3h5Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwotCi0g
ICAgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQgbV9jbGllbnQ7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gbV9yZWdpc3RlcmVkU2NoZW1lczsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGRlZjYyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50LmgiCi0KLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5o
IgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotYm9vbCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlckNsaWVudDo6c3RhcnRMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyKiBzb3VwUmVxdWVzdE1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAoIW1f
Y2xpZW50LnN0YXJ0TG9hZGluZykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVmPEFQ
STo6VVJMUmVxdWVzdD4gdXJsUmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlcXVl
c3QpOwotICAgIG1fY2xpZW50LnN0YXJ0TG9hZGluZyh0b0FQSShzb3VwUmVxdWVzdE1hbmFnZXIp
LCBjdXN0b21Qcm90b2NvbElELCB0b0FQSSh1cmxSZXF1ZXN0LnB0cigpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcoV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIqIHNvdXBSZXF1ZXN0TWFuYWdlciwgdWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCkKLXsKLSAgICBpZiAobV9jbGllbnQuc3RvcExvYWRpbmcpCi0gICAgICAgIG1f
Y2xpZW50LnN0b3BMb2FkaW5nKHRvQVBJKHNvdXBSZXF1ZXN0TWFuYWdlciksIGN1c3RvbVByb3Rv
Y29sSUQsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlYmIyMjEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9oCi0jZGVmaW5lIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKLQotI2luY2x1ZGUgIkFQSUNsaWVudC5oIgot
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IENs
aWVudFRyYWl0czxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZT4g
ewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyQ2xpZW50VjA+IFZlcnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI7Ci0KLWNsYXNzIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgYm9v
bCBzdGFydExvYWRpbmcoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqLCB1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
LSAgICB2b2lkIHN0b3BMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYjk5MWI3YS4uODhjY2NhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTIxOSw2ICsyMTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpCiB7CiAgICAgaWYgKG1fZG93bmxvYWRQcm94eU1hcCkKICAgICAg
ICAgbV9kb3dubG9hZFByb3h5TWFwLT5wcm9jZXNzRGlkQ2xvc2UoKTsKKyAgICBtX2N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5LnByb2Nlc3NEaWRDbG9zZSgpOwogCiAgICAgbV90b2tlbkZvckhv
bGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGIwZmI3ZGMuLmY4MTUxMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElBdXRvbWF0aW9uQ2xpZW50LmgiCisj
aW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCkBAIC05MCwxMCArOTEsNiBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2VuZGlmCiAK
LSNpZiBVU0UoU09VUCkKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5oIgotI2VuZGlmCi0KICNpZiBPUyhMSU5VWCkKICNpbmNsdWRlICJNZW1vcnlQcmVzc3Vy
ZU1vbml0b3IuaCIKICNlbmRpZgpAQCAtMTU3LDYgKzE1NCw5IEBAIFdlYlByb2Nlc3NQb29sOjpX
ZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikKICAgICAsIG1fYXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21h
dGlvbkNsaWVudD4oKSkKICAgICAsIG1fZG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkRvd25sb2FkQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKKyNpZiBVU0UoU09VUCkK
KyAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCisjZW5kaWYKICAgICAsIG1fdmlzaXRl
ZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICAgICAsIG1fdmlzaXRlZExp
bmtzUG9wdWxhdGVkKGZhbHNlKQogICAgICwgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlcih0aGlz
KQpAQCAtMTY1LDkgKzE2NSw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fbWVtb3J5
U2FtcGxlckVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX21lbW9yeVNhbXBsZXJJbnRlcnZhbCgxNDAw
LjApCiAgICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUobV9jb25maWd1cmF0aW9uLT5zaG91bGRIYXZl
TGVnYWN5RGF0YVN0b3JlKCkgPyBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShsZWdhY3lX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKS5wdHIoKSA6IG51
bGxwdHIpCi0jaWYgVVNFKFNPVVApCi0gICAgLCBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9s
aWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbikKLSNl
bmRpZgogICAgICwgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oZmFsc2UpCiAgICAg
LCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQodHJ1ZSkKICAgICAsIG1fY2FuSGFuZGxlSFRU
UFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24odHJ1ZSkKQEAgLTE5Nyw5ICsxOTQsNiBAQCBXZWJQcm9j
ZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCiAgICAgYWRkU3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7
CiAgICAgYWRkU3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKICAgICBh
ZGRTdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKTsKLSNpZiBVU0UoU09V
UCkKLSAgICBhZGRTdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
PigpOwotI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAgICAgYWRkU3VwcGxlbWVu
dDxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+KCk7CiAjZW5kaWYKQEAgLTI5OSw2ICsyOTMs
MTYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PgogICAgICAgICBtX2F1dG9tYXRpb25DbGllbnQg
PSBXVEZNb3ZlKGF1dG9tYXRpb25DbGllbnQpOwogfQogCisjaWYgVVNFKFNPVVApCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PiBjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQpCit7CisgICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpCisgICAg
ICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKKyAgICBlbHNlCisgICAgICAgIG1fY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQpOworfQorI2VuZGlmCisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1i
ZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMpCiB7CiAgICAg
Ly8gR3VhcmQgYWdhaW5zdCBBUEkgbWlzdXNlLgpAQCAtMTM2NCwxMSArMTM2OCwxNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50
cmllc0FkZGVkQWZ0ZXJUaW1lKAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogeworI2lmIFVTRShTT1VQ
KQorICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYWRkKHNjaGVt
ZSk7CisjZW5kaWYKICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpSZWdpc3RlclNjaGVtZShzY2hlbWUpKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKQogeworI2lmIFVTRShTT1VQKQorICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRG
b3JDdXN0b21Qcm90b2NvbHMucmVtb3ZlKHNjaGVtZSk7CisjZW5kaWYKICAgICBzZW5kVG9OZXR3
b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpVbnJlZ2lzdGVy
U2NoZW1lKHNjaGVtZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCmluZGV4IGZjZGU5YTAuLmQ1ZTRiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03MCw2ICs3MCw3IEBAIE9CSkNfQ0xBU1MgTlNTdHJpbmc7
CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKK2NsYXNzIEN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKQEAgLTEz
NSw2ICsxMzYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Pik7CiAgICAgdm9pZCBzZXRE
b3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOwogICAg
IHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9u
Q2xpZW50Pik7CisjaWYgVVNFKFNPVVApCisgICAgdm9pZCBzZXRDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
Pik7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2ln
bmVkKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBy
dW5uaW5nLgogICAgIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsg
cmV0dXJuICFtX2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/IFVJTlRfTUFY
IDogbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0KQEAgLTIyNSw2ICsy
MjksMTAgQEAgcHVibGljOgogICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQmIGhp
c3RvcnlDbGllbnQoKSB7IHJldHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAgV2ViQ29udGV4
dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAorI2lmIFVTRShTT1VQKQor
ICAgIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50JiBjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7
IH0KKyNlbmRpZgorCiAgICAgV2ViSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2UoKSBjb25zdCB7
IHJldHVybiBtX2ljb25EYXRhYmFzZS5nZXQoKTsgfQogCiAgICAgc3RydWN0IFN0YXRpc3RpY3Mg
ewpAQCAtNDU1LDYgKzQ2Myw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6
QXV0b21hdGlvbkNsaWVudD4gbV9hdXRvbWF0aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkRvd25sb2FkQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PiBtX2hpc3RvcnlDbGllbnQ7Cisj
aWYgVVNFKFNPVVApCisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50PiBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsKKyNlbmRpZgogCiAgICAg
UmVmUHRyPFdlYkF1dG9tYXRpb25TZXNzaW9uPiBtX2F1dG9tYXRpb25TZXNzaW9uOwogCkBAIC00
OTksNyArNTEwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudE1hcCBtX3N1
cHBsZW1lbnRzOwogCiAjaWYgVVNFKFNPVVApCi0gICAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBt
X2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5OworICAgIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeSB7IEhUVFBDb29raWVBY2NlcHRQb2xp
Y3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB9OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCkBAIC01MzAsNiArNTQxLDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShTT1VQKQogICAgIGJv
b2wgbV9pZ25vcmVUTFNFcnJvcnMgeyB0cnVlIH07CisgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4gbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29sczsKICNlbmRpZgogCiAgICAgYm9vbCBtX21lbW9yeUNhY2hlRGlzYWJsZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRF
ZmwuY3BwCmluZGV4IGI5YTY1N2YuLjRiOTAyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCkBAIC0yNiw1
MiArMjYsNTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbC5oIgogCisjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmgiCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9w
cml2YXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgaW5saW5lIFJlcXVlc3RN
YW5hZ2VyQ2xpZW50RWZsKiB0b1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlcXVlc3RNYW5hZ2VyQ2xpZW50
RWZsKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotfQotCi1SZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwoV0tDb250ZXh0UmVmIGNvbnRleHQp
Ci17Ci0gICAgbV9yZXF1ZXN0TWFuYWdlciA9IHRvQVBJKHRvSW1wbChjb250ZXh0KS0+c3VwcGxl
bWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKSk7Ci0gICAgQVNTRVJU
KG1fcmVxdWVzdE1hbmFnZXIpOworY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwqIGNsaWVudCkKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgeworICAg
IH0KIAotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB3a1Jl
cXVlc3RNYW5hZ2VyQ2xpZW50OwotICAgIG1lbXNldCgmd2tSZXF1ZXN0TWFuYWdlckNsaWVudCwg
MCwgc2l6ZW9mKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCkpOwor
cHJpdmF0ZToKKyAgICBib29sIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpIG92ZXJyaWRlCisgICAgeworICAgICAgICBS
ZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IEV3a1VybFNjaGVtZVJlcXVlc3Q6
OmNyZWF0ZShtYW5hZ2VyLCB0b0FQSShBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNwb25zZSku
cHRyKCkpLCBjdXN0b21Qcm90b2NvbElEKTsKKyAgICAgICAgU3RyaW5nIHNjaGVtZShTdHJpbmc6
OmZyb21VVEY4KHJlcXVlc3QuZ2V0KCktPnNjaGVtZSgpKSk7CisgICAgICAgIFJlZlB0cjxXZWJL
aXRVUklTY2hlbWVIYW5kbGVyPiBoYW5kbGVyID0gKG1fY2xpZW50LT5tX3VyaVNjaGVtZUhhbmRs
ZXJzKS5nZXQoc2NoZW1lKTsKKyAgICAgICAgQVNTRVJUKGhhbmRsZXIuZ2V0KCkpOworICAgICAg
ICBpZiAoIWhhbmRsZXItPmhhc0NhbGxiYWNrKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIHdrUmVxdWVzdE1hbmFnZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICB3a1Jl
cXVlc3RNYW5hZ2VyQ2xpZW50LmJhc2UuY2xpZW50SW5mbyA9IHRoaXM7Ci0gICAgd2tSZXF1ZXN0
TWFuYWdlckNsaWVudC5zdGFydExvYWRpbmcgPSBzdGFydExvYWRpbmc7Ci0gICAgd2tSZXF1ZXN0
TWFuYWdlckNsaWVudC5zdG9wTG9hZGluZyA9IHN0b3BMb2FkaW5nOworICAgICAgICAobV9jbGll
bnQtPm1fdXJpU2NoZW1lUmVxdWVzdHMpLnNldChjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KTsK
KyAgICAgICAgaGFuZGxlci0+cGVyZm9ybUNhbGxiYWNrKHJlcXVlc3QuZ2V0KCkpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKLSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyU2V0Q2xpZW50KG1fcmVxdWVzdE1hbmFnZXIuZ2V0KCksICZ3a1JlcXVlc3RNYW5hZ2Vy
Q2xpZW50LmJhc2UpOwotfQorICAgIHZvaWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHkmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgKG1fY2xpZW50LT5tX3VyaVNjaGVtZVJlcXVlc3RzKS5yZW1vdmUoY3VzdG9tUHJvdG9j
b2xJRCk7CisgICAgfQogCi12b2lkIFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpzdGFydExvYWRp
bmcoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCB1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElELCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKLXsKLSAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogY2xpZW50ID0g
dG9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbChjbGllbnRJbmZvKTsKLSAgICBSZWZQdHI8RXdrVXJs
U2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IEV3a1VybFNjaGVtZVJlcXVlc3Q6OmNyZWF0ZShtYW5h
Z2VyLCB0b0ltcGwocmVxdWVzdFJlZiksIGN1c3RvbVByb3RvY29sSUQpOwotICAgIFN0cmluZyBz
Y2hlbWUoU3RyaW5nOjpmcm9tVVRGOChyZXF1ZXN0LmdldCgpLT5zY2hlbWUoKSkpOwotICAgIFJl
ZlB0cjxXZWJLaXRVUklTY2hlbWVIYW5kbGVyPiBoYW5kbGVyID0gKGNsaWVudC0+bV91cmlTY2hl
bWVIYW5kbGVycykuZ2V0KHNjaGVtZSk7Ci0gICAgQVNTRVJUKGhhbmRsZXIuZ2V0KCkpOwotICAg
IGlmICghaGFuZGxlci0+aGFzQ2FsbGJhY2soKSkKLSAgICAgICAgcmV0dXJuOworICAgIHZvaWQg
aW52YWxpZGF0ZShDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlcikgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4+IHJlcXVl
c3RzOworICAgICAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV9jbGllbnQtPm1fdXJpU2NoZW1lUmVx
dWVzdHMsIHJlcXVlc3RzKTsKKyAgICAgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVzdHMp
IHsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5tYW5hZ2VyKCkgPT0gJm1hbmFnZXIpIHsKKyAg
ICAgICAgICAgICAgICByZXF1ZXN0LT5pbnZhbGlkYXRlKCk7CisgICAgICAgICAgICAgICAgc3Rv
cExvYWRpbmcobWFuYWdlciwgcmVxdWVzdC0+aWQoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CiAKLSAgICAoY2xpZW50LT5tX3VyaVNjaGVtZVJlcXVlc3RzKS5zZXQoY3VzdG9t
UHJvdG9jb2xJRCwgcmVxdWVzdCk7Ci0gICAgaGFuZGxlci0+cGVyZm9ybUNhbGxiYWNrKHJlcXVl
c3QuZ2V0KCkpOwotfQorICAgIFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKiBtX2NsaWVudDsKK307
CiAKLXZvaWQgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OnN0b3BMb2FkaW5nKFdLU291cEN1c3Rv
bVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9j
b2xJRCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpS
ZXF1ZXN0TWFuYWdlckNsaWVudEVmbChXS0NvbnRleHRSZWYgY29udGV4dCkKIHsKLSAgICBVTlVT
RURfUEFSQU0obWFuYWdlcik7Ci0KLSAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogY2xpZW50
ID0gdG9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbChjbGllbnRJbmZvKTsKLSAgICAoY2xpZW50LT5t
X3VyaVNjaGVtZVJlcXVlc3RzKS5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgbV9wcm9j
ZXNzUG9vbCA9IHRvSW1wbChjb250ZXh0KTsKKyAgICBtX3Byb2Nlc3NQb29sLT5zZXRDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQ+KHRoaXMpKTsKIH0KIAogdm9pZCBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6cmVn
aXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYgc2NoZW1lLCBFd2tfVXJsX1NjaGVt
ZV9SZXF1ZXN0X0NiIGNhbGxiYWNrLCB2b2lkKiB1c2VyRGF0YSkKQEAgLTc5LDggKzg2LDkgQEAg
dm9pZCBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGNv
bnN0IFN0cmluZyYgc2NoZW1lLCBFd2sKICAgICBBU1NFUlQoY2FsbGJhY2spOwogCiAgICAgUmVm
UHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdFJlZihuZXcgV2ViS2l0
VVJJU2NoZW1lSGFuZGxlcihjYWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBtX3VyaVNjaGVtZUhh
bmRsZXJzLnNldChzY2hlbWUsIGhhbmRsZXIpOwotICAgIHRvSW1wbChtX3JlcXVlc3RNYW5hZ2Vy
LmdldCgpKS0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOworICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV91cmlTY2hlbWVIYW5kbGVycy5zZXQoc2NoZW1lLCBoYW5kbGVyKTsK
KyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnJl
Z2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woc2NoZW1lKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVl
c3RNYW5hZ2VyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVl
c3RNYW5hZ2VyQ2xpZW50RWZsLmgKaW5kZXggODdkMzYwZS4uZTVkMzQ5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwu
aApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbF9oCiAK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgImV3a191cmxfc2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIgogCkBAIC0zOCw2ICsz
Nyw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQ7CisKIGNsYXNzIFdlYktpdFVSSVNjaGVtZUhhbmRsZXI6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+IHsKIHB1YmxpYzoKICAgICBXZWJLaXRVUklTY2hl
bWVIYW5kbGVyKCkKQEAgLTc5LDEwICs4MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVy
VVJMU2NoZW1lSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgRXdrX1VybF9TY2hlbWVfUmVx
dWVzdF9DYiBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEpOwogCiBwcml2YXRlOgotICAgIHN0YXRp
YyB2b2lkIHN0YXJ0TG9hZGluZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVm
LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBXS1VSTFJlcXVlc3RSZWYsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwotICAgIHN0YXRpYyB2b2lkIHN0b3BMb2FkaW5nKFdLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOworICAgIGZyaWVuZCBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQ7CiAKLSAgICBXS1JldGFpblB0cjxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyUmVmPiBtX3JlcXVlc3RNYW5hZ2VyOworICAgIFdlYlByb2Nlc3NQb29sKiBtX3Byb2Nl
c3NQb29sOwogICAgIFVSSVNjaGVtZUhhbmRsZXJNYXAgbV91cmlTY2hlbWVIYW5kbGVyczsKICAg
ICBVUklTY2hlbWVSZXF1ZXN0TWFwIG1fdXJpU2NoZW1lUmVxdWVzdHM7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNwcAppbmRleCAz
ZjI2NDBlLi5mZmEyZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlByb2Nlc3NQb29sRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlByb2Nlc3NQb29sRWZsLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIldlYklu
c3BlY3RvclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPEVmcmVldC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ljb25EYXRhYmFzZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dl
YlByb2Nlc3NQb29sR3RrLmNwcAppbmRleCA4MTk3ZmQzLi40MTBhOWNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcApAQCAtMzQs
NyArMzQsNiBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcApp
bmRleCBkNWRiMjQ0Li45M2E3YzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIK
LSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvTGFuZ3VhZ2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MCw3ICsz
OSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9j
ZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgcGFyYW1ldGVycy5jb29raWVBY2Nl
cHRQb2xpY3kgPSBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5OwogICAgIHBhcmFtZXRl
cnMuaWdub3JlVExTRXJyb3JzID0gbV9pZ25vcmVUTFNFcnJvcnM7CiAgICAgcGFyYW1ldGVycy5s
YW5ndWFnZXMgPSBXZWJDb3JlOjp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7Ci0gICAgcGFyYW1l
dGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scyA9IHN1cHBsZW1lbnQ8
V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+KCktPnJlZ2lzdGVyZWRTY2hlbWVz
Rm9yQ3VzdG9tUHJvdG9jb2xzKCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBtX3Vy
bFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzKQorICAgICAgICBwYXJhbWV0ZXJz
LnVybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwog
ICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nID0g
ZmFsc2U7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295157</attachid>
            <date>2016-11-18 08:53:08 -0800</date>
            <delta_ts>2016-11-18 09:03:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-custom-protocols-soup.diff</filename>
            <type>text/plain</type>
            <size>83068</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0Yjg5MTk0Li5hMzNhYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsOTIg
QEAKIDIwMTYtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtTT1VQXSBTaW1wbGlmeSBjdXN0b20gcHJvdG9jb2xzIGhhbmRsZXIgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDkyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGFyZSB1c2luZyB0b28gbWFueSBjbGFzc2VzIGZvciB0aGlzIGFuZCBhbHNvIHRoZSBD
IEFQSSB0aGF0IGlzIG5vdCBuZWVkZWQsIGJlY2F1c2UgYm90aCBHVEsrIGFuZCBFRkwgaGF2ZQor
ICAgICAgICB0aGVpciBvd24gQVBJcyBhbmQgdGhpcyBpcyBub3QgdXNlZCBieSBXVFIgYXQgYWxs
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IFJlbW92ZSBmaWxlcyBmcm9tIGNvbXBp
bGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBT
aGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNl
U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoQVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgIChB
UEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcpOgorICAgICAgICAo
QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OmludmFsaWRhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
c291cC9XS0FQSUNhc3RTb3VwLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tDb250ZXh0U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1Nv
dXBSZXF1ZXN0TWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcDogUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHA6IFVzZSBDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSBpbnN0ZWFkIG9mIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYuCisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjpFd2tVcmxTY2hlbWVSZXF1
ZXN0KToKKyAgICAgICAgKEV3a1VybFNjaGVtZVJlcXVlc3Q6OmZpbmlzaCk6CisgICAgICAgIChF
d2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a1VybFNj
aGVtZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjptYW5h
Z2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKGF0dGFjaEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcDogVXNlIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGluc3RlYWQgb2YgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuCisgICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwpOgorICAg
ICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIpOgorICAgICAgICAod2Via2l0
VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUpOgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVx
dWVzdFJlYWRDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zp
bmlzaF9lcnJvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6CisgICAg
ICAgICh3ZWJraXRXZWJDb250ZXh0RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRl
eHRfcmVnaXN0ZXJfdXJpX3NjaGVtZSk6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0U3RhcnRM
b2FkaW5nQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dEludmFsaWRh
dGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOiBJ
bnZhbGlkYXRlIHRoZSBjbGllbnQuCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5OjpzdGFydExvYWRpbmcpOiBOb3RpZnkgdGhlIGNsaWVudC4KKyAgICAgICAgKFdl
YktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVz
cG9uc2UpOiBOb3RpZnkgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZExvYWREYXRhKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGYWlsV2l0aEVycm9yKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGaW5p
c2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZENsb3NlKTogTm90aWZ5IHRoZSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOiBJbml0aWFsaXplIHRoZSBDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQgYW5kIHJlbW92ZSB0aGUgYWxsIHN1cHBsZW1lbnQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbCk6IEluIGNhc2Ugb2Ygc291cCBjYWNoZSB0aGUgZ2l2ZW4gcHJvdG9jb2wu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2wpOiBJbiBjYXNlIG9mIHNvdXAgZGVsZXRlIHRoZSBnaXZlbiBwcm90b2NvbCBm
cm9tIHRoZSBjYWNoZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcDogRG8gbm90
IHVzZSB0aGUgQyBBUEksIGJ1dCBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC4KKyAg
ICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OlJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OnJlZ2lz
dGVyVVJMU2NoZW1lSGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFu
YWdlckNsaWVudEVmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xF
ZmwuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyk6IFVzZSBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzIHRvCisgICAg
ICAgIGJ1aWxkIHRoZSBsaXN0IG9mIGN1c3RvbSBwcm90b2NvbHMgdG8gc2VuZCB0byB0aGUgbmV0
d29yayBwcm9jZXNzLgorCisyMDE2LTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBSZW1vdmUgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSBmcm9tIFdlYlByb2Nlc3NQcm94eQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTA4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
NmU3N2VlNi4uOTk0NGFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTc2LDcgKzc2
LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS1ZpZXdFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tpZU1hbmFn
ZXJTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcAogCkBAIC0xMzEsOCArMTMwLDYgQEAgbGlzdChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1
bmNoZXJFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291
cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nlc3Mv
UGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCiAgICAgVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtMjU2LDYgKzI1Myw3IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElS
fS9TaGFyZWQvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vU2hhcmVkL3VuaXgiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9jYWlybyIKICAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9lZmwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
CmluZGV4IDlmZDJkMTYuLjU5NTRiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0x
MDEsNyArMTAxLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNz
L0FQSS9DL2d0ay9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tp
ZU1hbmFnZXJTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9BUElXZWJz
aXRlRGF0YVN0b3JlR3RrLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcApAQCAtMTM0LDYgKzEzMyw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlLmgKICAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDcmVkZW50aWFsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENyZWRlbnRpYWwuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERl
ZmluZXMuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmgKQEAgLTIxMCw4ICsyMTEsNiBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmlu
dE9wZXJhdGlvblByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCi0gICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCi0gICAgVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUuaApAQCAtMjgzLDggKzI4Miw2IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVz
c3VyZU1vbml0b3IuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
c291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCi0gICAgVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXIuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nl
c3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgKaW5kZXggOTQ4ZTE2MC4uMzJmYmM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0Jhc2UuaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNl
R3RrLmg+CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoVVNFX1NPVVApCi0jaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZVNvdXAuaD4KLSNlbmRpZgotCiAjaWYgZGVmaW5lZChCVUlMRElOR19FRkxfXykKICNp
bmNsdWRlIDxXZWJLaXQvV0tCYXNlRWZsLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjAwZjA4NS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mvc291
cC9XS0Jhc2VTb3VwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tCYXNlU291
cF9oCi0jZGVmaW5lIFdLQmFzZVNvdXBfaAotCi0jaWZuZGVmIFdLQmFzZV9oCi0jZXJyb3IgIlBs
ZWFzZSAjaW5jbHVkZSBcIldLQmFzZS5oXCIgaW5zdGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHku
IgotI2VuZGlmCi0KLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU291cFJlcXVlc3RNYW5h
Z2VyKiBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZjsKLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIFdLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJSZWY7Ci0KLSNlbmRpZiAvKiBXS0Jhc2VTb3VwX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50LmgKc2ltaWxhcml0eSBpbmRleCA2OCUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCmluZGV4IDJk
ZjYzZjIuLjUxZTE4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLQVBJQ2FzdFNvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChD
KSAyMDE2IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDE5ICsyMywyOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgV0tBUElDYXN0U291cF9oCi0jZGVmaW5lIFdLQVBJQ2FzdFNvdXBfaAorI3ByYWdt
YSBvbmNlCiAKLSNpZm5kZWYgV0tBUElDYXN0X2gKLSNlcnJvciAiUGxlYXNlICNpbmNsdWRlIFwi
V0tBUElDYXN0LmhcIiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCi0jZW5kaWYKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OworfQogCi1jbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlcjsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlUmVxdWVz
dDsKK30KIAotV0tfQUREX0FQSV9NQVBQSU5HKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYsIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKQorbmFtZXNwYWNl
IEFQSSB7CiAKLX0KK2NsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkgeyB9CisKKyAgICB2
aXJ0dWFsIGJvb2wgc3RhcnRMb2FkaW5nKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkmLCB1aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzdG9wTG9h
ZGluZyhXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3Vz
dG9tUHJvdG9jb2xJRCAqLykgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShXZWJL
aXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JikgeyB9Cit9OwogCi0jZW5kaWYgLy8gV0tB
UElDYXN0U291cF9oCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCA3YjRhNGQ1Li5mN2YzYTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC01NTIsMTAgKzU1Miw2IEBAIGlu
bGluZSBQcm94eWluZ1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiB0b0FQSShjb25zdCBXZWJDb3Jl
OjpHcmFtbWFyRGV0YWlsJiBncmFtCiAjaW5jbHVkZSAiV0tBUElDYXN0R3RrLmgiCiAjZW5kaWYK
IAotI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIldLQVBJQ2FzdFNvdXAuaCIKLSNlbmRpZgotCiAj
aWYgZGVmaW5lZChCVUlMRElOR19FRkxfXykKICNpbmNsdWRlICJXS0FQSUNhc3RFZmwuaCIKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tD
b250ZXh0U291cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250
ZXh0U291cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDQyZjM5Li4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0NvbnRleHRTb3VwX2gKLSNkZWZp
bmUgV0tDb250ZXh0U291cF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0jaW5jbHVk
ZSA8V2ViS2l0L1dLU291cFJlcXVlc3RNYW5hZ2VyLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwot
ZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLU291cFJlcXVlc3RNYW5hZ2VyUmVm
IFdLQ29udGV4dEdldFNvdXBSZXF1ZXN0TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7Ci0K
LSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS0NvbnRleHRTb3Vw
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ZDM2ZjYuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCi0KLSNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCkKLXsKLSAgICByZXR1cm4g
dG9BUEkoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OkFQSVR5cGUpOwotfQot
Ci12b2lkIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIGNv
bnN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiB3a0NsaWVu
dCkKLXsKLSAgICB0b0ltcGwoc291cFJlcXVlc3RNYW5hZ2VyUmVmKS0+aW5pdGlhbGl6ZUNsaWVu
dCh3a0NsaWVudCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMmE3NjIuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyX2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lm
ZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKCpX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU3RhcnRMb2FkaW5nQ2FsbGJhY2spKFdL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgc291cE1hbmFnZXJSZWYsIHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXJTdG9wTG9hZGluZ0NhbGxiYWNrKShXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyUmVmIHNvdXBNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZv
aWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZv
OwotfSBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZTsKLQotdHlw
ZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwIHsK
LSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAg
ICAgYmFzZTsKLQotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTdGFydExv
YWRpbmdDYWxsYmFjayBzdGFydExvYWRpbmc7Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlclN0b3BMb2FkaW5nQ2FsbGJhY2sgIHN0b3BMb2FkaW5nOwotfSBXS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjA7Ci0KLVdLX0VYUE9SVCBXS1R5cGVJRCBX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9S
VCB2b2lkIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLQotI2VuZGlmIC8qIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3Vw
UmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cFJlcXVlc3RNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2Njdl
ZGUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tT
b3VwUmVxdWVzdE1hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS1Nv
dXBSZXF1ZXN0TWFuYWdlcl9oCi0jZGVmaW5lIFdLU291cFJlcXVlc3RNYW5hZ2VyX2gKLQotI2lu
Y2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMi
IHsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKCpXS1NvdXBSZXF1ZXN0TWFuYWdlckRpZFJlY2Vp
dmVVUklSZXF1ZXN0Q2FsbGJhY2spKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0
TWFuYWdlclJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS1BhZ2VSZWYgcGFnZVJlZiwgdWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLU291
cFJlcXVlc3RNYW5hZ2VyRGlkRmFpbFRvTG9hZFVSSVJlcXVlc3RDYWxsYmFjaykoV0tTb3VwUmVx
dWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotCi10eXBlZGVmIHN0cnVjdCBXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotfSBXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2U7Ci0KLXR5cGVkZWYgc3RydWN0IFdLU291cFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50VjAgewotICAgIFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAgICAg
ICAgICAgICAgICBiYXNlOwotCi0gICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRSZWNlaXZlVVJJ
UmVxdWVzdENhbGxiYWNrICAgIGRpZFJlY2VpdmVVUklSZXF1ZXN0OwotICAgIFdLU291cFJlcXVl
c3RNYW5hZ2VyRGlkRmFpbFRvTG9hZFVSSVJlcXVlc3RDYWxsYmFjayBkaWRGYWlsVG9Mb2FkVVJJ
UmVxdWVzdDsKLX0gV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRWMDsKLQotV0tfRVhQT1JUIFdL
VHlwZUlEIFdLU291cFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9SVCB2b2lk
IFdLU291cFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBj
b25zdCBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqIGNsaWVudCk7Ci1XS19FWFBPUlQg
dm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZ2lzdGVyVVJJU2NoZW1lKFdLU291cFJlcXVlc3RN
YW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBzY2hlbWVSZWYpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3Vw
UmVxdWVzdE1hbmFnZXJEaWRIYW5kbGVVUklSZXF1ZXN0KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVm
LCBXS0RhdGFSZWYsIHVpbnQ2NF90IGNvbnRlbnRMZW5ndGgsIFdLU3RyaW5nUmVmIG1pbWVUeXBl
UmVmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3VwUmVxdWVzdE1h
bmFnZXJEaWRSZWNlaXZlVVJJUmVxdWVzdERhdGEoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdL
RGF0YVJlZiwgdWludDY0X3QgcmVxdWVzdElEKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLQotI2VuZGlmIC8qIFdLU291cFJlcXVlc3RNYW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRleCAxNzk1MjY5
Li5iNGVkZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0NvbnRleHRQ
cml2YXRlLmgiCi0jaW5jbHVkZSAiV0tDb250ZXh0U291cC5oIgogI2luY2x1ZGUgIldLTnVtYmVy
LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2No
ZW1lX3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5jcHAKaW5kZXggOTg4Yjk5Ni4uZjU1NDg0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVf
cmVxdWVzdC5jcHAKQEAgLTMxLDE0ICszMSwxMyBAQAogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV0tVUkwuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogCiAjaW5jbHVkZSAiZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
LUV3a1VybFNjaGVtZVJlcXVlc3Q6OkV3a1VybFNjaGVtZVJlcXVlc3QoV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVl
c3QsIHVpbnQ2NF90IHJlcXVlc3RJRCkKLSAgICA6IG1fd2tSZXF1ZXN0TWFuYWdlcihtYW5hZ2Vy
KQorRXdrVXJsU2NoZW1lUmVxdWVzdDo6RXdrVXJsU2NoZW1lUmVxdWVzdChDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50
NjRfdCByZXF1ZXN0SUQpCisgICAgOiBtX3drUmVxdWVzdE1hbmFnZXIoJm1hbmFnZXIpCiAgICAg
LCBtX3JlcXVlc3RJRChyZXF1ZXN0SUQpCiB7CiAgICAgV0tVUkxSZWYgdXJsID0gdG9Db3BpZWRV
UkxBUEkodXJsUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOwpAQCAtNjksNiArNjgs
OSBAQCBjb25zdCBjaGFyKiBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpwYXRoKCkgY29uc3QKIAogdm9p
ZCBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpmaW5pc2goY29uc3Qgdm9pZCogY29udGVudERhdGEsIHVp
bnQ2NF90IGNvbnRlbnRMZW5ndGgsIGNvbnN0IGNoYXIqIG1pbWVUeXBlKQogeworICAgIGlmICgh
bV93a1JlcXVlc3RNYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKICAgICBXS1JldGFpblB0cjxX
S0RhdGFSZWY+IHdrRGF0YShBZG9wdFdLLCBXS0RhdGFDcmVhdGUoY29udGVudExlbmd0aCA/IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGNvbnRlbnREYXRhKSA6IDAsIGNv
bnRlbnRMZW5ndGgpKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNaW1lVHlwZSA9
IG1pbWVUeXBlID8gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhtaW1lVHlw
ZSkpIDogMDsKIApAQCAtNzYsMTAgKzc4LDE1IEBAIHZvaWQgRXdrVXJsU2NoZW1lUmVxdWVzdDo6
ZmluaXNoKGNvbnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50NjRfdCBjb250ZW50TGVuZ3RoCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgobV91cmwpKSwKICAgICAgICAgU3RyaW5nOjpmcm9t
VVRGOChtaW1lVHlwZSksIGNvbnRlbnRMZW5ndGgsIGVtcHR5U3RyaW5nKCkpOwogCi0gICAgdG9J
bXBsKG1fd2tSZXF1ZXN0TWFuYWdlci5nZXQoKSktPmRpZFJlY2VpdmVSZXNwb25zZShtX3JlcXVl
c3RJRCwgcmVzcG9uc2UpOwotICAgIHRvSW1wbChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5k
aWRMb2FkRGF0YShtX3JlcXVlc3RJRCwgdG9JbXBsKHdrRGF0YS5nZXQoKSkpOwotICAgIHRvSW1w
bChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVxdWVzdElE
KTsKLSAgICB0b0ltcGwobV93a1JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+c3RvcExvYWRpbmcobV9y
ZXF1ZXN0SUQpOworICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1f
cmVxdWVzdElELCByZXNwb25zZSk7CisgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0
YShtX3JlcXVlc3RJRCwgdG9JbXBsKHdrRGF0YS5nZXQoKSktPmRhdGFSZWZlcmVuY2UoKSk7Cisg
ICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVxdWVzdElEKTsKKyAg
ICBtX3drUmVxdWVzdE1hbmFnZXItPnN0b3BMb2FkaW5nKG1fcmVxdWVzdElEKTsKK30KKwordm9p
ZCBFd2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX3drUmVxdWVzdE1h
bmFnZXIgPSBudWxscHRyOwogfQogCiBjb25zdCBjaGFyKiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0
X3NjaGVtZV9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3Jl
cXVlc3RfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKaW5kZXggYTM5ODkyYi4uZjU5ZDU1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVx
dWVzdF9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKQEAgLTI2LDExICsyNiwxMSBAQAogI2lmbmRl
ZiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGVfaAogI2RlZmluZSBld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0X3ByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0Jhc2UuaCIKICNpbmNs
dWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgotI2lu
Y2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJl
d2tfb2JqZWN0X3ByaXZhdGUuaCIKIAogLyoqCkBAIC00MSw5ICs0MSw5IEBAIGNsYXNzIEV3a1Vy
bFNjaGVtZVJlcXVlc3QgOiBwdWJsaWMgRXdrT2JqZWN0IHsKIHB1YmxpYzoKICAgICBFV0tfT0JK
RUNUX0RFQ0xBUkUoRXdrVXJsU2NoZW1lUmVxdWVzdCkKIAotICAgIHN0YXRpYyBSZWZQdHI8RXdr
VXJsU2NoZW1lUmVxdWVzdD4gY3JlYXRlKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJSZWYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1
ZXN0SUQpCisgICAgc3RhdGljIFJlZlB0cjxFd2tVcmxTY2hlbWVSZXF1ZXN0PiBjcmVhdGUoV2Vi
S2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0
KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgewotICAgICAgICBpZiAoIW1h
bmFnZXIgfHwgIXVybFJlcXVlc3QpCisgICAgICAgIGlmICghdXJsUmVxdWVzdCkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrVXJs
U2NoZW1lUmVxdWVzdChtYW5hZ2VyLCB1cmxSZXF1ZXN0LCByZXF1ZXN0SUQpKTsKQEAgLTU2LDEw
ICs1NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZpbmlzaChjb25zdCB2b2lkKiBjb250ZW50
RGF0YSwgdWludDY0X3QgY29udGVudExlbmd0aCwgY29uc3QgY2hhciogbWltZVR5cGUpOwogCisg
ICAgV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogbWFuYWdlcigpIGNvbnN0IHsg
cmV0dXJuIG1fd2tSZXF1ZXN0TWFuYWdlcjsgfQorICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCiBw
cml2YXRlOgotICAgIEV3a1VybFNjaGVtZVJlcXVlc3QoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QsIHVpbnQ2
NF90IHJlcXVlc3RJRCk7CisgICAgRXdrVXJsU2NoZW1lUmVxdWVzdChXZWJLaXQ6OkN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3Qs
IHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAKLSAgICBXS1JldGFpblB0cjxXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyUmVmPiBtX3drUmVxdWVzdE1hbmFnZXI7CisgICAgV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogbV93a1JlcXVlc3RNYW5hZ2VyOwogICAgIFdLRWlu
YVNoYXJlZFN0cmluZyBtX3VybDsKICAgICB1aW50NjRfdCBtX3JlcXVlc3RJRDsKICAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgbV9zY2hlbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjJmMzE0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKKworI2luY2x1ZGUgIkFQ
SUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2NsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dCBmaW5hbCA6IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KFdlYktpdFdlYkNv
bnRleHQqIHdlYkNvbnRleHQpCisgICAgICAgIDogbV93ZWJDb250ZXh0KHdlYkNvbnRleHQpCisg
ICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Vi
a2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3Vz
dG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwgbWFuYWdlcik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHZvaWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Vi
a2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2wobV93ZWJDb250ZXh0LCBjdXN0
b21Qcm90b2NvbElEKTsKKyAgICB9CisKKyAgICB2b2lkIGludmFsaWRhdGUoQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICB3ZWJraXRX
ZWJDb250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMobV93ZWJDb250ZXh0LCBt
YW5hZ2VyKTsKKyAgICB9CisKKyAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7Cit9
OworCit2b2lkIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dChXZWJL
aXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQoreworICAgIGF1dG8qIHByb2Nlc3NQb29sID0gd2Vi
a2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpOworICAgIHByb2Nlc3NQb29s
LT5zZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuaApzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oCnJlbmFt
ZSB0byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuaAppbmRleCBhMzY1NTk0Li5jOWM0YzE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTE3LDExICsxNyw5IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFdlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKLSNk
ZWZpbmUgV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCiAKLXZvaWQgYXR0YWNoUmVxdWVzdE1hbmFnZXJDbGll
bnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCopOwordm9pZCBhdHRhY2hDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCopOwogCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAppbmRl
eCA3NWU4YzllLi5kMDcyYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSA8V2ViS2l0
L1dLSW5zcGVjdG9yQ2xpZW50R3RrLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+Ci0jaW5jbHVkZSA8
V2ViS2l0L1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5h
Z2VyQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkxODljOS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0
TWFuYWdlckNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgotCi0jaW5jbHVkZSAiV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotc3RhdGljIHZv
aWQgc3RhcnRMb2FkaW5nKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdD
dXN0b21Qcm90b2NvbChXRUJLSVRfV0VCX0NPTlRFWFQoY2xpZW50SW5mbyksIGN1c3RvbVByb3Rv
Y29sSUQsIHRvSW1wbChyZXF1ZXN0UmVmKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN0b3BMb2FkaW5n
KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgd2Via2l0V2ViQ29udGV4
dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV0VCS0lUX1dFQl9DT05URVhUKGNsaWVudEluZm8p
LCBjdXN0b21Qcm90b2NvbElEKTsKLX0KLQotdm9pZCBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVu
dFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQotewotICAgIFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50
ID0gewotICAgICAgICB7Ci0gICAgICAgICAgICAwLCAvLyB2ZXJzaW9uCi0gICAgICAgICAgICB3
ZWJDb250ZXh0IC8vIGNsaWVudEluZm8KLSAgICAgICAgfSwKLSAgICAgICAgc3RhcnRMb2FkaW5n
LAotICAgICAgICBzdG9wTG9hZGluZwotICAgIH07Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlclNldENsaWVudCh0b0FQSSh3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1h
bmFnZXIod2ViQ29udGV4dCkpLCAmd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5iYXNlKTsKLX0KLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
UklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCA4NzJhNTY0Li5hYmExYjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiAvKioKICAqIFNFQ1RJT046IFdlYktpdFVSSVNjaGVtZVJlcXVlc3QKQEAgLTU0LDcgKzU1LDcg
QEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBnUmVhZEJ1ZmZlclNpemUgPSA4MTkyOwogCiBz
dHJ1Y3QgX1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlIHsKICAgICBXZWJLaXRXZWJDb250
ZXh0KiB3ZWJDb250ZXh0OwotICAgIFJlZlB0cjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcj4gd2ViUmVxdWVzdE1hbmFnZXI7CisgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkqIG1hbmFnZXI7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gaW5pdGlhdGluZ1BhZ2U7CiAg
ICAgdWludDY0X3QgcmVxdWVzdElEOwogICAgIENTdHJpbmcgdXJpOwpAQCAtNzQsMjEgKzc1LDMx
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Q2xhc3MqKQogewogfQogCi1XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0
V2ViQ29udGV4dCogd2ViQ29udGV4dCwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0KQorV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdCogd2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRf
dCByZXF1ZXN0SUQsIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFu
YWdlcikKIHsKLSAgICBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1VS
SV9TQ0hFTUVfUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVVJJX1NDSEVNRV9SRVFV
RVNULCBOVUxMKSk7CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJ
VF9VUklfU0NIRU1FX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VSSV9TQ0hFTUVf
UkVRVUVTVCwgbnVsbHB0cikpOwogICAgIHJlcXVlc3QtPnByaXYtPndlYkNvbnRleHQgPSB3ZWJD
b250ZXh0OwotICAgIHJlcXVlc3QtPnByaXYtPndlYlJlcXVlc3RNYW5hZ2VyID0gd2Via2l0V2Vi
Q29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKHdlYkNvbnRleHQpOwotICAgIHJlcXVlc3QtPnByaXYt
PnVyaSA9IHVybFJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0Zjgo
KTsKLSAgICByZXF1ZXN0LT5wcml2LT5pbml0aWF0aW5nUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6
d2ViUGFnZSh1cmxSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5pbml0aWF0aW5nUGFnZUlEKCkp
OworICAgIHJlcXVlc3QtPnByaXYtPm1hbmFnZXIgPSAmbWFuYWdlcjsKKyAgICByZXF1ZXN0LT5w
cml2LT51cmkgPSByZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpOworICAgIHJl
cXVlc3QtPnByaXYtPmluaXRpYXRpbmdQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHJl
c291cmNlUmVxdWVzdC5pbml0aWF0aW5nUGFnZUlEKCkpOwogICAgIHJlcXVlc3QtPnByaXYtPnJl
cXVlc3RJRCA9IHJlcXVlc3RJRDsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAogdm9pZCB3ZWJr
aXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3Qp
CiB7Ci0gICAgaWYgKHJlcXVlc3QtPnByaXYtPmNhbmNlbGxhYmxlLmdldCgpKQotICAgICAgICBn
X2NhbmNlbGxhYmxlX2NhbmNlbChyZXF1ZXN0LT5wcml2LT5jYW5jZWxsYWJsZS5nZXQoKSk7Cisg
ICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwocmVxdWVzdC0+cHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCkp
OworfQorCitDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogd2Via2l0VVJJU2NoZW1lUmVxdWVz
dEdldE1hbmFnZXIoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICByZXR1
cm4gcmVxdWVzdC0+cHJpdi0+bWFuYWdlcjsKK30KKwordm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0SW52YWxpZGF0ZShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIHJl
cXVlc3QtPnByaXYtPm1hbmFnZXIgPSBudWxscHRyOworICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVl
c3RDYW5jZWwocmVxdWVzdCk7CiB9CiAKIC8qKgpAQCAtMTU5LDggKzE3MCwxNCBAQCBXZWJLaXRX
ZWJWaWV3KiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyhXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZQogc3RhdGljIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRD
YWxsYmFjayhHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogc2NoZW1lUmVxdWVzdCkKIHsKICAgICBHUmVmUHRyPFdl
YktpdFVSSVNjaGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYoc2NoZW1lUmVxdWVzdCk7
CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBnc3NpemUgYnl0ZXNSZWFk
ID0gZ19pbnB1dF9zdHJlYW1fcmVhZF9maW5pc2goaW5wdXRTdHJlYW0sIHJlc3VsdCwgJmVycm9y
Lm91dFB0cigpKTsKKyAgICBpZiAoIXByaXYtPm1hbmFnZXIpIHsKKyAgICAgICAgd2Via2l0V2Vi
Q29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBw
cml2LT5yZXF1ZXN0SUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKGJ5dGVz
UmVhZCA9PSAtMSkgewogICAgICAgICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9l
cnJvcihyZXF1ZXN0LmdldCgpLCBlcnJvci5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3
MSwyMiArMTg4LDIxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2Fs
bGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAgICAgaWYgKCFyZXF1ZXN0
LT5wcml2LT5zdHJlYW0pCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYktpdFVSSVNjaGVtZVJl
cXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKLSAgICBSZWY8QVBJOjpEYXRhPiB3
ZWJEYXRhID0gQVBJOjpEYXRhOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4ocHJpdi0+cmVhZEJ1ZmZlciksIGJ5dGVzUmVhZCk7CisgICAgYXV0byB3ZWJEYXRh
ID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBy
aXYtPnJlYWRCdWZmZXIpLCBieXRlc1JlYWQpOwogICAgIGlmICghcHJpdi0+Ynl0ZXNSZWFkKSB7
CiAgICAgICAgIC8vIEZpcnN0IGNodW5rIHJlYWQuIEluIGNhc2Ugb2YgZW1wdHkgcmVwbHkgYW4g
ZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQgdG8gdGhlIG5ldHdvcmtpbmcgcHJvY2Vzcy4KLSAgICAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVURjgo
cHJpdi0+bWltZVR5cGUuZGF0YSgpKSwKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVU
RjgocHJpdi0+bWltZVR5cGUuZGF0YSgpKSwKICAgICAgICAgICAgIHByaXYtPnN0cmVhbUxlbmd0
aCwgZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRS
ZWNlaXZlUmVzcG9uc2UocHJpdi0+cmVxdWVzdElELCByZXNwb25zZSk7Ci0gICAgICAgIHByaXYt
PndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEu
cHRyKCkpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2UocHJpdi0+
cmVxdWVzdElELCByZXNwb25zZSk7CisgICAgICAgIHByaXYtPm1hbmFnZXItPmRpZExvYWREYXRh
KHByaXYtPnJlcXVlc3RJRCwgd2ViRGF0YSk7CiAgICAgfSBlbHNlIGlmIChieXRlc1JlYWQgfHwg
KCFieXRlc1JlYWQgJiYgIXByaXYtPnN0cmVhbUxlbmd0aCkpIHsKICAgICAgICAgLy8gU3Vic2Vx
dWVudCBjaHVuayByZWFkLiBXZSBvbmx5IHNlbmQgYW4gZW1wdHkgQVBJOjpEYXRhIHRvIHRoZSBu
ZXR3b3JraW5nIHByb2Nlc3Mgd2hlbiBzdHJlYW0gbGVuZ3RoIGlzIHVua25vd24uCi0gICAgICAg
IHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdl
YkRhdGEucHRyKCkpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5y
ZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0KIAogICAgIGlmICghYnl0ZXNSZWFkKSB7Ci0gICAg
ICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRGaW5pc2hMb2FkaW5nKHJlcXVlc3QtPnBy
aXYtPnJlcXVlc3RJRCk7Ci0gICAgICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5n
Q3VzdG9tUHJvdG9jb2wocmVxdWVzdC0+cHJpdi0+d2ViQ29udGV4dCwgcmVxdWVzdC0+cHJpdi0+
cmVxdWVzdElEKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyhwcml2
LT5yZXF1ZXN0SUQpOworICAgICAgICB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1
c3RvbVByb3RvY29sKHByaXYtPndlYkNvbnRleHQsIHByaXYtPnJlcXVlc3RJRCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTIzOSw3ICsyNTUsNyBAQCB2b2lkIHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3Qs
IEdFcgogICAgICAgICByZXR1cm47CiAKICAgICBwcml2LT5zdHJlYW0gPSBudWxscHRyOwotICAg
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhl
cnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNvZGUpLCBXZWJDb3JlOjpVUkwo
cHJpdi0+c291cFVSSS5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsK
LSAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkRmFpbFdpdGhFcnJvcihwcml2LT5yZXF1
ZXN0SUQsIHJlc291cmNlRXJyb3IpOworICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNv
ZGUpLCBVUkwocHJpdi0+c291cFVSSS5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKTsKKyAgICBwcml2LT5tYW5hZ2VyLT5kaWRGYWlsV2l0aEVycm9yKHByaXYtPnJlcXVl
c3RJRCwgcmVzb3VyY2VFcnJvcik7CiAgICAgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRp
bmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0SUQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKaW5kZXggYzcyZmExOC4uNDdiYjhjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oCkBAIC0yMCwxMSArMjAsMTUgQEAKICNpZm5k
ZWYgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGVfaAogI2RlZmluZSBXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0UHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKLVdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtp
dFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXRXZWJDb250
ZXh0KiwgQVBJOjpVUkxSZXF1ZXN0Kik7CitXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiB3ZWJraXRV
UklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0V2ViQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYktpdDo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmKTsKIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdENhbmNlbChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Kik7CitXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0R2V0TWFuYWdlcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
Kik7Cit2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RJbnZhbGlkYXRlKFdlYktpdFVSSVNjaGVt
ZVJlcXVlc3QqKTsKIAogI2VuZGlmIC8vIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKaW5kZXggNzI1MzU1OS4uNzM4MzRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTIwLDYgKzIw
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0Lmgi
CiAKKyNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJBUElEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCkBAIC0zMCw2ICszMSw3
IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRDb29raWVNYW5hZ2VyUHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgog
I2luY2x1ZGUgIldlYktpdERvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxv
YWRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZS5oIgpA
QCAtMzgsNyArNDAsNiBAQAogI2luY2x1ZGUgIldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiV2ViS2l0UGx1Z2luUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZh
dGUuaCIKLSNpbmNsdWRlICJXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUg
IldlYktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRTZXR0aW5n
c1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oIgpA
QCAtMTE1LDEyICsxMTYsNiBAQCBlbnVtIHsKIAogY2xhc3MgV2ViS2l0VVJJU2NoZW1lSGFuZGxl
cjogcHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gewogcHVibGljOgot
ICAgIFdlYktpdFVSSVNjaGVtZUhhbmRsZXIoKQotICAgICAgICA6IG1fY2FsbGJhY2soMCkKLSAg
ICAgICAgLCBtX3VzZXJEYXRhKDApCi0gICAgICAgICwgbV9kZXN0cm95Tm90aWZ5KDApCi0gICAg
ewotICAgIH0KICAgICBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKFdlYktpdFVSSVNjaGVtZVJlcXVl
c3RDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ry
b3lOb3RpZnkpCiAgICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKICAgICAgICAgLCBtX3Vz
ZXJEYXRhKHVzZXJEYXRhKQpAQCAtMTQ3LDkgKzE0Miw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrIG1fY2FsbGJhY2s7Ci0g
ICAgdm9pZCogbV91c2VyRGF0YTsKLSAgICBHRGVzdHJveU5vdGlmeSBtX2Rlc3Ryb3lOb3RpZnk7
CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrIG1fY2FsbGJhY2sgeyBudWxscHRy
IH07CisgICAgdm9pZCogbV91c2VyRGF0YSB7IG51bGxwdHIgfTsKKyAgICBHRGVzdHJveU5vdGlm
eSBtX2Rlc3Ryb3lOb3RpZnkgeyBudWxscHRyIH07CiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gPiBVUklTY2hlbWVIYW5kbGVyTWFw
OwpAQCAtMTYyLDcgKzE1Nyw2IEBAIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewog
ICAgIEdSZWZQdHI8V2ViS2l0Q29va2llTWFuYWdlcj4gY29va2llTWFuYWdlcjsKICAgICBHUmVm
UHRyPFdlYktpdEZhdmljb25EYXRhYmFzZT4gZmF2aWNvbkRhdGFiYXNlOwogICAgIEdSZWZQdHI8
V2ViS2l0U2VjdXJpdHlNYW5hZ2VyPiBzZWN1cml0eU1hbmFnZXI7Ci0gICAgUmVmUHRyPFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiByZXF1ZXN0TWFuYWdlcjsKICAgICBVUklT
Y2hlbWVIYW5kbGVyTWFwIHVyaVNjaGVtZUhhbmRsZXJzOwogICAgIFVSSVNjaGVtZVJlcXVlc3RN
YXAgdXJpU2NoZW1lUmVxdWVzdHM7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQpAQCAtMjc1LDgg
KzI2OSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpCiAgICAgICAgIHBy
aXYtPndlYnNpdGVEYXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJDcmVhdGUod2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Gb3JXZWJQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikpKTsKIAotICAgIHByaXYtPnJlcXVlc3RNYW5hZ2Vy
ID0gcHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXI+KCk7Ci0KICAgICBwcml2LT50bHNFcnJvcnNQb2xpY3kgPSBXRUJLSVRfVExT
X0VSUk9SU19QT0xJQ1lfRkFJTDsKICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0SWdub3JlVExT
RXJyb3JzKGZhbHNlKTsKIApAQCAtMjg3LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBhdHRhY2hJbmplY3Rl
ZEJ1bmRsZUNsaWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKICAgICBhdHRhY2hEb3dubG9hZENs
aWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKLSAgICBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVu
dFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKKyAgICBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAg
ICAgcHJpdi0+Z2VvbG9jYXRpb25Qcm92aWRlciA9IFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6
OmNyZWF0ZShwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eT4oKSk7CkBAIC0zMDQsNiArMjk2LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29u
dGV4dERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogICAgICAgICBwcml2LT5jbGllbnRzRGV0YWNo
ZWQgPSB0cnVlOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+aW5pdGlhbGl6ZUluamVjdGVk
QnVuZGxlQ2xpZW50KG51bGxwdHIpOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0RG93
bmxvYWRDbGllbnQobnVsbHB0cik7CisgICAgICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobnVsbHB0cik7CiAgICAgfQogCiAgICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X3dlYl9jb250ZXh0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsK
QEAgLTg0OSw4ICs4NDIsOSBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlf
c2NoZW1lKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYQogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoY2FsbGJhY2spOwogCiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+
IGhhbmRsZXIgPSBhZG9wdFJlZihuZXcgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihjYWxsYmFjaywg
dXNlckRhdGEsIGRlc3Ryb3lOb3RpZnkpKTsKLSAgICBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVI
YW5kbGVycy5zZXQoU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpLCBoYW5kbGVyLmdldCgpKTsKLSAg
ICBjb250ZXh0LT5wcml2LT5yZXF1ZXN0TWFuYWdlci0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0g
Y29udGV4dC0+cHJpdi0+dXJpU2NoZW1lSGFuZGxlcnMuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2No
ZW1lKSwgaGFuZGxlci5nZXQoKSk7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkpOwogfQogCiAvKioKQEAgLTEyNjYsMTQg
KzEyNjAsOSBAQCBXZWJQcm9jZXNzUG9vbCogd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29s
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnBy
b2Nlc3NQb29sLmdldCgpOwogfQogCi1XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ciogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKFdlYktpdFdlYkNvbnRleHQqIGNv
bnRleHQpCi17Ci0gICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnJlcXVlc3RNYW5hZ2VyLmdldCgp
OwotfQotCi12b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0b21Qcm90b2NvbChX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBBUEk6
OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QpCit2b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRp
bmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCwgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpCiB7Ci0gICAgR1JlZlB0
cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVSSVNj
aGVtZVJlcXVlc3RDcmVhdGUoY3VzdG9tUHJvdG9jb2xJRCwgY29udGV4dCwgdXJsUmVxdWVzdCkp
OworICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1Jl
Zih3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKGN1c3RvbVByb3RvY29sSUQsIGNvbnRleHQs
IHJlc291cmNlUmVxdWVzdCwgbWFuYWdlcikpOwogICAgIFN0cmluZyBzY2hlbWUoU3RyaW5nOjpm
cm9tVVRGOCh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9zY2hlbWUocmVxdWVzdC5nZXQo
KSkpKTsKICAgICBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IGNvbnRl
eHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJzLmdldChzY2hlbWUpOwogICAgIEFTU0VSVChoYW5k
bGVyLmdldCgpKTsKQEAgLTEyOTIsNiArMTI4MSwxNiBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRT
dG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIHVpbnQ2
NAogICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwocmVxdWVzdC5nZXQoKSk7CiB9CiAK
K3ZvaWQgd2Via2l0V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQsIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5h
Z2VyKQoreworICAgIFZlY3RvcjxHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+PiByZXF1
ZXN0czsKKyAgICBjb3B5VmFsdWVzVG9WZWN0b3IoY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVx
dWVzdHMsIHJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0cykgewor
ICAgICAgICBpZiAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIocmVxdWVzdC5nZXQo
KSkgPT0gJm1hbmFnZXIpCisgICAgICAgICAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0SW52YWxp
ZGF0ZShyZXF1ZXN0LmdldCgpKTsKKyAgICB9Cit9CisKIHZvaWQgd2Via2l0V2ViQ29udGV4dERp
ZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewogICAgIGNvbnRleHQtPnByaXYtPnVyaVNjaGVt
ZVJlcXVlc3RzLnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCmlu
ZGV4IDdlZTk2YjEuLjYzZWIyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaApAQCAtMjYsMjEgKzI2
LDIyIEBACiAjaWZuZGVmIFdlYktpdFdlYkNvbnRleHRQcml2YXRlX2gKICNkZWZpbmUgV2ViS2l0
V2ViQ29udGV4dFByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIldl
YktpdFdlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUg
IldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCogd2Via2l0V2Vi
Q29udGV4dEdldFByb2Nlc3NQb29sKFdlYktpdFdlYkNvbnRleHQqKTsKIFdlYktpdERvd25sb2Fk
KiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkqKTsKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZChXZWJL
aXRXZWJDb250ZXh0KiwgY29uc3QgY2hhciogdXJpLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwog
dm9pZCB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZFByb3h5
Kik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQoV2ViS2l0V2ViQ29udGV4
dCosIFdlYktpdERvd25sb2FkKik7Ci1XZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyKiB3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1hbmFnZXIoV2ViS2l0V2ViQ29u
dGV4dCopOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2wo
V2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIEFQSTo6VVJMUmVx
dWVzdCopOwordm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2wo
V2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
KTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0
V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwordm9pZCB3ZWJraXRXZWJD
b250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMoV2ViS2l0V2ViQ29udGV4dCos
IFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmKTsKIHZvaWQgd2Via2l0V2ViQ29u
dGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiBib29sIHdlYmtpdFdlYkNvbnRleHRJc0xvYWRpbmdD
dXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCk7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJD
b250ZXh0KiwgV2ViS2l0V2ViVmlldyosIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdlYktp
dFdlYlZpZXcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmgKaW5kZXggYjM4NzVmMy4uNGM3NDNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKQEAgLTM0LDggKzM0LDE0IEBA
CiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CiAjZW5kaWYKIAorbmFtZXNwYWNl
IElQQyB7CitjbGFzcyBEYXRhUmVmZXJlbmNlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01MSw2ICs1NywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydExvYWRpbmcodWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgdm9pZCBzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKIAorICAgIHZv
aWQgcHJvY2Vzc0RpZENsb3NlKCk7CisKKyNpZiBVU0UoU09VUCkKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRpZEZhaWxXaXRo
RXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCmluZGV4IGFkNTNlOTguLjk3OWIwZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9t
YWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eU1hYy5tbQpAQCAtMTYwLDQgKzE2MCw4IEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiAgICAgbV9s
b2FkZXJNYXAucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOwogfQogCit2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoKQoreworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCmluZGV4IDA1OWY0NjUuLjNmYjM0NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHlTb3VwLmNwcApAQCAtMjAsMTMgKzIwLDE5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKIAorI2luY2x1
ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkNoaWxkUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKKyNp
ZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNHdGsuaD4KKyNlbGlmIFBM
QVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0VmbC5oPgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9jZXNzUHJveHkqIGNoaWxkUHJvY2Vzc1Byb3h5LCBX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCkBAIC00MiwxNCArNDgsNDAgQEAgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCiAgICAgbV9j
aGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAordm9pZCBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKK3sKKyAgICBtX3By
b2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRoaXMp
OworfQorCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcodWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIG1fcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcj4oKS0+c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQsIHJl
cXVlc3QpOworICAgIGlmICghbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3QpKQorICAg
ICAgICBkaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OmNhbm5vdFNo
b3dVUkxFcnJvcihyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiB7Ci0gICAgbV9wcm9j
ZXNzUG9vbC5zdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigp
LT5zdG9wTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKTsKKyAgICBtX3Byb2Nlc3NQb29sLmN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudCgpLnN0b3BMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2Nv
bElEKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIG1fY2hpbGRQcm9jZXNzUHJveHktPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKGN1c3RvbVBy
b3RvY29sSUQsIHJlc3BvbnNlLCAwKSwgMCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKGN1c3RvbVByb3Rv
Y29sSUQsIGRhdGEpLCAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6
ZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZEZhaWxXaXRoRXJyb3IoY3VzdG9t
UHJvdG9jb2xJRCwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTo6ZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQoreworICAg
IG1fY2hpbGRQcm9jZXNzUHJveHktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdl
cjo6RGlkRmluaXNoTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKSwgMCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiNjU1ZTQzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgotCi0jaW5j
bHVkZSAiQVBJRGF0YS5oIgotI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotCi0jaWYgUExBVEZPUk0oR1RLKQotI2lu
Y2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+Ci0jZWxpZiBQTEFURk9STShFRkwpCi0jaW5jbHVk
ZSA8V2ViQ29yZS9FcnJvcnNFZmwuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y29uc3QgY2hhciogV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnN1cHBsZW1l
bnROYW1lKCkKLXsKLSAgICByZXR1cm4gIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyIjsKLX0KLQotUmVmPFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG9vbCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcihwcm9jZXNzUG9vbCkpOwotfQotCi1XZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcjo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIo
V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQotICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQo
cHJvY2Vzc1Bvb2wpCi17Ci19Ci0KLVdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Ojp+V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIoKQotewotfQotCi12b2lkIFdl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjppbml0aWFsaXplQ2xpZW50KGNvbnN0
IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpCi17
Ci0gICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwotfQotCi0vLyBXZWJDb250ZXh0U3Vw
cGxlbWVudAotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cHJvY2Vz
c1Bvb2xEZXN0cm95ZWQoKQotewotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyOjpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKLXsKLX0KLQotdm9p
ZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKQotewotICAgIEFQSTo6T2JqZWN0OjpyZWYoKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCi17
Ci0gICAgQVBJOjpPYmplY3Q6OmRlcmVmKCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgQVNTRVJUKCFzY2hlbWUuaXNOdWxsKCkpOwotICAgIGlm
IChtX3JlZ2lzdGVyZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vz
c1Bvb2woKS0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOwotCi0gICAg
bV9yZWdpc3RlcmVkU2NoZW1lcy5hcHBlbmQoc2NoZW1lKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3Rv
Y29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+dW5yZWdpc3RlclNjaGVtZUZvckN1
c3RvbVByb3RvY29sKHNjaGVtZSk7Ci0KLSAgICBib29sIHJlbW92ZWQgPSBtX3JlZ2lzdGVyZWRT
Y2hlbWVzLnJlbW92ZUZpcnN0KHNjaGVtZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCBy
ZW1vdmVkKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6
c3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAoIW1fY2xpZW50LnN0YXJ0TG9hZGlu
Zyh0aGlzLCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSkKLSAgICAgICAgZGlkRmFpbFdpdGhF
cnJvcihjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IocmVxdWVz
dCkpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdG9w
TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQotewotICAgIG1fY2xpZW50LnN0b3BM
b2FkaW5nKHRoaXMsIGN1c3RvbVByb3RvY29sSUQpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17
Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNz
UG9vbCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRSZWNlaXZlUmVzcG9uc2UoY3VzdG9tUHJvdG9jb2xJRCwg
cmVzcG9uc2UsIDApLCAwKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6ZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgQVBJ
OjpEYXRhKiBkYXRhKQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkTG9hZERhdGEoY3VzdG9tUHJv
dG9jb2xJRCwgZGF0YS0+ZGF0YVJlZmVyZW5jZSgpKSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0g
ICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9v
bCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpEaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIGVycm9y
KSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRp
ZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKLXsKLSAgICBpZiAoIXBy
b2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPm5ldHdv
cmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OkRpZEZpbmlzaExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCksIDApOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2NDc3NTZlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlcl9oCi0KLSNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJDb250
ZXh0U3VwcGxlbWVudC5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLWNsYXNzIERhdGE7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Ci0KLWNsYXNzIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBs
ZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwotCi0gICAgc3RhdGljIFJlZjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4g
Y3JlYXRlKFdlYlByb2Nlc3NQb29sKik7Ci0gICAgdmlydHVhbCB+V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSopOwotCi0gICAgdm9p
ZCByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsK
LSAgICB2b2lkIHVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcm
IHNjaGVtZSk7Ci0KLSAgICB2b2lkIHN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIHN0b3BMb2Fk
aW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIHZvaWQgZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCwgY29uc3QgQVBJOjpEYXRhKik7Ci0gICAgdm9pZCBkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Ci0KLSAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Qcm90b2NvbHMo
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9Ci0KLSAgICB1c2luZyBBUEk6
Ok9iamVjdDo6cmVmOwotICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKLQotcHJpdmF0ZToK
LSAgICBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcihXZWJQcm9jZXNzUG9vbCop
OwotCi0gICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKLSAgICB2b2lkIHByb2Nlc3NQb29sRGVz
dHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1By
b3h5Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwotCi0g
ICAgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQgbV9jbGllbnQ7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gbV9yZWdpc3RlcmVkU2NoZW1lczsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGRlZjYyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50LmgiCi0KLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5o
IgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotYm9vbCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlckNsaWVudDo6c3RhcnRMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyKiBzb3VwUmVxdWVzdE1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAoIW1f
Y2xpZW50LnN0YXJ0TG9hZGluZykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVmPEFQ
STo6VVJMUmVxdWVzdD4gdXJsUmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlcXVl
c3QpOwotICAgIG1fY2xpZW50LnN0YXJ0TG9hZGluZyh0b0FQSShzb3VwUmVxdWVzdE1hbmFnZXIp
LCBjdXN0b21Qcm90b2NvbElELCB0b0FQSSh1cmxSZXF1ZXN0LnB0cigpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcoV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIqIHNvdXBSZXF1ZXN0TWFuYWdlciwgdWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCkKLXsKLSAgICBpZiAobV9jbGllbnQuc3RvcExvYWRpbmcpCi0gICAgICAgIG1f
Y2xpZW50LnN0b3BMb2FkaW5nKHRvQVBJKHNvdXBSZXF1ZXN0TWFuYWdlciksIGN1c3RvbVByb3Rv
Y29sSUQsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlYmIyMjEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9oCi0jZGVmaW5lIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKLQotI2luY2x1ZGUgIkFQSUNsaWVudC5oIgot
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IENs
aWVudFRyYWl0czxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZT4g
ewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyQ2xpZW50VjA+IFZlcnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI7Ci0KLWNsYXNzIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgYm9v
bCBzdGFydExvYWRpbmcoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqLCB1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
LSAgICB2b2lkIHN0b3BMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYjk5MWI3YS4uODhjY2NhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTIxOSw2ICsyMTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpCiB7CiAgICAgaWYgKG1fZG93bmxvYWRQcm94eU1hcCkKICAgICAg
ICAgbV9kb3dubG9hZFByb3h5TWFwLT5wcm9jZXNzRGlkQ2xvc2UoKTsKKyAgICBtX2N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5LnByb2Nlc3NEaWRDbG9zZSgpOwogCiAgICAgbV90b2tlbkZvckhv
bGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGIwZmI3ZGMuLmY4MTUxMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElBdXRvbWF0aW9uQ2xpZW50LmgiCisj
aW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCkBAIC05MCwxMCArOTEsNiBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2VuZGlmCiAK
LSNpZiBVU0UoU09VUCkKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5oIgotI2VuZGlmCi0KICNpZiBPUyhMSU5VWCkKICNpbmNsdWRlICJNZW1vcnlQcmVzc3Vy
ZU1vbml0b3IuaCIKICNlbmRpZgpAQCAtMTU3LDYgKzE1NCw5IEBAIFdlYlByb2Nlc3NQb29sOjpX
ZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikKICAgICAsIG1fYXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21h
dGlvbkNsaWVudD4oKSkKICAgICAsIG1fZG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkRvd25sb2FkQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKKyNpZiBVU0UoU09VUCkK
KyAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCisjZW5kaWYKICAgICAsIG1fdmlzaXRl
ZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICAgICAsIG1fdmlzaXRlZExp
bmtzUG9wdWxhdGVkKGZhbHNlKQogICAgICwgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlcih0aGlz
KQpAQCAtMTY1LDkgKzE2NSw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fbWVtb3J5
U2FtcGxlckVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX21lbW9yeVNhbXBsZXJJbnRlcnZhbCgxNDAw
LjApCiAgICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUobV9jb25maWd1cmF0aW9uLT5zaG91bGRIYXZl
TGVnYWN5RGF0YVN0b3JlKCkgPyBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShsZWdhY3lX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKS5wdHIoKSA6IG51
bGxwdHIpCi0jaWYgVVNFKFNPVVApCi0gICAgLCBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9s
aWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbikKLSNl
bmRpZgogICAgICwgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oZmFsc2UpCiAgICAg
LCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQodHJ1ZSkKICAgICAsIG1fY2FuSGFuZGxlSFRU
UFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24odHJ1ZSkKQEAgLTE5Nyw5ICsxOTQsNiBAQCBXZWJQcm9j
ZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCiAgICAgYWRkU3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7
CiAgICAgYWRkU3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKICAgICBh
ZGRTdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKTsKLSNpZiBVU0UoU09V
UCkKLSAgICBhZGRTdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
PigpOwotI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAgICAgYWRkU3VwcGxlbWVu
dDxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+KCk7CiAjZW5kaWYKQEAgLTI5OSw2ICsyOTMs
MTYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PgogICAgICAgICBtX2F1dG9tYXRpb25DbGllbnQg
PSBXVEZNb3ZlKGF1dG9tYXRpb25DbGllbnQpOwogfQogCisjaWYgVVNFKFNPVVApCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PiBjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQpCit7CisgICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpCisgICAg
ICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKKyAgICBlbHNlCisgICAgICAgIG1fY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQpOworfQorI2VuZGlmCisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1i
ZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMpCiB7CiAgICAg
Ly8gR3VhcmQgYWdhaW5zdCBBUEkgbWlzdXNlLgpAQCAtMTM2NCwxMSArMTM2OCwxNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50
cmllc0FkZGVkQWZ0ZXJUaW1lKAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogeworI2lmIFVTRShTT1VQ
KQorICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYWRkKHNjaGVt
ZSk7CisjZW5kaWYKICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpSZWdpc3RlclNjaGVtZShzY2hlbWUpKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKQogeworI2lmIFVTRShTT1VQKQorICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRG
b3JDdXN0b21Qcm90b2NvbHMucmVtb3ZlKHNjaGVtZSk7CisjZW5kaWYKICAgICBzZW5kVG9OZXR3
b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpVbnJlZ2lzdGVy
U2NoZW1lKHNjaGVtZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCmluZGV4IGZjZGU5YTAuLmQ1ZTRiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03MCw2ICs3MCw3IEBAIE9CSkNfQ0xBU1MgTlNTdHJpbmc7
CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKK2NsYXNzIEN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKQEAgLTEz
NSw2ICsxMzYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Pik7CiAgICAgdm9pZCBzZXRE
b3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOwogICAg
IHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9u
Q2xpZW50Pik7CisjaWYgVVNFKFNPVVApCisgICAgdm9pZCBzZXRDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
Pik7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2ln
bmVkKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBy
dW5uaW5nLgogICAgIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsg
cmV0dXJuICFtX2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/IFVJTlRfTUFY
IDogbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0KQEAgLTIyNSw2ICsy
MjksMTAgQEAgcHVibGljOgogICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQmIGhp
c3RvcnlDbGllbnQoKSB7IHJldHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAgV2ViQ29udGV4
dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAorI2lmIFVTRShTT1VQKQor
ICAgIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50JiBjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7
IH0KKyNlbmRpZgorCiAgICAgV2ViSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2UoKSBjb25zdCB7
IHJldHVybiBtX2ljb25EYXRhYmFzZS5nZXQoKTsgfQogCiAgICAgc3RydWN0IFN0YXRpc3RpY3Mg
ewpAQCAtNDU1LDYgKzQ2Myw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6
QXV0b21hdGlvbkNsaWVudD4gbV9hdXRvbWF0aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkRvd25sb2FkQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PiBtX2hpc3RvcnlDbGllbnQ7Cisj
aWYgVVNFKFNPVVApCisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50PiBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsKKyNlbmRpZgogCiAgICAg
UmVmUHRyPFdlYkF1dG9tYXRpb25TZXNzaW9uPiBtX2F1dG9tYXRpb25TZXNzaW9uOwogCkBAIC00
OTksNyArNTEwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudE1hcCBtX3N1
cHBsZW1lbnRzOwogCiAjaWYgVVNFKFNPVVApCi0gICAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBt
X2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5OworICAgIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeSB7IEhUVFBDb29raWVBY2NlcHRQb2xp
Y3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB9OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCkBAIC01MzAsNiArNTQxLDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShTT1VQKQogICAgIGJv
b2wgbV9pZ25vcmVUTFNFcnJvcnMgeyB0cnVlIH07CisgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4gbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29sczsKICNlbmRpZgogCiAgICAgYm9vbCBtX21lbW9yeUNhY2hlRGlzYWJsZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRF
ZmwuY3BwCmluZGV4IGI5YTY1N2YuLjM1NmI3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCkBAIC0yNiw1
MiArMjYsNTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbC5oIgogCisjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmgiCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9w
cml2YXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgaW5saW5lIFJlcXVlc3RN
YW5hZ2VyQ2xpZW50RWZsKiB0b1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlcXVlc3RNYW5hZ2VyQ2xpZW50
RWZsKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotfQotCi1SZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwoV0tDb250ZXh0UmVmIGNvbnRleHQp
Ci17Ci0gICAgbV9yZXF1ZXN0TWFuYWdlciA9IHRvQVBJKHRvSW1wbChjb250ZXh0KS0+c3VwcGxl
bWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKSk7Ci0gICAgQVNTRVJU
KG1fcmVxdWVzdE1hbmFnZXIpOworY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwqIGNsaWVudCkKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgeworICAg
IH0KIAotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB3a1Jl
cXVlc3RNYW5hZ2VyQ2xpZW50OwotICAgIG1lbXNldCgmd2tSZXF1ZXN0TWFuYWdlckNsaWVudCwg
MCwgc2l6ZW9mKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCkpOwor
cHJpdmF0ZToKKyAgICBib29sIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpIG92ZXJyaWRlCisgICAgeworICAgICAgICBS
ZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IEV3a1VybFNjaGVtZVJlcXVlc3Q6
OmNyZWF0ZShtYW5hZ2VyLCB0b0FQSShBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNvdXJjZVJl
cXVlc3QpLnB0cigpKSwgY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgICAgIFN0cmluZyBzY2hlbWUo
U3RyaW5nOjpmcm9tVVRGOChyZXF1ZXN0LmdldCgpLT5zY2hlbWUoKSkpOworICAgICAgICBSZWZQ
dHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IChtX2NsaWVudC0+bV91cmlTY2hl
bWVIYW5kbGVycykuZ2V0KHNjaGVtZSk7CisgICAgICAgIEFTU0VSVChoYW5kbGVyLmdldCgpKTsK
KyAgICAgICAgaWYgKCFoYW5kbGVyLT5oYXNDYWxsYmFjaygpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0g
ICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5iYXNlLmNsaWVudEluZm8gPSB0aGlzOwotICAgIHdr
UmVxdWVzdE1hbmFnZXJDbGllbnQuc3RhcnRMb2FkaW5nID0gc3RhcnRMb2FkaW5nOwotICAgIHdr
UmVxdWVzdE1hbmFnZXJDbGllbnQuc3RvcExvYWRpbmcgPSBzdG9wTG9hZGluZzsKKyAgICAgICAg
KG1fY2xpZW50LT5tX3VyaVNjaGVtZVJlcXVlc3RzKS5zZXQoY3VzdG9tUHJvdG9jb2xJRCwgcmVx
dWVzdCk7CisgICAgICAgIGhhbmRsZXItPnBlcmZvcm1DYWxsYmFjayhyZXF1ZXN0LmdldCgpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlclNldENsaWVudChtX3JlcXVlc3RNYW5hZ2VyLmdldCgpLCAmd2tSZXF1ZXN0
TWFuYWdlckNsaWVudC5iYXNlKTsKLX0KKyAgICB2b2lkIHN0b3BMb2FkaW5nKEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIChtX2NsaWVudC0+bV91cmlTY2hlbWVSZXF1ZXN0cykucmVtb3ZlKGN1c3Rv
bVByb3RvY29sSUQpOworICAgIH0KIAotdm9pZCBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6c3Rh
cnRMb2FkaW5nKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgbWFuYWdlciwg
dWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwqIGNs
aWVudCA9IHRvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwoY2xpZW50SW5mbyk7Ci0gICAgUmVmUHRy
PEV3a1VybFNjaGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpjcmVh
dGUobWFuYWdlciwgdG9JbXBsKHJlcXVlc3RSZWYpLCBjdXN0b21Qcm90b2NvbElEKTsKLSAgICBT
dHJpbmcgc2NoZW1lKFN0cmluZzo6ZnJvbVVURjgocmVxdWVzdC5nZXQoKS0+c2NoZW1lKCkpKTsK
LSAgICBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IChjbGllbnQtPm1f
dXJpU2NoZW1lSGFuZGxlcnMpLmdldChzY2hlbWUpOwotICAgIEFTU0VSVChoYW5kbGVyLmdldCgp
KTsKLSAgICBpZiAoIWhhbmRsZXItPmhhc0NhbGxiYWNrKCkpCi0gICAgICAgIHJldHVybjsKKyAg
ICB2b2lkIGludmFsaWRhdGUoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBWZWN0b3I8UmVmUHRyPEV3a1VybFNjaGVtZVJlcXVlc3Q+
PiByZXF1ZXN0czsKKyAgICAgICAgY29weVZhbHVlc1RvVmVjdG9yKG1fY2xpZW50LT5tX3VyaVNj
aGVtZVJlcXVlc3RzLCByZXF1ZXN0cyk7CisgICAgICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IHJl
cXVlc3RzKSB7CisgICAgICAgICAgICBpZiAocmVxdWVzdC0+bWFuYWdlcigpID09ICZtYW5hZ2Vy
KSB7CisgICAgICAgICAgICAgICAgcmVxdWVzdC0+aW52YWxpZGF0ZSgpOworICAgICAgICAgICAg
ICAgIHN0b3BMb2FkaW5nKG1hbmFnZXIsIHJlcXVlc3QtPmlkKCkpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQogCi0gICAgKGNsaWVudC0+bV91cmlTY2hlbWVSZXF1ZXN0cykuc2V0
KGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3QpOwotICAgIGhhbmRsZXItPnBlcmZvcm1DYWxsYmFj
ayhyZXF1ZXN0LmdldCgpKTsKLX0KKyAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogbV9jbGll
bnQ7Cit9OwogCi12b2lkIFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpzdG9wTG9hZGluZyhXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmIG1hbmFnZXIsIHVpbnQ2NF90IGN1c3Rv
bVByb3RvY29sSUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitSZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwoV0tDb250ZXh0UmVmIGNvbnRleHQpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKG1hbmFnZXIpOwotCi0gICAgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwq
IGNsaWVudCA9IHRvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwoY2xpZW50SW5mbyk7Ci0gICAgKGNs
aWVudC0+bV91cmlTY2hlbWVSZXF1ZXN0cykucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOworICAg
IG1fcHJvY2Vzc1Bvb2wgPSB0b0ltcGwoY29udGV4dCk7CisgICAgbV9wcm9jZXNzUG9vbC0+c2V0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50Pih0aGlzKSk7CiB9CiAKIHZvaWQgUmVxdWVzdE1hbmFnZXJDbGllbnRF
Zmw6OnJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgRXdrX1Vy
bF9TY2hlbWVfUmVxdWVzdF9DYiBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEpCkBAIC03OSw4ICs4
Niw5IEBAIHZvaWQgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OnJlZ2lzdGVyVVJMU2NoZW1lSGFu
ZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgRXdrCiAgICAgQVNTRVJUKGNhbGxiYWNrKTsKIAog
ICAgIFJlZlB0cjxXZWJLaXRVUklTY2hlbWVIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHRSZWYobmV3
IFdlYktpdFVSSVNjaGVtZUhhbmRsZXIoY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAgbV91cmlT
Y2hlbWVIYW5kbGVycy5zZXQoc2NoZW1lLCBoYW5kbGVyKTsKLSAgICB0b0ltcGwobV9yZXF1ZXN0
TWFuYWdlci5nZXQoKSktPnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woc2NoZW1lKTsK
KyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXJpU2NoZW1lSGFuZGxlcnMuc2V0KHNjaGVtZSwgaGFu
ZGxlcik7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBtX3Byb2Nlc3NQ
b29sLT5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKHNjaGVtZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5oCmluZGV4IDg3ZDM2MGUuLmU1ZDM0OTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRF
ZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgUmVxdWVzdE1hbmFnZXJDbGllbnRF
ZmxfaAogCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X3ByaXZh
dGUuaCIKICNpbmNsdWRlICJld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaCIKIApAQCAt
MzgsNiArMzcsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50OworCiBjbGFzcyBXZWJLaXRVUklTY2hlbWVIYW5kbGVyOiBwdWJsaWMg
UmVmQ291bnRlZDxXZWJLaXRVUklTY2hlbWVIYW5kbGVyPiB7CiBwdWJsaWM6CiAgICAgV2ViS2l0
VVJJU2NoZW1lSGFuZGxlcigpCkBAIC03OSwxMCArODAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIEV3a19VcmxfU2No
ZW1lX1JlcXVlc3RfQ2IgY2FsbGJhY2ssIHZvaWQqIHVzZXJEYXRhKTsKIAogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgdm9pZCBzdGFydExvYWRpbmcoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlclJlZiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgV0tVUkxSZXF1ZXN0UmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCBzdG9wTG9hZGluZyhXS1NvdXBD
dXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElE
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBmcmllbmQgY2xhc3MgQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50OwogCi0gICAgV0tSZXRhaW5QdHI8V0tTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlclJlZj4gbV9yZXF1ZXN0TWFuYWdlcjsKKyAgICBXZWJQcm9jZXNzUG9vbCog
bV9wcm9jZXNzUG9vbDsKICAgICBVUklTY2hlbWVIYW5kbGVyTWFwIG1fdXJpU2NoZW1lSGFuZGxl
cnM7CiAgICAgVVJJU2NoZW1lUmVxdWVzdE1hcCBtX3VyaVNjaGVtZVJlcXVlc3RzOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAK
aW5kZXggM2YyNjQwZS4uZmZhMmQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRl
ICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlIDxFZnJlZXQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKaW5kZXggODE5N2ZkMy4uNDEwYTljYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAK
QEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JTZXJ2ZXIuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xT
b3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291
cC5jcHAKaW5kZXggZDVkYjI0NC4uOTNhN2MwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclBy
b3h5LmgiCi0jaW5jbHVkZSAiV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NDAsNyArMzksOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3
b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYQogICAgIHBhcmFtZXRlcnMuY29v
a2llQWNjZXB0UG9saWN5ID0gbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeTsKICAgICBw
YXJhbWV0ZXJzLmlnbm9yZVRMU0Vycm9ycyA9IG1faWdub3JlVExTRXJyb3JzOwogICAgIHBhcmFt
ZXRlcnMubGFuZ3VhZ2VzID0gV2ViQ29yZTo6dXNlclByZWZlcnJlZExhbmd1YWdlcygpOwotICAg
IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMgPSBzdXBw
bGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigpLT5yZWdpc3RlcmVk
U2NoZW1lc0ZvckN1c3RvbVByb3RvY29scygpOworICAgIGZvciAoY29uc3QgYXV0byYgc2NoZW1l
IDogbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scykKKyAgICAgICAgcGFy
YW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3RvY29scy5hcHBlbmQoc2No
ZW1lKTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9n
Z2luZyA9IGZhbHNlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295158</attachid>
            <date>2016-11-18 09:03:08 -0800</date>
            <delta_ts>2016-11-18 09:11:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-custom-protocols-soup.diff</filename>
            <type>text/plain</type>
            <size>83100</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0Yjg5MTk0Li5hMzNhYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsOTIg
QEAKIDIwMTYtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtTT1VQXSBTaW1wbGlmeSBjdXN0b20gcHJvdG9jb2xzIGhhbmRsZXIgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDkyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGFyZSB1c2luZyB0b28gbWFueSBjbGFzc2VzIGZvciB0aGlzIGFuZCBhbHNvIHRoZSBD
IEFQSSB0aGF0IGlzIG5vdCBuZWVkZWQsIGJlY2F1c2UgYm90aCBHVEsrIGFuZCBFRkwgaGF2ZQor
ICAgICAgICB0aGVpciBvd24gQVBJcyBhbmQgdGhpcyBpcyBub3QgdXNlZCBieSBXVFIgYXQgYWxs
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IFJlbW92ZSBmaWxlcyBmcm9tIGNvbXBp
bGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBT
aGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNl
U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoQVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgIChB
UEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcpOgorICAgICAgICAo
QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OmludmFsaWRhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
c291cC9XS0FQSUNhc3RTb3VwLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tDb250ZXh0U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1Nv
dXBSZXF1ZXN0TWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcDogUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHA6IFVzZSBDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSBpbnN0ZWFkIG9mIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYuCisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjpFd2tVcmxTY2hlbWVSZXF1
ZXN0KToKKyAgICAgICAgKEV3a1VybFNjaGVtZVJlcXVlc3Q6OmZpbmlzaCk6CisgICAgICAgIChF
d2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a1VybFNj
aGVtZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjptYW5h
Z2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKGF0dGFjaEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcDogVXNlIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGluc3RlYWQgb2YgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuCisgICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwpOgorICAg
ICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIpOgorICAgICAgICAod2Via2l0
VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUpOgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVx
dWVzdFJlYWRDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zp
bmlzaF9lcnJvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6CisgICAg
ICAgICh3ZWJraXRXZWJDb250ZXh0RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRl
eHRfcmVnaXN0ZXJfdXJpX3NjaGVtZSk6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0U3RhcnRM
b2FkaW5nQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dEludmFsaWRh
dGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOiBJ
bnZhbGlkYXRlIHRoZSBjbGllbnQuCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5OjpzdGFydExvYWRpbmcpOiBOb3RpZnkgdGhlIGNsaWVudC4KKyAgICAgICAgKFdl
YktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVz
cG9uc2UpOiBOb3RpZnkgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZExvYWREYXRhKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGYWlsV2l0aEVycm9yKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGaW5p
c2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZENsb3NlKTogTm90aWZ5IHRoZSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOiBJbml0aWFsaXplIHRoZSBDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQgYW5kIHJlbW92ZSB0aGUgYWxsIHN1cHBsZW1lbnQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbCk6IEluIGNhc2Ugb2Ygc291cCBjYWNoZSB0aGUgZ2l2ZW4gcHJvdG9jb2wu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2wpOiBJbiBjYXNlIG9mIHNvdXAgZGVsZXRlIHRoZSBnaXZlbiBwcm90b2NvbCBm
cm9tIHRoZSBjYWNoZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcDogRG8gbm90
IHVzZSB0aGUgQyBBUEksIGJ1dCBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC4KKyAg
ICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OlJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OnJlZ2lz
dGVyVVJMU2NoZW1lSGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFu
YWdlckNsaWVudEVmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xF
ZmwuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyk6IFVzZSBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzIHRvCisgICAg
ICAgIGJ1aWxkIHRoZSBsaXN0IG9mIGN1c3RvbSBwcm90b2NvbHMgdG8gc2VuZCB0byB0aGUgbmV0
d29yayBwcm9jZXNzLgorCisyMDE2LTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBSZW1vdmUgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSBmcm9tIFdlYlByb2Nlc3NQcm94eQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTA4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
NmU3N2VlNi4uOTk0NGFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTc2LDcgKzc2
LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS1ZpZXdFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tpZU1hbmFn
ZXJTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcAogCkBAIC0xMzEsOCArMTMwLDYgQEAgbGlzdChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1
bmNoZXJFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291
cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nlc3Mv
UGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCiAgICAgVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtMjU2LDYgKzI1Myw3IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElS
fS9TaGFyZWQvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vU2hhcmVkL3VuaXgiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9jYWlybyIKICAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9lZmwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
CmluZGV4IDlmZDJkMTYuLjU5NTRiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0x
MDEsNyArMTAxLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNz
L0FQSS9DL2d0ay9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tp
ZU1hbmFnZXJTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9BUElXZWJz
aXRlRGF0YVN0b3JlR3RrLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcApAQCAtMTM0LDYgKzEzMyw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlLmgKICAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDcmVkZW50aWFsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENyZWRlbnRpYWwuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERl
ZmluZXMuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmgKQEAgLTIxMCw4ICsyMTEsNiBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmlu
dE9wZXJhdGlvblByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCi0gICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCi0gICAgVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUuaApAQCAtMjgzLDggKzI4Miw2IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVz
c3VyZU1vbml0b3IuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
c291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCi0gICAgVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXIuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nl
c3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgKaW5kZXggOTQ4ZTE2MC4uMzJmYmM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0Jhc2UuaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNl
R3RrLmg+CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoVVNFX1NPVVApCi0jaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZVNvdXAuaD4KLSNlbmRpZgotCiAjaWYgZGVmaW5lZChCVUlMRElOR19FRkxfXykKICNp
bmNsdWRlIDxXZWJLaXQvV0tCYXNlRWZsLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjAwZjA4NS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mvc291
cC9XS0Jhc2VTb3VwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tCYXNlU291
cF9oCi0jZGVmaW5lIFdLQmFzZVNvdXBfaAotCi0jaWZuZGVmIFdLQmFzZV9oCi0jZXJyb3IgIlBs
ZWFzZSAjaW5jbHVkZSBcIldLQmFzZS5oXCIgaW5zdGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHku
IgotI2VuZGlmCi0KLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU291cFJlcXVlc3RNYW5h
Z2VyKiBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZjsKLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIFdLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJSZWY7Ci0KLSNlbmRpZiAvKiBXS0Jhc2VTb3VwX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50LmgKc2ltaWxhcml0eSBpbmRleCA2OCUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCmluZGV4IDJk
ZjYzZjIuLjUxZTE4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLQVBJQ2FzdFNvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChD
KSAyMDE2IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDE5ICsyMywyOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgV0tBUElDYXN0U291cF9oCi0jZGVmaW5lIFdLQVBJQ2FzdFNvdXBfaAorI3ByYWdt
YSBvbmNlCiAKLSNpZm5kZWYgV0tBUElDYXN0X2gKLSNlcnJvciAiUGxlYXNlICNpbmNsdWRlIFwi
V0tBUElDYXN0LmhcIiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCi0jZW5kaWYKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OworfQogCi1jbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlcjsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlUmVxdWVz
dDsKK30KIAotV0tfQUREX0FQSV9NQVBQSU5HKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYsIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKQorbmFtZXNwYWNl
IEFQSSB7CiAKLX0KK2NsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkgeyB9CisKKyAgICB2
aXJ0dWFsIGJvb2wgc3RhcnRMb2FkaW5nKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkmLCB1aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzdG9wTG9h
ZGluZyhXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3Vz
dG9tUHJvdG9jb2xJRCAqLykgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShXZWJL
aXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JikgeyB9Cit9OwogCi0jZW5kaWYgLy8gV0tB
UElDYXN0U291cF9oCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCA3YjRhNGQ1Li5mN2YzYTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC01NTIsMTAgKzU1Miw2IEBAIGlu
bGluZSBQcm94eWluZ1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiB0b0FQSShjb25zdCBXZWJDb3Jl
OjpHcmFtbWFyRGV0YWlsJiBncmFtCiAjaW5jbHVkZSAiV0tBUElDYXN0R3RrLmgiCiAjZW5kaWYK
IAotI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIldLQVBJQ2FzdFNvdXAuaCIKLSNlbmRpZgotCiAj
aWYgZGVmaW5lZChCVUlMRElOR19FRkxfXykKICNpbmNsdWRlICJXS0FQSUNhc3RFZmwuaCIKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tD
b250ZXh0U291cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250
ZXh0U291cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDQyZjM5Li4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0NvbnRleHRTb3VwX2gKLSNkZWZp
bmUgV0tDb250ZXh0U291cF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0jaW5jbHVk
ZSA8V2ViS2l0L1dLU291cFJlcXVlc3RNYW5hZ2VyLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwot
ZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLU291cFJlcXVlc3RNYW5hZ2VyUmVm
IFdLQ29udGV4dEdldFNvdXBSZXF1ZXN0TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7Ci0K
LSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS0NvbnRleHRTb3Vw
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ZDM2ZjYuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCi0KLSNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCkKLXsKLSAgICByZXR1cm4g
dG9BUEkoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OkFQSVR5cGUpOwotfQot
Ci12b2lkIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIGNv
bnN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiB3a0NsaWVu
dCkKLXsKLSAgICB0b0ltcGwoc291cFJlcXVlc3RNYW5hZ2VyUmVmKS0+aW5pdGlhbGl6ZUNsaWVu
dCh3a0NsaWVudCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMmE3NjIuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyX2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lm
ZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKCpX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU3RhcnRMb2FkaW5nQ2FsbGJhY2spKFdL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgc291cE1hbmFnZXJSZWYsIHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXJTdG9wTG9hZGluZ0NhbGxiYWNrKShXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyUmVmIHNvdXBNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZv
aWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZv
OwotfSBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZTsKLQotdHlw
ZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwIHsK
LSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAg
ICAgYmFzZTsKLQotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTdGFydExv
YWRpbmdDYWxsYmFjayBzdGFydExvYWRpbmc7Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlclN0b3BMb2FkaW5nQ2FsbGJhY2sgIHN0b3BMb2FkaW5nOwotfSBXS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjA7Ci0KLVdLX0VYUE9SVCBXS1R5cGVJRCBX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9S
VCB2b2lkIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLQotI2VuZGlmIC8qIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3Vw
UmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cFJlcXVlc3RNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2Njdl
ZGUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tT
b3VwUmVxdWVzdE1hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS1Nv
dXBSZXF1ZXN0TWFuYWdlcl9oCi0jZGVmaW5lIFdLU291cFJlcXVlc3RNYW5hZ2VyX2gKLQotI2lu
Y2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMi
IHsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKCpXS1NvdXBSZXF1ZXN0TWFuYWdlckRpZFJlY2Vp
dmVVUklSZXF1ZXN0Q2FsbGJhY2spKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0
TWFuYWdlclJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS1BhZ2VSZWYgcGFnZVJlZiwgdWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLU291
cFJlcXVlc3RNYW5hZ2VyRGlkRmFpbFRvTG9hZFVSSVJlcXVlc3RDYWxsYmFjaykoV0tTb3VwUmVx
dWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotCi10eXBlZGVmIHN0cnVjdCBXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotfSBXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2U7Ci0KLXR5cGVkZWYgc3RydWN0IFdLU291cFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50VjAgewotICAgIFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAgICAg
ICAgICAgICAgICBiYXNlOwotCi0gICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRSZWNlaXZlVVJJ
UmVxdWVzdENhbGxiYWNrICAgIGRpZFJlY2VpdmVVUklSZXF1ZXN0OwotICAgIFdLU291cFJlcXVl
c3RNYW5hZ2VyRGlkRmFpbFRvTG9hZFVSSVJlcXVlc3RDYWxsYmFjayBkaWRGYWlsVG9Mb2FkVVJJ
UmVxdWVzdDsKLX0gV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRWMDsKLQotV0tfRVhQT1JUIFdL
VHlwZUlEIFdLU291cFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9SVCB2b2lk
IFdLU291cFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBj
b25zdCBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqIGNsaWVudCk7Ci1XS19FWFBPUlQg
dm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZ2lzdGVyVVJJU2NoZW1lKFdLU291cFJlcXVlc3RN
YW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBzY2hlbWVSZWYpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3Vw
UmVxdWVzdE1hbmFnZXJEaWRIYW5kbGVVUklSZXF1ZXN0KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVm
LCBXS0RhdGFSZWYsIHVpbnQ2NF90IGNvbnRlbnRMZW5ndGgsIFdLU3RyaW5nUmVmIG1pbWVUeXBl
UmVmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3VwUmVxdWVzdE1h
bmFnZXJEaWRSZWNlaXZlVVJJUmVxdWVzdERhdGEoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdL
RGF0YVJlZiwgdWludDY0X3QgcmVxdWVzdElEKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLQotI2VuZGlmIC8qIFdLU291cFJlcXVlc3RNYW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRleCAxNzk1MjY5
Li5iNGVkZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0NvbnRleHRQ
cml2YXRlLmgiCi0jaW5jbHVkZSAiV0tDb250ZXh0U291cC5oIgogI2luY2x1ZGUgIldLTnVtYmVy
LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2No
ZW1lX3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5jcHAKaW5kZXggOTg4Yjk5Ni4uZjU1NDg0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVf
cmVxdWVzdC5jcHAKQEAgLTMxLDE0ICszMSwxMyBAQAogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV0tVUkwuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogCiAjaW5jbHVkZSAiZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
LUV3a1VybFNjaGVtZVJlcXVlc3Q6OkV3a1VybFNjaGVtZVJlcXVlc3QoV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVl
c3QsIHVpbnQ2NF90IHJlcXVlc3RJRCkKLSAgICA6IG1fd2tSZXF1ZXN0TWFuYWdlcihtYW5hZ2Vy
KQorRXdrVXJsU2NoZW1lUmVxdWVzdDo6RXdrVXJsU2NoZW1lUmVxdWVzdChDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50
NjRfdCByZXF1ZXN0SUQpCisgICAgOiBtX3drUmVxdWVzdE1hbmFnZXIoJm1hbmFnZXIpCiAgICAg
LCBtX3JlcXVlc3RJRChyZXF1ZXN0SUQpCiB7CiAgICAgV0tVUkxSZWYgdXJsID0gdG9Db3BpZWRV
UkxBUEkodXJsUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOwpAQCAtNjksNiArNjgs
OSBAQCBjb25zdCBjaGFyKiBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpwYXRoKCkgY29uc3QKIAogdm9p
ZCBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpmaW5pc2goY29uc3Qgdm9pZCogY29udGVudERhdGEsIHVp
bnQ2NF90IGNvbnRlbnRMZW5ndGgsIGNvbnN0IGNoYXIqIG1pbWVUeXBlKQogeworICAgIGlmICgh
bV93a1JlcXVlc3RNYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKICAgICBXS1JldGFpblB0cjxX
S0RhdGFSZWY+IHdrRGF0YShBZG9wdFdLLCBXS0RhdGFDcmVhdGUoY29udGVudExlbmd0aCA/IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGNvbnRlbnREYXRhKSA6IDAsIGNv
bnRlbnRMZW5ndGgpKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNaW1lVHlwZSA9
IG1pbWVUeXBlID8gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhtaW1lVHlw
ZSkpIDogMDsKIApAQCAtNzYsMTAgKzc4LDE1IEBAIHZvaWQgRXdrVXJsU2NoZW1lUmVxdWVzdDo6
ZmluaXNoKGNvbnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50NjRfdCBjb250ZW50TGVuZ3RoCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgobV91cmwpKSwKICAgICAgICAgU3RyaW5nOjpmcm9t
VVRGOChtaW1lVHlwZSksIGNvbnRlbnRMZW5ndGgsIGVtcHR5U3RyaW5nKCkpOwogCi0gICAgdG9J
bXBsKG1fd2tSZXF1ZXN0TWFuYWdlci5nZXQoKSktPmRpZFJlY2VpdmVSZXNwb25zZShtX3JlcXVl
c3RJRCwgcmVzcG9uc2UpOwotICAgIHRvSW1wbChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5k
aWRMb2FkRGF0YShtX3JlcXVlc3RJRCwgdG9JbXBsKHdrRGF0YS5nZXQoKSkpOwotICAgIHRvSW1w
bChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVxdWVzdElE
KTsKLSAgICB0b0ltcGwobV93a1JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+c3RvcExvYWRpbmcobV9y
ZXF1ZXN0SUQpOworICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1f
cmVxdWVzdElELCByZXNwb25zZSk7CisgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0
YShtX3JlcXVlc3RJRCwgdG9JbXBsKHdrRGF0YS5nZXQoKSktPmRhdGFSZWZlcmVuY2UoKSk7Cisg
ICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVxdWVzdElEKTsKKyAg
ICBtX3drUmVxdWVzdE1hbmFnZXItPnN0b3BMb2FkaW5nKG1fcmVxdWVzdElEKTsKK30KKwordm9p
ZCBFd2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX3drUmVxdWVzdE1h
bmFnZXIgPSBudWxscHRyOwogfQogCiBjb25zdCBjaGFyKiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0
X3NjaGVtZV9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3Jl
cXVlc3RfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKaW5kZXggYTM5ODkyYi4uZjU5ZDU1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVx
dWVzdF9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKQEAgLTI2LDExICsyNiwxMSBAQAogI2lmbmRl
ZiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGVfaAogI2RlZmluZSBld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0X3ByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0Jhc2UuaCIKICNpbmNs
dWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgotI2lu
Y2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJl
d2tfb2JqZWN0X3ByaXZhdGUuaCIKIAogLyoqCkBAIC00MSw5ICs0MSw5IEBAIGNsYXNzIEV3a1Vy
bFNjaGVtZVJlcXVlc3QgOiBwdWJsaWMgRXdrT2JqZWN0IHsKIHB1YmxpYzoKICAgICBFV0tfT0JK
RUNUX0RFQ0xBUkUoRXdrVXJsU2NoZW1lUmVxdWVzdCkKIAotICAgIHN0YXRpYyBSZWZQdHI8RXdr
VXJsU2NoZW1lUmVxdWVzdD4gY3JlYXRlKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJSZWYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1
ZXN0SUQpCisgICAgc3RhdGljIFJlZlB0cjxFd2tVcmxTY2hlbWVSZXF1ZXN0PiBjcmVhdGUoV2Vi
S2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0
KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgewotICAgICAgICBpZiAoIW1h
bmFnZXIgfHwgIXVybFJlcXVlc3QpCisgICAgICAgIGlmICghdXJsUmVxdWVzdCkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrVXJs
U2NoZW1lUmVxdWVzdChtYW5hZ2VyLCB1cmxSZXF1ZXN0LCByZXF1ZXN0SUQpKTsKQEAgLTU2LDEw
ICs1NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZpbmlzaChjb25zdCB2b2lkKiBjb250ZW50
RGF0YSwgdWludDY0X3QgY29udGVudExlbmd0aCwgY29uc3QgY2hhciogbWltZVR5cGUpOwogCisg
ICAgV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogbWFuYWdlcigpIGNvbnN0IHsg
cmV0dXJuIG1fd2tSZXF1ZXN0TWFuYWdlcjsgfQorICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCiBw
cml2YXRlOgotICAgIEV3a1VybFNjaGVtZVJlcXVlc3QoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QsIHVpbnQ2
NF90IHJlcXVlc3RJRCk7CisgICAgRXdrVXJsU2NoZW1lUmVxdWVzdChXZWJLaXQ6OkN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3Qs
IHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAKLSAgICBXS1JldGFpblB0cjxXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyUmVmPiBtX3drUmVxdWVzdE1hbmFnZXI7CisgICAgV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogbV93a1JlcXVlc3RNYW5hZ2VyOwogICAgIFdLRWlu
YVNoYXJlZFN0cmluZyBtX3VybDsKICAgICB1aW50NjRfdCBtX3JlcXVlc3RJRDsKICAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgbV9zY2hlbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjJmMzE0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKKworI2luY2x1ZGUgIkFQ
SUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2NsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dCBmaW5hbCA6IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KFdlYktpdFdlYkNv
bnRleHQqIHdlYkNvbnRleHQpCisgICAgICAgIDogbV93ZWJDb250ZXh0KHdlYkNvbnRleHQpCisg
ICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Vi
a2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3Vz
dG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwgbWFuYWdlcik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHZvaWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Vi
a2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2wobV93ZWJDb250ZXh0LCBjdXN0
b21Qcm90b2NvbElEKTsKKyAgICB9CisKKyAgICB2b2lkIGludmFsaWRhdGUoQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICB3ZWJraXRX
ZWJDb250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMobV93ZWJDb250ZXh0LCBt
YW5hZ2VyKTsKKyAgICB9CisKKyAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7Cit9
OworCit2b2lkIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dChXZWJL
aXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQoreworICAgIGF1dG8qIHByb2Nlc3NQb29sID0gd2Vi
a2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpOworICAgIHByb2Nlc3NQb29s
LT5zZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuaApzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oCnJlbmFt
ZSB0byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuaAppbmRleCBhMzY1NTk0Li5jOWM0YzE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTE3LDExICsxNyw5IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFdlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKLSNk
ZWZpbmUgV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCiAKLXZvaWQgYXR0YWNoUmVxdWVzdE1hbmFnZXJDbGll
bnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCopOwordm9pZCBhdHRhY2hDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCopOwogCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAppbmRl
eCA3NWU4YzllLi5kMDcyYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSA8V2ViS2l0
L1dLSW5zcGVjdG9yQ2xpZW50R3RrLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+Ci0jaW5jbHVkZSA8
V2ViS2l0L1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5h
Z2VyQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkxODljOS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0
TWFuYWdlckNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgotCi0jaW5jbHVkZSAiV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotc3RhdGljIHZv
aWQgc3RhcnRMb2FkaW5nKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdD
dXN0b21Qcm90b2NvbChXRUJLSVRfV0VCX0NPTlRFWFQoY2xpZW50SW5mbyksIGN1c3RvbVByb3Rv
Y29sSUQsIHRvSW1wbChyZXF1ZXN0UmVmKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN0b3BMb2FkaW5n
KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgd2Via2l0V2ViQ29udGV4
dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV0VCS0lUX1dFQl9DT05URVhUKGNsaWVudEluZm8p
LCBjdXN0b21Qcm90b2NvbElEKTsKLX0KLQotdm9pZCBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVu
dFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQotewotICAgIFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50
ID0gewotICAgICAgICB7Ci0gICAgICAgICAgICAwLCAvLyB2ZXJzaW9uCi0gICAgICAgICAgICB3
ZWJDb250ZXh0IC8vIGNsaWVudEluZm8KLSAgICAgICAgfSwKLSAgICAgICAgc3RhcnRMb2FkaW5n
LAotICAgICAgICBzdG9wTG9hZGluZwotICAgIH07Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlclNldENsaWVudCh0b0FQSSh3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1h
bmFnZXIod2ViQ29udGV4dCkpLCAmd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5iYXNlKTsKLX0KLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
UklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCA4NzJhNTY0Li5hYmExYjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiAvKioKICAqIFNFQ1RJT046IFdlYktpdFVSSVNjaGVtZVJlcXVlc3QKQEAgLTU0LDcgKzU1LDcg
QEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBnUmVhZEJ1ZmZlclNpemUgPSA4MTkyOwogCiBz
dHJ1Y3QgX1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlIHsKICAgICBXZWJLaXRXZWJDb250
ZXh0KiB3ZWJDb250ZXh0OwotICAgIFJlZlB0cjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcj4gd2ViUmVxdWVzdE1hbmFnZXI7CisgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkqIG1hbmFnZXI7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gaW5pdGlhdGluZ1BhZ2U7CiAg
ICAgdWludDY0X3QgcmVxdWVzdElEOwogICAgIENTdHJpbmcgdXJpOwpAQCAtNzQsMjEgKzc1LDMx
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Q2xhc3MqKQogewogfQogCi1XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0
V2ViQ29udGV4dCogd2ViQ29udGV4dCwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0KQorV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdCogd2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRf
dCByZXF1ZXN0SUQsIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFu
YWdlcikKIHsKLSAgICBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1VS
SV9TQ0hFTUVfUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVVJJX1NDSEVNRV9SRVFV
RVNULCBOVUxMKSk7CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJ
VF9VUklfU0NIRU1FX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VSSV9TQ0hFTUVf
UkVRVUVTVCwgbnVsbHB0cikpOwogICAgIHJlcXVlc3QtPnByaXYtPndlYkNvbnRleHQgPSB3ZWJD
b250ZXh0OwotICAgIHJlcXVlc3QtPnByaXYtPndlYlJlcXVlc3RNYW5hZ2VyID0gd2Via2l0V2Vi
Q29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKHdlYkNvbnRleHQpOwotICAgIHJlcXVlc3QtPnByaXYt
PnVyaSA9IHVybFJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0Zjgo
KTsKLSAgICByZXF1ZXN0LT5wcml2LT5pbml0aWF0aW5nUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6
d2ViUGFnZSh1cmxSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5pbml0aWF0aW5nUGFnZUlEKCkp
OworICAgIHJlcXVlc3QtPnByaXYtPm1hbmFnZXIgPSAmbWFuYWdlcjsKKyAgICByZXF1ZXN0LT5w
cml2LT51cmkgPSByZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpOworICAgIHJl
cXVlc3QtPnByaXYtPmluaXRpYXRpbmdQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHJl
c291cmNlUmVxdWVzdC5pbml0aWF0aW5nUGFnZUlEKCkpOwogICAgIHJlcXVlc3QtPnByaXYtPnJl
cXVlc3RJRCA9IHJlcXVlc3RJRDsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAogdm9pZCB3ZWJr
aXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3Qp
CiB7Ci0gICAgaWYgKHJlcXVlc3QtPnByaXYtPmNhbmNlbGxhYmxlLmdldCgpKQotICAgICAgICBn
X2NhbmNlbGxhYmxlX2NhbmNlbChyZXF1ZXN0LT5wcml2LT5jYW5jZWxsYWJsZS5nZXQoKSk7Cisg
ICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwocmVxdWVzdC0+cHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCkp
OworfQorCitDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogd2Via2l0VVJJU2NoZW1lUmVxdWVz
dEdldE1hbmFnZXIoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICByZXR1
cm4gcmVxdWVzdC0+cHJpdi0+bWFuYWdlcjsKK30KKwordm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0SW52YWxpZGF0ZShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIHJl
cXVlc3QtPnByaXYtPm1hbmFnZXIgPSBudWxscHRyOworICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVl
c3RDYW5jZWwocmVxdWVzdCk7CiB9CiAKIC8qKgpAQCAtMTU5LDggKzE3MCwxNCBAQCBXZWJLaXRX
ZWJWaWV3KiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyhXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZQogc3RhdGljIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRD
YWxsYmFjayhHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogc2NoZW1lUmVxdWVzdCkKIHsKICAgICBHUmVmUHRyPFdl
YktpdFVSSVNjaGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYoc2NoZW1lUmVxdWVzdCk7
CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBnc3NpemUgYnl0ZXNSZWFk
ID0gZ19pbnB1dF9zdHJlYW1fcmVhZF9maW5pc2goaW5wdXRTdHJlYW0sIHJlc3VsdCwgJmVycm9y
Lm91dFB0cigpKTsKKyAgICBpZiAoIXByaXYtPm1hbmFnZXIpIHsKKyAgICAgICAgd2Via2l0V2Vi
Q29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBw
cml2LT5yZXF1ZXN0SUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKGJ5dGVz
UmVhZCA9PSAtMSkgewogICAgICAgICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9l
cnJvcihyZXF1ZXN0LmdldCgpLCBlcnJvci5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3
MSwyMiArMTg4LDIxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2Fs
bGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAgICAgaWYgKCFyZXF1ZXN0
LT5wcml2LT5zdHJlYW0pCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYktpdFVSSVNjaGVtZVJl
cXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKLSAgICBSZWY8QVBJOjpEYXRhPiB3
ZWJEYXRhID0gQVBJOjpEYXRhOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4ocHJpdi0+cmVhZEJ1ZmZlciksIGJ5dGVzUmVhZCk7CisgICAgYXV0byB3ZWJEYXRh
ID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBy
aXYtPnJlYWRCdWZmZXIpLCBieXRlc1JlYWQpOwogICAgIGlmICghcHJpdi0+Ynl0ZXNSZWFkKSB7
CiAgICAgICAgIC8vIEZpcnN0IGNodW5rIHJlYWQuIEluIGNhc2Ugb2YgZW1wdHkgcmVwbHkgYW4g
ZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQgdG8gdGhlIG5ldHdvcmtpbmcgcHJvY2Vzcy4KLSAgICAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVURjgo
cHJpdi0+bWltZVR5cGUuZGF0YSgpKSwKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVU
RjgocHJpdi0+bWltZVR5cGUuZGF0YSgpKSwKICAgICAgICAgICAgIHByaXYtPnN0cmVhbUxlbmd0
aCwgZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRS
ZWNlaXZlUmVzcG9uc2UocHJpdi0+cmVxdWVzdElELCByZXNwb25zZSk7Ci0gICAgICAgIHByaXYt
PndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEu
cHRyKCkpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2UocHJpdi0+
cmVxdWVzdElELCByZXNwb25zZSk7CisgICAgICAgIHByaXYtPm1hbmFnZXItPmRpZExvYWREYXRh
KHByaXYtPnJlcXVlc3RJRCwgd2ViRGF0YSk7CiAgICAgfSBlbHNlIGlmIChieXRlc1JlYWQgfHwg
KCFieXRlc1JlYWQgJiYgIXByaXYtPnN0cmVhbUxlbmd0aCkpIHsKICAgICAgICAgLy8gU3Vic2Vx
dWVudCBjaHVuayByZWFkLiBXZSBvbmx5IHNlbmQgYW4gZW1wdHkgQVBJOjpEYXRhIHRvIHRoZSBu
ZXR3b3JraW5nIHByb2Nlc3Mgd2hlbiBzdHJlYW0gbGVuZ3RoIGlzIHVua25vd24uCi0gICAgICAg
IHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdl
YkRhdGEucHRyKCkpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5y
ZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0KIAogICAgIGlmICghYnl0ZXNSZWFkKSB7Ci0gICAg
ICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRGaW5pc2hMb2FkaW5nKHJlcXVlc3QtPnBy
aXYtPnJlcXVlc3RJRCk7Ci0gICAgICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5n
Q3VzdG9tUHJvdG9jb2wocmVxdWVzdC0+cHJpdi0+d2ViQ29udGV4dCwgcmVxdWVzdC0+cHJpdi0+
cmVxdWVzdElEKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyhwcml2
LT5yZXF1ZXN0SUQpOworICAgICAgICB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1
c3RvbVByb3RvY29sKHByaXYtPndlYkNvbnRleHQsIHByaXYtPnJlcXVlc3RJRCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTIzOSw3ICsyNTUsNyBAQCB2b2lkIHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3Qs
IEdFcgogICAgICAgICByZXR1cm47CiAKICAgICBwcml2LT5zdHJlYW0gPSBudWxscHRyOwotICAg
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhl
cnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNvZGUpLCBXZWJDb3JlOjpVUkwo
cHJpdi0+c291cFVSSS5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsK
LSAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkRmFpbFdpdGhFcnJvcihwcml2LT5yZXF1
ZXN0SUQsIHJlc291cmNlRXJyb3IpOworICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNv
ZGUpLCBVUkwocHJpdi0+c291cFVSSS5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKTsKKyAgICBwcml2LT5tYW5hZ2VyLT5kaWRGYWlsV2l0aEVycm9yKHByaXYtPnJlcXVl
c3RJRCwgcmVzb3VyY2VFcnJvcik7CiAgICAgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRp
bmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0SUQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKaW5kZXggYzcyZmExOC4uNDdiYjhjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oCkBAIC0yMCwxMSArMjAsMTUgQEAKICNpZm5k
ZWYgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGVfaAogI2RlZmluZSBXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0UHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKLVdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtp
dFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXRXZWJDb250
ZXh0KiwgQVBJOjpVUkxSZXF1ZXN0Kik7CitXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiB3ZWJraXRV
UklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0V2ViQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYktpdDo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmKTsKIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdENhbmNlbChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Kik7CitXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0R2V0TWFuYWdlcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
Kik7Cit2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RJbnZhbGlkYXRlKFdlYktpdFVSSVNjaGVt
ZVJlcXVlc3QqKTsKIAogI2VuZGlmIC8vIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKaW5kZXggNzI1MzU1OS4uNzM4MzRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTIwLDYgKzIw
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0Lmgi
CiAKKyNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJBUElEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCkBAIC0zMCw2ICszMSw3
IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRDb29raWVNYW5hZ2VyUHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgog
I2luY2x1ZGUgIldlYktpdERvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxv
YWRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZS5oIgpA
QCAtMzgsNyArNDAsNiBAQAogI2luY2x1ZGUgIldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiV2ViS2l0UGx1Z2luUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZh
dGUuaCIKLSNpbmNsdWRlICJXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUg
IldlYktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRTZXR0aW5n
c1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oIgpA
QCAtMTE1LDEyICsxMTYsNiBAQCBlbnVtIHsKIAogY2xhc3MgV2ViS2l0VVJJU2NoZW1lSGFuZGxl
cjogcHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gewogcHVibGljOgot
ICAgIFdlYktpdFVSSVNjaGVtZUhhbmRsZXIoKQotICAgICAgICA6IG1fY2FsbGJhY2soMCkKLSAg
ICAgICAgLCBtX3VzZXJEYXRhKDApCi0gICAgICAgICwgbV9kZXN0cm95Tm90aWZ5KDApCi0gICAg
ewotICAgIH0KICAgICBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKFdlYktpdFVSSVNjaGVtZVJlcXVl
c3RDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ry
b3lOb3RpZnkpCiAgICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKICAgICAgICAgLCBtX3Vz
ZXJEYXRhKHVzZXJEYXRhKQpAQCAtMTQ3LDkgKzE0Miw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrIG1fY2FsbGJhY2s7Ci0g
ICAgdm9pZCogbV91c2VyRGF0YTsKLSAgICBHRGVzdHJveU5vdGlmeSBtX2Rlc3Ryb3lOb3RpZnk7
CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrIG1fY2FsbGJhY2sgeyBudWxscHRy
IH07CisgICAgdm9pZCogbV91c2VyRGF0YSB7IG51bGxwdHIgfTsKKyAgICBHRGVzdHJveU5vdGlm
eSBtX2Rlc3Ryb3lOb3RpZnkgeyBudWxscHRyIH07CiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gPiBVUklTY2hlbWVIYW5kbGVyTWFw
OwpAQCAtMTYyLDcgKzE1Nyw2IEBAIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewog
ICAgIEdSZWZQdHI8V2ViS2l0Q29va2llTWFuYWdlcj4gY29va2llTWFuYWdlcjsKICAgICBHUmVm
UHRyPFdlYktpdEZhdmljb25EYXRhYmFzZT4gZmF2aWNvbkRhdGFiYXNlOwogICAgIEdSZWZQdHI8
V2ViS2l0U2VjdXJpdHlNYW5hZ2VyPiBzZWN1cml0eU1hbmFnZXI7Ci0gICAgUmVmUHRyPFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiByZXF1ZXN0TWFuYWdlcjsKICAgICBVUklT
Y2hlbWVIYW5kbGVyTWFwIHVyaVNjaGVtZUhhbmRsZXJzOwogICAgIFVSSVNjaGVtZVJlcXVlc3RN
YXAgdXJpU2NoZW1lUmVxdWVzdHM7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQpAQCAtMjc1LDgg
KzI2OSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpCiAgICAgICAgIHBy
aXYtPndlYnNpdGVEYXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJDcmVhdGUod2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Gb3JXZWJQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikpKTsKIAotICAgIHByaXYtPnJlcXVlc3RNYW5hZ2Vy
ID0gcHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXI+KCk7Ci0KICAgICBwcml2LT50bHNFcnJvcnNQb2xpY3kgPSBXRUJLSVRfVExT
X0VSUk9SU19QT0xJQ1lfRkFJTDsKICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0SWdub3JlVExT
RXJyb3JzKGZhbHNlKTsKIApAQCAtMjg3LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBhdHRhY2hJbmplY3Rl
ZEJ1bmRsZUNsaWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKICAgICBhdHRhY2hEb3dubG9hZENs
aWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKLSAgICBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVu
dFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKKyAgICBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAg
ICAgcHJpdi0+Z2VvbG9jYXRpb25Qcm92aWRlciA9IFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6
OmNyZWF0ZShwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eT4oKSk7CkBAIC0zMDQsNiArMjk2LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29u
dGV4dERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogICAgICAgICBwcml2LT5jbGllbnRzRGV0YWNo
ZWQgPSB0cnVlOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+aW5pdGlhbGl6ZUluamVjdGVk
QnVuZGxlQ2xpZW50KG51bGxwdHIpOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0RG93
bmxvYWRDbGllbnQobnVsbHB0cik7CisgICAgICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobnVsbHB0cik7CiAgICAgfQogCiAgICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X3dlYl9jb250ZXh0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsK
QEAgLTg0OSw4ICs4NDIsOSBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlf
c2NoZW1lKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYQogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoY2FsbGJhY2spOwogCiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+
IGhhbmRsZXIgPSBhZG9wdFJlZihuZXcgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihjYWxsYmFjaywg
dXNlckRhdGEsIGRlc3Ryb3lOb3RpZnkpKTsKLSAgICBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVI
YW5kbGVycy5zZXQoU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpLCBoYW5kbGVyLmdldCgpKTsKLSAg
ICBjb250ZXh0LT5wcml2LT5yZXF1ZXN0TWFuYWdlci0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0g
Y29udGV4dC0+cHJpdi0+dXJpU2NoZW1lSGFuZGxlcnMuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2No
ZW1lKSwgaGFuZGxlci5nZXQoKSk7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkpOwogfQogCiAvKioKQEAgLTEyNjYsMTQg
KzEyNjAsOSBAQCBXZWJQcm9jZXNzUG9vbCogd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29s
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnBy
b2Nlc3NQb29sLmdldCgpOwogfQogCi1XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ciogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKFdlYktpdFdlYkNvbnRleHQqIGNv
bnRleHQpCi17Ci0gICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnJlcXVlc3RNYW5hZ2VyLmdldCgp
OwotfQotCi12b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0b21Qcm90b2NvbChX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBBUEk6
OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QpCit2b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRp
bmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCwgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpCiB7Ci0gICAgR1JlZlB0
cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVSSVNj
aGVtZVJlcXVlc3RDcmVhdGUoY3VzdG9tUHJvdG9jb2xJRCwgY29udGV4dCwgdXJsUmVxdWVzdCkp
OworICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1Jl
Zih3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKGN1c3RvbVByb3RvY29sSUQsIGNvbnRleHQs
IHJlc291cmNlUmVxdWVzdCwgbWFuYWdlcikpOwogICAgIFN0cmluZyBzY2hlbWUoU3RyaW5nOjpm
cm9tVVRGOCh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9zY2hlbWUocmVxdWVzdC5nZXQo
KSkpKTsKICAgICBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IGNvbnRl
eHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJzLmdldChzY2hlbWUpOwogICAgIEFTU0VSVChoYW5k
bGVyLmdldCgpKTsKQEAgLTEyOTIsNiArMTI4MSwxNiBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRT
dG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIHVpbnQ2
NAogICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwocmVxdWVzdC5nZXQoKSk7CiB9CiAK
K3ZvaWQgd2Via2l0V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQsIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5h
Z2VyKQoreworICAgIFZlY3RvcjxHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+PiByZXF1
ZXN0czsKKyAgICBjb3B5VmFsdWVzVG9WZWN0b3IoY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVx
dWVzdHMsIHJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0cykgewor
ICAgICAgICBpZiAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIocmVxdWVzdC5nZXQo
KSkgPT0gJm1hbmFnZXIpCisgICAgICAgICAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0SW52YWxp
ZGF0ZShyZXF1ZXN0LmdldCgpKTsKKyAgICB9Cit9CisKIHZvaWQgd2Via2l0V2ViQ29udGV4dERp
ZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewogICAgIGNvbnRleHQtPnByaXYtPnVyaVNjaGVt
ZVJlcXVlc3RzLnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCmlu
ZGV4IDdlZTk2YjEuLjYzZWIyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaApAQCAtMjYsMjEgKzI2
LDIyIEBACiAjaWZuZGVmIFdlYktpdFdlYkNvbnRleHRQcml2YXRlX2gKICNkZWZpbmUgV2ViS2l0
V2ViQ29udGV4dFByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIldl
YktpdFdlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUg
IldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCogd2Via2l0V2Vi
Q29udGV4dEdldFByb2Nlc3NQb29sKFdlYktpdFdlYkNvbnRleHQqKTsKIFdlYktpdERvd25sb2Fk
KiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkqKTsKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZChXZWJL
aXRXZWJDb250ZXh0KiwgY29uc3QgY2hhciogdXJpLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwog
dm9pZCB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZFByb3h5
Kik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQoV2ViS2l0V2ViQ29udGV4
dCosIFdlYktpdERvd25sb2FkKik7Ci1XZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyKiB3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1hbmFnZXIoV2ViS2l0V2ViQ29u
dGV4dCopOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2wo
V2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIEFQSTo6VVJMUmVx
dWVzdCopOwordm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2wo
V2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
KTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0
V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwordm9pZCB3ZWJraXRXZWJD
b250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMoV2ViS2l0V2ViQ29udGV4dCos
IFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmKTsKIHZvaWQgd2Via2l0V2ViQ29u
dGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiBib29sIHdlYmtpdFdlYkNvbnRleHRJc0xvYWRpbmdD
dXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCk7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJD
b250ZXh0KiwgV2ViS2l0V2ViVmlldyosIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdlYktp
dFdlYlZpZXcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmgKaW5kZXggYjM4NzVmMy4uNGM3NDNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKQEAgLTM0LDggKzM0LDE0IEBA
CiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CiAjZW5kaWYKIAorbmFtZXNwYWNl
IElQQyB7CitjbGFzcyBEYXRhUmVmZXJlbmNlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01MSw2ICs1NywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydExvYWRpbmcodWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgdm9pZCBzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKIAorICAgIHZv
aWQgcHJvY2Vzc0RpZENsb3NlKCk7CisKKyNpZiBVU0UoU09VUCkKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRpZEZhaWxXaXRo
RXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCmluZGV4IGFkNTNlOTguLjk3OWIwZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9t
YWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eU1hYy5tbQpAQCAtMTYwLDQgKzE2MCw4IEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiAgICAgbV9s
b2FkZXJNYXAucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOwogfQogCit2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoKQoreworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCmluZGV4IDA1OWY0NjUuLjNmYjM0NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHlTb3VwLmNwcApAQCAtMjAsMTMgKzIwLDE5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKIAorI2luY2x1
ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkNoaWxkUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKKyNp
ZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNHdGsuaD4KKyNlbGlmIFBM
QVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0VmbC5oPgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9jZXNzUHJveHkqIGNoaWxkUHJvY2Vzc1Byb3h5LCBX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCkBAIC00MiwxNCArNDgsNDAgQEAgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCiAgICAgbV9j
aGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAordm9pZCBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKK3sKKyAgICBtX3By
b2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRoaXMp
OworfQorCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcodWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIG1fcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcj4oKS0+c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQsIHJl
cXVlc3QpOworICAgIGlmICghbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3QpKQorICAg
ICAgICBkaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OmNhbm5vdFNo
b3dVUkxFcnJvcihyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiB7Ci0gICAgbV9wcm9j
ZXNzUG9vbC5zdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigp
LT5zdG9wTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKTsKKyAgICBtX3Byb2Nlc3NQb29sLmN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudCgpLnN0b3BMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2Nv
bElEKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIG1fY2hpbGRQcm9jZXNzUHJveHktPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKGN1c3RvbVBy
b3RvY29sSUQsIHJlc3BvbnNlLCAwKSwgMCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKGN1c3RvbVByb3Rv
Y29sSUQsIGRhdGEpLCAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6
ZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZEZhaWxXaXRoRXJyb3IoY3VzdG9t
UHJvdG9jb2xJRCwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTo6ZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQoreworICAg
IG1fY2hpbGRQcm9jZXNzUHJveHktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdl
cjo6RGlkRmluaXNoTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKSwgMCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiNjU1ZTQzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgotCi0jaW5j
bHVkZSAiQVBJRGF0YS5oIgotI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotCi0jaWYgUExBVEZPUk0oR1RLKQotI2lu
Y2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+Ci0jZWxpZiBQTEFURk9STShFRkwpCi0jaW5jbHVk
ZSA8V2ViQ29yZS9FcnJvcnNFZmwuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y29uc3QgY2hhciogV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnN1cHBsZW1l
bnROYW1lKCkKLXsKLSAgICByZXR1cm4gIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyIjsKLX0KLQotUmVmPFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG9vbCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcihwcm9jZXNzUG9vbCkpOwotfQotCi1XZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcjo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIo
V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQotICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQo
cHJvY2Vzc1Bvb2wpCi17Ci19Ci0KLVdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Ojp+V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIoKQotewotfQotCi12b2lkIFdl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjppbml0aWFsaXplQ2xpZW50KGNvbnN0
IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpCi17
Ci0gICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwotfQotCi0vLyBXZWJDb250ZXh0U3Vw
cGxlbWVudAotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cHJvY2Vz
c1Bvb2xEZXN0cm95ZWQoKQotewotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyOjpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKLXsKLX0KLQotdm9p
ZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKQotewotICAgIEFQSTo6T2JqZWN0OjpyZWYoKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCi17
Ci0gICAgQVBJOjpPYmplY3Q6OmRlcmVmKCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgQVNTRVJUKCFzY2hlbWUuaXNOdWxsKCkpOwotICAgIGlm
IChtX3JlZ2lzdGVyZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vz
c1Bvb2woKS0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOwotCi0gICAg
bV9yZWdpc3RlcmVkU2NoZW1lcy5hcHBlbmQoc2NoZW1lKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3Rv
Y29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+dW5yZWdpc3RlclNjaGVtZUZvckN1
c3RvbVByb3RvY29sKHNjaGVtZSk7Ci0KLSAgICBib29sIHJlbW92ZWQgPSBtX3JlZ2lzdGVyZWRT
Y2hlbWVzLnJlbW92ZUZpcnN0KHNjaGVtZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCBy
ZW1vdmVkKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6
c3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAoIW1fY2xpZW50LnN0YXJ0TG9hZGlu
Zyh0aGlzLCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSkKLSAgICAgICAgZGlkRmFpbFdpdGhF
cnJvcihjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IocmVxdWVz
dCkpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdG9w
TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQotewotICAgIG1fY2xpZW50LnN0b3BM
b2FkaW5nKHRoaXMsIGN1c3RvbVByb3RvY29sSUQpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17
Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNz
UG9vbCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRSZWNlaXZlUmVzcG9uc2UoY3VzdG9tUHJvdG9jb2xJRCwg
cmVzcG9uc2UsIDApLCAwKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6ZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgQVBJ
OjpEYXRhKiBkYXRhKQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkTG9hZERhdGEoY3VzdG9tUHJv
dG9jb2xJRCwgZGF0YS0+ZGF0YVJlZmVyZW5jZSgpKSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0g
ICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9v
bCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpEaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIGVycm9y
KSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRp
ZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKLXsKLSAgICBpZiAoIXBy
b2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPm5ldHdv
cmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OkRpZEZpbmlzaExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCksIDApOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2NDc3NTZlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlcl9oCi0KLSNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJDb250
ZXh0U3VwcGxlbWVudC5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLWNsYXNzIERhdGE7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Ci0KLWNsYXNzIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBs
ZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwotCi0gICAgc3RhdGljIFJlZjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4g
Y3JlYXRlKFdlYlByb2Nlc3NQb29sKik7Ci0gICAgdmlydHVhbCB+V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSopOwotCi0gICAgdm9p
ZCByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsK
LSAgICB2b2lkIHVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcm
IHNjaGVtZSk7Ci0KLSAgICB2b2lkIHN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIHN0b3BMb2Fk
aW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIHZvaWQgZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCwgY29uc3QgQVBJOjpEYXRhKik7Ci0gICAgdm9pZCBkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Ci0KLSAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Qcm90b2NvbHMo
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9Ci0KLSAgICB1c2luZyBBUEk6
Ok9iamVjdDo6cmVmOwotICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKLQotcHJpdmF0ZToK
LSAgICBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcihXZWJQcm9jZXNzUG9vbCop
OwotCi0gICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKLSAgICB2b2lkIHByb2Nlc3NQb29sRGVz
dHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1By
b3h5Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwotCi0g
ICAgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQgbV9jbGllbnQ7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gbV9yZWdpc3RlcmVkU2NoZW1lczsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGRlZjYyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50LmgiCi0KLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5o
IgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotYm9vbCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlckNsaWVudDo6c3RhcnRMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyKiBzb3VwUmVxdWVzdE1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAoIW1f
Y2xpZW50LnN0YXJ0TG9hZGluZykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVmPEFQ
STo6VVJMUmVxdWVzdD4gdXJsUmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlcXVl
c3QpOwotICAgIG1fY2xpZW50LnN0YXJ0TG9hZGluZyh0b0FQSShzb3VwUmVxdWVzdE1hbmFnZXIp
LCBjdXN0b21Qcm90b2NvbElELCB0b0FQSSh1cmxSZXF1ZXN0LnB0cigpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcoV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIqIHNvdXBSZXF1ZXN0TWFuYWdlciwgdWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCkKLXsKLSAgICBpZiAobV9jbGllbnQuc3RvcExvYWRpbmcpCi0gICAgICAgIG1f
Y2xpZW50LnN0b3BMb2FkaW5nKHRvQVBJKHNvdXBSZXF1ZXN0TWFuYWdlciksIGN1c3RvbVByb3Rv
Y29sSUQsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlYmIyMjEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9oCi0jZGVmaW5lIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKLQotI2luY2x1ZGUgIkFQSUNsaWVudC5oIgot
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IENs
aWVudFRyYWl0czxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZT4g
ewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyQ2xpZW50VjA+IFZlcnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI7Ci0KLWNsYXNzIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgYm9v
bCBzdGFydExvYWRpbmcoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqLCB1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
LSAgICB2b2lkIHN0b3BMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYjk5MWI3YS4uODhjY2NhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTIxOSw2ICsyMTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpCiB7CiAgICAgaWYgKG1fZG93bmxvYWRQcm94eU1hcCkKICAgICAg
ICAgbV9kb3dubG9hZFByb3h5TWFwLT5wcm9jZXNzRGlkQ2xvc2UoKTsKKyAgICBtX2N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5LnByb2Nlc3NEaWRDbG9zZSgpOwogCiAgICAgbV90b2tlbkZvckhv
bGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGIwZmI3ZGMuLmY4MTUxMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElBdXRvbWF0aW9uQ2xpZW50LmgiCisj
aW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCkBAIC05MCwxMCArOTEsNiBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2VuZGlmCiAK
LSNpZiBVU0UoU09VUCkKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5oIgotI2VuZGlmCi0KICNpZiBPUyhMSU5VWCkKICNpbmNsdWRlICJNZW1vcnlQcmVzc3Vy
ZU1vbml0b3IuaCIKICNlbmRpZgpAQCAtMTU3LDYgKzE1NCw5IEBAIFdlYlByb2Nlc3NQb29sOjpX
ZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikKICAgICAsIG1fYXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21h
dGlvbkNsaWVudD4oKSkKICAgICAsIG1fZG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkRvd25sb2FkQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKKyNpZiBVU0UoU09VUCkK
KyAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCisjZW5kaWYKICAgICAsIG1fdmlzaXRl
ZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICAgICAsIG1fdmlzaXRlZExp
bmtzUG9wdWxhdGVkKGZhbHNlKQogICAgICwgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlcih0aGlz
KQpAQCAtMTY1LDkgKzE2NSw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fbWVtb3J5
U2FtcGxlckVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX21lbW9yeVNhbXBsZXJJbnRlcnZhbCgxNDAw
LjApCiAgICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUobV9jb25maWd1cmF0aW9uLT5zaG91bGRIYXZl
TGVnYWN5RGF0YVN0b3JlKCkgPyBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShsZWdhY3lX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKS5wdHIoKSA6IG51
bGxwdHIpCi0jaWYgVVNFKFNPVVApCi0gICAgLCBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9s
aWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbikKLSNl
bmRpZgogICAgICwgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oZmFsc2UpCiAgICAg
LCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQodHJ1ZSkKICAgICAsIG1fY2FuSGFuZGxlSFRU
UFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24odHJ1ZSkKQEAgLTE5Nyw5ICsxOTQsNiBAQCBXZWJQcm9j
ZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCiAgICAgYWRkU3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7
CiAgICAgYWRkU3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKICAgICBh
ZGRTdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKTsKLSNpZiBVU0UoU09V
UCkKLSAgICBhZGRTdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
PigpOwotI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAgICAgYWRkU3VwcGxlbWVu
dDxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+KCk7CiAjZW5kaWYKQEAgLTI5OSw2ICsyOTMs
MTYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PgogICAgICAgICBtX2F1dG9tYXRpb25DbGllbnQg
PSBXVEZNb3ZlKGF1dG9tYXRpb25DbGllbnQpOwogfQogCisjaWYgVVNFKFNPVVApCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PiBjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQpCit7CisgICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpCisgICAg
ICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKKyAgICBlbHNlCisgICAgICAgIG1fY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQpOworfQorI2VuZGlmCisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1i
ZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMpCiB7CiAgICAg
Ly8gR3VhcmQgYWdhaW5zdCBBUEkgbWlzdXNlLgpAQCAtMTM2NCwxMSArMTM2OCwxNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50
cmllc0FkZGVkQWZ0ZXJUaW1lKAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogeworI2lmIFVTRShTT1VQ
KQorICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYWRkKHNjaGVt
ZSk7CisjZW5kaWYKICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpSZWdpc3RlclNjaGVtZShzY2hlbWUpKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKQogeworI2lmIFVTRShTT1VQKQorICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRG
b3JDdXN0b21Qcm90b2NvbHMucmVtb3ZlKHNjaGVtZSk7CisjZW5kaWYKICAgICBzZW5kVG9OZXR3
b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpVbnJlZ2lzdGVy
U2NoZW1lKHNjaGVtZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCmluZGV4IGZjZGU5YTAuLmQ1ZTRiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03MCw2ICs3MCw3IEBAIE9CSkNfQ0xBU1MgTlNTdHJpbmc7
CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKK2NsYXNzIEN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKQEAgLTEz
NSw2ICsxMzYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Pik7CiAgICAgdm9pZCBzZXRE
b3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOwogICAg
IHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9u
Q2xpZW50Pik7CisjaWYgVVNFKFNPVVApCisgICAgdm9pZCBzZXRDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
Pik7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2ln
bmVkKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBy
dW5uaW5nLgogICAgIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsg
cmV0dXJuICFtX2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/IFVJTlRfTUFY
IDogbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0KQEAgLTIyNSw2ICsy
MjksMTAgQEAgcHVibGljOgogICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQmIGhp
c3RvcnlDbGllbnQoKSB7IHJldHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAgV2ViQ29udGV4
dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAorI2lmIFVTRShTT1VQKQor
ICAgIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50JiBjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7
IH0KKyNlbmRpZgorCiAgICAgV2ViSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2UoKSBjb25zdCB7
IHJldHVybiBtX2ljb25EYXRhYmFzZS5nZXQoKTsgfQogCiAgICAgc3RydWN0IFN0YXRpc3RpY3Mg
ewpAQCAtNDU1LDYgKzQ2Myw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6
QXV0b21hdGlvbkNsaWVudD4gbV9hdXRvbWF0aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkRvd25sb2FkQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PiBtX2hpc3RvcnlDbGllbnQ7Cisj
aWYgVVNFKFNPVVApCisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50PiBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsKKyNlbmRpZgogCiAgICAg
UmVmUHRyPFdlYkF1dG9tYXRpb25TZXNzaW9uPiBtX2F1dG9tYXRpb25TZXNzaW9uOwogCkBAIC00
OTksNyArNTEwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudE1hcCBtX3N1
cHBsZW1lbnRzOwogCiAjaWYgVVNFKFNPVVApCi0gICAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBt
X2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5OworICAgIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeSB7IEhUVFBDb29raWVBY2NlcHRQb2xp
Y3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB9OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCkBAIC01MzAsNiArNTQxLDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShTT1VQKQogICAgIGJv
b2wgbV9pZ25vcmVUTFNFcnJvcnMgeyB0cnVlIH07CisgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4gbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29sczsKICNlbmRpZgogCiAgICAgYm9vbCBtX21lbW9yeUNhY2hlRGlzYWJsZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRF
ZmwuY3BwCmluZGV4IGI5YTY1N2YuLjk1MTI3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCkBAIC0yNiw1
MiArMjYsNjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbC5oIgogCisjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmgiCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9w
cml2YXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgaW5saW5lIFJlcXVlc3RN
YW5hZ2VyQ2xpZW50RWZsKiB0b1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlcXVlc3RNYW5hZ2VyQ2xpZW50
RWZsKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotfQotCi1SZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwoV0tDb250ZXh0UmVmIGNvbnRleHQp
Ci17Ci0gICAgbV9yZXF1ZXN0TWFuYWdlciA9IHRvQVBJKHRvSW1wbChjb250ZXh0KS0+c3VwcGxl
bWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKSk7Ci0gICAgQVNTRVJU
KG1fcmVxdWVzdE1hbmFnZXIpOworY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwqIGNsaWVudCkKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgeworICAg
IH0KIAotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB3a1Jl
cXVlc3RNYW5hZ2VyQ2xpZW50OwotICAgIG1lbXNldCgmd2tSZXF1ZXN0TWFuYWdlckNsaWVudCwg
MCwgc2l6ZW9mKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCkpOwor
cHJpdmF0ZToKKyAgICBib29sIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpIG92ZXJyaWRlCisgICAgeworICAgICAgICBh
dXRvIHVybFJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNvdXJjZVJlcXVlc3Qp
OworICAgICAgICBSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IEV3a1VybFNj
aGVtZVJlcXVlc3Q6OmNyZWF0ZShtYW5hZ2VyLCB1cmxSZXF1ZXN0LmdldCgpLCBjdXN0b21Qcm90
b2NvbElEKTsKKyAgICAgICAgU3RyaW5nIHNjaGVtZShTdHJpbmc6OmZyb21VVEY4KHJlcXVlc3Qu
Z2V0KCktPnNjaGVtZSgpKSk7CisgICAgICAgIFJlZlB0cjxXZWJLaXRVUklTY2hlbWVIYW5kbGVy
PiBoYW5kbGVyID0gKG1fY2xpZW50LT5tX3VyaVNjaGVtZUhhbmRsZXJzKS5nZXQoc2NoZW1lKTsK
KyAgICAgICAgQVNTRVJUKGhhbmRsZXIuZ2V0KCkpOworICAgICAgICBpZiAoIWhhbmRsZXItPmhh
c0NhbGxiYWNrKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHdrUmVxdWVzdE1h
bmFnZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50
LmJhc2UuY2xpZW50SW5mbyA9IHRoaXM7Ci0gICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5zdGFy
dExvYWRpbmcgPSBzdGFydExvYWRpbmc7Ci0gICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5zdG9w
TG9hZGluZyA9IHN0b3BMb2FkaW5nOworICAgICAgICAobV9jbGllbnQtPm1fdXJpU2NoZW1lUmVx
dWVzdHMpLnNldChjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KTsKKyAgICAgICAgaGFuZGxlci0+
cGVyZm9ybUNhbGxiYWNrKHJlcXVlc3QuZ2V0KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CiAKLSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KG1f
cmVxdWVzdE1hbmFnZXIuZ2V0KCksICZ3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LmJhc2UpOwotfQor
ICAgIHZvaWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElEKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgKG1fY2xpZW50LT5t
X3VyaVNjaGVtZVJlcXVlc3RzKS5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgfQogCi12
b2lkIFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpzdGFydExvYWRpbmcoV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElE
LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsK
LSAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogY2xpZW50ID0gdG9SZXF1ZXN0TWFuYWdlckNs
aWVudEVmbChjbGllbnRJbmZvKTsKLSAgICBSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4gcmVx
dWVzdCA9IEV3a1VybFNjaGVtZVJlcXVlc3Q6OmNyZWF0ZShtYW5hZ2VyLCB0b0ltcGwocmVxdWVz
dFJlZiksIGN1c3RvbVByb3RvY29sSUQpOwotICAgIFN0cmluZyBzY2hlbWUoU3RyaW5nOjpmcm9t
VVRGOChyZXF1ZXN0LmdldCgpLT5zY2hlbWUoKSkpOwotICAgIFJlZlB0cjxXZWJLaXRVUklTY2hl
bWVIYW5kbGVyPiBoYW5kbGVyID0gKGNsaWVudC0+bV91cmlTY2hlbWVIYW5kbGVycykuZ2V0KHNj
aGVtZSk7Ci0gICAgQVNTRVJUKGhhbmRsZXIuZ2V0KCkpOwotICAgIGlmICghaGFuZGxlci0+aGFz
Q2FsbGJhY2soKSkKLSAgICAgICAgcmV0dXJuOworICAgIHZvaWQgaW52YWxpZGF0ZShDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlcikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFZl
Y3RvcjxSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4+IHJlcXVlc3RzOworICAgICAgICBjb3B5
VmFsdWVzVG9WZWN0b3IobV9jbGllbnQtPm1fdXJpU2NoZW1lUmVxdWVzdHMsIHJlcXVlc3RzKTsK
KyAgICAgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVzdHMpIHsKKyAgICAgICAgICAgIGlm
IChyZXF1ZXN0LT5tYW5hZ2VyKCkgPT0gJm1hbmFnZXIpIHsKKyAgICAgICAgICAgICAgICByZXF1
ZXN0LT5pbnZhbGlkYXRlKCk7CisgICAgICAgICAgICAgICAgc3RvcExvYWRpbmcobWFuYWdlciwg
cmVxdWVzdC0+aWQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKLSAgICAo
Y2xpZW50LT5tX3VyaVNjaGVtZVJlcXVlc3RzKS5zZXQoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVz
dCk7Ci0gICAgaGFuZGxlci0+cGVyZm9ybUNhbGxiYWNrKHJlcXVlc3QuZ2V0KCkpOwotfQorICAg
IFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKiBtX2NsaWVudDsKK307CiAKLXZvaWQgUmVxdWVzdE1h
bmFnZXJDbGllbnRFZmw6OnN0b3BMb2FkaW5nKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpSZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbChXS0NvbnRleHRSZWYgY29udGV4dCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7
Ci0KLSAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogY2xpZW50ID0gdG9SZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbChjbGllbnRJbmZvKTsKLSAgICAoY2xpZW50LT5tX3VyaVNjaGVtZVJlcXVlc3Rz
KS5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgbV9wcm9jZXNzUG9vbCA9IHRvSW1wbChj
b250ZXh0KTsKKyAgICBtX3Byb2Nlc3NQb29sLT5zZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHRoaXMpKTsK
IH0KIAogdm9pZCBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5k
bGVyKGNvbnN0IFN0cmluZyYgc2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxi
YWNrLCB2b2lkKiB1c2VyRGF0YSkKQEAgLTc5LDggKzg3LDkgQEAgdm9pZCBSZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbDo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYgc2NoZW1l
LCBFd2sKICAgICBBU1NFUlQoY2FsbGJhY2spOwogCiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVt
ZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdFJlZihuZXcgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihj
YWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBtX3VyaVNjaGVtZUhhbmRsZXJzLnNldChzY2hlbWUs
IGhhbmRsZXIpOwotICAgIHRvSW1wbChtX3JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+cmVnaXN0ZXJT
Y2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91
cmlTY2hlbWVIYW5kbGVycy5zZXQoc2NoZW1lLCBoYW5kbGVyKTsKKyAgICBpZiAoYWRkUmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2woc2NoZW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmgKaW5kZXggODdkMzYwZS4uZTVkMzQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuaApAQCAtMjcsNyArMjcsNiBA
QAogI2RlZmluZSBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbF9oCiAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a191cmxf
c2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIgogCkBAIC0zOCw2ICszNyw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CisKIGNsYXNz
IFdlYktpdFVSSVNjaGVtZUhhbmRsZXI6IHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdFVSSVNjaGVt
ZUhhbmRsZXI+IHsKIHB1YmxpYzoKICAgICBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKCkKQEAgLTc5
LDEwICs4MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihj
b25zdCBTdHJpbmcmIHNjaGVtZSwgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYiBjYWxsYmFjaywg
dm9pZCogdXNlckRhdGEpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyB2b2lkIHN0YXJ0TG9hZGlu
ZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Q
cm90b2NvbElELCBXS1VSTFJlcXVlc3RSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAg
IHN0YXRpYyB2b2lkIHN0b3BMb2FkaW5nKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OworICAgIGZyaWVuZCBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiAKLSAgICBX
S1JldGFpblB0cjxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmPiBtX3JlcXVl
c3RNYW5hZ2VyOworICAgIFdlYlByb2Nlc3NQb29sKiBtX3Byb2Nlc3NQb29sOwogICAgIFVSSVNj
aGVtZUhhbmRsZXJNYXAgbV91cmlTY2hlbWVIYW5kbGVyczsKICAgICBVUklTY2hlbWVSZXF1ZXN0
TWFwIG1fdXJpU2NoZW1lUmVxdWVzdHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNwcAppbmRleCAzZjI2NDBlLi5mZmEyZDUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZs
LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlci5oIgogI2luY2x1ZGUgPEVmcmVldC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNw
cAppbmRleCA4MTk3ZmQzLi40MTBhOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1
ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcAppbmRleCBkNWRiMjQ0Li45M2E3
YzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNz
UG9vbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nl
c3NQb29sU291cC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGFuZ3Vh
Z2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MCw3ICszOSw4IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhCiAgICAgcGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3kgPSBtX2luaXRp
YWxIVFRQQ29va2llQWNjZXB0UG9saWN5OwogICAgIHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3Jz
ID0gbV9pZ25vcmVUTFNFcnJvcnM7CiAgICAgcGFyYW1ldGVycy5sYW5ndWFnZXMgPSBXZWJDb3Jl
Ojp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7Ci0gICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scyA9IHN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI+KCktPnJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9jb2xz
KCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNSZWdpc3RlcmVk
Rm9yQ3VzdG9tUHJvdG9jb2xzKQorICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3Rl
cmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwogICAgIHBhcmFtZXRlcnMuc2hv
dWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nID0gZmFsc2U7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295159</attachid>
            <date>2016-11-18 09:11:21 -0800</date>
            <delta_ts>2016-11-18 11:24:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-custom-protocols-soup.diff</filename>
            <type>text/plain</type>
            <size>83100</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA0Yjg5MTk0Li5hMzNhYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsOTIg
QEAKIDIwMTYtMTEtMTggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtTT1VQXSBTaW1wbGlmeSBjdXN0b20gcHJvdG9jb2xzIGhhbmRsZXIgaW1w
bGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDkyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIGFyZSB1c2luZyB0b28gbWFueSBjbGFzc2VzIGZvciB0aGlzIGFuZCBhbHNvIHRoZSBD
IEFQSSB0aGF0IGlzIG5vdCBuZWVkZWQsIGJlY2F1c2UgYm90aCBHVEsrIGFuZCBFRkwgaGF2ZQor
ICAgICAgICB0aGVpciBvd24gQVBJcyBhbmQgdGhpcyBpcyBub3QgdXNlZCBieSBXVFIgYXQgYWxs
LgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IFJlbW92ZSBmaWxlcyBmcm9tIGNvbXBp
bGF0aW9uLgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBT
aGFyZWQvQVBJL2MvV0tCYXNlLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3NvdXAvV0tCYXNl
U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoQVBJOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQ6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpOgorICAgICAgICAoQVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OnN0YXJ0TG9hZGluZyk6CisgICAgICAgIChB
UEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcpOgorICAgICAgICAo
QVBJOjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ6OmludmFsaWRhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
c291cC9XS0FQSUNhc3RTb3VwLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L3NvdXAvV0tDb250ZXh0U291cC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVz
dE1hbmFnZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1Nv
dXBSZXF1ZXN0TWFuYWdlci5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcDogUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5jcHA6IFVzZSBDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSBpbnN0ZWFkIG9mIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYuCisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjpFd2tVcmxTY2hlbWVSZXF1
ZXN0KToKKyAgICAgICAgKEV3a1VybFNjaGVtZVJlcXVlc3Q6OmZpbmlzaCk6CisgICAgICAgIChF
d2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a1VybFNj
aGVtZVJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChFd2tVcmxTY2hlbWVSZXF1ZXN0OjptYW5h
Z2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKGF0dGFjaEN1c3RvbVByb3RvY29sTWFu
YWdlckNsaWVudFRvQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
LmNwcDogVXNlIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5IGluc3RlYWQgb2YgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuCisgICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0Q3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwpOgorICAg
ICAgICAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIpOgorICAgICAgICAod2Via2l0
VVJJU2NoZW1lUmVxdWVzdEludmFsaWRhdGUpOgorICAgICAgICAod2Via2l0VVJJU2NoZW1lUmVx
dWVzdFJlYWRDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zp
bmlzaF9lcnJvcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZCk6CisgICAg
ICAgICh3ZWJraXRXZWJDb250ZXh0RGlzcG9zZSk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRl
eHRfcmVnaXN0ZXJfdXJpX3NjaGVtZSk6CisgICAgICAgICh3ZWJraXRXZWJDb250ZXh0U3RhcnRM
b2FkaW5nQ3VzdG9tUHJvdG9jb2wpOgorICAgICAgICAod2Via2l0V2ViQ29udGV4dEludmFsaWRh
dGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOiBJ
bnZhbGlkYXRlIHRoZSBjbGllbnQuCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5OjpzdGFydExvYWRpbmcpOiBOb3RpZnkgdGhlIGNsaWVudC4KKyAgICAgICAgKFdl
YktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OnN0b3BMb2FkaW5nKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRSZWNlaXZlUmVz
cG9uc2UpOiBOb3RpZnkgdGhlIG5ldHdvcmsgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyUHJveHk6OmRpZExvYWREYXRhKTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGYWlsV2l0aEVycm9yKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpkaWRGaW5p
c2hMb2FkaW5nKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJv
dG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmg6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZENsb3NlKTogTm90aWZ5IHRoZSBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS4K
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2wpOiBJbml0aWFsaXplIHRoZSBDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQgYW5kIHJlbW92ZSB0aGUgYWxsIHN1cHBsZW1lbnQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJTY2hlbWVGb3JD
dXN0b21Qcm90b2NvbCk6IEluIGNhc2Ugb2Ygc291cCBjYWNoZSB0aGUgZ2l2ZW4gcHJvdG9jb2wu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1bnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2wpOiBJbiBjYXNlIG9mIHNvdXAgZGVsZXRlIHRoZSBnaXZlbiBwcm90b2NvbCBm
cm9tIHRoZSBjYWNoZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmNwcDogRG8gbm90
IHVzZSB0aGUgQyBBUEksIGJ1dCBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC4KKyAg
ICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OlJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw6OnJlZ2lz
dGVyVVJMU2NoZW1lSGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFu
YWdlckNsaWVudEVmbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xF
ZmwuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9zb3VwL1dlYlByb2Nlc3NQb29sU291cC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vz
cyk6IFVzZSBtX3VybFNjaGVtZXNSZWdpc3RlcmVkRm9yQ3VzdG9tUHJvdG9jb2xzIHRvCisgICAg
ICAgIGJ1aWxkIHRoZSBsaXN0IG9mIGN1c3RvbSBwcm90b2NvbHMgdG8gc2VuZCB0byB0aGUgbmV0
d29yayBwcm9jZXNzLgorCisyMDE2LTExLTE4ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJj
aWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBSZW1vdmUgbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eSBmcm9tIFdlYlByb2Nlc3NQcm94eQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTA4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
NmU3N2VlNi4uOTk0NGFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTc2LDcgKzc2
LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS1ZpZXdFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tpZU1hbmFn
ZXJTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcAogCkBAIC0xMzEsOCArMTMwLDYgQEAgbGlzdChBUFBF
TkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1
bmNoZXJFZmwuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291
cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nlc3Mv
UGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCiAgICAgVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcApAQCAtMjU2LDYgKzI1Myw3IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElS
fS9TaGFyZWQvZWZsIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvc291cCIKICAgICAiJHtX
RUJLSVQyX0RJUn0vU2hhcmVkL3VuaXgiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9jYWlybyIKICAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9lZmwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtl
CmluZGV4IDlmZDJkMTYuLjU5NTRiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0x
MDEsNyArMTAxLDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNz
L0FQSS9DL2d0ay9XS1ZpZXcuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tp
ZU1hbmFnZXJTb3VwLmNwcAotICAgIFVJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9BUElXZWJz
aXRlRGF0YVN0b3JlR3RrLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBs
LmNwcApAQCAtMTM0LDYgKzEzMyw4IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAg
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlLmgKICAgICBVSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDcmVkZW50aWFsLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdENyZWRlbnRpYWwuaAorICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVBy
b3RvY29sTWFuYWdlckNsaWVudC5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERl
ZmluZXMuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmNwcAogICAgIFVJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdERvd25sb2FkLmgKQEAgLTIxMCw4ICsyMTEsNiBAQCBsaXN0
KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRQcmlu
dE9wZXJhdGlvblByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpdmF0ZS5oCi0gICAgVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCi0gICAgVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvbi5oCiAgICAgVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVzcG9uc2VQb2xpY3lEZWNpc2lvblByaXZhdGUuaApAQCAtMjgzLDggKzI4Miw2IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9saW51eC9NZW1vcnlQcmVz
c3VyZU1vbml0b3IuY3BwCiAKICAgICBVSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
c291cC9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCi0gICAgVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXIuY3BwCi0gICAgVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAKICAgICBVSVByb2Nl
c3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgKaW5kZXggOTQ4ZTE2MC4uMzJmYmM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0Jhc2UuaApAQCAtMzQsMTAgKzM0LDYgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNl
R3RrLmg+CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoVVNFX1NPVVApCi0jaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZVNvdXAuaD4KLSNlbmRpZgotCiAjaWYgZGVmaW5lZChCVUlMRElOR19FRkxfXykKICNp
bmNsdWRlIDxXZWJLaXQvV0tCYXNlRWZsLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvYy9zb3VwL1dLQmFzZVNvdXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjAwZjA4NS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mvc291
cC9XS0Jhc2VTb3VwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tCYXNlU291
cF9oCi0jZGVmaW5lIFdLQmFzZVNvdXBfaAotCi0jaWZuZGVmIFdLQmFzZV9oCi0jZXJyb3IgIlBs
ZWFzZSAjaW5jbHVkZSBcIldLQmFzZS5oXCIgaW5zdGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHku
IgotI2VuZGlmCi0KLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU291cFJlcXVlc3RNYW5h
Z2VyKiBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZjsKLXR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqIFdLU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXJSZWY7Ci0KLSNlbmRpZiAvKiBXS0Jhc2VTb3VwX2ggKi8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQVBJQ2FzdFNvdXAuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xp
ZW50LmgKc2ltaWxhcml0eSBpbmRleCA2OCUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tBUElDYXN0U291cC5oCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCmluZGV4IDJk
ZjYzZjIuLjUxZTE4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9zb3VwL1dLQVBJQ2FzdFNvdXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IFBvcnRpb25zIENvcHlyaWdodCAoYykgMjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChD
KSAyMDE2IElnYWxpYSBTLkwuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDE5ICsyMywyOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgV0tBUElDYXN0U291cF9oCi0jZGVmaW5lIFdLQVBJQ2FzdFNvdXBfaAorI3ByYWdt
YSBvbmNlCiAKLSNpZm5kZWYgV0tBUElDYXN0X2gKLSNlcnJvciAiUGxlYXNlICNpbmNsdWRlIFwi
V0tBUElDYXN0LmhcIiBpbnN0ZWFkIG9mIHRoaXMgZmlsZSBkaXJlY3RseS4iCi0jZW5kaWYKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIEN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5OworfQogCi1jbGFzcyBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlcjsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlUmVxdWVz
dDsKK30KIAotV0tfQUREX0FQSV9NQVBQSU5HKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYsIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyKQorbmFtZXNwYWNl
IEFQSSB7CiAKLX0KK2NsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KCkgeyB9CisKKyAgICB2
aXJ0dWFsIGJvb2wgc3RhcnRMb2FkaW5nKFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkmLCB1aW50NjRfdCAvKiBjdXN0b21Qcm90b2NvbElEICovLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzdG9wTG9h
ZGluZyhXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiwgdWludDY0X3QgLyogY3Vz
dG9tUHJvdG9jb2xJRCAqLykgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZShXZWJL
aXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JikgeyB9Cit9OwogCi0jZW5kaWYgLy8gV0tB
UElDYXN0U291cF9oCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCA3YjRhNGQ1Li5mN2YzYTJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC01NTIsMTAgKzU1Miw2IEBAIGlu
bGluZSBQcm94eWluZ1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiB0b0FQSShjb25zdCBXZWJDb3Jl
OjpHcmFtbWFyRGV0YWlsJiBncmFtCiAjaW5jbHVkZSAiV0tBUElDYXN0R3RrLmgiCiAjZW5kaWYK
IAotI2lmIFVTRShTT1VQKQotI2luY2x1ZGUgIldLQVBJQ2FzdFNvdXAuaCIKLSNlbmRpZgotCiAj
aWYgZGVmaW5lZChCVUlMRElOR19FRkxfXykKICNpbmNsdWRlICJXS0FQSUNhc3RFZmwuaCIKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tD
b250ZXh0U291cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tDb250
ZXh0U291cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDQyZjM5Li4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dLQ29udGV4dFNvdXAu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0NvbnRleHRTb3VwX2gKLSNkZWZp
bmUgV0tDb250ZXh0U291cF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0jaW5jbHVk
ZSA8V2ViS2l0L1dLU291cFJlcXVlc3RNYW5hZ2VyLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwot
ZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLU291cFJlcXVlc3RNYW5hZ2VyUmVm
IFdLQ29udGV4dEdldFNvdXBSZXF1ZXN0TWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7Ci0K
LSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvKiBXS0NvbnRleHRTb3Vw
X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ZDM2ZjYuLjAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCi0KLSNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS1Nv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCkKLXsKLSAgICByZXR1cm4g
dG9BUEkoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OkFQSVR5cGUpOwotfQot
Ci12b2lkIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBzb3VwUmVxdWVzdE1hbmFnZXJSZWYsIGNv
bnN0IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiB3a0NsaWVu
dCkKLXsKLSAgICB0b0ltcGwoc291cFJlcXVlc3RNYW5hZ2VyUmVmKS0+aW5pdGlhbGl6ZUNsaWVu
dCh3a0NsaWVudCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMmE3NjIuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLU291
cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyX2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lm
ZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKCpX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU3RhcnRMb2FkaW5nQ2FsbGJhY2spKFdL
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYgc291cE1hbmFnZXJSZWYsIHVpbnQ2
NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXJTdG9wTG9hZGluZ0NhbGxiYWNrKShXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyUmVmIHNvdXBNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZv
aWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZv
OwotfSBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZTsKLQotdHlw
ZWRlZiBzdHJ1Y3QgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudFYwIHsK
LSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAg
ICAgYmFzZTsKLQotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTdGFydExv
YWRpbmdDYWxsYmFjayBzdGFydExvYWRpbmc7Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlclN0b3BMb2FkaW5nQ2FsbGJhY2sgIHN0b3BMb2FkaW5nOwotfSBXS1NvdXBDdXN0
b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50VjA7Ci0KLVdLX0VYUE9SVCBXS1R5cGVJRCBX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9S
VCB2b2lkIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJTZXRDbGllbnQoV0tTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlclJlZiwgY29uc3QgV0tTb3VwQ3VzdG9tUHJvdG9j
b2xSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLQotI2VuZGlmIC8qIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3Vw
UmVxdWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9zb3VwL1dL
U291cFJlcXVlc3RNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2Njdl
ZGUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tT
b3VwUmVxdWVzdE1hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS1Nv
dXBSZXF1ZXN0TWFuYWdlcl9oCi0jZGVmaW5lIFdLU291cFJlcXVlc3RNYW5hZ2VyX2gKLQotI2lu
Y2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMi
IHsKLSNlbmRpZgotCi10eXBlZGVmIHZvaWQgKCpXS1NvdXBSZXF1ZXN0TWFuYWdlckRpZFJlY2Vp
dmVVUklSZXF1ZXN0Q2FsbGJhY2spKFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmIHNvdXBSZXF1ZXN0
TWFuYWdlclJlZiwgV0tVUkxSZWYgdXJsUmVmLCBXS1BhZ2VSZWYgcGFnZVJlZiwgdWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLU291
cFJlcXVlc3RNYW5hZ2VyRGlkRmFpbFRvTG9hZFVSSVJlcXVlc3RDYWxsYmFjaykoV0tTb3VwUmVx
dWVzdE1hbmFnZXJSZWYgc291cFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotCi10eXBlZGVmIHN0cnVjdCBXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotfSBXS1NvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudEJhc2U7Ci0KLXR5cGVkZWYgc3RydWN0IFdLU291cFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50VjAgewotICAgIFdLU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSAgICAgICAgICAg
ICAgICAgICAgICBiYXNlOwotCi0gICAgV0tTb3VwUmVxdWVzdE1hbmFnZXJEaWRSZWNlaXZlVVJJ
UmVxdWVzdENhbGxiYWNrICAgIGRpZFJlY2VpdmVVUklSZXF1ZXN0OwotICAgIFdLU291cFJlcXVl
c3RNYW5hZ2VyRGlkRmFpbFRvTG9hZFVSSVJlcXVlc3RDYWxsYmFjayBkaWRGYWlsVG9Mb2FkVVJJ
UmVxdWVzdDsKLX0gV0tTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnRWMDsKLQotV0tfRVhQT1JUIFdL
VHlwZUlEIFdLU291cFJlcXVlc3RNYW5hZ2VyR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9SVCB2b2lk
IFdLU291cFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVmLCBj
b25zdCBXS1NvdXBSZXF1ZXN0TWFuYWdlckNsaWVudEJhc2UqIGNsaWVudCk7Ci1XS19FWFBPUlQg
dm9pZCBXS1NvdXBSZXF1ZXN0TWFuYWdlclJlZ2lzdGVyVVJJU2NoZW1lKFdLU291cFJlcXVlc3RN
YW5hZ2VyUmVmLCBXS1N0cmluZ1JlZiBzY2hlbWVSZWYpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3Vw
UmVxdWVzdE1hbmFnZXJEaWRIYW5kbGVVUklSZXF1ZXN0KFdLU291cFJlcXVlc3RNYW5hZ2VyUmVm
LCBXS0RhdGFSZWYsIHVpbnQ2NF90IGNvbnRlbnRMZW5ndGgsIFdLU3RyaW5nUmVmIG1pbWVUeXBl
UmVmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwotV0tfRVhQT1JUIHZvaWQgV0tTb3VwUmVxdWVzdE1h
bmFnZXJEaWRSZWNlaXZlVVJJUmVxdWVzdERhdGEoV0tTb3VwUmVxdWVzdE1hbmFnZXJSZWYsIFdL
RGF0YVJlZiwgdWludDY0X3QgcmVxdWVzdElEKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLQotI2VuZGlmIC8qIFdLU291cFJlcXVlc3RNYW5hZ2VyX2ggKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRleCAxNzk1MjY5
Li5iNGVkZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2NvbnRleHQuY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0NvbnRleHRQ
cml2YXRlLmgiCi0jaW5jbHVkZSAiV0tDb250ZXh0U291cC5oIgogI2luY2x1ZGUgIldLTnVtYmVy
LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2No
ZW1lX3JlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdC5jcHAKaW5kZXggOTg4Yjk5Ni4uZjU1NDg0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVf
cmVxdWVzdC5jcHAKQEAgLTMxLDE0ICszMSwxMyBAQAogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV0tVUkwuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogCiAjaW5jbHVkZSAiZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
LUV3a1VybFNjaGVtZVJlcXVlc3Q6OkV3a1VybFNjaGVtZVJlcXVlc3QoV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVl
c3QsIHVpbnQ2NF90IHJlcXVlc3RJRCkKLSAgICA6IG1fd2tSZXF1ZXN0TWFuYWdlcihtYW5hZ2Vy
KQorRXdrVXJsU2NoZW1lUmVxdWVzdDo6RXdrVXJsU2NoZW1lUmVxdWVzdChDdXN0b21Qcm90b2Nv
bE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50
NjRfdCByZXF1ZXN0SUQpCisgICAgOiBtX3drUmVxdWVzdE1hbmFnZXIoJm1hbmFnZXIpCiAgICAg
LCBtX3JlcXVlc3RJRChyZXF1ZXN0SUQpCiB7CiAgICAgV0tVUkxSZWYgdXJsID0gdG9Db3BpZWRV
UkxBUEkodXJsUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOwpAQCAtNjksNiArNjgs
OSBAQCBjb25zdCBjaGFyKiBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpwYXRoKCkgY29uc3QKIAogdm9p
ZCBFd2tVcmxTY2hlbWVSZXF1ZXN0OjpmaW5pc2goY29uc3Qgdm9pZCogY29udGVudERhdGEsIHVp
bnQ2NF90IGNvbnRlbnRMZW5ndGgsIGNvbnN0IGNoYXIqIG1pbWVUeXBlKQogeworICAgIGlmICgh
bV93a1JlcXVlc3RNYW5hZ2VyKQorICAgICAgICByZXR1cm47CisKICAgICBXS1JldGFpblB0cjxX
S0RhdGFSZWY+IHdrRGF0YShBZG9wdFdLLCBXS0RhdGFDcmVhdGUoY29udGVudExlbmd0aCA/IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGNvbnRlbnREYXRhKSA6IDAsIGNv
bnRlbnRMZW5ndGgpKTsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNaW1lVHlwZSA9
IG1pbWVUeXBlID8gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhtaW1lVHlw
ZSkpIDogMDsKIApAQCAtNzYsMTAgKzc4LDE1IEBAIHZvaWQgRXdrVXJsU2NoZW1lUmVxdWVzdDo6
ZmluaXNoKGNvbnN0IHZvaWQqIGNvbnRlbnREYXRhLCB1aW50NjRfdCBjb250ZW50TGVuZ3RoCiAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgobV91cmwpKSwKICAgICAgICAgU3RyaW5nOjpmcm9t
VVRGOChtaW1lVHlwZSksIGNvbnRlbnRMZW5ndGgsIGVtcHR5U3RyaW5nKCkpOwogCi0gICAgdG9J
bXBsKG1fd2tSZXF1ZXN0TWFuYWdlci5nZXQoKSktPmRpZFJlY2VpdmVSZXNwb25zZShtX3JlcXVl
c3RJRCwgcmVzcG9uc2UpOwotICAgIHRvSW1wbChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5k
aWRMb2FkRGF0YShtX3JlcXVlc3RJRCwgdG9JbXBsKHdrRGF0YS5nZXQoKSkpOwotICAgIHRvSW1w
bChtX3drUmVxdWVzdE1hbmFnZXIuZ2V0KCkpLT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVxdWVzdElE
KTsKLSAgICB0b0ltcGwobV93a1JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+c3RvcExvYWRpbmcobV9y
ZXF1ZXN0SUQpOworICAgIG1fd2tSZXF1ZXN0TWFuYWdlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1f
cmVxdWVzdElELCByZXNwb25zZSk7CisgICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0
YShtX3JlcXVlc3RJRCwgdG9JbXBsKHdrRGF0YS5nZXQoKSktPmRhdGFSZWZlcmVuY2UoKSk7Cisg
ICAgbV93a1JlcXVlc3RNYW5hZ2VyLT5kaWRGaW5pc2hMb2FkaW5nKG1fcmVxdWVzdElEKTsKKyAg
ICBtX3drUmVxdWVzdE1hbmFnZXItPnN0b3BMb2FkaW5nKG1fcmVxdWVzdElEKTsKK30KKwordm9p
ZCBFd2tVcmxTY2hlbWVSZXF1ZXN0OjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX3drUmVxdWVzdE1h
bmFnZXIgPSBudWxscHRyOwogfQogCiBjb25zdCBjaGFyKiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0
X3NjaGVtZV9nZXQoY29uc3QgRXdrX1VybF9TY2hlbWVfUmVxdWVzdCogcmVxdWVzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3Jl
cXVlc3RfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Vy
bF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKaW5kZXggYTM5ODkyYi4uZjU5ZDU1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3VybF9zY2hlbWVfcmVx
dWVzdF9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3VybF9zY2hlbWVfcmVxdWVzdF9wcml2YXRlLmgKQEAgLTI2LDExICsyNiwxMSBAQAogI2lmbmRl
ZiBld2tfdXJsX3NjaGVtZV9yZXF1ZXN0X3ByaXZhdGVfaAogI2RlZmluZSBld2tfdXJsX3NjaGVt
ZV9yZXF1ZXN0X3ByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0Jhc2UuaCIKICNpbmNs
dWRlICJXS0VpbmFTaGFyZWRTdHJpbmcuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgotI2lu
Y2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJl
d2tfb2JqZWN0X3ByaXZhdGUuaCIKIAogLyoqCkBAIC00MSw5ICs0MSw5IEBAIGNsYXNzIEV3a1Vy
bFNjaGVtZVJlcXVlc3QgOiBwdWJsaWMgRXdrT2JqZWN0IHsKIHB1YmxpYzoKICAgICBFV0tfT0JK
RUNUX0RFQ0xBUkUoRXdrVXJsU2NoZW1lUmVxdWVzdCkKIAotICAgIHN0YXRpYyBSZWZQdHI8RXdr
VXJsU2NoZW1lUmVxdWVzdD4gY3JlYXRlKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJSZWYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1
ZXN0SUQpCisgICAgc3RhdGljIFJlZlB0cjxFd2tVcmxTY2hlbWVSZXF1ZXN0PiBjcmVhdGUoV2Vi
S2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgQVBJOjpVUkxSZXF1ZXN0
KiB1cmxSZXF1ZXN0LCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgewotICAgICAgICBpZiAoIW1h
bmFnZXIgfHwgIXVybFJlcXVlc3QpCisgICAgICAgIGlmICghdXJsUmVxdWVzdCkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrVXJs
U2NoZW1lUmVxdWVzdChtYW5hZ2VyLCB1cmxSZXF1ZXN0LCByZXF1ZXN0SUQpKTsKQEAgLTU2LDEw
ICs1NiwxMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZpbmlzaChjb25zdCB2b2lkKiBjb250ZW50
RGF0YSwgdWludDY0X3QgY29udGVudExlbmd0aCwgY29uc3QgY2hhciogbWltZVR5cGUpOwogCisg
ICAgV2ViS2l0OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogbWFuYWdlcigpIGNvbnN0IHsg
cmV0dXJuIG1fd2tSZXF1ZXN0TWFuYWdlcjsgfQorICAgIHZvaWQgaW52YWxpZGF0ZSgpOworCiBw
cml2YXRlOgotICAgIEV3a1VybFNjaGVtZVJlcXVlc3QoV0tTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QsIHVpbnQ2
NF90IHJlcXVlc3RJRCk7CisgICAgRXdrVXJsU2NoZW1lUmVxdWVzdChXZWJLaXQ6OkN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5JiBtYW5hZ2VyLCBBUEk6OlVSTFJlcXVlc3QqIHVybFJlcXVlc3Qs
IHVpbnQ2NF90IHJlcXVlc3RJRCk7CiAKLSAgICBXS1JldGFpblB0cjxXS1NvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyUmVmPiBtX3drUmVxdWVzdE1hbmFnZXI7CisgICAgV2ViS2l0OjpD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogbV93a1JlcXVlc3RNYW5hZ2VyOwogICAgIFdLRWlu
YVNoYXJlZFN0cmluZyBtX3VybDsKICAgICB1aW50NjRfdCBtX3JlcXVlc3RJRDsKICAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgbV9zY2hlbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
Q2xpZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjJmMzE0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJLaXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKKworI2luY2x1ZGUgIkFQ
SUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgorI2luY2x1ZGUgIkN1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK2NsYXNzIEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVu
dCBmaW5hbCA6IHB1YmxpYyBBUEk6OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KFdlYktpdFdlYkNv
bnRleHQqIHdlYkNvbnRleHQpCisgICAgICAgIDogbV93ZWJDb250ZXh0KHdlYkNvbnRleHQpCisg
ICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90
b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Vi
a2l0V2ViQ29udGV4dFN0YXJ0TG9hZGluZ0N1c3RvbVByb3RvY29sKG1fd2ViQ29udGV4dCwgY3Vz
dG9tUHJvdG9jb2xJRCwgcmVxdWVzdCwgbWFuYWdlcik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHZvaWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgd2Vi
a2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2wobV93ZWJDb250ZXh0LCBjdXN0
b21Qcm90b2NvbElEKTsKKyAgICB9CisKKyAgICB2b2lkIGludmFsaWRhdGUoQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpIG92ZXJyaWRlCisgICAgeworICAgICAgICB3ZWJraXRX
ZWJDb250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMobV93ZWJDb250ZXh0LCBt
YW5hZ2VyKTsKKyAgICB9CisKKyAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRleHQ7Cit9
OworCit2b2lkIGF0dGFjaEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudFRvQ29udGV4dChXZWJL
aXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQoreworICAgIGF1dG8qIHByb2Nlc3NQb29sID0gd2Vi
a2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29sKHdlYkNvbnRleHQpOworICAgIHByb2Nlc3NQb29s
LT5zZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Q
cm90b2NvbE1hbmFnZXJDbGllbnQ+KHdlYkNvbnRleHQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2NvbE1h
bmFnZXJDbGllbnQuaApzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oCnJlbmFt
ZSB0byBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnQuaAppbmRleCBhMzY1NTk0Li5jOWM0YzE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEN1c3RvbVByb3Rv
Y29sTWFuYWdlckNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTE3LDExICsxNyw5IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFdlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKLSNk
ZWZpbmUgV2ViS2l0UmVxdWVzdE1hbmFnZXJDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJXZWJLaXRXZWJDb250ZXh0LmgiCiAKLXZvaWQgYXR0YWNoUmVxdWVzdE1hbmFnZXJDbGll
bnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCopOwordm9pZCBhdHRhY2hDdXN0b21Qcm90b2Nv
bE1hbmFnZXJDbGllbnRUb0NvbnRleHQoV2ViS2l0V2ViQ29udGV4dCopOwogCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaXZhdGUuaAppbmRl
eCA3NWU4YzllLi5kMDcyYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0UHJpdmF0ZS5oCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSA8V2ViS2l0
L1dLSW5zcGVjdG9yQ2xpZW50R3RrLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8V2ViS2l0L1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+Ci0jaW5jbHVkZSA8
V2ViS2l0L1dLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5hZ2VyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlcXVlc3RNYW5h
Z2VyQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkxODljOS4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZXF1ZXN0
TWFuYWdlckNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgotCi0jaW5jbHVkZSAiV2ViS2l0V2Vi
Q29udGV4dFByaXZhdGUuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotc3RhdGljIHZv
aWQgc3RhcnRMb2FkaW5nKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIHVp
bnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdD
dXN0b21Qcm90b2NvbChXRUJLSVRfV0VCX0NPTlRFWFQoY2xpZW50SW5mbyksIGN1c3RvbVByb3Rv
Y29sSUQsIHRvSW1wbChyZXF1ZXN0UmVmKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHN0b3BMb2FkaW5n
KFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVBy
b3RvY29sSUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgd2Via2l0V2ViQ29udGV4
dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV0VCS0lUX1dFQl9DT05URVhUKGNsaWVudEluZm8p
LCBjdXN0b21Qcm90b2NvbElEKTsKLX0KLQotdm9pZCBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVu
dFRvQ29udGV4dChXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0KQotewotICAgIFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50
ID0gewotICAgICAgICB7Ci0gICAgICAgICAgICAwLCAvLyB2ZXJzaW9uCi0gICAgICAgICAgICB3
ZWJDb250ZXh0IC8vIGNsaWVudEluZm8KLSAgICAgICAgfSwKLSAgICAgICAgc3RhcnRMb2FkaW5n
LAotICAgICAgICBzdG9wTG9hZGluZwotICAgIH07Ci0gICAgV0tTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlclNldENsaWVudCh0b0FQSSh3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1h
bmFnZXIod2ViQ29udGV4dCkpLCAmd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5iYXNlKTsKLX0KLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
UklTY2hlbWVSZXF1ZXN0LmNwcAppbmRleCA4NzJhNTY0Li5hYmExYjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklTY2hlbWVS
ZXF1ZXN0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiAvKioKICAqIFNFQ1RJT046IFdlYktpdFVSSVNjaGVtZVJlcXVlc3QKQEAgLTU0LDcgKzU1LDcg
QEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBnUmVhZEJ1ZmZlclNpemUgPSA4MTkyOwogCiBz
dHJ1Y3QgX1dlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlIHsKICAgICBXZWJLaXRXZWJDb250
ZXh0KiB3ZWJDb250ZXh0OwotICAgIFJlZlB0cjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcj4gd2ViUmVxdWVzdE1hbmFnZXI7CisgICAgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkqIG1hbmFnZXI7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gaW5pdGlhdGluZ1BhZ2U7CiAg
ICAgdWludDY0X3QgcmVxdWVzdElEOwogICAgIENTdHJpbmcgdXJpOwpAQCAtNzQsMjEgKzc1LDMx
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfY2xhc3NfaW5pdChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Q2xhc3MqKQogewogfQogCi1XZWJLaXRVUklTY2hlbWVSZXF1ZXN0
KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0
V2ViQ29udGV4dCogd2ViQ29udGV4dCwgQVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0KQorV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdCogd2Via2l0VVJJU2NoZW1lUmVxdWVzdENyZWF0ZSh1aW50NjRf
dCByZXF1ZXN0SUQsIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSYgbWFu
YWdlcikKIHsKLSAgICBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0ID0gV0VCS0lUX1VS
SV9TQ0hFTUVfUkVRVUVTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfVVJJX1NDSEVNRV9SRVFV
RVNULCBOVUxMKSk7CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCA9IFdFQktJ
VF9VUklfU0NIRU1FX1JFUVVFU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VSSV9TQ0hFTUVf
UkVRVUVTVCwgbnVsbHB0cikpOwogICAgIHJlcXVlc3QtPnByaXYtPndlYkNvbnRleHQgPSB3ZWJD
b250ZXh0OwotICAgIHJlcXVlc3QtPnByaXYtPndlYlJlcXVlc3RNYW5hZ2VyID0gd2Via2l0V2Vi
Q29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKHdlYkNvbnRleHQpOwotICAgIHJlcXVlc3QtPnByaXYt
PnVyaSA9IHVybFJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0Zjgo
KTsKLSAgICByZXF1ZXN0LT5wcml2LT5pbml0aWF0aW5nUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6
d2ViUGFnZSh1cmxSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS5pbml0aWF0aW5nUGFnZUlEKCkp
OworICAgIHJlcXVlc3QtPnByaXYtPm1hbmFnZXIgPSAmbWFuYWdlcjsKKyAgICByZXF1ZXN0LT5w
cml2LT51cmkgPSByZXNvdXJjZVJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpOworICAgIHJl
cXVlc3QtPnByaXYtPmluaXRpYXRpbmdQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHJl
c291cmNlUmVxdWVzdC5pbml0aWF0aW5nUGFnZUlEKCkpOwogICAgIHJlcXVlc3QtPnByaXYtPnJl
cXVlc3RJRCA9IHJlcXVlc3RJRDsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAogdm9pZCB3ZWJr
aXRVUklTY2hlbWVSZXF1ZXN0Q2FuY2VsKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3Qp
CiB7Ci0gICAgaWYgKHJlcXVlc3QtPnByaXYtPmNhbmNlbGxhYmxlLmdldCgpKQotICAgICAgICBn
X2NhbmNlbGxhYmxlX2NhbmNlbChyZXF1ZXN0LT5wcml2LT5jYW5jZWxsYWJsZS5nZXQoKSk7Cisg
ICAgZ19jYW5jZWxsYWJsZV9jYW5jZWwocmVxdWVzdC0+cHJpdi0+Y2FuY2VsbGFibGUuZ2V0KCkp
OworfQorCitDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSogd2Via2l0VVJJU2NoZW1lUmVxdWVz
dEdldE1hbmFnZXIoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICByZXR1
cm4gcmVxdWVzdC0+cHJpdi0+bWFuYWdlcjsKK30KKwordm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1
ZXN0SW52YWxpZGF0ZShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIHJl
cXVlc3QtPnByaXYtPm1hbmFnZXIgPSBudWxscHRyOworICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVl
c3RDYW5jZWwocmVxdWVzdCk7CiB9CiAKIC8qKgpAQCAtMTU5LDggKzE3MCwxNCBAQCBXZWJLaXRX
ZWJWaWV3KiB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyhXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZQogc3RhdGljIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdFJlYWRD
YWxsYmFjayhHSW5wdXRTdHJlYW0qIGlucHV0U3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwg
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogc2NoZW1lUmVxdWVzdCkKIHsKICAgICBHUmVmUHRyPFdl
YktpdFVSSVNjaGVtZVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYoc2NoZW1lUmVxdWVzdCk7
CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBnc3NpemUgYnl0ZXNSZWFk
ID0gZ19pbnB1dF9zdHJlYW1fcmVhZF9maW5pc2goaW5wdXRTdHJlYW0sIHJlc3VsdCwgJmVycm9y
Lm91dFB0cigpKTsKKyAgICBpZiAoIXByaXYtPm1hbmFnZXIpIHsKKyAgICAgICAgd2Via2l0V2Vi
Q29udGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBw
cml2LT5yZXF1ZXN0SUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKGJ5dGVz
UmVhZCA9PSAtMSkgewogICAgICAgICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9l
cnJvcihyZXF1ZXN0LmdldCgpLCBlcnJvci5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE3
MSwyMiArMTg4LDIxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2Fs
bGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAgICAgaWYgKCFyZXF1ZXN0
LT5wcml2LT5zdHJlYW0pCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYktpdFVSSVNjaGVtZVJl
cXVlc3RQcml2YXRlKiBwcml2ID0gcmVxdWVzdC0+cHJpdjsKLSAgICBSZWY8QVBJOjpEYXRhPiB3
ZWJEYXRhID0gQVBJOjpEYXRhOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25l
ZCBjaGFyKj4ocHJpdi0+cmVhZEJ1ZmZlciksIGJ5dGVzUmVhZCk7CisgICAgYXV0byB3ZWJEYXRh
ID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBy
aXYtPnJlYWRCdWZmZXIpLCBieXRlc1JlYWQpOwogICAgIGlmICghcHJpdi0+Ynl0ZXNSZWFkKSB7
CiAgICAgICAgIC8vIEZpcnN0IGNodW5rIHJlYWQuIEluIGNhc2Ugb2YgZW1wdHkgcmVwbHkgYW4g
ZW1wdHkgQVBJOjpEYXRhIGlzIHNlbnQgdG8gdGhlIG5ldHdvcmtpbmcgcHJvY2Vzcy4KLSAgICAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShXZWJDb3JlOjpVUkwoV2ViQ29y
ZTo6VVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVURjgo
cHJpdi0+bWltZVR5cGUuZGF0YSgpKSwKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZShVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVURjgocHJpdi0+dXJpKSksIFN0cmluZzo6ZnJvbVVU
RjgocHJpdi0+bWltZVR5cGUuZGF0YSgpKSwKICAgICAgICAgICAgIHByaXYtPnN0cmVhbUxlbmd0
aCwgZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRS
ZWNlaXZlUmVzcG9uc2UocHJpdi0+cmVxdWVzdElELCByZXNwb25zZSk7Ci0gICAgICAgIHByaXYt
PndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdlYkRhdGEu
cHRyKCkpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRSZWNlaXZlUmVzcG9uc2UocHJpdi0+
cmVxdWVzdElELCByZXNwb25zZSk7CisgICAgICAgIHByaXYtPm1hbmFnZXItPmRpZExvYWREYXRh
KHByaXYtPnJlcXVlc3RJRCwgd2ViRGF0YSk7CiAgICAgfSBlbHNlIGlmIChieXRlc1JlYWQgfHwg
KCFieXRlc1JlYWQgJiYgIXByaXYtPnN0cmVhbUxlbmd0aCkpIHsKICAgICAgICAgLy8gU3Vic2Vx
dWVudCBjaHVuayByZWFkLiBXZSBvbmx5IHNlbmQgYW4gZW1wdHkgQVBJOjpEYXRhIHRvIHRoZSBu
ZXR3b3JraW5nIHByb2Nlc3Mgd2hlbiBzdHJlYW0gbGVuZ3RoIGlzIHVua25vd24uCi0gICAgICAg
IHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5yZXF1ZXN0SUQsIHdl
YkRhdGEucHRyKCkpOworICAgICAgICBwcml2LT5tYW5hZ2VyLT5kaWRMb2FkRGF0YShwcml2LT5y
ZXF1ZXN0SUQsIHdlYkRhdGEpOwogICAgIH0KIAogICAgIGlmICghYnl0ZXNSZWFkKSB7Ci0gICAg
ICAgIHByaXYtPndlYlJlcXVlc3RNYW5hZ2VyLT5kaWRGaW5pc2hMb2FkaW5nKHJlcXVlc3QtPnBy
aXYtPnJlcXVlc3RJRCk7Ci0gICAgICAgIHdlYmtpdFdlYkNvbnRleHREaWRGaW5pc2hMb2FkaW5n
Q3VzdG9tUHJvdG9jb2wocmVxdWVzdC0+cHJpdi0+d2ViQ29udGV4dCwgcmVxdWVzdC0+cHJpdi0+
cmVxdWVzdElEKTsKKyAgICAgICAgcHJpdi0+bWFuYWdlci0+ZGlkRmluaXNoTG9hZGluZyhwcml2
LT5yZXF1ZXN0SUQpOworICAgICAgICB3ZWJraXRXZWJDb250ZXh0RGlkRmluaXNoTG9hZGluZ0N1
c3RvbVByb3RvY29sKHByaXYtPndlYkNvbnRleHQsIHByaXYtPnJlcXVlc3RJRCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTIzOSw3ICsyNTUsNyBAQCB2b2lkIHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3Qs
IEdFcgogICAgICAgICByZXR1cm47CiAKICAgICBwcml2LT5zdHJlYW0gPSBudWxscHRyOwotICAg
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhl
cnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNvZGUpLCBXZWJDb3JlOjpVUkwo
cHJpdi0+c291cFVSSS5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsK
LSAgICBwcml2LT53ZWJSZXF1ZXN0TWFuYWdlci0+ZGlkRmFpbFdpdGhFcnJvcihwcml2LT5yZXF1
ZXN0SUQsIHJlc291cmNlRXJyb3IpOworICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNv
ZGUpLCBVUkwocHJpdi0+c291cFVSSS5nZXQoKSksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKTsKKyAgICBwcml2LT5tYW5hZ2VyLT5kaWRGYWlsV2l0aEVycm9yKHByaXYtPnJlcXVl
c3RJRCwgcmVzb3VyY2VFcnJvcik7CiAgICAgd2Via2l0V2ViQ29udGV4dERpZEZpbmlzaExvYWRp
bmdDdXN0b21Qcm90b2NvbChwcml2LT53ZWJDb250ZXh0LCBwcml2LT5yZXF1ZXN0SUQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2No
ZW1lUmVxdWVzdFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlLmgKaW5kZXggYzcyZmExOC4uNDdiYjhjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oCkBAIC0yMCwxMSArMjAsMTUgQEAKICNpZm5k
ZWYgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGVfaAogI2RlZmluZSBXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0UHJpdmF0ZV9oCiAKKyNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViQ29udGV4dC5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKLVdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHdlYmtp
dFVSSVNjaGVtZVJlcXVlc3RDcmVhdGUodWludDY0X3QgcmVxdWVzdElELCBXZWJLaXRXZWJDb250
ZXh0KiwgQVBJOjpVUkxSZXF1ZXN0Kik7CitXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiB3ZWJraXRV
UklTY2hlbWVSZXF1ZXN0Q3JlYXRlKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViS2l0V2ViQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYktpdDo6Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHkmKTsKIHZvaWQgd2Via2l0VVJJU2NoZW1lUmVxdWVzdENhbmNlbChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0Kik7CitXZWJLaXQ6OkN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5
KiB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0R2V0TWFuYWdlcihXZWJLaXRVUklTY2hlbWVSZXF1ZXN0
Kik7Cit2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RJbnZhbGlkYXRlKFdlYktpdFVSSVNjaGVt
ZVJlcXVlc3QqKTsKIAogI2VuZGlmIC8vIFdlYktpdFVSSVNjaGVtZVJlcXVlc3RQcml2YXRlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29u
dGV4dC5jcHAKaW5kZXggNzI1MzU1OS4uNzM4MzRjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTIwLDYgKzIw
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250ZXh0Lmgi
CiAKKyNpbmNsdWRlICJBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJBUElEb3dubG9hZENsaWVudC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCkBAIC0zMCw2ICszMSw3
IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJLaXRDb29raWVNYW5hZ2VyUHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdEN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgog
I2luY2x1ZGUgIldlYktpdERvd25sb2FkQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RG93bmxv
YWRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RmF2aWNvbkRhdGFiYXNlUHJpdmF0ZS5oIgpA
QCAtMzgsNyArNDAsNiBAQAogI2luY2x1ZGUgIldlYktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgi
CiAjaW5jbHVkZSAiV2ViS2l0UGx1Z2luUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFByaXZh
dGUuaCIKLSNpbmNsdWRlICJXZWJLaXRSZXF1ZXN0TWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUg
IldlYktpdFNlY3VyaXR5TWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRTZXR0aW5n
c1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZS5oIgpA
QCAtMTE1LDEyICsxMTYsNiBAQCBlbnVtIHsKIAogY2xhc3MgV2ViS2l0VVJJU2NoZW1lSGFuZGxl
cjogcHVibGljIFJlZkNvdW50ZWQ8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gewogcHVibGljOgot
ICAgIFdlYktpdFVSSVNjaGVtZUhhbmRsZXIoKQotICAgICAgICA6IG1fY2FsbGJhY2soMCkKLSAg
ICAgICAgLCBtX3VzZXJEYXRhKDApCi0gICAgICAgICwgbV9kZXN0cm95Tm90aWZ5KDApCi0gICAg
ewotICAgIH0KICAgICBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKFdlYktpdFVSSVNjaGVtZVJlcXVl
c3RDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlckRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ry
b3lOb3RpZnkpCiAgICAgICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKICAgICAgICAgLCBtX3Vz
ZXJEYXRhKHVzZXJEYXRhKQpAQCAtMTQ3LDkgKzE0Miw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrIG1fY2FsbGJhY2s7Ci0g
ICAgdm9pZCogbV91c2VyRGF0YTsKLSAgICBHRGVzdHJveU5vdGlmeSBtX2Rlc3Ryb3lOb3RpZnk7
CisgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdENhbGxiYWNrIG1fY2FsbGJhY2sgeyBudWxscHRy
IH07CisgICAgdm9pZCogbV91c2VyRGF0YSB7IG51bGxwdHIgfTsKKyAgICBHRGVzdHJveU5vdGlm
eSBtX2Rlc3Ryb3lOb3RpZnkgeyBudWxscHRyIH07CiB9OwogCiB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gPiBVUklTY2hlbWVIYW5kbGVyTWFw
OwpAQCAtMTYyLDcgKzE1Nyw2IEBAIHN0cnVjdCBfV2ViS2l0V2ViQ29udGV4dFByaXZhdGUgewog
ICAgIEdSZWZQdHI8V2ViS2l0Q29va2llTWFuYWdlcj4gY29va2llTWFuYWdlcjsKICAgICBHUmVm
UHRyPFdlYktpdEZhdmljb25EYXRhYmFzZT4gZmF2aWNvbkRhdGFiYXNlOwogICAgIEdSZWZQdHI8
V2ViS2l0U2VjdXJpdHlNYW5hZ2VyPiBzZWN1cml0eU1hbmFnZXI7Ci0gICAgUmVmUHRyPFdlYlNv
dXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiByZXF1ZXN0TWFuYWdlcjsKICAgICBVUklT
Y2hlbWVIYW5kbGVyTWFwIHVyaVNjaGVtZUhhbmRsZXJzOwogICAgIFVSSVNjaGVtZVJlcXVlc3RN
YXAgdXJpU2NoZW1lUmVxdWVzdHM7CiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQpAQCAtMjc1LDgg
KzI2OSw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCiAgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIpCiAgICAgICAgIHBy
aXYtPndlYnNpdGVEYXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRXZWJzaXRlRGF0YU1hbmFn
ZXJDcmVhdGUod2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25Gb3JXZWJQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbikpKTsKIAotICAgIHByaXYtPnJlcXVlc3RNYW5hZ2Vy
ID0gcHJpdi0+cHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXI+KCk7Ci0KICAgICBwcml2LT50bHNFcnJvcnNQb2xpY3kgPSBXRUJLSVRfVExT
X0VSUk9SU19QT0xJQ1lfRkFJTDsKICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0SWdub3JlVExT
RXJyb3JzKGZhbHNlKTsKIApAQCAtMjg3LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdl
YkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAKICAgICBhdHRhY2hJbmplY3Rl
ZEJ1bmRsZUNsaWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKICAgICBhdHRhY2hEb3dubG9hZENs
aWVudFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKLSAgICBhdHRhY2hSZXF1ZXN0TWFuYWdlckNsaWVu
dFRvQ29udGV4dCh3ZWJDb250ZXh0KTsKKyAgICBhdHRhY2hDdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnRUb0NvbnRleHQod2ViQ29udGV4dCk7CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAg
ICAgcHJpdi0+Z2VvbG9jYXRpb25Qcm92aWRlciA9IFdlYktpdEdlb2xvY2F0aW9uUHJvdmlkZXI6
OmNyZWF0ZShwcml2LT5wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJQcm94eT4oKSk7CkBAIC0zMDQsNiArMjk2LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29u
dGV4dERpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogICAgICAgICBwcml2LT5jbGllbnRzRGV0YWNo
ZWQgPSB0cnVlOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+aW5pdGlhbGl6ZUluamVjdGVk
QnVuZGxlQ2xpZW50KG51bGxwdHIpOwogICAgICAgICBwcml2LT5wcm9jZXNzUG9vbC0+c2V0RG93
bmxvYWRDbGllbnQobnVsbHB0cik7CisgICAgICAgIHByaXYtPnByb2Nlc3NQb29sLT5zZXRDdXN0
b21Qcm90b2NvbE1hbmFnZXJDbGllbnQobnVsbHB0cik7CiAgICAgfQogCiAgICAgR19PQkpFQ1Rf
Q0xBU1Mod2Via2l0X3dlYl9jb250ZXh0X3BhcmVudF9jbGFzcyktPmRpc3Bvc2Uob2JqZWN0KTsK
QEAgLTg0OSw4ICs4NDIsOSBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9yZWdpc3Rlcl91cmlf
c2NoZW1lKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYQogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoY2FsbGJhY2spOwogCiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVtZUhhbmRsZXI+
IGhhbmRsZXIgPSBhZG9wdFJlZihuZXcgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihjYWxsYmFjaywg
dXNlckRhdGEsIGRlc3Ryb3lOb3RpZnkpKTsKLSAgICBjb250ZXh0LT5wcml2LT51cmlTY2hlbWVI
YW5kbGVycy5zZXQoU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpLCBoYW5kbGVyLmdldCgpKTsKLSAg
ICBjb250ZXh0LT5wcml2LT5yZXF1ZXN0TWFuYWdlci0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkpOworICAgIGF1dG8gYWRkUmVzdWx0ID0g
Y29udGV4dC0+cHJpdi0+dXJpU2NoZW1lSGFuZGxlcnMuc2V0KFN0cmluZzo6ZnJvbVVURjgoc2No
ZW1lKSwgaGFuZGxlci5nZXQoKSk7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Q
cm90b2NvbChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkpOwogfQogCiAvKioKQEAgLTEyNjYsMTQg
KzEyNjAsOSBAQCBXZWJQcm9jZXNzUG9vbCogd2Via2l0V2ViQ29udGV4dEdldFByb2Nlc3NQb29s
KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnBy
b2Nlc3NQb29sLmdldCgpOwogfQogCi1XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdl
ciogd2Via2l0V2ViQ29udGV4dEdldFJlcXVlc3RNYW5hZ2VyKFdlYktpdFdlYkNvbnRleHQqIGNv
bnRleHQpCi17Ci0gICAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnJlcXVlc3RNYW5hZ2VyLmdldCgp
OwotfQotCi12b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRpbmdDdXN0b21Qcm90b2NvbChX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBBUEk6
OlVSTFJlcXVlc3QqIHVybFJlcXVlc3QpCit2b2lkIHdlYmtpdFdlYkNvbnRleHRTdGFydExvYWRp
bmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1aW50NjRfdCBjdXN0
b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCwgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmIG1hbmFnZXIpCiB7Ci0gICAgR1JlZlB0
cjxXZWJLaXRVUklTY2hlbWVSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdFVSSVNj
aGVtZVJlcXVlc3RDcmVhdGUoY3VzdG9tUHJvdG9jb2xJRCwgY29udGV4dCwgdXJsUmVxdWVzdCkp
OworICAgIEdSZWZQdHI8V2ViS2l0VVJJU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1Jl
Zih3ZWJraXRVUklTY2hlbWVSZXF1ZXN0Q3JlYXRlKGN1c3RvbVByb3RvY29sSUQsIGNvbnRleHQs
IHJlc291cmNlUmVxdWVzdCwgbWFuYWdlcikpOwogICAgIFN0cmluZyBzY2hlbWUoU3RyaW5nOjpm
cm9tVVRGOCh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF9zY2hlbWUocmVxdWVzdC5nZXQo
KSkpKTsKICAgICBSZWZQdHI8V2ViS2l0VVJJU2NoZW1lSGFuZGxlcj4gaGFuZGxlciA9IGNvbnRl
eHQtPnByaXYtPnVyaVNjaGVtZUhhbmRsZXJzLmdldChzY2hlbWUpOwogICAgIEFTU0VSVChoYW5k
bGVyLmdldCgpKTsKQEAgLTEyOTIsNiArMTI4MSwxNiBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRT
dG9wTG9hZGluZ0N1c3RvbVByb3RvY29sKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIHVpbnQ2
NAogICAgIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RDYW5jZWwocmVxdWVzdC5nZXQoKSk7CiB9CiAK
K3ZvaWQgd2Via2l0V2ViQ29udGV4dEludmFsaWRhdGVDdXN0b21Qcm90b2NvbFJlcXVlc3RzKFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQsIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5JiBtYW5h
Z2VyKQoreworICAgIFZlY3RvcjxHUmVmUHRyPFdlYktpdFVSSVNjaGVtZVJlcXVlc3Q+PiByZXF1
ZXN0czsKKyAgICBjb3B5VmFsdWVzVG9WZWN0b3IoY29udGV4dC0+cHJpdi0+dXJpU2NoZW1lUmVx
dWVzdHMsIHJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiByZXF1ZXN0cykgewor
ICAgICAgICBpZiAod2Via2l0VVJJU2NoZW1lUmVxdWVzdEdldE1hbmFnZXIocmVxdWVzdC5nZXQo
KSkgPT0gJm1hbmFnZXIpCisgICAgICAgICAgICB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0SW52YWxp
ZGF0ZShyZXF1ZXN0LmdldCgpKTsKKyAgICB9Cit9CisKIHZvaWQgd2Via2l0V2ViQ29udGV4dERp
ZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCB1
aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQogewogICAgIGNvbnRleHQtPnByaXYtPnVyaVNjaGVt
ZVJlcXVlc3RzLnJlbW92ZShjdXN0b21Qcm90b2NvbElEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0UHJpdmF0ZS5oCmlu
ZGV4IDdlZTk2YjEuLjYzZWIyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dFByaXZhdGUuaApAQCAtMjYsMjEgKzI2
LDIyIEBACiAjaWZuZGVmIFdlYktpdFdlYkNvbnRleHRQcml2YXRlX2gKICNkZWZpbmUgV2ViS2l0
V2ViQ29udGV4dFByaXZhdGVfaAogCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0UHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYktpdFVzZXJDb250ZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIldl
YktpdFdlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUg
IldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCogd2Via2l0V2Vi
Q29udGV4dEdldFByb2Nlc3NQb29sKFdlYktpdFdlYkNvbnRleHQqKTsKIFdlYktpdERvd25sb2Fk
KiB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkqKTsKIFdlYktpdERvd25sb2FkKiB3ZWJraXRXZWJDb250ZXh0U3RhcnREb3dubG9hZChXZWJL
aXRXZWJDb250ZXh0KiwgY29uc3QgY2hhciogdXJpLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSopOwog
dm9pZCB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZFByb3h5
Kik7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHREb3dubG9hZFN0YXJ0ZWQoV2ViS2l0V2ViQ29udGV4
dCosIFdlYktpdERvd25sb2FkKik7Ci1XZWJLaXQ6OldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyKiB3ZWJraXRXZWJDb250ZXh0R2V0UmVxdWVzdE1hbmFnZXIoV2ViS2l0V2ViQ29u
dGV4dCopOwotdm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2wo
V2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIEFQSTo6VVJMUmVx
dWVzdCopOwordm9pZCB3ZWJraXRXZWJDb250ZXh0U3RhcnRMb2FkaW5nQ3VzdG9tUHJvdG9jb2wo
V2ViS2l0V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkm
KTsKIHZvaWQgd2Via2l0V2ViQ29udGV4dFN0b3BMb2FkaW5nQ3VzdG9tUHJvdG9jb2woV2ViS2l0
V2ViQ29udGV4dCosIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwordm9pZCB3ZWJraXRXZWJD
b250ZXh0SW52YWxpZGF0ZUN1c3RvbVByb3RvY29sUmVxdWVzdHMoV2ViS2l0V2ViQ29udGV4dCos
IFdlYktpdDo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmKTsKIHZvaWQgd2Via2l0V2ViQ29u
dGV4dERpZEZpbmlzaExvYWRpbmdDdXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7CiBib29sIHdlYmtpdFdlYkNvbnRleHRJc0xvYWRpbmdD
dXN0b21Qcm90b2NvbChXZWJLaXRXZWJDb250ZXh0KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCk7CiB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJD
b250ZXh0KiwgV2ViS2l0V2ViVmlldyosIFdlYktpdFVzZXJDb250ZW50TWFuYWdlciosIFdlYktp
dFdlYlZpZXcqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmgKaW5kZXggYjM4NzVmMy4uNGM3NDNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKQEAgLTM0LDggKzM0LDE0IEBA
CiBPQkpDX0NMQVNTIFdLQ3VzdG9tUHJvdG9jb2xMb2FkZXI7CiAjZW5kaWYKIAorbmFtZXNwYWNl
IElQQyB7CitjbGFzcyBEYXRhUmVmZXJlbmNlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC01MSw2ICs1NywxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydExvYWRpbmcodWludDY0
X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgdm9pZCBzdG9wTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKTsKIAorICAgIHZv
aWQgcHJvY2Vzc0RpZENsb3NlKCk7CisKKyNpZiBVU0UoU09VUCkKKyAgICB2b2lkIGRpZFJlY2Vp
dmVSZXNwb25zZSh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCBkaWRMb2FkRGF0YSh1aW50NjRfdCBjdXN0b21Qcm90
b2NvbElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRpZEZhaWxXaXRo
RXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElEKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWFjLm1tCmluZGV4IGFkNTNlOTguLjk3OWIwZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9t
YWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXJQcm94eU1hYy5tbQpAQCAtMTYwLDQgKzE2MCw4IEBAIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiAgICAgbV9s
b2FkZXJNYXAucmVtb3ZlKGN1c3RvbVByb3RvY29sSUQpOwogfQogCit2b2lkIEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoKQoreworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvc291cC9DdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eVNvdXAuY3BwCmluZGV4IDA1OWY0NjUuLjNmYjM0NWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9zb3VwL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5U291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvQ3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHlTb3VwLmNwcApAQCAtMjAsMTMgKzIwLDE5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKIAorI2luY2x1
ZGUgIkFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIgogI2luY2x1ZGUgIkNoaWxkUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAKKyNp
ZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29yZS9FcnJvcnNHdGsuaD4KKyNlbGlmIFBM
QVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0VmbC5oPgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6Q3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHkoQ2hpbGRQcm9jZXNzUHJveHkqIGNoaWxkUHJvY2Vzc1Byb3h5LCBX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpCkBAIC00MiwxNCArNDgsNDAgQEAgQ3VzdG9tUHJv
dG9jb2xNYW5hZ2VyUHJveHk6On5DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eSgpCiAgICAgbV9j
aGlsZFByb2Nlc3NQcm94eS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIH0KIAordm9pZCBD
dXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKK3sKKyAgICBtX3By
b2Nlc3NQb29sLmN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudCgpLmludmFsaWRhdGUoKnRoaXMp
OworfQorCiB2b2lkIEN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5OjpzdGFydExvYWRpbmcodWlu
dDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewotICAgIG1fcHJvY2Vzc1Bvb2wuc3VwcGxlbWVudDxXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcj4oKS0+c3RhcnRMb2FkaW5nKGN1c3RvbVByb3RvY29sSUQsIHJl
cXVlc3QpOworICAgIGlmICghbV9wcm9jZXNzUG9vbC5jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQoKS5zdGFydExvYWRpbmcoKnRoaXMsIGN1c3RvbVByb3RvY29sSUQsIHJlcXVlc3QpKQorICAg
ICAgICBkaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIFdlYkNvcmU6OmNhbm5vdFNo
b3dVUkxFcnJvcihyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHk6OnN0b3BMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpCiB7Ci0gICAgbV9wcm9j
ZXNzUG9vbC5zdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPigp
LT5zdG9wTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKTsKKyAgICBtX3Byb2Nlc3NQb29sLmN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudCgpLnN0b3BMb2FkaW5nKCp0aGlzLCBjdXN0b21Qcm90b2Nv
bElEKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIG1fY2hpbGRQcm9jZXNzUHJveHktPnNlbmQoTWVz
c2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlKGN1c3RvbVBy
b3RvY29sSUQsIHJlc3BvbnNlLCAwKSwgMCk7Cit9CisKK3ZvaWQgQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHk6OmRpZExvYWREYXRhKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZExvYWREYXRhKGN1c3RvbVByb3Rv
Y29sSUQsIGRhdGEpLCAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eTo6
ZGlkRmFpbFdpdGhFcnJvcih1aW50NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBtX2NoaWxkUHJvY2Vzc1Byb3h5LT5zZW5k
KE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1hbmFnZXI6OkRpZEZhaWxXaXRoRXJyb3IoY3VzdG9t
UHJvdG9jb2xJRCwgZXJyb3IpLCAwKTsKK30KKwordm9pZCBDdXN0b21Qcm90b2NvbE1hbmFnZXJQ
cm94eTo6ZGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQoreworICAg
IG1fY2hpbGRQcm9jZXNzUHJveHktPnNlbmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdl
cjo6RGlkRmluaXNoTG9hZGluZyhjdXN0b21Qcm90b2NvbElEKSwgMCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdv
cmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiNjU1ZTQzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgotCi0jaW5j
bHVkZSAiQVBJRGF0YS5oIgotI2luY2x1ZGUgIkN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2Vz
LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlRXJyb3IuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgotI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgotCi0jaWYgUExBVEZPUk0oR1RLKQotI2lu
Y2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+Ci0jZWxpZiBQTEFURk9STShFRkwpCi0jaW5jbHVk
ZSA8V2ViQ29yZS9FcnJvcnNFZmwuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
Y29uc3QgY2hhciogV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OnN1cHBsZW1l
bnROYW1lKCkKLXsKLSAgICByZXR1cm4gIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyIjsKLX0KLQotUmVmPFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyPiBXZWJT
b3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG9vbCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcihwcm9jZXNzUG9vbCkpOwotfQotCi1XZWJTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlcjo6V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIo
V2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sKQotICAgIDogV2ViQ29udGV4dFN1cHBsZW1lbnQo
cHJvY2Vzc1Bvb2wpCi17Ci19Ci0KLVdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
Ojp+V2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIoKQotewotfQotCi12b2lkIFdl
YlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjppbml0aWFsaXplQ2xpZW50KGNvbnN0
IFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlKiBjbGllbnQpCi17
Ci0gICAgbV9jbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwotfQotCi0vLyBXZWJDb250ZXh0U3Vw
cGxlbWVudAotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cHJvY2Vz
c1Bvb2xEZXN0cm95ZWQoKQotewotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyOjpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKLXsKLX0KLQotdm9p
ZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6cmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKQotewotICAgIEFQSTo6T2JqZWN0OjpyZWYoKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCi17
Ci0gICAgQVBJOjpPYmplY3Q6OmRlcmVmKCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI6OnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2woY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCi17Ci0gICAgQVNTRVJUKCFzY2hlbWUuaXNOdWxsKCkpOwotICAgIGlm
IChtX3JlZ2lzdGVyZWRTY2hlbWVzLmNvbnRhaW5zKHNjaGVtZSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vz
c1Bvb2woKS0+cmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOwotCi0gICAg
bV9yZWdpc3RlcmVkU2NoZW1lcy5hcHBlbmQoc2NoZW1lKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3Rv
Y29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+dW5yZWdpc3RlclNjaGVtZUZvckN1
c3RvbVByb3RvY29sKHNjaGVtZSk7Ci0KLSAgICBib29sIHJlbW92ZWQgPSBtX3JlZ2lzdGVyZWRT
Y2hlbWVzLnJlbW92ZUZpcnN0KHNjaGVtZSk7Ci0gICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCBy
ZW1vdmVkKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcjo6
c3RhcnRMb2FkaW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAoIW1fY2xpZW50LnN0YXJ0TG9hZGlu
Zyh0aGlzLCBjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KSkKLSAgICAgICAgZGlkRmFpbFdpdGhF
cnJvcihjdXN0b21Qcm90b2NvbElELCBXZWJDb3JlOjpjYW5ub3RTaG93VVJMRXJyb3IocmVxdWVz
dCkpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpzdG9w
TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2NvbElEKQotewotICAgIG1fY2xpZW50LnN0b3BM
b2FkaW5nKHRoaXMsIGN1c3RvbVByb3RvY29sSUQpOwotfQotCi12b2lkIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCi17
Ci0gICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNz
UG9vbCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyOjpEaWRSZWNlaXZlUmVzcG9uc2UoY3VzdG9tUHJvdG9jb2xJRCwg
cmVzcG9uc2UsIDApLCAwKTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlcjo6ZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgQVBJ
OjpEYXRhKiBkYXRhKQotewotICAgIGlmICghcHJvY2Vzc1Bvb2woKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgcHJvY2Vzc1Bvb2woKS0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OkN1c3RvbVByb3RvY29sTWFuYWdlcjo6RGlkTG9hZERhdGEoY3VzdG9tUHJv
dG9jb2xJRCwgZGF0YS0+ZGF0YVJlZmVyZW5jZSgpKSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCi17Ci0g
ICAgaWYgKCFwcm9jZXNzUG9vbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBwcm9jZXNzUG9v
bCgpLT5uZXR3b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpEaWRGYWlsV2l0aEVycm9yKGN1c3RvbVByb3RvY29sSUQsIGVycm9y
KSwgMCk7Ci19Ci0KLXZvaWQgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI6OmRp
ZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCkKLXsKLSAgICBpZiAoIXBy
b2Nlc3NQb29sKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHByb2Nlc3NQb29sKCktPm5ldHdv
cmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpDdXN0b21Qcm90b2NvbE1h
bmFnZXI6OkRpZEZpbmlzaExvYWRpbmcoY3VzdG9tUHJvdG9jb2xJRCksIDApOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA2NDc3NTZlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90
b2NvbFJlcXVlc3RNYW5hZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0g
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXJfaAotI2RlZmluZSBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlcl9oCi0KLSNpbmNsdWRlICJBUElPYmplY3QuaCIKLSNpbmNsdWRlICJXZWJDb250
ZXh0U3VwcGxlbWVudC5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgQVBJIHsKLWNsYXNzIERhdGE7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFJlc291cmNlRXJyb3I7Ci1jbGFzcyBSZXNvdXJjZVJl
cXVlc3Q7Ci1jbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7Ci0KLWNsYXNzIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJl
cXVlc3RNYW5hZ2VyIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI+LCBwdWJsaWMgV2ViQ29udGV4dFN1cHBs
ZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwotCi0gICAgc3RhdGljIFJlZjxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4g
Y3JlYXRlKFdlYlByb2Nlc3NQb29sKik7Ci0gICAgdmlydHVhbCB+V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXIoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBX
S1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZSopOwotCi0gICAgdm9p
ZCByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsK
LSAgICB2b2lkIHVucmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbChjb25zdCBTdHJpbmcm
IHNjaGVtZSk7Ci0KLSAgICB2b2lkIHN0YXJ0TG9hZGluZyh1aW50NjRfdCBjdXN0b21Qcm90b2Nv
bElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIHN0b3BMb2Fk
aW5nKHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQpOwotCi0gICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwotICAgIHZvaWQgZGlkTG9hZERhdGEodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJ
RCwgY29uc3QgQVBJOjpEYXRhKik7Ci0gICAgdm9pZCBkaWRGYWlsV2l0aEVycm9yKHVpbnQ2NF90
IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Ci0KLSAgICBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgcmVnaXN0ZXJlZFNjaGVtZXNGb3JDdXN0b21Qcm90b2NvbHMo
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdGVyZWRTY2hlbWVzOyB9Ci0KLSAgICB1c2luZyBBUEk6
Ok9iamVjdDo6cmVmOwotICAgIHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKLQotcHJpdmF0ZToK
LSAgICBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcihXZWJQcm9jZXNzUG9vbCop
OwotCi0gICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKLSAgICB2b2lkIHByb2Nlc3NQb29sRGVz
dHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1By
b3h5Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwotCi0g
ICAgV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQgbV9jbGllbnQ7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gbV9yZWdpc3RlcmVkU2NoZW1lczsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3Nv
dXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGRlZjYyLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50LmgiCi0KLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5o
IgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotYm9vbCBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1
ZXN0TWFuYWdlckNsaWVudDo6c3RhcnRMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVl
c3RNYW5hZ2VyKiBzb3VwUmVxdWVzdE1hbmFnZXIsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKLXsKLSAgICBpZiAoIW1f
Y2xpZW50LnN0YXJ0TG9hZGluZykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgUmVmPEFQ
STo6VVJMUmVxdWVzdD4gdXJsUmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlcXVl
c3QpOwotICAgIG1fY2xpZW50LnN0YXJ0TG9hZGluZyh0b0FQSShzb3VwUmVxdWVzdE1hbmFnZXIp
LCBjdXN0b21Qcm90b2NvbElELCB0b0FQSSh1cmxSZXF1ZXN0LnB0cigpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBXZWJTb3VwQ3VzdG9t
UHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudDo6c3RvcExvYWRpbmcoV2ViU291cEN1c3RvbVBy
b3RvY29sUmVxdWVzdE1hbmFnZXIqIHNvdXBSZXF1ZXN0TWFuYWdlciwgdWludDY0X3QgY3VzdG9t
UHJvdG9jb2xJRCkKLXsKLSAgICBpZiAobV9jbGllbnQuc3RvcExvYWRpbmcpCi0gICAgICAgIG1f
Y2xpZW50LnN0b3BMb2FkaW5nKHRvQVBJKHNvdXBSZXF1ZXN0TWFuYWdlciksIGN1c3RvbVByb3Rv
Y29sSUQsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9t
UHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9zb3Vw
L1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGRlYmIyMjEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXJDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBXZWJTb3VwQ3Vz
dG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlckNsaWVudF9oCi0jZGVmaW5lIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50X2gKLQotI2luY2x1ZGUgIkFQSUNsaWVudC5oIgot
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuaCIKLQotbmFtZXNwYWNlIEFQSSB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IENs
aWVudFRyYWl0czxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50QmFzZT4g
ewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5h
Z2VyQ2xpZW50VjA+IFZlcnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgUmVzb3VyY2VSZXF1ZXN0OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2Vi
U291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXI7Ci0KLWNsYXNzIFdlYlNvdXBDdXN0b21Q
cm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLU291cEN1
c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRCYXNlPiB7Ci1wdWJsaWM6Ci0gICAgYm9v
bCBzdGFydExvYWRpbmcoV2ViU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXIqLCB1aW50
NjRfdCBjdXN0b21Qcm90b2NvbElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
LSAgICB2b2lkIHN0b3BMb2FkaW5nKFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
KiwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyQ2xpZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYjk5MWI3YS4uODhjY2NhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTIxOSw2ICsyMTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpCiB7CiAgICAgaWYgKG1fZG93bmxvYWRQcm94eU1hcCkKICAgICAg
ICAgbV9kb3dubG9hZFByb3h5TWFwLT5wcm9jZXNzRGlkQ2xvc2UoKTsKKyAgICBtX2N1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5LnByb2Nlc3NEaWRDbG9zZSgpOwogCiAgICAgbV90b2tlbkZvckhv
bGRpbmdMb2NrZWRGaWxlcyA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGIwZmI3ZGMuLmY4MTUxMjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElBdXRvbWF0aW9uQ2xpZW50LmgiCisj
aW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCkBAIC05MCwxMCArOTEsNiBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2VuZGlmCiAK
LSNpZiBVU0UoU09VUCkKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFu
YWdlci5oIgotI2VuZGlmCi0KICNpZiBPUyhMSU5VWCkKICNpbmNsdWRlICJNZW1vcnlQcmVzc3Vy
ZU1vbml0b3IuaCIKICNlbmRpZgpAQCAtMTU3LDYgKzE1NCw5IEBAIFdlYlByb2Nlc3NQb29sOjpX
ZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikKICAgICAsIG1fYXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6QXV0b21h
dGlvbkNsaWVudD4oKSkKICAgICAsIG1fZG93bmxvYWRDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkRvd25sb2FkQ2xpZW50PigpKQogICAgICwgbV9oaXN0b3J5Q2xpZW50KHN0ZDo6bWFrZV91
bmlxdWU8QVBJOjpMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudD4oKSkKKyNpZiBVU0UoU09VUCkK
KyAgICAsIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJ
OjpDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KCkpCisjZW5kaWYKICAgICAsIG1fdmlzaXRl
ZExpbmtTdG9yZShWaXNpdGVkTGlua1N0b3JlOjpjcmVhdGUoKSkKICAgICAsIG1fdmlzaXRlZExp
bmtzUG9wdWxhdGVkKGZhbHNlKQogICAgICwgbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlcih0aGlz
KQpAQCAtMTY1LDkgKzE2NSw2IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fbWVtb3J5
U2FtcGxlckVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX21lbW9yeVNhbXBsZXJJbnRlcnZhbCgxNDAw
LjApCiAgICAgLCBtX3dlYnNpdGVEYXRhU3RvcmUobV9jb25maWd1cmF0aW9uLT5zaG91bGRIYXZl
TGVnYWN5RGF0YVN0b3JlKCkgPyBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShsZWdhY3lX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKS5wdHIoKSA6IG51
bGxwdHIpCi0jaWYgVVNFKFNPVVApCi0gICAgLCBtX2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9s
aWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbikKLSNl
bmRpZgogICAgICwgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oZmFsc2UpCiAgICAg
LCBtX3Byb2Nlc3NUZXJtaW5hdGlvbkVuYWJsZWQodHJ1ZSkKICAgICAsIG1fY2FuSGFuZGxlSFRU
UFNTZXJ2ZXJUcnVzdEV2YWx1YXRpb24odHJ1ZSkKQEAgLTE5Nyw5ICsxOTQsNiBAQCBXZWJQcm9j
ZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCiAgICAgYWRkU3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7
CiAgICAgYWRkU3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKTsKICAgICBh
ZGRTdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKTsKLSNpZiBVU0UoU09V
UCkKLSAgICBhZGRTdXBwbGVtZW50PFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
PigpOwotI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiAgICAgYWRkU3VwcGxlbWVu
dDxXZWJNZWRpYVNlc3Npb25Gb2N1c01hbmFnZXI+KCk7CiAjZW5kaWYKQEAgLTI5OSw2ICsyOTMs
MTYgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpBdXRvbWF0aW9uQ2xpZW50PgogICAgICAgICBtX2F1dG9tYXRpb25DbGllbnQg
PSBXVEZNb3ZlKGF1dG9tYXRpb25DbGllbnQpOwogfQogCisjaWYgVVNFKFNPVVApCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoc3RkOjp1bmlxdWVf
cHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50PiBjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQpCit7CisgICAgaWYgKCFjdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQpCisgICAg
ICAgIG1fY3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OkN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudD4oKTsKKyAgICBlbHNlCisgICAgICAgIG1fY3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50ID0gV1RGTW92ZShjdXN0b21Qcm90b2NvbE1hbmFnZXJD
bGllbnQpOworfQorI2VuZGlmCisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldE1heGltdW1OdW1i
ZXJPZlByb2Nlc3Nlcyh1bnNpZ25lZCBtYXhpbXVtTnVtYmVyT2ZQcm9jZXNzZXMpCiB7CiAgICAg
Ly8gR3VhcmQgYWdhaW5zdCBBUEkgbWlzdXNlLgpAQCAtMTM2NCwxMSArMTM2OCwxNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5zRmlsdGVyaW5nT3V0RW50
cmllc0FkZGVkQWZ0ZXJUaW1lKAogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWdpc3RlclNjaGVt
ZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmluZyYgc2NoZW1lKQogeworI2lmIFVTRShTT1VQ
KQorICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRGb3JDdXN0b21Qcm90b2NvbHMuYWRkKHNjaGVt
ZSk7CisjZW5kaWYKICAgICBzZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9t
UHJvdG9jb2xNYW5hZ2VyOjpSZWdpc3RlclNjaGVtZShzY2hlbWUpKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sKGNvbnN0IFN0cmlu
ZyYgc2NoZW1lKQogeworI2lmIFVTRShTT1VQKQorICAgIG1fdXJsU2NoZW1lc1JlZ2lzdGVyZWRG
b3JDdXN0b21Qcm90b2NvbHMucmVtb3ZlKHNjaGVtZSk7CisjZW5kaWYKICAgICBzZW5kVG9OZXR3
b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOjpVbnJlZ2lzdGVy
U2NoZW1lKHNjaGVtZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCmluZGV4IGZjZGU5YTAuLmQ1ZTRiNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCkBAIC03MCw2ICs3MCw3IEBAIE9CSkNfQ0xBU1MgTlNTdHJpbmc7
CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXV0b21hdGlvbkNsaWVudDsKK2NsYXNzIEN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudDsKIGNsYXNzIERvd25sb2FkQ2xpZW50OwogY2xhc3MgTGVn
YWN5Q29udGV4dEhpc3RvcnlDbGllbnQ7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKQEAgLTEz
NSw2ICsxMzYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIaXN0b3J5Q2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Pik7CiAgICAgdm9pZCBzZXRE
b3dubG9hZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4pOwogICAg
IHZvaWQgc2V0QXV0b21hdGlvbkNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpBdXRvbWF0aW9u
Q2xpZW50Pik7CisjaWYgVVNFKFNPVVApCisgICAgdm9pZCBzZXRDdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
Pik7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0TWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKHVuc2ln
bmVkKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIG5vIHByb2Nlc3NlcyBy
dW5uaW5nLgogICAgIHVuc2lnbmVkIG1heGltdW1OdW1iZXJPZlByb2Nlc3NlcygpIGNvbnN0IHsg
cmV0dXJuICFtX2NvbmZpZ3VyYXRpb24tPm1heGltdW1Qcm9jZXNzQ291bnQoKSA/IFVJTlRfTUFY
IDogbV9jb25maWd1cmF0aW9uLT5tYXhpbXVtUHJvY2Vzc0NvdW50KCk7IH0KQEAgLTIyNSw2ICsy
MjksMTAgQEAgcHVibGljOgogICAgIEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQmIGhp
c3RvcnlDbGllbnQoKSB7IHJldHVybiAqbV9oaXN0b3J5Q2xpZW50OyB9CiAgICAgV2ViQ29udGV4
dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAorI2lmIFVTRShTT1VQKQor
ICAgIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50JiBjdXN0b21Qcm90b2NvbE1hbmFn
ZXJDbGllbnQoKSBjb25zdCB7IHJldHVybiAqbV9jdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7
IH0KKyNlbmRpZgorCiAgICAgV2ViSWNvbkRhdGFiYXNlKiBpY29uRGF0YWJhc2UoKSBjb25zdCB7
IHJldHVybiBtX2ljb25EYXRhYmFzZS5nZXQoKTsgfQogCiAgICAgc3RydWN0IFN0YXRpc3RpY3Mg
ewpAQCAtNDU1LDYgKzQ2Myw5IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6
QXV0b21hdGlvbkNsaWVudD4gbV9hdXRvbWF0aW9uQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxBUEk6OkRvd25sb2FkQ2xpZW50PiBtX2Rvd25sb2FkQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50PiBtX2hpc3RvcnlDbGllbnQ7Cisj
aWYgVVNFKFNPVVApCisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50PiBtX2N1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudDsKKyNlbmRpZgogCiAgICAg
UmVmUHRyPFdlYkF1dG9tYXRpb25TZXNzaW9uPiBtX2F1dG9tYXRpb25TZXNzaW9uOwogCkBAIC00
OTksNyArNTEwLDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb250ZXh0U3VwcGxlbWVudE1hcCBtX3N1
cHBsZW1lbnRzOwogCiAjaWYgVVNFKFNPVVApCi0gICAgSFRUUENvb2tpZUFjY2VwdFBvbGljeSBt
X2luaXRpYWxIVFRQQ29va2llQWNjZXB0UG9saWN5OworICAgIEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kgbV9pbml0aWFsSFRUUENvb2tpZUFjY2VwdFBvbGljeSB7IEhUVFBDb29raWVBY2NlcHRQb2xp
Y3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB9OwogI2VuZGlmCiAKICNpZiBQTEFURk9STShN
QUMpCkBAIC01MzAsNiArNTQxLDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShTT1VQKQogICAgIGJv
b2wgbV9pZ25vcmVUTFNFcnJvcnMgeyB0cnVlIH07CisgICAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJ
Q2FzZUluc2Vuc2l0aXZlSGFzaD4gbV91cmxTY2hlbWVzUmVnaXN0ZXJlZEZvckN1c3RvbVByb3Rv
Y29sczsKICNlbmRpZgogCiAgICAgYm9vbCBtX21lbW9yeUNhY2hlRGlzYWJsZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRF
ZmwuY3BwCmluZGV4IGI5YTY1N2YuLmNkMWQzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCkBAIC0yNiw1
MiArMjYsNjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbC5oIgogCisjaW5jbHVkZSAiQVBJQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50
LmgiCisjaW5jbHVkZSAiQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJl
d2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3VybF9zY2hlbWVfcmVxdWVzdF9w
cml2YXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgaW5saW5lIFJlcXVlc3RN
YW5hZ2VyQ2xpZW50RWZsKiB0b1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlcXVlc3RNYW5hZ2VyQ2xpZW50
RWZsKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotfQotCi1SZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwoV0tDb250ZXh0UmVmIGNvbnRleHQp
Ci17Ci0gICAgbV9yZXF1ZXN0TWFuYWdlciA9IHRvQVBJKHRvSW1wbChjb250ZXh0KS0+c3VwcGxl
bWVudDxXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlcj4oKSk7Ci0gICAgQVNTRVJU
KG1fcmVxdWVzdE1hbmFnZXIpOworY2xhc3MgQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQoUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwqIGNsaWVudCkKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgeworICAg
IH0KIAotICAgIFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCB3a1Jl
cXVlc3RNYW5hZ2VyQ2xpZW50OwotICAgIG1lbXNldCgmd2tSZXF1ZXN0TWFuYWdlckNsaWVudCwg
MCwgc2l6ZW9mKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFnZXJDbGllbnRWMCkpOwor
cHJpdmF0ZToKKyAgICBib29sIHN0YXJ0TG9hZGluZyhDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94
eSYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpIG92ZXJyaWRlCisgICAgeworICAgICAgICBh
dXRvIHVybFJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNvdXJjZVJlcXVlc3Qp
OworICAgICAgICBSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4gcmVxdWVzdCA9IEV3a1VybFNj
aGVtZVJlcXVlc3Q6OmNyZWF0ZShtYW5hZ2VyLCB1cmxSZXF1ZXN0LnB0cigpLCBjdXN0b21Qcm90
b2NvbElEKTsKKyAgICAgICAgU3RyaW5nIHNjaGVtZShTdHJpbmc6OmZyb21VVEY4KHJlcXVlc3Qu
Z2V0KCktPnNjaGVtZSgpKSk7CisgICAgICAgIFJlZlB0cjxXZWJLaXRVUklTY2hlbWVIYW5kbGVy
PiBoYW5kbGVyID0gKG1fY2xpZW50LT5tX3VyaVNjaGVtZUhhbmRsZXJzKS5nZXQoc2NoZW1lKTsK
KyAgICAgICAgQVNTRVJUKGhhbmRsZXIuZ2V0KCkpOworICAgICAgICBpZiAoIWhhbmRsZXItPmhh
c0NhbGxiYWNrKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHdrUmVxdWVzdE1h
bmFnZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICB3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50
LmJhc2UuY2xpZW50SW5mbyA9IHRoaXM7Ci0gICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5zdGFy
dExvYWRpbmcgPSBzdGFydExvYWRpbmc7Ci0gICAgd2tSZXF1ZXN0TWFuYWdlckNsaWVudC5zdG9w
TG9hZGluZyA9IHN0b3BMb2FkaW5nOworICAgICAgICAobV9jbGllbnQtPm1fdXJpU2NoZW1lUmVx
dWVzdHMpLnNldChjdXN0b21Qcm90b2NvbElELCByZXF1ZXN0KTsKKyAgICAgICAgaGFuZGxlci0+
cGVyZm9ybUNhbGxiYWNrKHJlcXVlc3QuZ2V0KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CiAKLSAgICBXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyU2V0Q2xpZW50KG1f
cmVxdWVzdE1hbmFnZXIuZ2V0KCksICZ3a1JlcXVlc3RNYW5hZ2VyQ2xpZW50LmJhc2UpOwotfQor
ICAgIHZvaWQgc3RvcExvYWRpbmcoQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHkmLCB1aW50NjRf
dCBjdXN0b21Qcm90b2NvbElEKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgKG1fY2xpZW50LT5t
X3VyaVNjaGVtZVJlcXVlc3RzKS5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgfQogCi12
b2lkIFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpzdGFydExvYWRpbmcoV0tTb3VwQ3VzdG9tUHJv
dG9jb2xSZXF1ZXN0TWFuYWdlclJlZiBtYW5hZ2VyLCB1aW50NjRfdCBjdXN0b21Qcm90b2NvbElE
LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsK
LSAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogY2xpZW50ID0gdG9SZXF1ZXN0TWFuYWdlckNs
aWVudEVmbChjbGllbnRJbmZvKTsKLSAgICBSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4gcmVx
dWVzdCA9IEV3a1VybFNjaGVtZVJlcXVlc3Q6OmNyZWF0ZShtYW5hZ2VyLCB0b0ltcGwocmVxdWVz
dFJlZiksIGN1c3RvbVByb3RvY29sSUQpOwotICAgIFN0cmluZyBzY2hlbWUoU3RyaW5nOjpmcm9t
VVRGOChyZXF1ZXN0LmdldCgpLT5zY2hlbWUoKSkpOwotICAgIFJlZlB0cjxXZWJLaXRVUklTY2hl
bWVIYW5kbGVyPiBoYW5kbGVyID0gKGNsaWVudC0+bV91cmlTY2hlbWVIYW5kbGVycykuZ2V0KHNj
aGVtZSk7Ci0gICAgQVNTRVJUKGhhbmRsZXIuZ2V0KCkpOwotICAgIGlmICghaGFuZGxlci0+aGFz
Q2FsbGJhY2soKSkKLSAgICAgICAgcmV0dXJuOworICAgIHZvaWQgaW52YWxpZGF0ZShDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eSYgbWFuYWdlcikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFZl
Y3RvcjxSZWZQdHI8RXdrVXJsU2NoZW1lUmVxdWVzdD4+IHJlcXVlc3RzOworICAgICAgICBjb3B5
VmFsdWVzVG9WZWN0b3IobV9jbGllbnQtPm1fdXJpU2NoZW1lUmVxdWVzdHMsIHJlcXVlc3RzKTsK
KyAgICAgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVzdHMpIHsKKyAgICAgICAgICAgIGlm
IChyZXF1ZXN0LT5tYW5hZ2VyKCkgPT0gJm1hbmFnZXIpIHsKKyAgICAgICAgICAgICAgICByZXF1
ZXN0LT5pbnZhbGlkYXRlKCk7CisgICAgICAgICAgICAgICAgc3RvcExvYWRpbmcobWFuYWdlciwg
cmVxdWVzdC0+aWQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiAKLSAgICAo
Y2xpZW50LT5tX3VyaVNjaGVtZVJlcXVlc3RzKS5zZXQoY3VzdG9tUHJvdG9jb2xJRCwgcmVxdWVz
dCk7Ci0gICAgaGFuZGxlci0+cGVyZm9ybUNhbGxiYWNrKHJlcXVlc3QuZ2V0KCkpOwotfQorICAg
IFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKiBtX2NsaWVudDsKK307CiAKLXZvaWQgUmVxdWVzdE1h
bmFnZXJDbGllbnRFZmw6OnN0b3BMb2FkaW5nKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1h
bmFnZXJSZWYgbWFuYWdlciwgdWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpSZXF1ZXN0TWFuYWdlckNsaWVu
dEVmbChXS0NvbnRleHRSZWYgY29udGV4dCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFuYWdlcik7
Ci0KLSAgICBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogY2xpZW50ID0gdG9SZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbChjbGllbnRJbmZvKTsKLSAgICAoY2xpZW50LT5tX3VyaVNjaGVtZVJlcXVlc3Rz
KS5yZW1vdmUoY3VzdG9tUHJvdG9jb2xJRCk7CisgICAgbV9wcm9jZXNzUG9vbCA9IHRvSW1wbChj
b250ZXh0KTsKKyAgICBtX3Byb2Nlc3NQb29sLT5zZXRDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGll
bnQoc3RkOjptYWtlX3VuaXF1ZTxDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ+KHRoaXMpKTsK
IH0KIAogdm9pZCBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbDo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5k
bGVyKGNvbnN0IFN0cmluZyYgc2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxi
YWNrLCB2b2lkKiB1c2VyRGF0YSkKQEAgLTc5LDggKzg3LDkgQEAgdm9pZCBSZXF1ZXN0TWFuYWdl
ckNsaWVudEVmbDo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGNvbnN0IFN0cmluZyYgc2NoZW1l
LCBFd2sKICAgICBBU1NFUlQoY2FsbGJhY2spOwogCiAgICAgUmVmUHRyPFdlYktpdFVSSVNjaGVt
ZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdFJlZihuZXcgV2ViS2l0VVJJU2NoZW1lSGFuZGxlcihj
YWxsYmFjaywgdXNlckRhdGEpKTsKLSAgICBtX3VyaVNjaGVtZUhhbmRsZXJzLnNldChzY2hlbWUs
IGhhbmRsZXIpOwotICAgIHRvSW1wbChtX3JlcXVlc3RNYW5hZ2VyLmdldCgpKS0+cmVnaXN0ZXJT
Y2hlbWVGb3JDdXN0b21Qcm90b2NvbChzY2hlbWUpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91
cmlTY2hlbWVIYW5kbGVycy5zZXQoc2NoZW1lLCBoYW5kbGVyKTsKKyAgICBpZiAoYWRkUmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgIG1fcHJvY2Vzc1Bvb2wtPnJlZ2lzdGVyU2NoZW1lRm9yQ3Vz
dG9tUHJvdG9jb2woc2NoZW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1JlcXVlc3RNYW5hZ2VyQ2xpZW50RWZs
LmgKaW5kZXggODdkMzYwZS4uZTVkMzQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuaApAQCAtMjcsNyArMjcsNiBA
QAogI2RlZmluZSBSZXF1ZXN0TWFuYWdlckNsaWVudEVmbF9oCiAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgotI2luY2x1ZGUgIldlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a191cmxf
c2NoZW1lX3JlcXVlc3RfcHJpdmF0ZS5oIgogCkBAIC0zOCw2ICszNyw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CisKIGNsYXNz
IFdlYktpdFVSSVNjaGVtZUhhbmRsZXI6IHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdFVSSVNjaGVt
ZUhhbmRsZXI+IHsKIHB1YmxpYzoKICAgICBXZWJLaXRVUklTY2hlbWVIYW5kbGVyKCkKQEAgLTc5
LDEwICs4MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihj
b25zdCBTdHJpbmcmIHNjaGVtZSwgRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYiBjYWxsYmFjaywg
dm9pZCogdXNlckRhdGEpOwogCiBwcml2YXRlOgotICAgIHN0YXRpYyB2b2lkIHN0YXJ0TG9hZGlu
ZyhXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmLCB1aW50NjRfdCBjdXN0b21Q
cm90b2NvbElELCBXS1VSTFJlcXVlc3RSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAg
IHN0YXRpYyB2b2lkIHN0b3BMb2FkaW5nKFdLU291cEN1c3RvbVByb3RvY29sUmVxdWVzdE1hbmFn
ZXJSZWYsIHVpbnQ2NF90IGN1c3RvbVByb3RvY29sSUQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OworICAgIGZyaWVuZCBjbGFzcyBDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQ7CiAKLSAgICBX
S1JldGFpblB0cjxXS1NvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyUmVmPiBtX3JlcXVl
c3RNYW5hZ2VyOworICAgIFdlYlByb2Nlc3NQb29sKiBtX3Byb2Nlc3NQb29sOwogICAgIFVSSVNj
aGVtZUhhbmRsZXJNYXAgbV91cmlTY2hlbWVIYW5kbGVyczsKICAgICBVUklTY2hlbWVSZXF1ZXN0
TWFwIG1fdXJpU2NoZW1lUmVxdWVzdHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNwcAppbmRleCAzZjI2NDBlLi5mZmEyZDUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZs
LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJXZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0
TWFuYWdlci5oIgogI2luY2x1ZGUgPEVmcmVldC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNw
cAppbmRleCA4MTk3ZmQzLi40MTBhOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1
ZGUgIldlYkluc3BlY3RvclNlcnZlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKLSNpbmNsdWRlICJX
ZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNzUG9vbFNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3NvdXAvV2ViUHJvY2Vzc1Bvb2xTb3VwLmNwcAppbmRleCBkNWRiMjQ0Li45M2E3
YzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJQcm9jZXNz
UG9vbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlByb2Nl
c3NQb29sU291cC5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKLSNpbmNsdWRlICJXZWJTb3Vw
Q3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTGFuZ3Vh
Z2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MCw3ICszOSw4IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhCiAgICAgcGFyYW1ldGVycy5jb29raWVBY2NlcHRQb2xpY3kgPSBtX2luaXRp
YWxIVFRQQ29va2llQWNjZXB0UG9saWN5OwogICAgIHBhcmFtZXRlcnMuaWdub3JlVExTRXJyb3Jz
ID0gbV9pZ25vcmVUTFNFcnJvcnM7CiAgICAgcGFyYW1ldGVycy5sYW5ndWFnZXMgPSBXZWJDb3Jl
Ojp1c2VyUHJlZmVycmVkTGFuZ3VhZ2VzKCk7Ci0gICAgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVn
aXN0ZXJlZEZvckN1c3RvbVByb3RvY29scyA9IHN1cHBsZW1lbnQ8V2ViU291cEN1c3RvbVByb3Rv
Y29sUmVxdWVzdE1hbmFnZXI+KCktPnJlZ2lzdGVyZWRTY2hlbWVzRm9yQ3VzdG9tUHJvdG9jb2xz
KCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBzY2hlbWUgOiBtX3VybFNjaGVtZXNSZWdpc3RlcmVk
Rm9yQ3VzdG9tUHJvdG9jb2xzKQorICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3Rl
cmVkRm9yQ3VzdG9tUHJvdG9jb2xzLmFwcGVuZChzY2hlbWUpOwogICAgIHBhcmFtZXRlcnMuc2hv
dWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nID0gZmFsc2U7CiB9CiAK
</data>
<flag name="review"
          id="317775"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>