<?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>178794</bug_id>
          
          <creation_ts>2017-10-25 08:03:29 -0700</creation_ts>
          <short_desc>Add initial support for serviceWorkerClient.postMessage()</short_desc>
          <delta_ts>2017-11-15 12:46:49 -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>WebCore Misc.</component>
          <version>WebKit Nightly 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=174541</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>178534</dependson>
    
    <dependson>178812</dependson>
    
    <dependson>178816</dependson>
    
    <dependson>178839</dependson>
    
    <dependson>178876</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1364198</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-25 08:03:29 -0700</bug_when>
    <thetext>Add initial support for serviceWorkerClient.postMessage():
- https://w3c.github.io/ServiceWorker/#client-postmessage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364226</commentid>
    <comment_count>1</comment_count>
      <attachid>324830</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-25 09:12:44 -0700</bug_when>
    <thetext>Created attachment 324830
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364232</commentid>
    <comment_count>2</comment_count>
      <attachid>324833</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-25 09:39:29 -0700</bug_when>
    <thetext>Created attachment 324833
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364233</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-25 09:42:24 -0700</bug_when>
    <thetext>Attachment 324833 did not pass style-queue:


ERROR: Source/WebCore/dom/Document.cpp:444:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 35 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364447</commentid>
    <comment_count>4</comment_count>
      <attachid>324889</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-25 13:56:27 -0700</bug_when>
    <thetext>Created attachment 324889
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364499</commentid>
    <comment_count>5</comment_count>
      <attachid>324899</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-25 14:51:59 -0700</bug_when>
    <thetext>Created attachment 324899
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364502</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-25 14:54:50 -0700</bug_when>
    <thetext>Attachment 324899 did not pass style-queue:


ERROR: Source/WebCore/workers/service/ServiceWorkerClient.h:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/dom/Document.cpp:444:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 2 in 35 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364569</commentid>
    <comment_count>7</comment_count>
      <attachid>324917</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-25 16:23:01 -0700</bug_when>
    <thetext>Created attachment 324917
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364570</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-25 16:24:13 -0700</bug_when>
    <thetext>Attachment 324917 did not pass style-queue:


ERROR: Source/WebCore/dom/Document.cpp:444:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364595</commentid>
    <comment_count>9</comment_count>
      <attachid>324926</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-25 17:03:19 -0700</bug_when>
    <thetext>Created attachment 324926
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364596</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-25 17:05:18 -0700</bug_when>
    <thetext>Attachment 324926 did not pass style-queue:


ERROR: Source/WebCore/dom/Document.cpp:444:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364604</commentid>
    <comment_count>11</comment_count>
      <attachid>324929</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-25 17:40:30 -0700</bug_when>
    <thetext>Created attachment 324929
WIP Patch

Ok. Will work on cleaning this up but communication works in both directions now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364605</commentid>
    <comment_count>12</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-25 17:41:57 -0700</bug_when>
    <thetext>Attachment 324929 did not pass style-queue:


ERROR: Source/WebCore/dom/Document.cpp:444:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364649</commentid>
    <comment_count>13</comment_count>
      <attachid>324947</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-25 20:14:02 -0700</bug_when>
    <thetext>Created attachment 324947
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364650</commentid>
    <comment_count>14</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-25 20:16:51 -0700</bug_when>
    <thetext>Attachment 324947 did not pass style-queue:


ERROR: Source/WebCore/dom/Document.cpp:444:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364861</commentid>
    <comment_count>15</comment_count>
      <attachid>325017</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-26 09:32:24 -0700</bug_when>
    <thetext>Created attachment 325017
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364864</commentid>
    <comment_count>16</comment_count>
      <attachid>325019</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-26 09:33:47 -0700</bug_when>
    <thetext>Created attachment 325019
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1364866</commentid>
    <comment_count>17</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-26 09:36:12 -0700</bug_when>
    <thetext>Attachment 325019 did not pass style-queue:


ERROR: Source/WebCore/dom/Document.cpp:444:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365083</commentid>
    <comment_count>18</comment_count>
      <attachid>325077</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-26 16:25:38 -0700</bug_when>
    <thetext>Created attachment 325077
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365090</commentid>
    <comment_count>19</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-26 16:28:01 -0700</bug_when>
    <thetext>Attachment 325077 did not pass style-queue:


ERROR: Source/WebCore/dom/Document.cpp:444:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365193</commentid>
    <comment_count>20</comment_count>
      <attachid>325097</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-26 19:03:49 -0700</bug_when>
    <thetext>Created attachment 325097
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365197</commentid>
    <comment_count>21</comment_count>
      <attachid>325099</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-26 19:18:06 -0700</bug_when>
    <thetext>Created attachment 325099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365268</commentid>
    <comment_count>22</comment_count>
      <attachid>325099</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-26 22:36:20 -0700</bug_when>
    <thetext>Comment on attachment 325099
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        via postMessage().

Cool!

&gt; Source/WebCore/dom/Document.cpp:445
&gt; +    static NeverDestroyed&lt;HashMap&lt;Identifier, Document*&gt;&gt; documents;

We should be able to do HashMap&lt;Identifier, reference_wrapper&gt; at some point.

&gt; Source/WebCore/dom/Document.h:350
&gt; +    using Identifier = uint64_t;

Does Identifier really help?
If it helps, should we try to ensure that no implicit casting happens between uint64_t and Identifier?

&gt; Source/WebCore/workers/service/ServiceWorkerClient.cpp:71
&gt; +    Vector&lt;RefPtr&lt;MessagePort&gt;&gt; ports;

Might want Vector&lt;Ref&gt; at some point.

&gt; Source/WebCore/workers/service/ServiceWorkerClient.cpp:87
&gt; +    callOnMainThread([message = message.releaseReturnValue(), destinationIdentifier = m_identifier, sourceIdentifier, sourceOrigin = context.origin().isolatedCopy()] () mutable {

Probably fine or even better using callOnMainThread here.
I think the expected abstraction is postMessageToWorkerObject though.
Maybe we should do some refactoring.

&gt; Source/WebCore/workers/service/ServiceWorkerClientIdentifier.h:34
&gt; +    uint64_t scriptExecutionContextIdentifier;

We really have a process id and a per-process environment identifier.
It might be good to have something more generic, so that we can reuse this environment identifier in other places like network loads too.
This can probably be improved later on when we have more concrete plans.

&gt; Source/WebCore/workers/service/context/SWContextManager.h:47
&gt; +        virtual void postMessageToServiceWorkerClient(const ServiceWorkerClientIdentifier&amp; destinationIdentifier, Ref&lt;SerializedScriptValue&gt;&amp;&amp; message, uint64_t sourceServiceWorkerIdentifier, const String&amp; sourceOrigin) = 0;

No need for destinationIdentifier name.

&gt; Source/WebCore/workers/service/server/SWClientConnection.cpp:123
&gt; +    if (!container)

Can this be a real regular case?

&gt; Source/WebCore/workers/service/server/SWClientConnection.cpp:131
&gt; +        source = MessageEventSource { RefPtr&lt;ServiceWorker&gt; { ServiceWorker::create(*destinationDocument, sourceServiceWorkerIdentifier) } };

Every time we receive a message, we will create a new ServiceWorker.
We should reuse them according their ids and if we create one, it should be based on a full ServiceWorkerRegistration.
Can we fix that now?

&gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:1906
&gt; +void ArgumentCoder&lt;ServiceWorkerClientIdentifier&gt;::encode(Encoder&amp; encoder, const ServiceWorkerClientIdentifier&amp; identifier)

The current style is to move this code closer to the definition, i.e. ServiceWorkerClientIdentifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365375</commentid>
    <comment_count>23</comment_count>
      <attachid>325166</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-27 09:19:54 -0700</bug_when>
    <thetext>Created attachment 325166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365380</commentid>
    <comment_count>24</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-27 09:26:37 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #22)
&gt; Comment on attachment 325099 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=325099&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        via postMessage().
&gt; 
&gt; Cool!
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:445
&gt; &gt; +    static NeverDestroyed&lt;HashMap&lt;Identifier, Document*&gt;&gt; documents;
&gt; 
&gt; We should be able to do HashMap&lt;Identifier, reference_wrapper&gt; at some point.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:350
&gt; &gt; +    using Identifier = uint64_t;
&gt; 
&gt; Does Identifier really help?
&gt; If it helps, should we try to ensure that no implicit casting happens
&gt; between uint64_t and Identifier?

Ok, will drop Identifier alias.

&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClient.cpp:71
&gt; &gt; +    Vector&lt;RefPtr&lt;MessagePort&gt;&gt; ports;
&gt; 
&gt; Might want Vector&lt;Ref&gt; at some point.
&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClient.cpp:87
&gt; &gt; +    callOnMainThread([message = message.releaseReturnValue(), destinationIdentifier = m_identifier, sourceIdentifier, sourceOrigin = context.origin().isolatedCopy()] () mutable {
&gt; 
&gt; Probably fine or even better using callOnMainThread here.
&gt; I think the expected abstraction is postMessageToWorkerObject though.
&gt; Maybe we should do some refactoring.
&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClientIdentifier.h:34
&gt; &gt; +    uint64_t scriptExecutionContextIdentifier;
&gt; 
&gt; We really have a process id and a per-process environment identifier.
&gt; It might be good to have something more generic, so that we can reuse this
&gt; environment identifier in other places like network loads too.
&gt; This can probably be improved later on when we have more concrete plans.
&gt; 
&gt; &gt; Source/WebCore/workers/service/context/SWContextManager.h:47
&gt; &gt; +        virtual void postMessageToServiceWorkerClient(const ServiceWorkerClientIdentifier&amp; destinationIdentifier, Ref&lt;SerializedScriptValue&gt;&amp;&amp; message, uint64_t sourceServiceWorkerIdentifier, const String&amp; sourceOrigin) = 0;
&gt; 
&gt; No need for destinationIdentifier name.
&gt; 
&gt; &gt; Source/WebCore/workers/service/server/SWClientConnection.cpp:123
&gt; &gt; +    if (!container)
&gt; 
&gt; Can this be a real regular case?
&gt; 
&gt; &gt; Source/WebCore/workers/service/server/SWClientConnection.cpp:131
&gt; &gt; +        source = MessageEventSource { RefPtr&lt;ServiceWorker&gt; { ServiceWorker::create(*destinationDocument, sourceServiceWorkerIdentifier) } };
&gt; 
&gt; Every time we receive a message, we will create a new ServiceWorker.
&gt; We should reuse them according their ids and if we create one, it should be
&gt; based on a full ServiceWorkerRegistration.
&gt; Can we fix that now?

This is not an issue yet because we currently always reuse the controller. At some point, it&apos;d be good to keep a list of ServiceWorkers somewhere I guess.

&gt; 
&gt; &gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:1906
&gt; &gt; +void ArgumentCoder&lt;ServiceWorkerClientIdentifier&gt;::encode(Encoder&amp; encoder, const ServiceWorkerClientIdentifier&amp; identifier)
&gt; 
&gt; The current style is to move this code closer to the definition, i.e.
&gt; ServiceWorkerClientIdentifier.

Can you please clarify this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365381</commentid>
    <comment_count>25</comment_count>
      <attachid>325166</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-27 09:35:50 -0700</bug_when>
    <thetext>Comment on attachment 325166
Patch

Clearing flags on attachment: 325166

Committed r224113: &lt;https://trac.webkit.org/changeset/224113&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365382</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-27 09:35:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365402</commentid>
    <comment_count>27</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-27 10:08:36 -0700</bug_when>
    <thetext>
&gt; &gt; Every time we receive a message, we will create a new ServiceWorker.
&gt; &gt; We should reuse them according their ids and if we create one, it should be
&gt; &gt; based on a full ServiceWorkerRegistration.
&gt; &gt; Can we fix that now?
&gt; 
&gt; This is not an issue yet because we currently always reuse the controller.
&gt; At some point, it&apos;d be good to keep a list of ServiceWorkers somewhere I
&gt; guess.

Maybe we should add A FIXME and not implement this code path then.

&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:1906
&gt; &gt; &gt; +void ArgumentCoder&lt;ServiceWorkerClientIdentifier&gt;::encode(Encoder&amp; encoder, const ServiceWorkerClientIdentifier&amp; identifier)
&gt; &gt; 
&gt; &gt; The current style is to move this code closer to the definition, i.e.
&gt; &gt; ServiceWorkerClientIdentifier.
&gt; 
&gt; Can you please clarify this?

Add the encoder/decoder in ServiceWorkerClientIdentifier.h.
See for instance FetchOptions.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365408</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-27 10:13:56 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #27)
&gt; &gt; &gt; Every time we receive a message, we will create a new ServiceWorker.
&gt; &gt; &gt; We should reuse them according their ids and if we create one, it should be
&gt; &gt; &gt; based on a full ServiceWorkerRegistration.
&gt; &gt; &gt; Can we fix that now?
&gt; &gt; 
&gt; &gt; This is not an issue yet because we currently always reuse the controller.
&gt; &gt; At some point, it&apos;d be good to keep a list of ServiceWorkers somewhere I
&gt; &gt; guess.
&gt; 
&gt; Maybe we should add A FIXME and not implement this code path then.

I do not agree. It is best to support the feature, even if not as efficient as it could be. Also note that a ServiceWorker is basically just a wrapper around an id and should be cheap to construct.

&gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/Shared/WebCoreArgumentCoders.cpp:1906
&gt; &gt; &gt; &gt; +void ArgumentCoder&lt;ServiceWorkerClientIdentifier&gt;::encode(Encoder&amp; encoder, const ServiceWorkerClientIdentifier&amp; identifier)
&gt; &gt; &gt; 
&gt; &gt; &gt; The current style is to move this code closer to the definition, i.e.
&gt; &gt; &gt; ServiceWorkerClientIdentifier.
&gt; &gt; 
&gt; &gt; Can you please clarify this?
&gt; 
&gt; Add the encoder/decoder in ServiceWorkerClientIdentifier.h.
&gt; See for instance FetchOptions.h

Oh OK, I can do this in a follow-up. I did not know this policy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365413</commentid>
    <comment_count>29</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-10-27 10:23:38 -0700</bug_when>
    <thetext>&gt; &gt; Maybe we should add A FIXME and not implement this code path then.
&gt; 
&gt; I do not agree. It is best to support the feature, even if not as efficient
&gt; as it could be. Also note that a ServiceWorker is basically just a wrapper
&gt; around an id and should be cheap to construct.

IINM, for every message in that situation, we will have a different JS source object which will be observable from JS. If so, we are not very compliant, right?
Why not simply returning a null source?

If we are testing this code path, it might be good to add test showing the behavior and whether this is expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365415</commentid>
    <comment_count>30</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-27 10:24:53 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #29)
&gt; &gt; &gt; Maybe we should add A FIXME and not implement this code path then.
&gt; &gt; 
&gt; &gt; I do not agree. It is best to support the feature, even if not as efficient
&gt; &gt; as it could be. Also note that a ServiceWorker is basically just a wrapper
&gt; &gt; around an id and should be cheap to construct.
&gt; 
&gt; IINM, for every message in that situation, we will have a different JS
&gt; source object which will be observable from JS. If so, we are not very
&gt; compliant, right?
&gt; Why not simply returning a null source?
&gt; 
&gt; If we are testing this code path, it might be good to add test showing the
&gt; behavior and whether this is expected.

If the source is null, then you cannot message the source back, which is much worse than getting a different JS wrapper every time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365416</commentid>
    <comment_count>31</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-27 10:25:44 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #30)
&gt; (In reply to youenn fablet from comment #29)
&gt; &gt; &gt; &gt; Maybe we should add A FIXME and not implement this code path then.
&gt; &gt; &gt; 
&gt; &gt; &gt; I do not agree. It is best to support the feature, even if not as efficient
&gt; &gt; &gt; as it could be. Also note that a ServiceWorker is basically just a wrapper
&gt; &gt; &gt; around an id and should be cheap to construct.
&gt; &gt; 
&gt; &gt; IINM, for every message in that situation, we will have a different JS
&gt; &gt; source object which will be observable from JS. If so, we are not very
&gt; &gt; compliant, right?
&gt; &gt; Why not simply returning a null source?
&gt; &gt; 
&gt; &gt; If we are testing this code path, it might be good to add test showing the
&gt; &gt; behavior and whether this is expected.
&gt; 
&gt; If the source is null, then you cannot message the source back, which is
&gt; much worse than getting a different JS wrapper every time.

Also, if you look at the spec, you&apos;ll see that it says to create a new ServiceWorker object. Therefore, it may just be compliant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372244</commentid>
    <comment_count>32</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 12:46:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/35568118&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324830</attachid>
            <date>2017-10-25 09:12:44 -0700</date>
            <delta_ts>2017-10-25 09:39:29 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>178794_SW_Client_postMessage_wip.patch</filename>
            <type>text/plain</type>
            <size>49808</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDg5YmRhNzVjNmNjLi5kZjEwNjJmNDVl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC05MjYsNiArOTI2LDcgQEAgSlNf
QklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZl
bnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmlk
bCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5p
ZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRU
eXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGRkYzNjZTg5ZjlhLi43MjVj
OGI2MjVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQwMSw2ICs0MDEsNyBAQCBiaW5kaW5ncy9qcy9K
U1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKIGJpbmRpbmdzL2pzL0pTUmVh
ZGFibGVTdHJlYW1Tb3VyY2VDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1NWR1BhdGhTZWdDdXN0
b20uY3BwCiBiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCitiaW5kaW5ncy9qcy9K
U1NlcnZpY2VXb3JrZXJDbGllbnRDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1RleHRDdXN0b20u
Y3BwCiBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrQ3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJjNThiYmU2NjZjLi42YWI2NTRlM2FkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
Mjk1NiwxMiArMjk1NiwxMyBAQAogCQk4MzA1MTk5NjFCQjBGMTEwMDBGMzc3MkUgLyogSFRNTFRp
bWVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzA1MTk5MzFCQjBGMEU3MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmggKi87IH07CiAJ
CTgzMDc4NEIyMUM1MkVFMkMwMDEwNEQxRCAvKiBYTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNzg0QjExQzUyRUUxOTAwMTA0RDFE
IC8qIFhNTERvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODMwQTM2QkQxREFDNUZBRDAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEEzNkJC
MURBQzVGQTcwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJbml0LmggKi87IH07Ci0JCTgzMTIwQzcw
MUM1NkYzRjYwMDFDQjExMiAvKiBIVE1MRGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxRDFGMjkxQzU2RUNBMDAwRjVGNkMwIC8q
IEhUTUxEYXRhRWxlbWVudC5jcHAgKi87IH07CiAJCTgzMTAyQjI3MUY5RUFERDkwMEU0MDRCOSAv
KiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTAyQjIzMUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFi
bGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKKwkJODMxMjBDNzAxQzU2RjNGNjAwMUNCMTEyIC8qIEhU
TUxEYXRhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzFEMUYyOTFDNTZFQ0EwMDBGNUY2QzAgLyogSFRNTERhdGFFbGVtZW50LmNwcCAq
LzsgfTsKIAkJODMxMjBDNzExQzU2RjNGQjAwMUNCMTEyIC8qIEhUTUxEYXRhRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0Qjg2QTcxQzU2
RTgzQTAwRjNGMEUzIC8qIEhUTUxEYXRhRWxlbWVudC5oICovOyB9OwogCQk4MzIxNTA3RTFGMjdF
QTFCMDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzIxNTA3QjFGMjdFQTE1MDA5NUIxMzYgLyogTmF2aWdh
dG9yQmVhY29uLmggKi87IH07CiAJCTgzMkI4NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmlt
YXRlRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2Uu
aCAqLzsgfTsKIAkJODMyQjg0MzYxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50
QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzJCODQzNTE5RDhFNTc0MDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCAqLzsg
fTsKKwkJODMyQkU1QkIxRkEwMzYwMjAwRTYyQTMxIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCRTVC
QTFGQTAzNUY2MDBFNjJBMzEgLyogU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCAqLzsgfTsKIAkJ
ODMzQjlFMzIxRjUwOEQ4NTAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCOUUyRjFG
NTA4RDgwMDBFMEU0MjggLyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCAqLzsgfTsKIAkJ
ODMzQjlFMzQxRjUwOEQ4NTAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbUVudHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCOUUyQTFGNTA4RDgwMDBF
MEU0MjggLyogSlNGaWxlU3lzdGVtRW50cnkuaCAqLzsgfTsKIAkJODMzQjlFMzYxRjUwOEQ4NTAw
RTBFNDI4IC8qIEpTRmlsZVN5c3RlbUZpbGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMzQjlFMkMxRjUwOEQ4MDAwRTBFNDI4IC8qIEpTRmls
ZVN5c3RlbUZpbGVFbnRyeS5oICovOyB9OwpAQCAtMjk5OSw2ICszMDAwLDcgQEAKIAkJODM3MkRC
MzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MkRCMzAxQTY3ODBB
ODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMw
NjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3
OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlB
MDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLzsgfTsKKwkJODM3QTI0NTgx
RkEwRUNDODAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBMjQ1NjFGQTBFQ0M1
MDBGQjE1RTIgLyogU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzdBODAxMzFFMUUxMjczMDAw
MjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBMb2Nh
bGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZDIC8q
IFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJs
ZUlPUy5tbSAqLzsgfTsKIAkJODM3RkIzNDQxRjlFQTA2RDAwRDBGQzMxIC8qIEV4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM3RkIzNDIxRjlFQTA2NzAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQu
Y3BwICovOyB9OwpAQCAtMTA3MzgsNiArMTA3NDAsOCBAQAogCQk4MzI5RENDMjFDN0E2QUUzMDA3
MzBCMzMgLyogSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnRC
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMkI4NDM1MTlEOEU1NzQwMEIy
NjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODMyQkU1QjgxRkEwMzVGNTAwRTYyQTMxIC8qIFNlcnZpY2VXb3JrZXJD
bGllbnRUeXBlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50
VHlwZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMkJFNUJBMUZBMDM1RjYw
MEU2MkEzMSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4MzNCOUUyQTFGNTA4RDgwMDBFMEU0MjggLyogSlNGaWxlU3lzdGVtRW50
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxlU3lzdGVtRW50cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMzQjlFMkIxRjUwOEQ4MDAwRTBFNDI4
IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMzQjlFMkMxRjUwOEQ4MDAwRTBFNDI4IC8qIEpTRmlsZVN5
c3RlbUZpbGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpbGVT
eXN0ZW1GaWxlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwODEwLDYg
KzEwODE0LDcgQEAKIAkJODM3NjVGOTMxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2
ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3VzZUV2ZW50SW5p
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThF
QTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW07IHBhdGggPSBNb2R1bGVz
L2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CisJCTgzN0EyNDU2MUZBMEVDQzUwMEZCMTVFMiAvKiBTZXJ2aWNlV29y
a2VyQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzdBODAxMjFFMUUxMjczMDAwMjZCOUYgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5nc2RpY3Q7
IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdz
ZGljdDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk4MzdCN0QxRjFEQzNGNTRDMDBE
MDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFZhbGlkYXRpb25CdWJibGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzN0RGQjM0MUVCRkVBNzAwMDYwMTM4NSAvKiBFbGVtZW50Q1NTSW5saW5l
U3R5bGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODE3OCw2ICsxODE4Myw3IEBACiAJ
CTUxN0M4NzA3MUY4RThGRjIwMEVCODA3NiAvKiBjb250ZXh0ICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4MzdBMjQ1NjFGQTBFQ0M1MDBGQjE1RTIgLyog
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAqLywKIAkJCQk0MTlBQ0Y5MDFGOTdFN0Q2
MDA5RjFBODMgLyogU2VydmljZVdvcmtlckZldGNoLmNwcCAqLywKIAkJCQk0MTlBQ0Y4RTFGOTdF
N0Q1MDA5RjFBODMgLyogU2VydmljZVdvcmtlckZldGNoLmggKi8sCiAJCQkJNTE3Qzg3MTExRjhF
RTcyRjAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwICovLApAQCAtMTgzMDIsNiAr
MTgzMDgsOCBAQAogCQkJCTQ2RUYxNDIxMUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50cy5jcHAgKi8sCiAJCQkJNDZFRjE0MjIxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VX
b3JrZXJDbGllbnRzLmggKi8sCiAJCQkJNDZFRjE0MjMxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZp
Y2VXb3JrZXJDbGllbnRzLmlkbCAqLywKKwkJCQk4MzJCRTVCQTFGQTAzNUY2MDBFNjJBMzEgLyog
U2VydmljZVdvcmtlckNsaWVudFR5cGUuaCAqLywKKwkJCQk4MzJCRTVCODFGQTAzNUY1MDBFNjJB
MzEgLyogU2VydmljZVdvcmtlckNsaWVudFR5cGUuaWRsICovLAogCQkJCTUxRjE3NTU4MUYzRUJD
MEMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCAqLywKIAkJCQk1MUYxNzU1
NzFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckNvbnRhaW5lci5oICovLAogCQkJCTUx
RjE3NTU2MUYzRUJDMEMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmlkbCAqLywK
QEAgLTI3NDQ4LDYgKzI3NDU2LDcgQEAKIAkJCQk2RTBFNTY5QzE4M0JGRkU2MDBFMEU4RDUgLyog
RmxvYXRSb3VuZGVkUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NkQwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0U2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNThDRDM1Q0IxOEVCNEMz
OTAwQjlGM0FDIC8qIEZsb2F0U2l6ZUhhc2guaCBpbiBIZWFkZXJzICovLAorCQkJCTgzN0EyNDU4
MUZBMEVDQzgwMEZCMTVFMiAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTQ5OTNCRTYwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDYyMjg3ODQwQjREQjMyMjAwMEMzNERGIC8qIEZvY3Vz
RGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNkQ5RDIzNTE0RUFCRDI2MDA5MEQ3NUUg
LyogRm9jdXNFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTU3MSw2ICsyOTU4MCw3IEBACiAJ
CQkJNTFGMTc1NUQxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ2RUYxNDJEMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkVGMTQyQzFGOTdCN0Q4MDBDMkE1MjQgLyogU2Vydmlj
ZVdvcmtlckNsaWVudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMkJFNUJCMUZBMDM2MDIwMEU2
MkEzMSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFG
MTc1NUYxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxQ0E3RUU5MUY4ODMzOTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUFDRjkyMUY5N0U3REEwMDlGMUE4MyAv
KiBTZXJ2aWNlV29ya2VyRmV0Y2guaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTZXJ2aWNlV29ya2VyQ2xpZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2VydmljZVdvcmtlckNsaWVudEN1c3RvbS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJkMTFhNDVjNTIwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTZXJ2aWNlV29ya2Vy
Q2xpZW50Q3VzdG9tLmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUgIkpTU2Vy
dmljZVdvcmtlckNsaWVudC5oIgorCisjaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudC5oIgorI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJXaW5kb3dDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBu
YW1lc3BhY2UgSlNDOworCitKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnQ+JiYg
Y2xpZW50KQoreworICAgIGlmIChpczxTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50PihjbGllbnQp
KQorICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50
PihnbG9iYWxPYmplY3QsIFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJuIGNyZWF0ZVdyYXBw
ZXI8U2VydmljZVdvcmtlckNsaWVudD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGNsaWVudCkpOwor
fQorCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU2VydmljZVdvcmtlckNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiB3
cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGNsaWVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyNWQ0YTVjZmQ0MC4u
ZDcyMmI3Y2RiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDM0LDkgKzQzNCwxNSBA
QCBzdGF0aWMgdm9pZCBwcmludE5hdmlnYXRpb25FcnJvck1lc3NhZ2UoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIGFjdGl2ZVVSTCwgY29ucwogCiB1aW50NjRfdCBEb2N1bWVudDo6c19nbG9iYWxU
cmVlVmVyc2lvbiA9IDA7CiAKLUhhc2hTZXQ8RG9jdW1lbnQqPiYgRG9jdW1lbnQ6OmFsbERvY3Vt
ZW50cygpCitzdGF0aWMgRG9jdW1lbnQ6OklkZW50aWZpZXIgZ2VuZXJhdGVEb2N1bWVudElkZW50
aWZpZXIoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PERvY3VtZW50Kj4+
IGRvY3VtZW50czsKKyAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7CisgICAgcmV0
dXJuICsraWRlbnRpZmllcjsKK30KKworYXV0byBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkgLT4g
SGFzaE1hcDxJZGVudGlmaWVyLCBEb2N1bWVudCo+JgoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoTWFwPElkZW50aWZpZXIsIERvY3VtZW50Kj4+IGRvY3VtZW50czsKICAgICByZXR1
cm4gZG9jdW1lbnRzOwogfQogCkBAIC00OTUsOCArNTAxLDkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3Nlcywg
dW5zaWcKICAgICAsIG1faXNTeW50aGVzaXplZChjb25zdHJ1Y3Rpb25GbGFncyAmIFN5bnRoZXNp
emVkKQogICAgICwgbV9pc05vblJlbmRlcmVkUGxhY2Vob2xkZXIoY29uc3RydWN0aW9uRmxhZ3Mg
JiBOb25SZW5kZXJlZFBsYWNlaG9sZGVyKQogICAgICwgbV9vcmllbnRhdGlvbk5vdGlmaWVyKGN1
cnJlbnRPcmllbnRhdGlvbihmcmFtZSkpCisgICAgLCBtX2lkZW50aWZpZXIoZ2VuZXJhdGVEb2N1
bWVudElkZW50aWZpZXIoKSkKIHsKLSAgICBhbGxEb2N1bWVudHMoKS5hZGQodGhpcyk7CisgICAg
YWxsRG9jdW1lbnRzKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CiAKICAgICAvLyBXZSBkZXBl
bmQgb24gdGhlIHVybCBnZXR0aW5nIGltbWVkaWF0ZWx5IHNldCBpbiBzdWJmcmFtZXMsIGJ1dCB3
ZQogICAgIC8vIGFsc28gZGVwZW5kIG9uIHRoZSB1cmwgTk9UIGdldHRpbmcgaW1tZWRpYXRlbHkg
c2V0IGluIG9wZW5lZCB3aW5kb3dzLgpAQCAtNTQ2LDcgKzU1Myw4IEBAIFJlZjxEb2N1bWVudD4g
RG9jdW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgY29udGV4dERvY3VtZW50KQogCiBEb2N1bWVudDo6
fkRvY3VtZW50KCkKIHsKLSAgICBhbGxEb2N1bWVudHMoKS5yZW1vdmUodGhpcyk7CisgICAgYm9v
bCB3YXNSZW1vdmVkID0gYWxsRG9jdW1lbnRzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAg
QVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsKIAogICAgIEFTU0VSVCghcmVu
ZGVyVmlldygpKTsKICAgICBBU1NFUlQobV9wYWdlQ2FjaGVTdGF0ZSAhPSBJblBhZ2VDYWNoZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDE2NzE3ZTgxM2RhLi41MzQ2MWNiN2UxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTM0Nyw3ICszNDcsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJl
bW92ZWRMYXN0UmVmKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxEb2N1
bWVudCo+JiBhbGxEb2N1bWVudHMoKTsKKyAgICB1c2luZyBJZGVudGlmaWVyID0gdWludDY0X3Q7
CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hNYXA8SWRlbnRpZmllciwgRG9jdW1l
bnQqPiYgYWxsRG9jdW1lbnRzKCk7CiAKICAgICBNZWRpYVF1ZXJ5TWF0Y2hlciYgbWVkaWFRdWVy
eU1hdGNoZXIoKTsKIApAQCAtMTgyNiw2ICsxODI4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
Z3JhbnRTdG9yYWdlQWNjZXNzT3ZlcnJpZGUgeyBmYWxzZSB9OwogCiAgICAgUmVmUHRyPERvY3Vt
ZW50VGltZWxpbmU+IG1fdGltZWxpbmU7CisgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9
OwogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVudCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggN2FiMDkyNDM0YmYuLjNjYjNk
ZGZiYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKQEAgLTY1LDcgKzY1
LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZU5vbmNyaXRpY2FsTWVtb3J5KCkKIAogICAgIGNsZWFy
V2lkdGhDYWNoZXMoKTsKIAotICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxs
RG9jdW1lbnRzKCkpCisgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1
bWVudHMoKS52YWx1ZXMoKSkKICAgICAgICAgZG9jdW1lbnQtPmNsZWFyU2VsZWN0b3JRdWVyeUNh
Y2hlKCk7CiAKICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucHJ1bmVEZWFkUmVzb3VyY2Vz
VG9TaXplKDApOwpAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlQ3JpdGljYWxN
ZW1vcnkoU3luY2hyb25vdXMgc3luY2hyb25vdXMpCiAKICAgICBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmRyYWluKCk7CiAKLSAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogY29weVRvVmVjdG9y
T2Y8UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSkgeworICAgIGZv
ciAoYXV0byYgZG9jdW1lbnQgOiBjb3B5VG9WZWN0b3JPZjxSZWZQdHI8RG9jdW1lbnQ+PihEb2N1
bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpKSB7CiAgICAgICAgIGRvY3VtZW50LT5zdHls
ZVNjb3BlKCkuY2xlYXJSZXNvbHZlcigpOwogICAgICAgICBkb2N1bWVudC0+Zm9udFNlbGVjdG9y
KCkuZW1wdHlDYWNoZXMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IDUwMTZhMDZlMjA0Li44MmM0ZTU3NjRlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE5NDUsNyArMTk0NSw3IEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpyZW1vdmVSYXJlRGF0YSgpCiAKIHZvaWQgcHJpbnRSZW5kZXJUcmVlRm9y
TGl2ZURvY3VtZW50cygpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3Vt
ZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBE
b2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKCFkb2N1bWVu
dC0+cmVuZGVyVmlldygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChkb2N1
bWVudC0+ZnJhbWUoKSAmJiBkb2N1bWVudC0+ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkKQEAgLTE5
NTcsNyArMTk1Nyw3IEBAIHZvaWQgcHJpbnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cygpCiAK
IHZvaWQgcHJpbnRMYXllclRyZWVGb3JMaXZlRG9jdW1lbnRzKCkKIHsKLSAgICBmb3IgKGNvbnN0
IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgZm9yIChj
b25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkg
ewogICAgICAgICBpZiAoIWRvY3VtZW50LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgaWYgKGRvY3VtZW50LT5mcmFtZSgpICYmIGRvY3VtZW50LT5mcmFtZSgp
LT5pc01haW5GcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dENvdmVyYWdlLmNwcAppbmRleCBhOTE2MDQ1ZTRiYS4uZjA3ZDRjMWI0N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292
ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
Q292ZXJhZ2UuY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdE5vbkVt
cHR5TGVhZlJlbmRlckJsb2NrRmxvd3MoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgSGEK
IAogc3RhdGljIHZvaWQgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3NGb3JDdXJy
ZW50UGFnZShIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrRmxvdyo+JiBsZWFmUmVuZGVyZXJzKQog
ewotICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRz
KCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3Vt
ZW50cygpLnZhbHVlcygpKSB7CiAgICAgICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSB8
fCBkb2N1bWVudC0+cGFnZUNhY2hlU3RhdGUoKSAhPSBEb2N1bWVudDo6Tm90SW5QYWdlQ2FjaGUp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFkb2N1bWVudC0+aXNIVE1MRG9j
dW1lbnQoKSAmJiAhZG9jdW1lbnQtPmlzWEhUTUxEb2N1bWVudCgpKQpAQCAtMjc5LDcgKzI3OSw3
IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzRm9yQ3Vy
cmVudFBhZ2UoSGFzaFNldDxjb25zdCBSZW5kCiAKIHZvaWQgdG9nZ2xlU2ltcGxlTGluZUxheW91
dCgpCiB7Ci0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMo
KSkgeworICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCku
dmFsdWVzKCkpIHsKICAgICAgICAgYXV0byYgc2V0dGluZ3MgPSBkb2N1bWVudC0+bXV0YWJsZVNl
dHRpbmdzKCk7CiAgICAgICAgIHNldHRpbmdzLnNldFNpbXBsZUxpbmVMYXlvdXRFbmFibGVkKCFz
ZXR0aW5ncy5zaW1wbGVMaW5lTGF5b3V0RW5hYmxlZCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggNWExMTgxZTc5MjAuLjM5YWM4Yjg1YjljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMTU0LDcgKzIxNTQsNyBAQCBFeGNlcHRp
b25Pcjx1bnNpZ25lZD4gSW50ZXJuYWxzOjpjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgVmVjdAogdW5zaWduZWQgSW50ZXJuYWxzOjpudW1iZXJPZkxpdmVOb2Rlcygp
IGNvbnN0CiB7CiAgICAgdW5zaWduZWQgbm9kZUNvdW50ID0gMDsKLSAgICBmb3IgKGF1dG8qIGRv
Y3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKQorICAgIGZvciAoYXV0byogZG9jdW1l
bnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpCiAgICAgICAgIG5vZGVDb3Vu
dCArPSBkb2N1bWVudC0+cmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKICAgICByZXR1cm4gbm9kZUNv
dW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXIuY3BwCmluZGV4IDE3OTY0ZWFkNjA0Li4wY2Y5YTgxNjQyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcApAQCAtNjksNyArNjksNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBTZXJ2aWNlV29ya2VyOjpwb3N0TWVzc2FnZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBKUwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90
U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUGFzc2luZyBNZXNzYWdlUG9ydCBvYmplY3Rz
IHRvIHBvc3RNZXNzYWdlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIikgfTsKIAogICAgIGF1dG8mIHN3
Q29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdv
cmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKGNvbnRleHQuc2Vzc2lvbklEKCkpOwotICAgIHN3Q29u
bmVjdGlvbi5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKG1faWRlbnRpZmll
ciwgbWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dC5vcmlnaW4oKSk7CisgICAg
c3dDb25uZWN0aW9uLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUobV9pZGVu
dGlmaWVyLCBtZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0KTsKIAogICAgIHJl
dHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5jcHAKaW5kZXggODI1YmM5MGRiNzkuLmQxYTE0ZGIyMjAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnQuY3BwCkBAIC0yOCwyMiArMjgsMjMgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudC5oIgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCIKIAotU2VydmljZVdvcmtlckNsaWVudDo6
U2VydmljZVdvcmtlckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotICAg
IDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQotewotICAgIHN1c3BlbmRJZk5lZWRlZCgpOwot
fQorbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBTZXJ2aWNlV29ya2VyQ2xpZW50
OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK1NlcnZpY2VXb3JrZXJDbGllbnQ6OlNlcnZp
Y2VXb3JrZXJDbGllbnQoUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgdWludDY0X3QgaWRlbnRpZmllciwgVHlwZSB0eXBlKQorICAg
IDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmNvbnRleHQpCisgICAgLCBtX2Nvbm5lY3Rp
b24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQor
ICAgICwgbV90eXBlKHR5cGUpCiB7Ci0gICAgcmV0dXJuICJTZXJ2aWNlV29ya2VyQ2xpZW50IjsK
IH0KIAotYm9vbCBTZXJ2aWNlV29ya2VyQ2xpZW50OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNw
ZW5zaW9uKCkgY29uc3QKK1NlcnZpY2VXb3JrZXJDbGllbnQ6On5TZXJ2aWNlV29ya2VyQ2xpZW50
KCkKIHsKLSAgICByZXR1cm4gIWhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiBTdHJpbmcgU2Vy
dmljZVdvcmtlckNsaWVudDo6dXJsKCkgY29uc3QKQEAgLTUxLDIxICs1MiwzNSBAQCBTdHJpbmcg
U2VydmljZVdvcmtlckNsaWVudDo6dXJsKCkgY29uc3QKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIFNlcnZpY2VXb3JrZXJDbGllbnQ6OmZyYW1lVHlwZSgpIGNvbnN0IC0+IEZyYW1lVHlwZQot
ewotICAgIHJldHVybiBGcmFtZVR5cGU6Ok5vbmU7Ci19Ci0KIFN0cmluZyBTZXJ2aWNlV29ya2Vy
Q2xpZW50OjppZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gU3RyaW5n
OjpudW1iZXIobV9pZGVudGlmaWVyKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gU2VydmljZVdv
cmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgbWVz
c2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQorRXhj
ZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwgVmVjdG9y
PEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQogewotICAgIFVOVVNFRF9Q
QVJBTShtZXNzYWdlKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNmZXIpOwotICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJjbGllbnQucG9zdE1l
c3NhZ2UoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH07CisgICAgYXV0byogZXhlY1N0YXRlID0g
Y29udGV4dC5leGVjU3RhdGUoKTsKKyAgICBBU1NFUlQoZXhlY1N0YXRlKTsKKworICAgIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAgICBhdXRvIG1lc3NhZ2UgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZXhlY1N0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUo
dHJhbnNmZXIpLCBwb3J0cywgU2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdl
KTsKKyAgICBpZiAobWVzc2FnZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG1lc3Nh
Z2UucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgLy8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4g
cHJlcGFyYXRpb24gZm9yIHNlbmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBjb250ZXh0LgorICAgIGF1
dG8gY2hhbm5lbHNPckV4Y2VwdGlvbiA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKFdU
Rk1vdmUocG9ydHMpKTsKKyAgICBpZiAoY2hhbm5lbHNPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIGNoYW5uZWxzT3JFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigp
OworCisgICAgLy8gRklYTUU6IFN1cHBvcnQgc2VuZGluZyB0aGUgY2hhbm5lbHMuCisgICAgYXV0
byBjaGFubmVscyA9IGNoYW5uZWxzT3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7Cisg
ICAgaWYgKGNoYW5uZWxzICYmICFjaGFubmVscy0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUGFzc2luZyBNZXNz
YWdlUG9ydCBvYmplY3RzIHRvIHBvc3RNZXNzYWdlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIikgfTsK
KworICAgIC8vIEZJWE1FOiBTaG91bGQgbGlrZWx5IHBhc3MgdGhlIHNvdXJjZSBvcmlnaW4uCisg
ICAgbV9jb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChtX2lkZW50
aWZpZXIsIG1lc3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCkpOworCisgICAgcmV0dXJuIHsgfTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmgKaW5kZXggZjM4ZTYwMmZmNDUuLmZi
ZWYzMGJkYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50LmgKQEAgLTI3LDM5ICsyNyw0NSBAQAogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAi
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJv
bmcuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKLWNs
YXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTVmFsdWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgU2VydmljZVdvcmtlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VX
b3JrZXJDbGllbnQ+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK2NsYXNzIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKK2NsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uOworCitjbGFz
cyBTZXJ2aWNlV29ya2VyQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckNs
aWVudD4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAg
ZW51bSBjbGFzcyBGcmFtZVR5cGUgewotICAgICAgICBBdXhpbGlhcnksCi0gICAgICAgIFRvcExl
dmVsLAotICAgICAgICBOZXN0ZWQsCi0gICAgICAgIE5vbmUKLSAgICB9OworICAgIHVzaW5nIENv
bm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjsKKworICAgIHVzaW5nIFR5
cGUgPSBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTsKKyAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3Jr
ZXJDbGllbnQ+IGNyZWF0ZShSZWY8Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCB1aW50NjRfdCBpZGVudGlmaWVyLCBUeXBlIHR5cGUpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyQ2xpZW50KFdU
Rk1vdmUoY29ubmVjdGlvbiksIGNvbnRleHQsIGlkZW50aWZpZXIsIHR5cGUpKTsKKyAgICB9CisK
KyAgICB+U2VydmljZVdvcmtlckNsaWVudCgpOwogCiAgICAgU3RyaW5nIHVybCgpIGNvbnN0Owot
ICAgIEZyYW1lVHlwZSBmcmFtZVR5cGUoKSBjb25zdDsKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KICAgICBTdHJpbmcgaWQoKSBjb25zdDsKIAotICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIG1lc3Nh
Z2UsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2Zlcik7CisgICAg
RXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpT
Qzo6SlNWYWx1ZSBtZXNzYWdlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYg
dHJhbnNmZXIpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgU2VydmljZVdvcmtlckNsaWVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgU2VydmljZVdvcmtlckNsaWVudChSZWY8
Q29ubmVjdGlvbj4mJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHVpbnQ2NF90IGlkZW50aWZp
ZXIsIFR5cGUpOwogCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0LgotICAgIGNvbnN0IGNoYXIqIGFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIGNhblN1c3BlbmRGb3JE
b2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKKyAgICBSZWY8Q29ubmVjdGlvbj4gbV9j
b25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKKyAgICBUeXBlIG1fdHlwZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAppbmRleCA1M2ZkZDA4NDg1
ZC4uNGVmMmNiMTUyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwKQEAgLTI1LDIwICsyNSwyMSBAQAogCiBbCiAg
ICAgQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVIsCisgICAgQ3VzdG9tVG9KU09iamVjdCwKICAg
ICBFbmFibGVkQXRSdW50aW1lPVNlcnZpY2VXb3JrZXIsCiAgICAgRXhwb3NlZD1TZXJ2aWNlV29y
a2VyLAogICAgIEludGVyZmFjZU5hbWU9Q2xpZW50LAogXSBpbnRlcmZhY2UgU2VydmljZVdvcmtl
ckNsaWVudCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyB1cmw7Ci0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEZyYW1lVHlwZSBmcmFtZVR5cGU7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIENsaWVudFR5cGUgdHlwZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlk
OwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBw
b3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2Zl
ciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNl
PG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiB9OwogCi1lbnVtIEZyYW1lVHlwZSB7Ci0gICJhdXhp
bGlhcnkiLAotICAidG9wLWxldmVsIiwKLSAgIm5lc3RlZCIsCi0gICJub25lIgorZW51bSBDbGll
bnRUeXBlIHsKKyAgIndpbmRvdyIsCisgICJ3b3JrZXIiLAorICAic2hhcmVkd29ya2VyIiwKKyAg
ImFsbCIKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi40MDY5YWE1OWQwYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oCkBAIC0wLDAgKzEsNDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRU
eXBlIHsKKyAgICBXaW5kb3csCisgICAgV29ya2VyLAorICAgIFNoYXJlZHdvcmtlciwKKyAgICBB
bGwKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudFR5cGUuaWRsIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmlkbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzUxNzY3ODBmZjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudFR5cGUuaWRs
CkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9U0VSVklD
RV9XT1JLRVIsCitdIGVudW0gU2VydmljZVdvcmtlckNsaWVudFR5cGUgeworICAgICJ3aW5kb3ci
LAorICAgICJ3b3JrZXIiLAorICAgICJzaGFyZWR3b3JrZXIiLAorICAgICJhbGwiCit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnRzLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVu
dHMuaAppbmRleCAzZWU0ZjQ2ZTYzYi4uNzRiYmI3ZjA0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCIKICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtNDIsMTYg
KzQzLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29y
a2VyQ2xpZW50cyhjb250ZXh0KSk7CiAgICAgfQogCi0gICAgZW51bSBjbGFzcyBDbGllbnRUeXBl
IHsKLSAgICAgICAgV2luZG93LAotICAgICAgICBXb3JrZXIsCi0gICAgICAgIFNoYXJlZHdvcmtl
ciwKLSAgICAgICAgQWxsCi0gICAgfTsKLQogICAgIHN0cnVjdCBDbGllbnRRdWVyeU9wdGlvbnMg
ewogICAgICAgICBib29sIGluY2x1ZGVVbmNvbnRyb2xsZWQgeyBmYWxzZSB9OwotICAgICAgICBD
bGllbnRUeXBlIHR5cGUgeyBDbGllbnRUeXBlOjpXaW5kb3cgfTsKKyAgICAgICAgU2VydmljZVdv
cmtlckNsaWVudFR5cGUgdHlwZSB7IFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXaW5kb3cgfTsK
ICAgICB9OwogCiAgICAgdm9pZCBnZXQoY29uc3QgU3RyaW5nJiBpZCwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudHMuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnRzLmlkbAppbmRleCAyYjk3MGY0OGUwZC4uN2Q0YzU3MDRlZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnRzLmlkbApAQCAtMzgsMTIgKzM4LDUgQEAKIAogZGljdGlvbmFyeSBDbGllbnRRdWVy
eU9wdGlvbnMgewogICAgIGJvb2xlYW4gaW5jbHVkZVVuY29udHJvbGxlZCA9IGZhbHNlOwotICAg
IENsaWVudFR5cGUgdHlwZSA9ICJ3aW5kb3ciOwotfTsKLQotZW51bSBDbGllbnRUeXBlIHsKLSAg
ICAid2luZG93IiwKLSAgICAid29ya2VyIiwKLSAgICAic2hhcmVkd29ya2VyIiwKLSAgICAiYWxs
IgorICAgIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHR5cGUgPSAid2luZG93IjsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRv
d0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
cldpbmRvd0NsaWVudC5jcHAKaW5kZXggNWM3OGI3OGQ0MDYuLjUyZTg2NmNiY2U4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQuY3BwCkBAIC0zMiw4ICszMiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotU2VydmljZVdvcmtlcldpbmRvd0NsaWVudDo6U2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotICAgIDogU2VydmljZVdvcmtlckNs
aWVudChjb250ZXh0KQorU2VydmljZVdvcmtlcldpbmRvd0NsaWVudDo6U2VydmljZVdvcmtlcldp
bmRvd0NsaWVudChSZWY8Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIDogU2VydmljZVdvcmtl
ckNsaWVudChXVEZNb3ZlKGNvbm5lY3Rpb24pLCBjb250ZXh0LCBpZGVudGlmaWVyLCBUeXBlOjpX
aW5kb3cpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oCmluZGV4IDZiYjc3ZDdjYWI3Li5jYjZl
NzBiN2Y5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJXaW5kb3dDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oCkBAIC0zNiw5ICszNiw5IEBAIGNsYXNzIERl
ZmVycmVkUHJvbWlzZTsKIAogY2xhc3MgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudCBmaW5hbCA6
IHB1YmxpYyBTZXJ2aWNlV29ya2VyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNl
cnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KQorICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlcldpbmRvd0NsaWVudD4gY3JlYXRl
KFJlZjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIHVpbnQ2NF90IGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KGNvbnRleHQpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudChXVEZNb3ZlKGNvbm5l
Y3Rpb24pLCBjb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgVmlzaWJpbGl0eVN0
YXRlIHZpc2liaWxpdHlTdGF0ZSgpIGNvbnN0OwpAQCAtNDgsOSArNDgsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgbmF2aWdhdGUoY29uc3QgU3RyaW5nJiB1cmwsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQo
UmVmPENvbm5lY3Rpb24+JiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCB1aW50NjRfdCBpZGVu
dGlmaWVyKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KQorICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50JiBjbGll
bnQpIHsgcmV0dXJuIGNsaWVudC50eXBlKCkgPT0gV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dFR5cGU6OldpbmRvdzsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQorCiAjZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJDbGllbnRD
b25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQxNzEy
ZmJhZTIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CisKKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKK2NsYXNzIFNlcnZpY2VX
b3JrZXJDbGllbnRDb25uZWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U2Vydmlj
ZVdvcmtlckNsaWVudENvbm5lY3Rpb24oKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UpID0gMDsKK307CisKK30KKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDc0MWJlYTMzZGExLi5kZTdkMjI4Njdk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTMyLDggKzMyLDEwIEBACiAjaW5j
bHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAi
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisj
aW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyRmV0Y2guaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIK
KyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2Vy
TG9hZGVyUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUg
PHBhbC9TZXNzaW9uSUQuaD4KQEAgLTEwMCwxMiArMTAyLDEzIEBAIHZvaWQgU2VydmljZVdvcmtl
clRocmVhZDo6cG9zdEZldGNoVGFzayhSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYg
Y2xpZW50CiAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKLXZvaWQg
U2VydmljZVdvcmtlclRocmVhZDo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZShSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4mJiBjaGFubmVscywgY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4pCit2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUoUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uPiYmIGNsaWVu
dENvbm5lY3Rpb24sIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgc3RkOjp1
bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYmIGNoYW5uZWxzLCB1aW50NjRfdCBz
b3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soW2NoYW5uZWxzID0gV1RGTW92ZShjaGFubmVs
cyksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4gPSBzb3VyY2VPcmln
aW4uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRh
YmxlIHsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soW2NsaWVudENvbm5l
Y3Rpb24gPSBXVEZNb3ZlKGNsaWVudENvbm5lY3Rpb24pLCBjaGFubmVscyA9IFdURk1vdmUoY2hh
bm5lbHMpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc291
cmNlT3JpZ2luID0gc291cmNlT3JpZ2luLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7
CiAgICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUsIFdURk1vdmUoY2hhbm5lbHMpKTsKLSAgICAgICAgc2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4pKTsKKyAg
ICAgICAgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2UgPSBSZWZQdHI8U2Vydmlj
ZVdvcmtlckNsaWVudD4geyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50OjpjcmVhdGUoV1RGTW92
ZShjbGllbnRDb25uZWN0aW9uKSwgY29udGV4dCwgc291cmNlSWRlbnRpZmllcikgfTsKKyAgICAg
ICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXh0ZW5kYWJsZU1lc3Nh
Z2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VP
cmlnaW4sIHsgfSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS50aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgpLmNvbmZpcm1NZXNzYWdlRnJvbVdv
cmtlck9iamVjdChzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaGFzUGVuZGluZ0FjdGl2aXR5KCkp
OwogICAgIH0pOwogICAgIHJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuaAppbmRleCBkNTU5MjM5ZDAwOC4uNTc4ODljNDkzOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgQ2FjaGVTdG9yYWdlUHJv
dmlkZXI7CiBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7CiBjbGFz
cyBNZXNzYWdlUG9ydENoYW5uZWw7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CitjbGFz
cyBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFdvcmtlck9iamVjdFByb3h5
Owogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIApAQCAtNTQsNyArNTUsNyBAQCBw
dWJsaWM6CiAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5KCkgY29uc3Qg
eyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwb3N0RmV0Y2hUYXNrKFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIEZldGNoT3B0aW9ucyYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoUmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYmLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50Q29u
bmVjdGlvbj4mJiwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgc3RkOjp1bmlxdWVfcHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYmLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAKIHByb3RlY3RlZDoKICAgICBSZWY8V29ya2Vy
R2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBN
b25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29u
bmVjdGlvbi5oCmluZGV4IDQyMjJiNTljNmEzLi4yZWJlMTdlMjUyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVj
dGlvbi5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlSm9iKFNl
cnZpY2VXb3JrZXJKb2ImKTsKICAgICB2b2lkIGZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2Vydmlj
ZVdvcmtlckpvYiYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZmFpbGVkRmV0Y2hpbmdTY3Jp
cHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VPcmlnaW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
c291cmNlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2lu
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcAppbmRleCBjNGI2Y2VhMzZmNS4uMmI5MTE5YmEzYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xMDAsOSArMTAwLDkgQEAgdm9p
ZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyLCB1aW50NjRfdCBzZXJ2aWMKICAgICBzZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6
U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpTdGFydEZldGNoKGlkZW50aWZpZXIoKSwgZmV0
Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucykp
OwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikK
K3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKQogewotICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2Vz
OjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUoaWRlbnRpZmllcigpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbWVzc2Fn
ZSwgc291cmNlT3JpZ2luKSk7CisgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZShpZGVudGlmaWVyKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtZXNzYWdlLCBz
b3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IGZldGNoSWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmgKaW5kZXggM2E1NzIwYmVlNzEuLmJiMzQxMTliNmQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJik7CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4pOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1
aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZU9yaWdpbik7CiAKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgY29udGV4dCBXZWJQcm9jZXNz
CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggM2IyMDQ1YzY0NDQuLjU5ZjdlODI1NTE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KQEAgLTI4LDcgKzI4LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIHsK
ICAgICBGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyRmV0Y2hSZXN1bHQgcmVzdWx0KQogCiAgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBpZGVu
dGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykK
LSAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNv
dXJjZU9yaWdpbikKKyAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVp
bnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2Fn
ZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFn
ZXIuY3BwCmluZGV4IDhjYzBmODkzZTkwLi5lNjcyODViNTM4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29u
dGV4dE1hbmFnZXIuY3BwCkBAIC04NiwxNCArODYsMTQgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGV4dE1hbmFnZXI6OnN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIKICAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5wb3N0RmV0Y2hUYXNrKFdURk1vdmUoY2xp
ZW50KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShvcHRpb25zKSk7CiB9CiAKLXZvaWQgU2Vy
dmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgU2VydmljZVdvcmtlckNvbnRleHRNYW5h
Z2VyOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKICAgICBhdXRvKiBzZXJ2aWNlV29y
a2VyID0gbV93b3JrZXJNYXAuZ2V0KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBpZiAo
IXNlcnZpY2VXb3JrZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgcGFzcyB2YWxpZCBNZXNzYWdlUG9ydENoYW5uZWxzLgotICAgIHNlcnZpY2VXb3JrZXItPnRo
cmVhZCgpLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjphZG9wdChtZXNzYWdlLnZlY3RvcigpKSwgbnVsbHB0ciwgc291cmNlT3JpZ2lu
KTsKKyAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0b3Io
KSksIG51bGxwdHIsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgKaW5kZXggNzAwZTBh
NzlhYTMuLjRiYjE3ZDQ2MWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaApAQCAtNTIs
NyArNTIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXIodWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSYpOwogICAgIHZvaWQgc3RhcnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OkZldGNoT3B0aW9ucyYmKTsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvU3Rv
cmFnZVByb2Nlc3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eT4+IG1fd29ya2VyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNv
bnRleHRNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDg2NjYzZjgxZTdjLi45Zjk2NGZjODJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtl
ckNvbnRleHRNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjUs
NyArMjUsNyBAQAogbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyIHsKICAg
ICBTdGFydFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEpCiAg
ICAgU3RhcnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlv
bnMgb3B0aW9ucykKLSAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIFN0cmluZyBzb3VyY2VPcmln
aW4pCisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVy
LCBTdHJpbmcgc291cmNlT3JpZ2luKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmlu
ZGV4IDMwODZlYTRmYzBlLi44Y2FkZmJmMzJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0z
NSw2ICszNSw4IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViU1dPcmlnaW5UYWJsZS5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmg+CkBAIC02OCw5
ICs3MCwxMyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdTY3Jp
cHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0YwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6RmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihyZXN1bHQp
KTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc2NyaXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKQordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc2NyaXB0VmFsdWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNvdXJjZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246
OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHNjcmlwdFZhbHVlLT5kYXRhKCkgfSwgc291cmNl
T3JpZ2luKSk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBwb3N0aW5nIG1lc3NhZ2Vz
IGZyb20gd29ya2Vycy4KKyAgICBpZiAoIWlzPERvY3VtZW50Pihzb3VyY2UpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IElQQzo6RGF0YVJlZmVyZW5jZSB7IHNjcmlwdFZhbHVlLT5kYXRhKCkgfSwgZG93bmNhc3Q8RG9j
dW1lbnQ+KHNvdXJjZSkuaWRlbnRpZmllcigpLCBzb3VyY2Uub3JpZ2luKCkpKTsKIH0KIAogYm9v
bCBXZWJTV0NsaWVudENvbm5lY3Rpb246Omhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3Jp
Z2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCmlu
ZGV4IDFjZDI5Mjk5ZTNmLi4yOGIzNmZlNzI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTU2LDcg
KzU2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hGZXRj
aGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJlc3Vs
dCYpIGZpbmFsOwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pIGZpbmFsOworICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4m
JiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc291cmNlKSBmaW5hbDsKIAogICAg
IHZvaWQgZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324833</attachid>
            <date>2017-10-25 09:39:29 -0700</date>
            <delta_ts>2017-10-25 13:56:27 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>178794_SW_Client_postMessage_wip.patch</filename>
            <type>text/plain</type>
            <size>62651</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDg5YmRhNzVjNmNjLi5kZjEwNjJmNDVl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC05MjYsNiArOTI2LDcgQEAgSlNf
QklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZl
bnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmlk
bCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5p
ZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRU
eXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGRkYzNjZTg5ZjlhLi43MjVj
OGI2MjVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQwMSw2ICs0MDEsNyBAQCBiaW5kaW5ncy9qcy9K
U1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKIGJpbmRpbmdzL2pzL0pTUmVh
ZGFibGVTdHJlYW1Tb3VyY2VDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1NWR1BhdGhTZWdDdXN0
b20uY3BwCiBiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCitiaW5kaW5ncy9qcy9K
U1NlcnZpY2VXb3JrZXJDbGllbnRDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1RleHRDdXN0b20u
Y3BwCiBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrQ3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJjNThiYmU2NjZjLi42YWI2NTRlM2FkZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
Mjk1NiwxMiArMjk1NiwxMyBAQAogCQk4MzA1MTk5NjFCQjBGMTEwMDBGMzc3MkUgLyogSFRNTFRp
bWVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzA1MTk5MzFCQjBGMEU3MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmggKi87IH07CiAJ
CTgzMDc4NEIyMUM1MkVFMkMwMDEwNEQxRCAvKiBYTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNzg0QjExQzUyRUUxOTAwMTA0RDFE
IC8qIFhNTERvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODMwQTM2QkQxREFDNUZBRDAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEEzNkJC
MURBQzVGQTcwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJbml0LmggKi87IH07Ci0JCTgzMTIwQzcw
MUM1NkYzRjYwMDFDQjExMiAvKiBIVE1MRGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxRDFGMjkxQzU2RUNBMDAwRjVGNkMwIC8q
IEhUTUxEYXRhRWxlbWVudC5jcHAgKi87IH07CiAJCTgzMTAyQjI3MUY5RUFERDkwMEU0MDRCOSAv
KiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTAyQjIzMUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFi
bGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKKwkJODMxMjBDNzAxQzU2RjNGNjAwMUNCMTEyIC8qIEhU
TUxEYXRhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzFEMUYyOTFDNTZFQ0EwMDBGNUY2QzAgLyogSFRNTERhdGFFbGVtZW50LmNwcCAq
LzsgfTsKIAkJODMxMjBDNzExQzU2RjNGQjAwMUNCMTEyIC8qIEhUTUxEYXRhRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0Qjg2QTcxQzU2
RTgzQTAwRjNGMEUzIC8qIEhUTUxEYXRhRWxlbWVudC5oICovOyB9OwogCQk4MzIxNTA3RTFGMjdF
QTFCMDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzIxNTA3QjFGMjdFQTE1MDA5NUIxMzYgLyogTmF2aWdh
dG9yQmVhY29uLmggKi87IH07CiAJCTgzMkI4NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmlt
YXRlRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2Uu
aCAqLzsgfTsKIAkJODMyQjg0MzYxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50
QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzJCODQzNTE5RDhFNTc0MDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCAqLzsg
fTsKKwkJODMyQkU1QkIxRkEwMzYwMjAwRTYyQTMxIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCRTVC
QTFGQTAzNUY2MDBFNjJBMzEgLyogU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCAqLzsgfTsKIAkJ
ODMzQjlFMzIxRjUwOEQ4NTAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCOUUyRjFG
NTA4RDgwMDBFMEU0MjggLyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCAqLzsgfTsKIAkJ
ODMzQjlFMzQxRjUwOEQ4NTAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbUVudHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCOUUyQTFGNTA4RDgwMDBF
MEU0MjggLyogSlNGaWxlU3lzdGVtRW50cnkuaCAqLzsgfTsKIAkJODMzQjlFMzYxRjUwOEQ4NTAw
RTBFNDI4IC8qIEpTRmlsZVN5c3RlbUZpbGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMzQjlFMkMxRjUwOEQ4MDAwRTBFNDI4IC8qIEpTRmls
ZVN5c3RlbUZpbGVFbnRyeS5oICovOyB9OwpAQCAtMjk5OSw2ICszMDAwLDcgQEAKIAkJODM3MkRC
MzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MkRCMzAxQTY3ODBB
ODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMw
NjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3
OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlB
MDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLzsgfTsKKwkJODM3QTI0NTgx
RkEwRUNDODAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBMjQ1NjFGQTBFQ0M1
MDBGQjE1RTIgLyogU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzdBODAxMzFFMUUxMjczMDAw
MjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBMb2Nh
bGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZDIC8q
IFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJs
ZUlPUy5tbSAqLzsgfTsKIAkJODM3RkIzNDQxRjlFQTA2RDAwRDBGQzMxIC8qIEV4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM3RkIzNDIxRjlFQTA2NzAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQu
Y3BwICovOyB9OwpAQCAtMTA3MzgsNiArMTA3NDAsOCBAQAogCQk4MzI5RENDMjFDN0E2QUUzMDA3
MzBCMzMgLyogSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnRC
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMkI4NDM1MTlEOEU1NzQwMEIy
NjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODMyQkU1QjgxRkEwMzVGNTAwRTYyQTMxIC8qIFNlcnZpY2VXb3JrZXJD
bGllbnRUeXBlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50
VHlwZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMkJFNUJBMUZBMDM1RjYw
MEU2MkEzMSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4MzNCOUUyQTFGNTA4RDgwMDBFMEU0MjggLyogSlNGaWxlU3lzdGVtRW50
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxlU3lzdGVtRW50cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMzQjlFMkIxRjUwOEQ4MDAwRTBFNDI4
IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMzQjlFMkMxRjUwOEQ4MDAwRTBFNDI4IC8qIEpTRmlsZVN5
c3RlbUZpbGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpbGVT
eXN0ZW1GaWxlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwODEwLDYg
KzEwODE0LDcgQEAKIAkJODM3NjVGOTMxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2
ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3VzZUV2ZW50SW5p
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThF
QTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW07IHBhdGggPSBNb2R1bGVz
L2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CisJCTgzN0EyNDU2MUZBMEVDQzUwMEZCMTVFMiAvKiBTZXJ2aWNlV29y
a2VyQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzdBODAxMjFFMUUxMjczMDAwMjZCOUYgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5nc2RpY3Q7
IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdz
ZGljdDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk4MzdCN0QxRjFEQzNGNTRDMDBE
MDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFZhbGlkYXRpb25CdWJibGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzN0RGQjM0MUVCRkVBNzAwMDYwMTM4NSAvKiBFbGVtZW50Q1NTSW5saW5l
U3R5bGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODE3OCw2ICsxODE4Myw3IEBACiAJ
CTUxN0M4NzA3MUY4RThGRjIwMEVCODA3NiAvKiBjb250ZXh0ICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4MzdBMjQ1NjFGQTBFQ0M1MDBGQjE1RTIgLyog
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAqLywKIAkJCQk0MTlBQ0Y5MDFGOTdFN0Q2
MDA5RjFBODMgLyogU2VydmljZVdvcmtlckZldGNoLmNwcCAqLywKIAkJCQk0MTlBQ0Y4RTFGOTdF
N0Q1MDA5RjFBODMgLyogU2VydmljZVdvcmtlckZldGNoLmggKi8sCiAJCQkJNTE3Qzg3MTExRjhF
RTcyRjAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwICovLApAQCAtMTgzMDIsNiAr
MTgzMDgsOCBAQAogCQkJCTQ2RUYxNDIxMUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50cy5jcHAgKi8sCiAJCQkJNDZFRjE0MjIxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VX
b3JrZXJDbGllbnRzLmggKi8sCiAJCQkJNDZFRjE0MjMxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZp
Y2VXb3JrZXJDbGllbnRzLmlkbCAqLywKKwkJCQk4MzJCRTVCQTFGQTAzNUY2MDBFNjJBMzEgLyog
U2VydmljZVdvcmtlckNsaWVudFR5cGUuaCAqLywKKwkJCQk4MzJCRTVCODFGQTAzNUY1MDBFNjJB
MzEgLyogU2VydmljZVdvcmtlckNsaWVudFR5cGUuaWRsICovLAogCQkJCTUxRjE3NTU4MUYzRUJD
MEMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCAqLywKIAkJCQk1MUYxNzU1
NzFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckNvbnRhaW5lci5oICovLAogCQkJCTUx
RjE3NTU2MUYzRUJDMEMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmlkbCAqLywK
QEAgLTI3NDQ4LDYgKzI3NDU2LDcgQEAKIAkJCQk2RTBFNTY5QzE4M0JGRkU2MDBFMEU4RDUgLyog
RmxvYXRSb3VuZGVkUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NkQwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0U2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNThDRDM1Q0IxOEVCNEMz
OTAwQjlGM0FDIC8qIEZsb2F0U2l6ZUhhc2guaCBpbiBIZWFkZXJzICovLAorCQkJCTgzN0EyNDU4
MUZBMEVDQzgwMEZCMTVFMiAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTQ5OTNCRTYwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDYyMjg3ODQwQjREQjMyMjAwMEMzNERGIC8qIEZvY3Vz
RGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNkQ5RDIzNTE0RUFCRDI2MDA5MEQ3NUUg
LyogRm9jdXNFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTU3MSw2ICsyOTU4MCw3IEBACiAJ
CQkJNTFGMTc1NUQxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ2RUYxNDJEMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkVGMTQyQzFGOTdCN0Q4MDBDMkE1MjQgLyogU2Vydmlj
ZVdvcmtlckNsaWVudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMkJFNUJCMUZBMDM2MDIwMEU2
MkEzMSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFG
MTc1NUYxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxQ0E3RUU5MUY4ODMzOTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUFDRjkyMUY5N0U3REEwMDlGMUE4MyAv
KiBTZXJ2aWNlV29ya2VyRmV0Y2guaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTZXJ2aWNlV29ya2VyQ2xpZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2VydmljZVdvcmtlckNsaWVudEN1c3RvbS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJkMTFhNDVjNTIwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTZXJ2aWNlV29ya2Vy
Q2xpZW50Q3VzdG9tLmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUgIkpTU2Vy
dmljZVdvcmtlckNsaWVudC5oIgorCisjaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudC5oIgorI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJXaW5kb3dDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBu
YW1lc3BhY2UgSlNDOworCitKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnQ+JiYg
Y2xpZW50KQoreworICAgIGlmIChpczxTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50PihjbGllbnQp
KQorICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50
PihnbG9iYWxPYmplY3QsIFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJuIGNyZWF0ZVdyYXBw
ZXI8U2VydmljZVdvcmtlckNsaWVudD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGNsaWVudCkpOwor
fQorCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU2VydmljZVdvcmtlckNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiB3
cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGNsaWVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyNWQ0YTVjZmQ0MC4u
ZDcyMmI3Y2RiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDM0LDkgKzQzNCwxNSBA
QCBzdGF0aWMgdm9pZCBwcmludE5hdmlnYXRpb25FcnJvck1lc3NhZ2UoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIGFjdGl2ZVVSTCwgY29ucwogCiB1aW50NjRfdCBEb2N1bWVudDo6c19nbG9iYWxU
cmVlVmVyc2lvbiA9IDA7CiAKLUhhc2hTZXQ8RG9jdW1lbnQqPiYgRG9jdW1lbnQ6OmFsbERvY3Vt
ZW50cygpCitzdGF0aWMgRG9jdW1lbnQ6OklkZW50aWZpZXIgZ2VuZXJhdGVEb2N1bWVudElkZW50
aWZpZXIoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PERvY3VtZW50Kj4+
IGRvY3VtZW50czsKKyAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7CisgICAgcmV0
dXJuICsraWRlbnRpZmllcjsKK30KKworYXV0byBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkgLT4g
SGFzaE1hcDxJZGVudGlmaWVyLCBEb2N1bWVudCo+JgoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoTWFwPElkZW50aWZpZXIsIERvY3VtZW50Kj4+IGRvY3VtZW50czsKICAgICByZXR1
cm4gZG9jdW1lbnRzOwogfQogCkBAIC00OTUsOCArNTAxLDkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3Nlcywg
dW5zaWcKICAgICAsIG1faXNTeW50aGVzaXplZChjb25zdHJ1Y3Rpb25GbGFncyAmIFN5bnRoZXNp
emVkKQogICAgICwgbV9pc05vblJlbmRlcmVkUGxhY2Vob2xkZXIoY29uc3RydWN0aW9uRmxhZ3Mg
JiBOb25SZW5kZXJlZFBsYWNlaG9sZGVyKQogICAgICwgbV9vcmllbnRhdGlvbk5vdGlmaWVyKGN1
cnJlbnRPcmllbnRhdGlvbihmcmFtZSkpCisgICAgLCBtX2lkZW50aWZpZXIoZ2VuZXJhdGVEb2N1
bWVudElkZW50aWZpZXIoKSkKIHsKLSAgICBhbGxEb2N1bWVudHMoKS5hZGQodGhpcyk7CisgICAg
YWxsRG9jdW1lbnRzKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CiAKICAgICAvLyBXZSBkZXBl
bmQgb24gdGhlIHVybCBnZXR0aW5nIGltbWVkaWF0ZWx5IHNldCBpbiBzdWJmcmFtZXMsIGJ1dCB3
ZQogICAgIC8vIGFsc28gZGVwZW5kIG9uIHRoZSB1cmwgTk9UIGdldHRpbmcgaW1tZWRpYXRlbHkg
c2V0IGluIG9wZW5lZCB3aW5kb3dzLgpAQCAtNTQ2LDcgKzU1Myw4IEBAIFJlZjxEb2N1bWVudD4g
RG9jdW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgY29udGV4dERvY3VtZW50KQogCiBEb2N1bWVudDo6
fkRvY3VtZW50KCkKIHsKLSAgICBhbGxEb2N1bWVudHMoKS5yZW1vdmUodGhpcyk7CisgICAgYm9v
bCB3YXNSZW1vdmVkID0gYWxsRG9jdW1lbnRzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAg
QVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsKIAogICAgIEFTU0VSVCghcmVu
ZGVyVmlldygpKTsKICAgICBBU1NFUlQobV9wYWdlQ2FjaGVTdGF0ZSAhPSBJblBhZ2VDYWNoZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDE2NzE3ZTgxM2RhLi41MzQ2MWNiN2UxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTM0Nyw3ICszNDcsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJl
bW92ZWRMYXN0UmVmKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxEb2N1
bWVudCo+JiBhbGxEb2N1bWVudHMoKTsKKyAgICB1c2luZyBJZGVudGlmaWVyID0gdWludDY0X3Q7
CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hNYXA8SWRlbnRpZmllciwgRG9jdW1l
bnQqPiYgYWxsRG9jdW1lbnRzKCk7CiAKICAgICBNZWRpYVF1ZXJ5TWF0Y2hlciYgbWVkaWFRdWVy
eU1hdGNoZXIoKTsKIApAQCAtMTgyNiw2ICsxODI4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
Z3JhbnRTdG9yYWdlQWNjZXNzT3ZlcnJpZGUgeyBmYWxzZSB9OwogCiAgICAgUmVmUHRyPERvY3Vt
ZW50VGltZWxpbmU+IG1fdGltZWxpbmU7CisgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9
OwogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVudCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggN2FiMDkyNDM0YmYuLjNjYjNk
ZGZiYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKQEAgLTY1LDcgKzY1
LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZU5vbmNyaXRpY2FsTWVtb3J5KCkKIAogICAgIGNsZWFy
V2lkdGhDYWNoZXMoKTsKIAotICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxs
RG9jdW1lbnRzKCkpCisgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1
bWVudHMoKS52YWx1ZXMoKSkKICAgICAgICAgZG9jdW1lbnQtPmNsZWFyU2VsZWN0b3JRdWVyeUNh
Y2hlKCk7CiAKICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucHJ1bmVEZWFkUmVzb3VyY2Vz
VG9TaXplKDApOwpAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlQ3JpdGljYWxN
ZW1vcnkoU3luY2hyb25vdXMgc3luY2hyb25vdXMpCiAKICAgICBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmRyYWluKCk7CiAKLSAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogY29weVRvVmVjdG9y
T2Y8UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSkgeworICAgIGZv
ciAoYXV0byYgZG9jdW1lbnQgOiBjb3B5VG9WZWN0b3JPZjxSZWZQdHI8RG9jdW1lbnQ+PihEb2N1
bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpKSB7CiAgICAgICAgIGRvY3VtZW50LT5zdHls
ZVNjb3BlKCkuY2xlYXJSZXNvbHZlcigpOwogICAgICAgICBkb2N1bWVudC0+Zm9udFNlbGVjdG9y
KCkuZW1wdHlDYWNoZXMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IDUwMTZhMDZlMjA0Li44MmM0ZTU3NjRlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE5NDUsNyArMTk0NSw3IEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpyZW1vdmVSYXJlRGF0YSgpCiAKIHZvaWQgcHJpbnRSZW5kZXJUcmVlRm9y
TGl2ZURvY3VtZW50cygpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3Vt
ZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBE
b2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKCFkb2N1bWVu
dC0+cmVuZGVyVmlldygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChkb2N1
bWVudC0+ZnJhbWUoKSAmJiBkb2N1bWVudC0+ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkKQEAgLTE5
NTcsNyArMTk1Nyw3IEBAIHZvaWQgcHJpbnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cygpCiAK
IHZvaWQgcHJpbnRMYXllclRyZWVGb3JMaXZlRG9jdW1lbnRzKCkKIHsKLSAgICBmb3IgKGNvbnN0
IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgZm9yIChj
b25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkg
ewogICAgICAgICBpZiAoIWRvY3VtZW50LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgaWYgKGRvY3VtZW50LT5mcmFtZSgpICYmIGRvY3VtZW50LT5mcmFtZSgp
LT5pc01haW5GcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dENvdmVyYWdlLmNwcAppbmRleCBhOTE2MDQ1ZTRiYS4uZjA3ZDRjMWI0N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292
ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
Q292ZXJhZ2UuY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdE5vbkVt
cHR5TGVhZlJlbmRlckJsb2NrRmxvd3MoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgSGEK
IAogc3RhdGljIHZvaWQgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3NGb3JDdXJy
ZW50UGFnZShIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrRmxvdyo+JiBsZWFmUmVuZGVyZXJzKQog
ewotICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRz
KCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3Vt
ZW50cygpLnZhbHVlcygpKSB7CiAgICAgICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSB8
fCBkb2N1bWVudC0+cGFnZUNhY2hlU3RhdGUoKSAhPSBEb2N1bWVudDo6Tm90SW5QYWdlQ2FjaGUp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFkb2N1bWVudC0+aXNIVE1MRG9j
dW1lbnQoKSAmJiAhZG9jdW1lbnQtPmlzWEhUTUxEb2N1bWVudCgpKQpAQCAtMjc5LDcgKzI3OSw3
IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzRm9yQ3Vy
cmVudFBhZ2UoSGFzaFNldDxjb25zdCBSZW5kCiAKIHZvaWQgdG9nZ2xlU2ltcGxlTGluZUxheW91
dCgpCiB7Ci0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMo
KSkgeworICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCku
dmFsdWVzKCkpIHsKICAgICAgICAgYXV0byYgc2V0dGluZ3MgPSBkb2N1bWVudC0+bXV0YWJsZVNl
dHRpbmdzKCk7CiAgICAgICAgIHNldHRpbmdzLnNldFNpbXBsZUxpbmVMYXlvdXRFbmFibGVkKCFz
ZXR0aW5ncy5zaW1wbGVMaW5lTGF5b3V0RW5hYmxlZCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggNWExMTgxZTc5MjAuLjM5YWM4Yjg1YjljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMTU0LDcgKzIxNTQsNyBAQCBFeGNlcHRp
b25Pcjx1bnNpZ25lZD4gSW50ZXJuYWxzOjpjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgVmVjdAogdW5zaWduZWQgSW50ZXJuYWxzOjpudW1iZXJPZkxpdmVOb2Rlcygp
IGNvbnN0CiB7CiAgICAgdW5zaWduZWQgbm9kZUNvdW50ID0gMDsKLSAgICBmb3IgKGF1dG8qIGRv
Y3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKQorICAgIGZvciAoYXV0byogZG9jdW1l
bnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpCiAgICAgICAgIG5vZGVDb3Vu
dCArPSBkb2N1bWVudC0+cmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKICAgICByZXR1cm4gbm9kZUNv
dW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXIuY3BwCmluZGV4IDE3OTY0ZWFkNjA0Li4wY2Y5YTgxNjQyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcApAQCAtNjksNyArNjksNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBTZXJ2aWNlV29ya2VyOjpwb3N0TWVzc2FnZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBKUwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90
U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUGFzc2luZyBNZXNzYWdlUG9ydCBvYmplY3Rz
IHRvIHBvc3RNZXNzYWdlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIikgfTsKIAogICAgIGF1dG8mIHN3
Q29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdv
cmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKGNvbnRleHQuc2Vzc2lvbklEKCkpOwotICAgIHN3Q29u
bmVjdGlvbi5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKG1faWRlbnRpZmll
ciwgbWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dC5vcmlnaW4oKSk7CisgICAg
c3dDb25uZWN0aW9uLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUobV9pZGVu
dGlmaWVyLCBtZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0KTsKIAogICAgIHJl
dHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5jcHAKaW5kZXggODI1YmM5MGRiNzkuLjE2OTA1YThhYjkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnQuY3BwCkBAIC0yOCwyMiArMjgsMjMgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudC5oIgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCIKIAotU2VydmljZVdvcmtlckNsaWVudDo6
U2VydmljZVdvcmtlckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotICAg
IDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQotewotICAgIHN1c3BlbmRJZk5lZWRlZCgpOwot
fQorbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBTZXJ2aWNlV29ya2VyQ2xpZW50
OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK1NlcnZpY2VXb3JrZXJDbGllbnQ6OlNlcnZp
Y2VXb3JrZXJDbGllbnQoUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgdWludDY0X3QgaWRlbnRpZmllciwgVHlwZSB0eXBlKQorICAg
IDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmNvbnRleHQpCisgICAgLCBtX2Nvbm5lY3Rp
b24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQor
ICAgICwgbV90eXBlKHR5cGUpCiB7Ci0gICAgcmV0dXJuICJTZXJ2aWNlV29ya2VyQ2xpZW50IjsK
IH0KIAotYm9vbCBTZXJ2aWNlV29ya2VyQ2xpZW50OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNw
ZW5zaW9uKCkgY29uc3QKK1NlcnZpY2VXb3JrZXJDbGllbnQ6On5TZXJ2aWNlV29ya2VyQ2xpZW50
KCkKIHsKLSAgICByZXR1cm4gIWhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiBTdHJpbmcgU2Vy
dmljZVdvcmtlckNsaWVudDo6dXJsKCkgY29uc3QKQEAgLTUxLDIxICs1MiwzNSBAQCBTdHJpbmcg
U2VydmljZVdvcmtlckNsaWVudDo6dXJsKCkgY29uc3QKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIFNlcnZpY2VXb3JrZXJDbGllbnQ6OmZyYW1lVHlwZSgpIGNvbnN0IC0+IEZyYW1lVHlwZQot
ewotICAgIHJldHVybiBGcmFtZVR5cGU6Ok5vbmU7Ci19Ci0KIFN0cmluZyBTZXJ2aWNlV29ya2Vy
Q2xpZW50OjppZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gU3RyaW5n
OjpudW1iZXIobV9pZGVudGlmaWVyKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gU2VydmljZVdv
cmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgbWVz
c2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQorRXhj
ZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwgVmVjdG9y
PEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQogewotICAgIFVOVVNFRF9Q
QVJBTShtZXNzYWdlKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNmZXIpOwotICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJjbGllbnQucG9zdE1l
c3NhZ2UoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH07CisgICAgYXV0byogZXhlY1N0YXRlID0g
Y29udGV4dC5leGVjU3RhdGUoKTsKKyAgICBBU1NFUlQoZXhlY1N0YXRlKTsKKworICAgIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAgICBhdXRvIG1lc3NhZ2UgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZXhlY1N0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUo
dHJhbnNmZXIpLCBwb3J0cywgU2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdl
KTsKKyAgICBpZiAobWVzc2FnZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG1lc3Nh
Z2UucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgLy8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4g
cHJlcGFyYXRpb24gZm9yIHNlbmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBjb250ZXh0LgorICAgIGF1
dG8gY2hhbm5lbHNPckV4Y2VwdGlvbiA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKFdU
Rk1vdmUocG9ydHMpKTsKKyAgICBpZiAoY2hhbm5lbHNPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIGNoYW5uZWxzT3JFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigp
OworCisgICAgLy8gRklYTUU6IFN1cHBvcnQgc2VuZGluZyB0aGUgY2hhbm5lbHMuCisgICAgYXV0
byBjaGFubmVscyA9IGNoYW5uZWxzT3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7Cisg
ICAgaWYgKGNoYW5uZWxzICYmICFjaGFubmVscy0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUGFzc2luZyBNZXNz
YWdlUG9ydCBvYmplY3RzIHRvIHBvc3RNZXNzYWdlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIikgfTsK
KworICAgIC8vIEZJWE1FOiBTaG91bGQgbGlrZWx5IHBhc3MgdGhlIHNvdXJjZSBvcmlnaW4uCisg
ICAgbV9jb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChtZXNzYWdl
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKworICAgIHJldHVybiB7IH07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5oCmluZGV4IGYzOGU2MDJmZjQ1Li5mYmVmMzBiZGFiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudC5oCkBAIC0yNywzOSArMjcsNDUgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
IAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkNvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyQ2xpZW50VHlwZS5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7
CiBjbGFzcyBKU1ZhbHVlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNlcnZp
Y2VXb3JrZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyQ2xpZW50Piwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Citj
bGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjsKKworY2xhc3MgU2VydmljZVdvcmtl
ckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnQ+LCBwdWJsaWMg
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIGVudW0gY2xhc3MgRnJh
bWVUeXBlIHsKLSAgICAgICAgQXV4aWxpYXJ5LAotICAgICAgICBUb3BMZXZlbCwKLSAgICAgICAg
TmVzdGVkLAotICAgICAgICBOb25lCi0gICAgfTsKKyAgICB1c2luZyBDb25uZWN0aW9uID0gU2Vy
dmljZVdvcmtlckNsaWVudENvbm5lY3Rpb247CisKKyAgICB1c2luZyBUeXBlID0gU2VydmljZVdv
cmtlckNsaWVudFR5cGU7CisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50PiBjcmVh
dGUoUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgdWludDY0X3QgaWRlbnRpZmllciwgVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckNsaWVudChXVEZNb3ZlKGNvbm5lY3Rp
b24pLCBjb250ZXh0LCBpZGVudGlmaWVyLCB0eXBlKSk7CisgICAgfQorCisgICAgflNlcnZpY2VX
b3JrZXJDbGllbnQoKTsKIAogICAgIFN0cmluZyB1cmwoKSBjb25zdDsKLSAgICBGcmFtZVR5cGUg
ZnJhbWVUeXBlKCkgY29uc3Q7CisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9CiAgICAgU3RyaW5nIGlkKCkgY29uc3Q7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0
TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBWZWN0b3I8SlND
OjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpOworICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHBvc3RNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBKU0M6OkpTVmFsdWUgbWVz
c2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKTsKIAog
cHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOworICAgIFNlcnZpY2VXb3JrZXJDbGllbnQoUmVmPENvbm5lY3Rpb24+JiYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBUeXBlKTsKIAot
ICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KLSAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5z
aW9uKCkgY29uc3QgZmluYWw7CisgICAgUmVmPENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAg
ICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CisgICAgVHlwZSBtX3R5cGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwKaW5kZXggNTNmZGQwODQ4NWQuLjRlZjJjYjE1MjE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnQuaWRsCkBAIC0yNSwyMCArMjUsMjEgQEAKIAogWwogICAgIENvbmRpdGlvbmFs
PVNFUlZJQ0VfV09SS0VSLAorICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRW5hYmxlZEF0UnVu
dGltZT1TZXJ2aWNlV29ya2VyLAogICAgIEV4cG9zZWQ9U2VydmljZVdvcmtlciwKICAgICBJbnRl
cmZhY2VOYW1lPUNsaWVudCwKIF0gaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJDbGllbnQgewogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgdXJsOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBGcmFtZVR5cGUgZnJhbWVUeXBlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDbGllbnRUeXBl
IHR5cGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKIAotICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55
IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CisgICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSB2b2lk
IHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5z
ZmVyID0gW10pOwogfTsKIAotZW51bSBGcmFtZVR5cGUgewotICAiYXV4aWxpYXJ5IiwKLSAgInRv
cC1sZXZlbCIsCi0gICJuZXN0ZWQiLAotICAibm9uZSIKK2VudW0gQ2xpZW50VHlwZSB7CisgICJ3
aW5kb3ciLAorICAid29ya2VyIiwKKyAgInNoYXJlZHdvcmtlciIsCisgICJhbGwiCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDA2OWFh
NTlkMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudFR5cGUuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworZW51bSBjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZSB7CisgICAgV2lu
ZG93LAorICAgIFdvcmtlciwKKyAgICBTaGFyZWR3b3JrZXIsCisgICAgQWxsCit9OworCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnRUeXBlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjc1MTc2NzgwZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmlkbApAQCAtMCwwICsxLDMz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSLAorXSBl
bnVtIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHsKKyAgICAid2luZG93IiwKKyAgICAid29ya2Vy
IiwKKyAgICAic2hhcmVkd29ya2VyIiwKKyAgICAiYWxsIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmgKaW5kZXggM2Vl
NGY0NmU2M2IuLjc0YmJiN2YwNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaApAQCAtMjgsNiArMjgsNyBAQAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQyLDE2ICs0Myw5IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckNsaWVudHMoY29u
dGV4dCkpOwogICAgIH0KIAotICAgIGVudW0gY2xhc3MgQ2xpZW50VHlwZSB7Ci0gICAgICAgIFdp
bmRvdywKLSAgICAgICAgV29ya2VyLAotICAgICAgICBTaGFyZWR3b3JrZXIsCi0gICAgICAgIEFs
bAotICAgIH07Ci0KICAgICBzdHJ1Y3QgQ2xpZW50UXVlcnlPcHRpb25zIHsKICAgICAgICAgYm9v
bCBpbmNsdWRlVW5jb250cm9sbGVkIHsgZmFsc2UgfTsKLSAgICAgICAgQ2xpZW50VHlwZSB0eXBl
IHsgQ2xpZW50VHlwZTo6V2luZG93IH07CisgICAgICAgIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBl
IHR5cGUgeyBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93IH07CiAgICAgfTsKIAogICAg
IHZvaWQgZ2V0KGNvbnN0IFN0cmluZyYgaWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnRzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50cy5pZGwKaW5kZXggMmI5NzBmNDhlMGQuLjdkNGM1NzA0ZWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5pZGwK
QEAgLTM4LDEyICszOCw1IEBACiAKIGRpY3Rpb25hcnkgQ2xpZW50UXVlcnlPcHRpb25zIHsKICAg
ICBib29sZWFuIGluY2x1ZGVVbmNvbnRyb2xsZWQgPSBmYWxzZTsKLSAgICBDbGllbnRUeXBlIHR5
cGUgPSAid2luZG93IjsKLX07Ci0KLWVudW0gQ2xpZW50VHlwZSB7Ci0gICAgIndpbmRvdyIsCi0g
ICAgIndvcmtlciIsCi0gICAgInNoYXJlZHdvcmtlciIsCi0gICAgImFsbCIKKyAgICBTZXJ2aWNl
V29ya2VyQ2xpZW50VHlwZSB0eXBlID0gIndpbmRvdyI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQu
Y3BwCmluZGV4IDVjNzhiNzhkNDA2Li41MmU4NjZjYmNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50
LmNwcApAQCAtMzIsOCArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VX
b3JrZXJXaW5kb3dDbGllbnQ6OlNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKLSAgICA6IFNlcnZpY2VXb3JrZXJDbGllbnQoY29udGV4dCkK
K1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6OlNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoUmVm
PENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICA6IFNlcnZpY2VXb3JrZXJDbGllbnQoV1RGTW92
ZShjb25uZWN0aW9uKSwgY29udGV4dCwgaWRlbnRpZmllciwgVHlwZTo6V2luZG93KQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
cldpbmRvd0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJXaW5kb3dDbGllbnQuaAppbmRleCA2YmI3N2Q3Y2FiNy4uY2I2ZTcwYjdmOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQuaApAQCAtMzYsOSArMzYsOSBAQCBjbGFzcyBEZWZlcnJlZFByb21pc2U7
CiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQgZmluYWwgOiBwdWJsaWMgU2Vydmlj
ZVdvcmtlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyV2lu
ZG93Q2xpZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKKyAgICBz
dGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ+IGNyZWF0ZShSZWY8Q29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1aW50NjRf
dCBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudChjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoV1RGTW92ZShjb25uZWN0aW9uKSwgY29udGV4
dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIFZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5
U3RhdGUoKSBjb25zdDsKQEAgLTQ4LDkgKzQ4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIG5hdmln
YXRlKGNvbnN0IFN0cmluZyYgdXJsLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKTsKKyAgICBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFJlZjxDb25uZWN0aW9u
PiYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdWludDY0X3QgaWRlbnRpZmllcik7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6U2VydmljZVdvcmtlcldpbmRvd0NsaWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudCYgY2xpZW50KSB7IHJldHVybiBj
bGllbnQudHlwZSgpID09IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXaW5kb3c7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44OWNkMmNiZjg5ZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKK2Ns
YXNzIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uPiB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24oKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChSZWY8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiYmIG1lc3NhZ2UpID0gMDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwCmluZGV4IDc0MWJlYTMzZGExLi5kZTdkMjI4NjdkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAKQEAgLTMyLDggKzMyLDEwIEBACiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kYWJsZU1lc3Nh
Z2VFdmVudC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2gu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIK
ICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KQEAgLTEwMCwxMiArMTAyLDEzIEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cG9zdEZl
dGNoVGFzayhSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50CiAgICAgfSwg
V29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclRo
cmVhZDo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4mJiBjaGFubmVscywgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWQ6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUo
UmVmPFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uPiYmIGNsaWVudENvbm5lY3Rpb24sIFJl
ZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5PiYmIGNoYW5uZWxzLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrIHRhc2soW2NoYW5uZWxzID0gV1RGTW92ZShjaGFubmVscyksIG1lc3NhZ2UgPSBX
VEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4gPSBzb3VyY2VPcmlnaW4uaXNvbGF0ZWRDb3B5
KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soW2NsaWVudENvbm5lY3Rpb24gPSBXVEZNb3Zl
KGNsaWVudENvbm5lY3Rpb24pLCBjaGFubmVscyA9IFdURk1vdmUoY2hhbm5lbHMpLCBtZXNzYWdl
ID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luID0gc291
cmNlT3JpZ2luLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRv
d25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgIGF1dG8g
cG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUsIFdURk1vdmUoY2hhbm5lbHMpKTsKLSAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmRpc3BhdGNoRXZlbnQoRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9y
dHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4pKTsKKyAgICAgICAgRXh0ZW5kYWJs
ZU1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2UgPSBSZWZQdHI8U2VydmljZVdvcmtlckNsaWVudD4g
eyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50OjpjcmVhdGUoV1RGTW92ZShjbGllbnRDb25uZWN0
aW9uKSwgY29udGV4dCwgc291cmNlSWRlbnRpZmllcikgfTsKKyAgICAgICAgc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6Y3JlYXRl
KFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4sIHsgfSwgV1RG
TW92ZShzb3VyY2UpKSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS50aHJlYWQo
KS53b3JrZXJPYmplY3RQcm94eSgpLmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChzZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogICAgIH0pOwogICAg
IHJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
aAppbmRleCBkNTU5MjM5ZDAwOC4uNTc4ODljNDkzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CiBjbGFzcyBD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7CiBjbGFzcyBNZXNzYWdlUG9ydENo
YW5uZWw7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CitjbGFzcyBTZXJ2aWNlV29ya2Vy
Q2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFdvcmtlck9iamVjdFByb3h5Owogc3RydWN0IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTsKIApAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgV29y
a2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3Jr
ZXJPYmplY3RQcm94eTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0RmV0Y2hUYXNr
KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIEZl
dGNoT3B0aW9ucyYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUoUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgc3RkOjp1
bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYmLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZU9yaWdpbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbj4mJiwgUmVm
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5PiYmLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbik7CiAKIHByb3RlY3RlZDoKICAgICBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IGNy
ZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBNb25vdG9uaWNUaW1lIHRp
bWVPcmlnaW4sIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4
IDQyMjJiNTljNmEzLi4yZWJlMTdlMjUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC00OSw3
ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2Im
KTsKICAgICB2b2lkIGZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtl
ckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc291cmNlKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNw
cAppbmRleCBjNGI2Y2VhMzZmNS4uMmI5MTE5YmEzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xMDAsOSArMTAwLDkgQEAgdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBz
ZXJ2aWMKICAgICBzZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6U2VydmljZVdvcmtlckNv
bnRleHRNYW5hZ2VyOjpTdGFydEZldGNoKGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucykpOwogfQogCi12b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2
NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1l
c3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKQogewotICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
Q29udGV4dE1hbmFnZXI6OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoaWRl
bnRpZmllcigpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlT3JpZ2lu
KSk7CisgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDb250
ZXh0TWFuYWdlcjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShpZGVudGlm
aWVyKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVy
LCBzb3VyY2VPcmlnaW4pKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmRpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgK
aW5kZXggM2E1NzIwYmVlNzEuLmJiMzQxMTliNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0
RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6
RmV0Y2hPcHRpb25zJik7CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZv
aWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50
NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAKICAg
ICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgY29udGV4dCBXZWJQcm9jZXNzCiAgICAgdm9pZCBzdGFy
dFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KaW5kZXggM2IyMDQ1YzY0NDQuLjU5ZjdlODI1NTE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI4LDcgKzI4
LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIHsKICAgICBGaW5pc2hGZXRj
aGluZ1NjcmlwdEluU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQgcmVzdWx0KQogCiAgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBpZGVudGlmaWVyLCB1aW50NjRf
dCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKLSAgICBQb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKKyAg
ICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgdWludDY0X3Qgc291
cmNlSWRlbnRpZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikKIH0KIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDgxZGQwODM0ZjM3Li42YTZiZTEzZGNhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzc1LDYgKzEz
NzUsOCBAQAogCQk4MzJFRDE4QzFFMkZFMTU3MDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQ
VVVzYWdlU2FtcGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODMyRUQxOEExRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2Fn
ZVNhbXBsZXIuaCAqLzsgfTsKIAkJODM0QjI1MEYxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtD
YWNoZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzNEIyNTBFMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmggKi87IH07CiAJCTgzNEIyNTEyMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0
aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzRCMjUxMDFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovOyB9
OworCQk4MzU3MzFDMTFGQTBGMEY4MDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNsaWVudENv
bm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODM1NzMxQzAxRkEwRjBFRDAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25u
ZWN0aW9uLmNwcCAqLzsgfTsKKwkJODM1NzMxQzIxRkEwRjBGODAwODVGNEQzIC8qIFdlYlNlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzU3MzFCRjFGQTBGMEVDMDA4NUY0RDMgLyogV2ViU2VydmljZVdv
cmtlckNsaWVudENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJODM2MDM0OUYxQUNCMzRENjAwNjI2NTQ5
IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLzsgfTsKIAkJODM2MDM0QTAxQUNCMzRENjAwNjI2NTQ5
IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM2MDM0OUUxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlci5oICovOyB9OwogCQk4MzZFRUI4MDFCRTlFQzlFMDA2QjRCODIgLyog
TmV0d29ya0xvYWRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzZFRUI3RjFCRTlFQzlFMDA2QjRCODIgLyogTmV0d29ya0xvYWRNYWMubW0gKi87
IH07CkBAIC0zNzE5LDcgKzM3MjEsNyBAQAogCQk3Q0RFNzNBMDFGOURBMzdCMDAzOTAzMTIgLyog
V2ViUHJlZmVyZW5jZXNEZWZpbml0aW9uc0Jhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9uc0Jhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0NERTczQTExRjlEQTQxNDAwMzkwMzEyIC8qIEdlbmVyYXRlUHJlZmVy
ZW5jZXMucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gR2VuZXJhdGVQcmVm
ZXJlbmNlcy5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0NERTczQTIxRjlEQTU5
NzAwMzkwMzEyIC8qIFByZWZlcmVuY2VzVGVtcGxhdGVzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gUHJlZmVyZW5jZXNUZW1w
bGF0ZXM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDREU3M0EzMUY5REFCNjUwMDM5
MDMxMiAvKiBXZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlBy
ZWZlcmVuY2VzRGVmaW5pdGlvbnMuaDsgcGF0aCA9IFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0NERTczQTMxRjlEQUI2NTAwMzkwMzEy
IC8qIFdlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJlZmVy
ZW5jZXNEZWZpbml0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0U0RDIw
NjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0NFNEQyMTUxQTQ5MTQ4NDAwQzdGMTUyIC8qIFdlYlByb2Nlc3NQ
b29sQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQ
cm9jZXNzUG9vbENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0U0RDIx
NzFBNDkxNEEzMDBDN0YxNTIgLyogV2ViUHJvY2Vzc1Bvb2wuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUHJvY2Vzc1Bvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzc1Myw2ICszNzU1LDkgQEAKIAkJODMyRUQxOEExRTJGRTEzQjAwNkJB
NjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUwRTFBODMxQThEMDBDRkIxNTAgLyogTmV0
d29ya0NhY2hlRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
NEIyNTEwMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM1NzMxQkUxRkEwRjBFQzAwODVGNEQzIC8qIFNl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgzNTczMUJGMUZBMEYwRUMwMDg1RjREMyAvKiBXZWJTZXJ2aWNl
V29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4MzU3MzFDMDFGQTBGMEVEMDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNs
aWVudENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VU
cmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNjAz
NDlFMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNkVFQjdGMUJFOUVDOUUwMDZCNEI4MiAvKiBO
ZXR3b3JrTG9hZE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE5ldHdvcmtMb2FkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIwMCw2
ICs2MjA1LDkgQEAKIAkJCQk0MTMxRjNDRjFGOTZBOTM2MDA1OTk5NUEgLyogU2VydmljZVdvcmtl
ckNsaWVudEZldGNoLm1lc3NhZ2VzLmluICovLAogCQkJCTQxMzFGM0QzMUY5NkU5MzEwMDU5OTk1
QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovLAogCQkJCTQxMzFGM0QyMUY5
NkU5MzAwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLywKKwkJCQk4
MzU3MzFCRTFGQTBGMEVDMDA4NUY0RDMgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLm1l
c3NhZ2VzLmluICovLAorCQkJCTgzNTczMUMwMUZBMEYwRUQwMDg1RjREMyAvKiBXZWJTZXJ2aWNl
V29ya2VyQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJODM1NzMxQkYxRkEwRjBFQzAwODVG
NEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggKi8sCiAJCQkJNDEzMUYz
RTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3Bw
ICovLAogCQkJCTQxOUFDRjlCMUY5ODFEMjYwMDlGMUE4MyAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNl
cnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCkBAIC04OTY5LDYgKzg5NzcsNyBAQAogCQkJCUZF
REJEQ0Q3MUU2OEQyMDUwMEE1OUY4RiAvKiBXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyQTM2MTI3Nzg1MjQwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI4MzQxMjc1
RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk4
MzU3MzFDMjFGQTBGMEY4MDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQThCOTQ2MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJ
bnNwZWN0b3JQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzg5MUQ2NjE5QjEy
NEZGMDBCQTc5REQgLyogV2ViSW5zcGVjdG9yVUkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQkJF
NEExMTlCNjZDNTMwMDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEwODE3LDYgKzEwODI2LDcgQEAKIAkJCQlFMUFFQTIzMDE0Njg3QkRCMDA4MDQ1
NjkgLyogV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RDQTg1QzgxMzJBQkE0RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzU0Q0MxMzEyRDY3NEVFMDA1QzY3QjAgLyogV0tHZW9s
b2NhdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODM1NzMxQzExRkEwRjBGODAw
ODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDMDZGNDRGMTJEQkRGM0YwMDJENzhERSAvKiBXS0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTYxOTkxMkQ2Q0QxMjAwMTJB
NzJBIC8qIFdLR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkNC
NEU1MDE4QkJFMDQ0MDAwRkNGQzkgLyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9T
ZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcAppbmRleCA4Y2MwZjg5M2U5
MC4uZGM5ZmUzN2FiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgogI2luY2x1ZGUgIldl
YlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAi
V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydENo
YW5uZWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgpAQCAtODYsMTQg
Kzg3LDE2IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdGFydEZldGNoKHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyCiAgICAgc2VydmljZVdvcmtlci0+dGhy
ZWFkKCkucG9zdEZldGNoVGFzayhXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUocmVxdWVzdCksIFdU
Rk1vdmUob3B0aW9ucykpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
Cit2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWlu
dDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
bWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4pCiB7CiAgICAgYXV0byogc2VydmljZVdvcmtlciA9IG1fd29ya2VyTWFwLmdldChzZXJ2
aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBhdXRvIGNsaWVudENvbm5lY3Rpb24gPSBXZWJTZXJ2aWNlV29ya2VyQ2xp
ZW50Q29ubmVjdGlvbjo6Y3JlYXRlKG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MuY29weVJl
ZigpLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc291cmNlSWRlbnRpZmllcik7CisKICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgdmFsaWQgTWVzc2FnZVBvcnRDaGFubmVscy4KLSAg
ICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0b3IoKSksIG51
bGxwdHIsIHNvdXJjZU9yaWdpbik7CisgICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShXVEZNb3ZlKGNsaWVudENvbm5lY3Rpb24p
LCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KG1lc3NhZ2UudmVjdG9yKCkpLCBudWxscHRy
LCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oCmluZGV4IDcwMGUwYTc5YWEzLi40YmIx
N2Q0NjFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2Vy
dmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgKQEAgLTUyLDcgKzUyLDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEmKTsKICAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9wdGlv
bnMmJik7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdl
LCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7
CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNz
OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk+PiBtX3dvcmtlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdl
ci5tZXNzYWdlcy5pbgppbmRleCA4NjY2M2Y4MWU3Yy4uOWY5NjRmYzgyYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFu
YWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9T
ZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAK
IG1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlciB7CiAgICAgU3RhcnRTZXJ2
aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHREYXRhKQogICAgIFN0YXJ0RmV0
Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9wdGlvbnMp
Ci0gICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRh
dGFSZWZlcmVuY2UgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgU3RyaW5nIHNv
dXJjZU9yaWdpbikKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCAzMDg2ZWE0
ZmMwZS4uOGNhZGZiZjMyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzUsNiArMzUsOCBA
QAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlNXT3Jp
Z2luVGFibGUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoUmVzdWx0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oPgpAQCAtNjgsOSArNzAsMTMgQEAg
dm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIo
Y29uc3QgU2VydmljZVdvcmtlckZldGMKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OkZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIocmVzdWx0KSk7CiB9CiAKLXZv
aWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmIHNjcmlwdFZhbHVlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3Zv
aWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmIHNjcmlwdFZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzb3VyY2Up
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpQb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6
OkRhdGFSZWZlcmVuY2UgeyBzY3JpcHRWYWx1ZS0+ZGF0YSgpIH0sIHNvdXJjZU9yaWdpbikpOwor
ICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgcG9zdGluZyBtZXNzYWdlcyBmcm9tIHdvcmtl
cnMuCisgICAgaWYgKCFpczxEb2N1bWVudD4oc291cmNlKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFS
ZWZlcmVuY2UgeyBzY3JpcHRWYWx1ZS0+ZGF0YSgpIH0sIGRvd25jYXN0PERvY3VtZW50Pihzb3Vy
Y2UpLmlkZW50aWZpZXIoKSwgc291cmNlLm9yaWdpbigpKSk7CiB9CiAKIGJvb2wgV2ViU1dDbGll
bnRDb25uZWN0aW9uOjpoYXNTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAxY2QyOTI5
OWUzZi4uMjhiMzZmZTcyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC01Niw3ICs1Niw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJ
blNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsK
LSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNvdXJjZSkgZmluYWw7CiAKICAgICB2b2lkIGRpc2Nv
bm5lY3RlZEZyb21XZWJQcm9jZXNzKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJD
bGllbnRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uOTA1ZTIxZjEyZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCAr
MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKyNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlv
bi5oIgorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworV2Vi
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb246OldlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25u
ZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIpCisgICAgOiBt
X2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgLCBtX2NsaWVudElk
ZW50aWZpZXIoY2xpZW50SWRlbnRpZmllcikKK3sKK30KKworV2ViU2VydmljZVdvcmtlckNsaWVu
dENvbm5lY3Rpb246On5XZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbigpCit7CisgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9uID0gV1RGTW92ZShtX2Nvbm5lY3Rp
b24pXSB7IH0pOworfQorCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uOjpw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYmIG1lc3NhZ2UpCit7CisgICAgVU5VU0VEX1BBUkFNKG1lc3NhZ2UpOworICAgIFVOVVNFRF9Q
QVJBTShtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICBVTlVTRURfUEFSQU0obV9j
bGllbnRJZGVudGlmaWVyKTsKKworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJDbGllbnRD
b25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM4YzAx
MDY2OTFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDYxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisK
KyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29u
bmVjdGlvbiBmaW5hbDogcHVibGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0
aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25u
ZWN0aW9uPiBjcmVhdGUoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCB1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgY2xpZW50SWRlbnRpZmllcikK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNlcnZpY2VXb3JrZXJDbGll
bnRDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbiksIHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjbGllbnRJZGVudGlmaWVyKSk7CisgICAgfQorCisgICAgfldlYlNlcnZpY2VXb3JrZXJD
bGllbnRDb25uZWN0aW9uKCk7CisKKyAgICAvLyBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
Q29ubmVjdGlvbi4KKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFJl
ZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSkgZmluYWw7CisKK3By
aXZhdGU6CisgICAgV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24oUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiwgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IGNsaWVudElkZW50aWZpZXIpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOworICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgdWlu
dDY0X3QgbV9jbGllbnRJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324889</attachid>
            <date>2017-10-25 13:56:27 -0700</date>
            <delta_ts>2017-10-25 14:51:59 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>178794_SW_Client_postMessage_wip.patch</filename>
            <type>text/plain</type>
            <size>66617</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGY2MjM3YTA1MjA1Li5jYTY3MmM1ZDQz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC05MjcsNiArOTI3LDcgQEAgSlNf
QklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL0ZldGNoRXZl
bnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmlk
bCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5p
ZGwgXAorICAgICQoV2ViQ29yZSkvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRU
eXBlLmlkbCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuaWRsIFwKICAgICAkKFdlYkNvcmUpL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmlkbCBcCiAgICAgJChXZWJDb3JlKS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmlkbCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDAzMTNiOTBkNjE1Li41NzRm
ZGE0ZDZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQwMyw2ICs0MDMsNyBAQCBiaW5kaW5ncy9qcy9K
U1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKIGJpbmRpbmdzL2pzL0pTUmVh
ZGFibGVTdHJlYW1Tb3VyY2VDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1NWR1BhdGhTZWdDdXN0
b20uY3BwCiBiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCitiaW5kaW5ncy9qcy9K
U1NlcnZpY2VXb3JrZXJDbGllbnRDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU1RleHRDdXN0b20u
Y3BwCiBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pT
VGV4dFRyYWNrQ3VzdG9tLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk2MTA2NTg5YmQ1Li44ZTczOGI4NTI1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
Mjg5NywxMiArMjg5NywxMyBAQAogCQk4MzA1MTk5NjFCQjBGMTEwMDBGMzc3MkUgLyogSFRNTFRp
bWVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzA1MTk5MzFCQjBGMEU3MDBGMzc3MkUgLyogSFRNTFRpbWVFbGVtZW50LmggKi87IH07CiAJ
CTgzMDc4NEIyMUM1MkVFMkMwMDEwNEQxRCAvKiBYTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwNzg0QjExQzUyRUUxOTAwMTA0RDFE
IC8qIFhNTERvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODMwQTM2QkQxREFDNUZBRDAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEEzNkJC
MURBQzVGQTcwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJbml0LmggKi87IH07Ci0JCTgzMTIwQzcw
MUM1NkYzRjYwMDFDQjExMiAvKiBIVE1MRGF0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxRDFGMjkxQzU2RUNBMDAwRjVGNkMwIC8q
IEhUTUxEYXRhRWxlbWVudC5jcHAgKi87IH07CiAJCTgzMTAyQjI3MUY5RUFERDkwMEU0MDRCOSAv
KiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTAyQjIzMUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFi
bGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKKwkJODMxMjBDNzAxQzU2RjNGNjAwMUNCMTEyIC8qIEhU
TUxEYXRhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzFEMUYyOTFDNTZFQ0EwMDBGNUY2QzAgLyogSFRNTERhdGFFbGVtZW50LmNwcCAq
LzsgfTsKIAkJODMxMjBDNzExQzU2RjNGQjAwMUNCMTEyIC8qIEhUTUxEYXRhRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0Qjg2QTcxQzU2
RTgzQTAwRjNGMEUzIC8qIEhUTUxEYXRhRWxlbWVudC5oICovOyB9OwogCQk4MzIxNTA3RTFGMjdF
QTFCMDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzIxNTA3QjFGMjdFQTE1MDA5NUIxMzYgLyogTmF2aWdh
dG9yQmVhY29uLmggKi87IH07CiAJCTgzMkI4NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmlt
YXRlRWxlbWVudEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2Uu
aCAqLzsgfTsKIAkJODMyQjg0MzYxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50
QmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzJCODQzNTE5RDhFNTc0MDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCAqLzsg
fTsKKwkJODMyQkU1QkIxRkEwMzYwMjAwRTYyQTMxIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCRTVC
QTFGQTAzNUY2MDBFNjJBMzEgLyogU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCAqLzsgfTsKIAkJ
ODMzQjlFMzIxRjUwOEQ4NTAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCOUUyRjFG
NTA4RDgwMDBFMEU0MjggLyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkuaCAqLzsgfTsKIAkJ
ODMzQjlFMzQxRjUwOEQ4NTAwRTBFNDI4IC8qIEpTRmlsZVN5c3RlbUVudHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzNCOUUyQTFGNTA4RDgwMDBF
MEU0MjggLyogSlNGaWxlU3lzdGVtRW50cnkuaCAqLzsgfTsKIAkJODMzQjlFMzYxRjUwOEQ4NTAw
RTBFNDI4IC8qIEpTRmlsZVN5c3RlbUZpbGVFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMzQjlFMkMxRjUwOEQ4MDAwRTBFNDI4IC8qIEpTRmls
ZVN5c3RlbUZpbGVFbnRyeS5oICovOyB9OwpAQCAtMjk0MCw2ICsyOTQxLDcgQEAKIAkJODM3MkRC
MzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MkRCMzAxQTY3ODBB
ODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMw
NjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3
OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlB
MDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLzsgfTsKKwkJODM3QTI0NTgx
RkEwRUNDODAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBMjQ1NjFGQTBFQ0M1
MDBGQjE1RTIgLyogU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzdBODAxMzFFMUUxMjczMDAw
MjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBMb2Nh
bGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZDIC8q
IFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJs
ZUlPUy5tbSAqLzsgfTsKIAkJODM3RkIzNDQxRjlFQTA2RDAwRDBGQzMxIC8qIEV4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM3RkIzNDIxRjlFQTA2NzAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQu
Y3BwICovOyB9OwpAQCAtMTA2NzksNiArMTA2ODEsOCBAQAogCQk4MzI5RENDMjFDN0E2QUUzMDA3
MzBCMzMgLyogSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gSFRNTEh5cGVybGlua0VsZW1lbnRVdGlscy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJh
c2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnRC
YXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMkI4NDM1MTlEOEU1NzQwMEIy
NjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODMyQkU1QjgxRkEwMzVGNTAwRTYyQTMxIC8qIFNlcnZpY2VXb3JrZXJD
bGllbnRUeXBlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50
VHlwZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMkJFNUJBMUZBMDM1RjYw
MEU2MkEzMSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4MzNCOUUyQTFGNTA4RDgwMDBFMEU0MjggLyogSlNGaWxlU3lzdGVtRW50
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGaWxlU3lzdGVtRW50cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMzQjlFMkIxRjUwOEQ4MDAwRTBFNDI4
IC8qIEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMzQjlFMkMxRjUwOEQ4MDAwRTBFNDI4IC8qIEpTRmlsZVN5
c3RlbUZpbGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpbGVT
eXN0ZW1GaWxlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNzUxLDYg
KzEwNzU1LDcgQEAKIAkJODM3NjVGOTMxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2
ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb3VzZUV2ZW50SW5p
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThF
QTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW07IHBhdGggPSBNb2R1bGVz
L2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CisJCTgzN0EyNDU2MUZBMEVDQzUwMEZCMTVFMiAvKiBTZXJ2aWNlV29y
a2VyQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzdBODAxMjFFMUUxMjczMDAwMjZCOUYgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5nc2RpY3Q7
IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdz
ZGljdDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk4MzdCN0QxRjFEQzNGNTRDMDBE
MDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFZhbGlkYXRpb25CdWJibGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzN0RGQjM0MUVCRkVBNzAwMDYwMTM4NSAvKiBFbGVtZW50Q1NTSW5saW5l
U3R5bGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODE4OCw2ICsxODE5Myw3IEBACiAJ
CTUxN0M4NzA3MUY4RThGRjIwMEVCODA3NiAvKiBjb250ZXh0ICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4MzdBMjQ1NjFGQTBFQ0M1MDBGQjE1RTIgLyog
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAqLywKIAkJCQk0MTlBQ0Y5MDFGOTdFN0Q2
MDA5RjFBODMgLyogU2VydmljZVdvcmtlckZldGNoLmNwcCAqLywKIAkJCQk0MTlBQ0Y4RTFGOTdF
N0Q1MDA5RjFBODMgLyogU2VydmljZVdvcmtlckZldGNoLmggKi8sCiAJCQkJNTE3Qzg3MTExRjhF
RTcyRjAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwICovLApAQCAtMTgzMTIsNiAr
MTgzMTgsOCBAQAogCQkJCTQ2RUYxNDIxMUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50cy5jcHAgKi8sCiAJCQkJNDZFRjE0MjIxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VX
b3JrZXJDbGllbnRzLmggKi8sCiAJCQkJNDZFRjE0MjMxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZp
Y2VXb3JrZXJDbGllbnRzLmlkbCAqLywKKwkJCQk4MzJCRTVCQTFGQTAzNUY2MDBFNjJBMzEgLyog
U2VydmljZVdvcmtlckNsaWVudFR5cGUuaCAqLywKKwkJCQk4MzJCRTVCODFGQTAzNUY1MDBFNjJB
MzEgLyogU2VydmljZVdvcmtlckNsaWVudFR5cGUuaWRsICovLAogCQkJCTUxRjE3NTU4MUYzRUJD
MEMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCAqLywKIAkJCQk1MUYxNzU1
NzFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckNvbnRhaW5lci5oICovLAogCQkJCTUx
RjE3NTU2MUYzRUJDMEMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmlkbCAqLywK
QEAgLTI3NTIzLDYgKzI3NTMxLDcgQEAKIAkJCQk2RTBFNTY5QzE4M0JGRkU2MDBFMEU4RDUgLyog
RmxvYXRSb3VuZGVkUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NkQwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0U2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNThDRDM1Q0IxOEVCNEMz
OTAwQjlGM0FDIC8qIEZsb2F0U2l6ZUhhc2guaCBpbiBIZWFkZXJzICovLAorCQkJCTgzN0EyNDU4
MUZBMEVDQzgwMEZCMTVFMiAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMTQ5OTNCRTYwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDYyMjg3ODQwQjREQjMyMjAwMEMzNERGIC8qIEZvY3Vz
RGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNkQ5RDIzNTE0RUFCRDI2MDA5MEQ3NUUg
LyogRm9jdXNFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTY0Nyw2ICsyOTY1Niw3IEBACiAJ
CQkJNTFGMTc1NUQxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ2RUYxNDJEMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkVGMTQyQzFGOTdCN0Q4MDBDMkE1MjQgLyogU2Vydmlj
ZVdvcmtlckNsaWVudHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMkJFNUJCMUZBMDM2MDIwMEU2
MkEzMSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFG
MTc1NUYxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxQ0E3RUU5MUY4ODMzOTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxOUFDRjkyMUY5N0U3REEwMDlGMUE4MyAv
KiBTZXJ2aWNlV29ya2VyRmV0Y2guaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTZXJ2aWNlV29ya2VyQ2xpZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2VydmljZVdvcmtlckNsaWVudEN1c3RvbS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJkMTFhNDVjNTIwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTZXJ2aWNlV29ya2Vy
Q2xpZW50Q3VzdG9tLmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUgIkpTU2Vy
dmljZVdvcmtlckNsaWVudC5oIgorCisjaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudC5oIgorI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJXaW5kb3dDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBu
YW1lc3BhY2UgSlNDOworCitKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnQ+JiYg
Y2xpZW50KQoreworICAgIGlmIChpczxTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50PihjbGllbnQp
KQorICAgICAgICByZXR1cm4gY3JlYXRlV3JhcHBlcjxTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50
PihnbG9iYWxPYmplY3QsIFdURk1vdmUoY2xpZW50KSk7CisgICAgcmV0dXJuIGNyZWF0ZVdyYXBw
ZXI8U2VydmljZVdvcmtlckNsaWVudD4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGNsaWVudCkpOwor
fQorCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU2VydmljZVdvcmtlckNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiB3
cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGNsaWVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyNWQ0YTVjZmQ0MC4u
ZDcyMmI3Y2RiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDM0LDkgKzQzNCwxNSBA
QCBzdGF0aWMgdm9pZCBwcmludE5hdmlnYXRpb25FcnJvck1lc3NhZ2UoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIGFjdGl2ZVVSTCwgY29ucwogCiB1aW50NjRfdCBEb2N1bWVudDo6c19nbG9iYWxU
cmVlVmVyc2lvbiA9IDA7CiAKLUhhc2hTZXQ8RG9jdW1lbnQqPiYgRG9jdW1lbnQ6OmFsbERvY3Vt
ZW50cygpCitzdGF0aWMgRG9jdW1lbnQ6OklkZW50aWZpZXIgZ2VuZXJhdGVEb2N1bWVudElkZW50
aWZpZXIoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PERvY3VtZW50Kj4+
IGRvY3VtZW50czsKKyAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7CisgICAgcmV0
dXJuICsraWRlbnRpZmllcjsKK30KKworYXV0byBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkgLT4g
SGFzaE1hcDxJZGVudGlmaWVyLCBEb2N1bWVudCo+JgoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoTWFwPElkZW50aWZpZXIsIERvY3VtZW50Kj4+IGRvY3VtZW50czsKICAgICByZXR1
cm4gZG9jdW1lbnRzOwogfQogCkBAIC00OTUsOCArNTAxLDkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3Nlcywg
dW5zaWcKICAgICAsIG1faXNTeW50aGVzaXplZChjb25zdHJ1Y3Rpb25GbGFncyAmIFN5bnRoZXNp
emVkKQogICAgICwgbV9pc05vblJlbmRlcmVkUGxhY2Vob2xkZXIoY29uc3RydWN0aW9uRmxhZ3Mg
JiBOb25SZW5kZXJlZFBsYWNlaG9sZGVyKQogICAgICwgbV9vcmllbnRhdGlvbk5vdGlmaWVyKGN1
cnJlbnRPcmllbnRhdGlvbihmcmFtZSkpCisgICAgLCBtX2lkZW50aWZpZXIoZ2VuZXJhdGVEb2N1
bWVudElkZW50aWZpZXIoKSkKIHsKLSAgICBhbGxEb2N1bWVudHMoKS5hZGQodGhpcyk7CisgICAg
YWxsRG9jdW1lbnRzKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CiAKICAgICAvLyBXZSBkZXBl
bmQgb24gdGhlIHVybCBnZXR0aW5nIGltbWVkaWF0ZWx5IHNldCBpbiBzdWJmcmFtZXMsIGJ1dCB3
ZQogICAgIC8vIGFsc28gZGVwZW5kIG9uIHRoZSB1cmwgTk9UIGdldHRpbmcgaW1tZWRpYXRlbHkg
c2V0IGluIG9wZW5lZCB3aW5kb3dzLgpAQCAtNTQ2LDcgKzU1Myw4IEBAIFJlZjxEb2N1bWVudD4g
RG9jdW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgY29udGV4dERvY3VtZW50KQogCiBEb2N1bWVudDo6
fkRvY3VtZW50KCkKIHsKLSAgICBhbGxEb2N1bWVudHMoKS5yZW1vdmUodGhpcyk7CisgICAgYm9v
bCB3YXNSZW1vdmVkID0gYWxsRG9jdW1lbnRzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAg
QVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsKIAogICAgIEFTU0VSVCghcmVu
ZGVyVmlldygpKTsKICAgICBBU1NFUlQobV9wYWdlQ2FjaGVTdGF0ZSAhPSBJblBhZ2VDYWNoZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDE2NzE3ZTgxM2RhLi41MzQ2MWNiN2UxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKQEAgLTM0Nyw3ICszNDcsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJl
bW92ZWRMYXN0UmVmKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxEb2N1
bWVudCo+JiBhbGxEb2N1bWVudHMoKTsKKyAgICB1c2luZyBJZGVudGlmaWVyID0gdWludDY0X3Q7
CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hNYXA8SWRlbnRpZmllciwgRG9jdW1l
bnQqPiYgYWxsRG9jdW1lbnRzKCk7CiAKICAgICBNZWRpYVF1ZXJ5TWF0Y2hlciYgbWVkaWFRdWVy
eU1hdGNoZXIoKTsKIApAQCAtMTgyNiw2ICsxODI4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
Z3JhbnRTdG9yYWdlQWNjZXNzT3ZlcnJpZGUgeyBmYWxzZSB9OwogCiAgICAgUmVmUHRyPERvY3Vt
ZW50VGltZWxpbmU+IG1fdGltZWxpbmU7CisgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9
OwogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVudCopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggN2FiMDkyNDM0YmYuLjNjYjNk
ZGZiYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKQEAgLTY1LDcgKzY1
LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZU5vbmNyaXRpY2FsTWVtb3J5KCkKIAogICAgIGNsZWFy
V2lkdGhDYWNoZXMoKTsKIAotICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxs
RG9jdW1lbnRzKCkpCisgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1
bWVudHMoKS52YWx1ZXMoKSkKICAgICAgICAgZG9jdW1lbnQtPmNsZWFyU2VsZWN0b3JRdWVyeUNh
Y2hlKCk7CiAKICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucHJ1bmVEZWFkUmVzb3VyY2Vz
VG9TaXplKDApOwpAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlQ3JpdGljYWxN
ZW1vcnkoU3luY2hyb25vdXMgc3luY2hyb25vdXMpCiAKICAgICBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmRyYWluKCk7CiAKLSAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogY29weVRvVmVjdG9y
T2Y8UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSkgeworICAgIGZv
ciAoYXV0byYgZG9jdW1lbnQgOiBjb3B5VG9WZWN0b3JPZjxSZWZQdHI8RG9jdW1lbnQ+PihEb2N1
bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpKSB7CiAgICAgICAgIGRvY3VtZW50LT5zdHls
ZVNjb3BlKCkuY2xlYXJSZXNvbHZlcigpOwogICAgICAgICBkb2N1bWVudC0+Zm9udFNlbGVjdG9y
KCkuZW1wdHlDYWNoZXMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IDUwMTZhMDZlMjA0Li44MmM0ZTU3NjRlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE5NDUsNyArMTk0NSw3IEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpyZW1vdmVSYXJlRGF0YSgpCiAKIHZvaWQgcHJpbnRSZW5kZXJUcmVlRm9y
TGl2ZURvY3VtZW50cygpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3Vt
ZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBE
b2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKCFkb2N1bWVu
dC0+cmVuZGVyVmlldygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChkb2N1
bWVudC0+ZnJhbWUoKSAmJiBkb2N1bWVudC0+ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkKQEAgLTE5
NTcsNyArMTk1Nyw3IEBAIHZvaWQgcHJpbnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cygpCiAK
IHZvaWQgcHJpbnRMYXllclRyZWVGb3JMaXZlRG9jdW1lbnRzKCkKIHsKLSAgICBmb3IgKGNvbnN0
IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgZm9yIChj
b25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkg
ewogICAgICAgICBpZiAoIWRvY3VtZW50LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgaWYgKGRvY3VtZW50LT5mcmFtZSgpICYmIGRvY3VtZW50LT5mcmFtZSgp
LT5pc01haW5GcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dENvdmVyYWdlLmNwcAppbmRleCBhOTE2MDQ1ZTRiYS4uZjA3ZDRjMWI0N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292
ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
Q292ZXJhZ2UuY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdE5vbkVt
cHR5TGVhZlJlbmRlckJsb2NrRmxvd3MoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgSGEK
IAogc3RhdGljIHZvaWQgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3NGb3JDdXJy
ZW50UGFnZShIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrRmxvdyo+JiBsZWFmUmVuZGVyZXJzKQog
ewotICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRz
KCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3Vt
ZW50cygpLnZhbHVlcygpKSB7CiAgICAgICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSB8
fCBkb2N1bWVudC0+cGFnZUNhY2hlU3RhdGUoKSAhPSBEb2N1bWVudDo6Tm90SW5QYWdlQ2FjaGUp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFkb2N1bWVudC0+aXNIVE1MRG9j
dW1lbnQoKSAmJiAhZG9jdW1lbnQtPmlzWEhUTUxEb2N1bWVudCgpKQpAQCAtMjc5LDcgKzI3OSw3
IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzRm9yQ3Vy
cmVudFBhZ2UoSGFzaFNldDxjb25zdCBSZW5kCiAKIHZvaWQgdG9nZ2xlU2ltcGxlTGluZUxheW91
dCgpCiB7Ci0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMo
KSkgeworICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCku
dmFsdWVzKCkpIHsKICAgICAgICAgYXV0byYgc2V0dGluZ3MgPSBkb2N1bWVudC0+bXV0YWJsZVNl
dHRpbmdzKCk7CiAgICAgICAgIHNldHRpbmdzLnNldFNpbXBsZUxpbmVMYXlvdXRFbmFibGVkKCFz
ZXR0aW5ncy5zaW1wbGVMaW5lTGF5b3V0RW5hYmxlZCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggNWExMTgxZTc5MjAuLjM5YWM4Yjg1YjljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMTU0LDcgKzIxNTQsNyBAQCBFeGNlcHRp
b25Pcjx1bnNpZ25lZD4gSW50ZXJuYWxzOjpjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgVmVjdAogdW5zaWduZWQgSW50ZXJuYWxzOjpudW1iZXJPZkxpdmVOb2Rlcygp
IGNvbnN0CiB7CiAgICAgdW5zaWduZWQgbm9kZUNvdW50ID0gMDsKLSAgICBmb3IgKGF1dG8qIGRv
Y3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKQorICAgIGZvciAoYXV0byogZG9jdW1l
bnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpCiAgICAgICAgIG5vZGVDb3Vu
dCArPSBkb2N1bWVudC0+cmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKICAgICByZXR1cm4gbm9kZUNv
dW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXIuY3BwCmluZGV4IDE3OTY0ZWFkNjA0Li4wY2Y5YTgxNjQyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcApAQCAtNjksNyArNjksNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBTZXJ2aWNlV29ya2VyOjpwb3N0TWVzc2FnZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBKUwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90
U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUGFzc2luZyBNZXNzYWdlUG9ydCBvYmplY3Rz
IHRvIHBvc3RNZXNzYWdlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIikgfTsKIAogICAgIGF1dG8mIHN3
Q29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdv
cmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKGNvbnRleHQuc2Vzc2lvbklEKCkpOwotICAgIHN3Q29u
bmVjdGlvbi5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKG1faWRlbnRpZmll
ciwgbWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dC5vcmlnaW4oKSk7CisgICAg
c3dDb25uZWN0aW9uLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUobV9pZGVu
dGlmaWVyLCBtZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0KTsKIAogICAgIHJl
dHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5jcHAKaW5kZXggODI1YmM5MGRiNzkuLjE2OTA1YThhYjkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnQuY3BwCkBAIC0yOCwyMiArMjgsMjMgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudC5oIgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCIKIAotU2VydmljZVdvcmtlckNsaWVudDo6
U2VydmljZVdvcmtlckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotICAg
IDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQotewotICAgIHN1c3BlbmRJZk5lZWRlZCgpOwot
fQorbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBTZXJ2aWNlV29ya2VyQ2xpZW50
OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK1NlcnZpY2VXb3JrZXJDbGllbnQ6OlNlcnZp
Y2VXb3JrZXJDbGllbnQoUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgdWludDY0X3QgaWRlbnRpZmllciwgVHlwZSB0eXBlKQorICAg
IDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmNvbnRleHQpCisgICAgLCBtX2Nvbm5lY3Rp
b24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQor
ICAgICwgbV90eXBlKHR5cGUpCiB7Ci0gICAgcmV0dXJuICJTZXJ2aWNlV29ya2VyQ2xpZW50IjsK
IH0KIAotYm9vbCBTZXJ2aWNlV29ya2VyQ2xpZW50OjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNw
ZW5zaW9uKCkgY29uc3QKK1NlcnZpY2VXb3JrZXJDbGllbnQ6On5TZXJ2aWNlV29ya2VyQ2xpZW50
KCkKIHsKLSAgICByZXR1cm4gIWhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCiBTdHJpbmcgU2Vy
dmljZVdvcmtlckNsaWVudDo6dXJsKCkgY29uc3QKQEAgLTUxLDIxICs1MiwzNSBAQCBTdHJpbmcg
U2VydmljZVdvcmtlckNsaWVudDo6dXJsKCkgY29uc3QKICAgICByZXR1cm4geyB9OwogfQogCi1h
dXRvIFNlcnZpY2VXb3JrZXJDbGllbnQ6OmZyYW1lVHlwZSgpIGNvbnN0IC0+IEZyYW1lVHlwZQot
ewotICAgIHJldHVybiBGcmFtZVR5cGU6Ok5vbmU7Ci19Ci0KIFN0cmluZyBTZXJ2aWNlV29ya2Vy
Q2xpZW50OjppZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gU3RyaW5n
OjpudW1iZXIobV9pZGVudGlmaWVyKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gU2VydmljZVdv
cmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgbWVz
c2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQorRXhj
ZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwgVmVjdG9y
PEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQogewotICAgIFVOVVNFRF9Q
QVJBTShtZXNzYWdlKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNmZXIpOwotICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJjbGllbnQucG9zdE1l
c3NhZ2UoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH07CisgICAgYXV0byogZXhlY1N0YXRlID0g
Y29udGV4dC5leGVjU3RhdGUoKTsKKyAgICBBU1NFUlQoZXhlY1N0YXRlKTsKKworICAgIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAgICBhdXRvIG1lc3NhZ2UgPSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZXhlY1N0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUo
dHJhbnNmZXIpLCBwb3J0cywgU2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdl
KTsKKyAgICBpZiAobWVzc2FnZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG1lc3Nh
Z2UucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgLy8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4g
cHJlcGFyYXRpb24gZm9yIHNlbmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBjb250ZXh0LgorICAgIGF1
dG8gY2hhbm5lbHNPckV4Y2VwdGlvbiA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKFdU
Rk1vdmUocG9ydHMpKTsKKyAgICBpZiAoY2hhbm5lbHNPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIGNoYW5uZWxzT3JFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigp
OworCisgICAgLy8gRklYTUU6IFN1cHBvcnQgc2VuZGluZyB0aGUgY2hhbm5lbHMuCisgICAgYXV0
byBjaGFubmVscyA9IGNoYW5uZWxzT3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7Cisg
ICAgaWYgKGNoYW5uZWxzICYmICFjaGFubmVscy0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUGFzc2luZyBNZXNz
YWdlUG9ydCBvYmplY3RzIHRvIHBvc3RNZXNzYWdlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIikgfTsK
KworICAgIC8vIEZJWE1FOiBTaG91bGQgbGlrZWx5IHBhc3MgdGhlIHNvdXJjZSBvcmlnaW4uCisg
ICAgbV9jb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChtZXNzYWdl
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKworICAgIHJldHVybiB7IH07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5oCmluZGV4IGYzOGU2MDJmZjQ1Li5mYmVmMzBiZGFiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudC5oCkBAIC0yNywzOSArMjcsNDUgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
IAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkNvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyQ2xpZW50VHlwZS5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7
CiBjbGFzcyBKU1ZhbHVlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNlcnZp
Y2VXb3JrZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyQ2xpZW50Piwg
cHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Citj
bGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjsKKworY2xhc3MgU2VydmljZVdvcmtl
ckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnQ+LCBwdWJsaWMg
Q29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgotICAgIGVudW0gY2xhc3MgRnJh
bWVUeXBlIHsKLSAgICAgICAgQXV4aWxpYXJ5LAotICAgICAgICBUb3BMZXZlbCwKLSAgICAgICAg
TmVzdGVkLAotICAgICAgICBOb25lCi0gICAgfTsKKyAgICB1c2luZyBDb25uZWN0aW9uID0gU2Vy
dmljZVdvcmtlckNsaWVudENvbm5lY3Rpb247CisKKyAgICB1c2luZyBUeXBlID0gU2VydmljZVdv
cmtlckNsaWVudFR5cGU7CisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50PiBjcmVh
dGUoUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgdWludDY0X3QgaWRlbnRpZmllciwgVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckNsaWVudChXVEZNb3ZlKGNvbm5lY3Rp
b24pLCBjb250ZXh0LCBpZGVudGlmaWVyLCB0eXBlKSk7CisgICAgfQorCisgICAgflNlcnZpY2VX
b3JrZXJDbGllbnQoKTsKIAogICAgIFN0cmluZyB1cmwoKSBjb25zdDsKLSAgICBGcmFtZVR5cGUg
ZnJhbWVUeXBlKCkgY29uc3Q7CisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
OyB9CiAgICAgU3RyaW5nIGlkKCkgY29uc3Q7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0
TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBWZWN0b3I8SlND
OjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpOworICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHBvc3RNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBKU0M6OkpTVmFsdWUgbWVz
c2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKTsKIAog
cHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOworICAgIFNlcnZpY2VXb3JrZXJDbGllbnQoUmVmPENvbm5lY3Rpb24+JiYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBUeXBlKTsKIAot
ICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KLSAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5z
aW9uKCkgY29uc3QgZmluYWw7CisgICAgUmVmPENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAg
ICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CisgICAgVHlwZSBtX3R5cGU7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwKaW5kZXggNTNmZGQwODQ4NWQuLjRlZjJjYjE1MjE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnQuaWRsCkBAIC0yNSwyMCArMjUsMjEgQEAKIAogWwogICAgIENvbmRpdGlvbmFs
PVNFUlZJQ0VfV09SS0VSLAorICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgRW5hYmxlZEF0UnVu
dGltZT1TZXJ2aWNlV29ya2VyLAogICAgIEV4cG9zZWQ9U2VydmljZVdvcmtlciwKICAgICBJbnRl
cmZhY2VOYW1lPUNsaWVudCwKIF0gaW50ZXJmYWNlIFNlcnZpY2VXb3JrZXJDbGllbnQgewogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcgdXJsOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBGcmFtZVR5cGUgZnJhbWVUeXBlOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDbGllbnRUeXBl
IHR5cGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKIAotICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55
IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CisgICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSB2b2lk
IHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5z
ZmVyID0gW10pOwogfTsKIAotZW51bSBGcmFtZVR5cGUgewotICAiYXV4aWxpYXJ5IiwKLSAgInRv
cC1sZXZlbCIsCi0gICJuZXN0ZWQiLAotICAibm9uZSIKK2VudW0gQ2xpZW50VHlwZSB7CisgICJ3
aW5kb3ciLAorICAid29ya2VyIiwKKyAgInNoYXJlZHdvcmtlciIsCisgICJhbGwiCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudFR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDA2OWFh
NTlkMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudFR5cGUuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworZW51bSBjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZSB7CisgICAgV2lu
ZG93LAorICAgIFdvcmtlciwKKyAgICBTaGFyZWR3b3JrZXIsCisgICAgQWxsCit9OworCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnRUeXBlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjc1MTc2NzgwZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmlkbApAQCAtMCwwICsxLDMz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSLAorXSBl
bnVtIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHsKKyAgICAid2luZG93IiwKKyAgICAid29ya2Vy
IiwKKyAgICAic2hhcmVkd29ya2VyIiwKKyAgICAiYWxsIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmgKaW5kZXggM2Vl
NGY0NmU2M2IuLjc0YmJiN2YwNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaApAQCAtMjgsNiArMjgsNyBAQAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQyLDE2ICs0Myw5IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckNsaWVudHMoY29u
dGV4dCkpOwogICAgIH0KIAotICAgIGVudW0gY2xhc3MgQ2xpZW50VHlwZSB7Ci0gICAgICAgIFdp
bmRvdywKLSAgICAgICAgV29ya2VyLAotICAgICAgICBTaGFyZWR3b3JrZXIsCi0gICAgICAgIEFs
bAotICAgIH07Ci0KICAgICBzdHJ1Y3QgQ2xpZW50UXVlcnlPcHRpb25zIHsKICAgICAgICAgYm9v
bCBpbmNsdWRlVW5jb250cm9sbGVkIHsgZmFsc2UgfTsKLSAgICAgICAgQ2xpZW50VHlwZSB0eXBl
IHsgQ2xpZW50VHlwZTo6V2luZG93IH07CisgICAgICAgIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBl
IHR5cGUgeyBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93IH07CiAgICAgfTsKIAogICAg
IHZvaWQgZ2V0KGNvbnN0IFN0cmluZyYgaWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnRzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50cy5pZGwKaW5kZXggMmI5NzBmNDhlMGQuLjdkNGM1NzA0ZWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5pZGwK
QEAgLTM4LDEyICszOCw1IEBACiAKIGRpY3Rpb25hcnkgQ2xpZW50UXVlcnlPcHRpb25zIHsKICAg
ICBib29sZWFuIGluY2x1ZGVVbmNvbnRyb2xsZWQgPSBmYWxzZTsKLSAgICBDbGllbnRUeXBlIHR5
cGUgPSAid2luZG93IjsKLX07Ci0KLWVudW0gQ2xpZW50VHlwZSB7Ci0gICAgIndpbmRvdyIsCi0g
ICAgIndvcmtlciIsCi0gICAgInNoYXJlZHdvcmtlciIsCi0gICAgImFsbCIKKyAgICBTZXJ2aWNl
V29ya2VyQ2xpZW50VHlwZSB0eXBlID0gIndpbmRvdyI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQu
Y3BwCmluZGV4IDVjNzhiNzhkNDA2Li41MmU4NjZjYmNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50
LmNwcApAQCAtMzIsOCArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VX
b3JrZXJXaW5kb3dDbGllbnQ6OlNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKLSAgICA6IFNlcnZpY2VXb3JrZXJDbGllbnQoY29udGV4dCkK
K1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6OlNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoUmVm
PENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICA6IFNlcnZpY2VXb3JrZXJDbGllbnQoV1RGTW92
ZShjb25uZWN0aW9uKSwgY29udGV4dCwgaWRlbnRpZmllciwgVHlwZTo6V2luZG93KQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
cldpbmRvd0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJXaW5kb3dDbGllbnQuaAppbmRleCA2YmI3N2Q3Y2FiNy4uY2I2ZTcwYjdmOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQuaApAQCAtMzYsOSArMzYsOSBAQCBjbGFzcyBEZWZlcnJlZFByb21pc2U7
CiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQgZmluYWwgOiBwdWJsaWMgU2Vydmlj
ZVdvcmtlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyV2lu
ZG93Q2xpZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKKyAgICBz
dGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ+IGNyZWF0ZShSZWY8Q29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1aW50NjRf
dCBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudChjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoV1RGTW92ZShjb25uZWN0aW9uKSwgY29udGV4
dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIFZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5
U3RhdGUoKSBjb25zdDsKQEAgLTQ4LDkgKzQ4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIG5hdmln
YXRlKGNvbnN0IFN0cmluZyYgdXJsLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKTsKKyAgICBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFJlZjxDb25uZWN0aW9u
PiYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdWludDY0X3QgaWRlbnRpZmllcik7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4o
V2ViQ29yZTo6U2VydmljZVdvcmtlcldpbmRvd0NsaWVudCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5
cGUoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudCYgY2xpZW50KSB7IHJldHVybiBj
bGllbnQudHlwZSgpID09IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXaW5kb3c7
IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44OWNkMmNiZjg5ZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKK2Ns
YXNzIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uPiB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24oKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChSZWY8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiYmIG1lc3NhZ2UpID0gMDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwCmluZGV4IDc0MWJlYTMzZGExLi5kZTdkMjI4NjdkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAKQEAgLTMyLDggKzMyLDEwIEBACiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kYWJsZU1lc3Nh
Z2VFdmVudC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2gu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIK
ICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQu
aD4KQEAgLTEwMCwxMiArMTAyLDEzIEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cG9zdEZl
dGNoVGFzayhSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50CiAgICAgfSwg
V29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclRo
cmVhZDo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4mJiBjaGFubmVscywgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWQ6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUo
UmVmPFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uPiYmIGNsaWVudENvbm5lY3Rpb24sIFJl
ZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5PiYmIGNoYW5uZWxzLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrIHRhc2soW2NoYW5uZWxzID0gV1RGTW92ZShjaGFubmVscyksIG1lc3NhZ2UgPSBX
VEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4gPSBzb3VyY2VPcmlnaW4uaXNvbGF0ZWRDb3B5
KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soW2NsaWVudENvbm5lY3Rpb24gPSBXVEZNb3Zl
KGNsaWVudENvbm5lY3Rpb24pLCBjaGFubmVscyA9IFdURk1vdmUoY2hhbm5lbHMpLCBtZXNzYWdl
ID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luID0gc291
cmNlT3JpZ2luLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRv
d25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgIGF1dG8g
cG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUsIFdURk1vdmUoY2hhbm5lbHMpKTsKLSAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmRpc3BhdGNoRXZlbnQoRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9y
dHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4pKTsKKyAgICAgICAgRXh0ZW5kYWJs
ZU1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2UgPSBSZWZQdHI8U2VydmljZVdvcmtlckNsaWVudD4g
eyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50OjpjcmVhdGUoV1RGTW92ZShjbGllbnRDb25uZWN0
aW9uKSwgY29udGV4dCwgc291cmNlSWRlbnRpZmllcikgfTsKKyAgICAgICAgc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6Y3JlYXRl
KFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4sIHsgfSwgV1RG
TW92ZShzb3VyY2UpKSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS50aHJlYWQo
KS53b3JrZXJPYmplY3RQcm94eSgpLmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChzZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogICAgIH0pOwogICAg
IHJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
aAppbmRleCBkNTU5MjM5ZDAwOC4uNTc4ODljNDkzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CiBjbGFzcyBD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7CiBjbGFzcyBNZXNzYWdlUG9ydENo
YW5uZWw7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CitjbGFzcyBTZXJ2aWNlV29ya2Vy
Q2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFdvcmtlck9iamVjdFByb3h5Owogc3RydWN0IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTsKIApAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgV29y
a2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3Jr
ZXJPYmplY3RQcm94eTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0RmV0Y2hUYXNr
KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIEZl
dGNoT3B0aW9ucyYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUoUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgc3RkOjp1
bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYmLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZU9yaWdpbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbj4mJiwgUmVm
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5PiYmLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbik7CiAKIHByb3RlY3RlZDoKICAgICBSZWY8V29ya2VyR2xvYmFsU2NvcGU+IGNy
ZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBNb25vdG9uaWNUaW1lIHRp
bWVPcmlnaW4sIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4
IDUwOGE1OGE0OWYyLi5mYzljZmJhZmU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC00OSw3
ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2Im
KTsKICAgICB2b2lkIGZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtl
ckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc291cmNlKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNw
cAppbmRleCBlOWJjYjMyNTM0Mi4uODA5ODMyMzhiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xMDgsOSArMTA4LDkgQEAgdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBz
ZXJ2aWMKICAgICBzZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6U2VydmljZVdvcmtlckNv
bnRleHRNYW5hZ2VyOjpTdGFydEZldGNoKGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucykpOwogfQogCi12b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2
NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1l
c3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKQogewotICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
Q29udGV4dE1hbmFnZXI6OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoaWRl
bnRpZmllcigpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlT3JpZ2lu
KSk7CisgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDb250
ZXh0TWFuYWdlcjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShpZGVudGlm
aWVyKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVy
LCBzb3VyY2VPcmlnaW4pKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmRpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMzgsNiArMTM4LDExIEBAIHZvaWQgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpkaWROb3RIYW5kbGVGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIp
CiAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNs
aWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogfQogCit2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQo
dWludDY0X3QgY2xpZW50SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNz
YWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6UG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBjbGllbnRJZGVudGlmaWVyLCBtZXNzYWdlIH0p
OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtX2NvbnRleHRD
b25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDI5MjZl
ODNlNDMxLi5iMmQ0NGY2ZGUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsRmV0Y2godWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZUZldGNoKHVpbnQ2NF90
IGZldGNoSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
Q2xpZW50KHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgbWVzc2FnZSk7CisKIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpDb25u
ZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlByb2Nlc3MpCiAgICAgdm9pZCByZWpl
Y3RKb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhJikgZmluYWw7CkBAIC02Niw3ICs2OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IHN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6RmV0Y2hPcHRpb25zJik7CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwor
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdl
LCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7
CiAKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgY29udGV4dCBXZWJQcm9jZXNzCiAgICAgdm9p
ZCBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggM2IyMDQ1YzY0NDQuLjU5ZjdlODI1NTE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI4
LDcgKzI4LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIHsKICAgICBGaW5p
c2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0
Y2hSZXN1bHQgcmVzdWx0KQogCiAgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBpZGVudGlmaWVyLCB1
aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKLSAgICBQb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNvdXJjZU9yaWdp
bikKKyAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgdWludDY0
X3Qgc291cmNlSWRlbnRpZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggODc2NGNkMDcwMmQuLmM2MTYwMzk3YzNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAt
NDM1LDYgKzQzNSwxMiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGaW5pc2hGZXRjaCh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0XwogICAgICAgICBjb25uZWN0
aW9uLT5kaWRGaW5pc2hGZXRjaChmZXRjaElkZW50aWZpZXIpOwogfQogCit2b2lkIFN0b3JhZ2VQ
cm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UpCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBt
X3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAg
ICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY2xpZW50
SWRlbnRpZmllciwgbWVzc2FnZSk7Cit9CisKIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnJlZ2lzdGVy
U1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsK
ICAgICBBU1NFUlQoIW1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlk
ZW50aWZpZXIoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5oCmluZGV4IGFhODY0NWI3NzFjLi5hNzc0YjgzZTRmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtMTI1LDYgKzEyNSw4IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZhaWxG
ZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZUZldGNoKHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOworCisgICAgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIG1lc3NhZ2UpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gaW5kZXhlZERhdGFiYXNl
T3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMzM5MmFmNzE1
ZDEuLmNlZTJiNmNkNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTQ2LDUgKzQ2LDYgQEAgbWVzc2Fn
ZXMgLT4gU3RvcmFnZVByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZFJlY2VpdmVGZXRj
aFJlc3BvbnNlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBm
ZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAg
RGlkUmVjZWl2ZUZldGNoRGF0YSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBEaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQorICAgIFBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVz
c2FnZSkKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMWFlMjBkZTViYjAuLmE2MmZiMGVhMGI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNzUsNiArMTM3
NSw4IEBACiAJCTgzMkVEMThDMUUyRkUxNTcwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BV
VXNhZ2VTYW1wbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzJFRDE4QTFFMkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
U2FtcGxlci5oICovOyB9OwogCQk4MzRCMjUwRjFBODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0Nh
Y2hlRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM0QjI1MEUxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0u
aCAqLzsgfTsKIAkJODM0QjI1MTIxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRp
c3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
NEIyNTEwMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmggKi87IH07
CisJCTgzNTczMUMxMUZBMEYwRjgwMDg1RjREMyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29u
bmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzU3MzFDMDFGQTBGMEVEMDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5l
Y3Rpb24uY3BwICovOyB9OworCQk4MzU3MzFDMjFGQTBGMEY4MDA4NUY0RDMgLyogV2ViU2Vydmlj
ZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzNTczMUJGMUZBMEYwRUMwMDg1RjREMyAvKiBXZWJTZXJ2aWNlV29y
a2VyQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9OwogCQk4MzYwMzQ5RjFBQ0IzNEQ2MDA2MjY1NDkg
LyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIuY3BwICovOyB9OwogCQk4MzYwMzRBMDFBQ0IzNEQ2MDA2MjY1NDkg
LyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzYwMzQ5RTFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyLmggKi87IH07CiAJCTgzNkVFQjgwMUJFOUVDOUUwMDZCNEI4MiAvKiBO
ZXR3b3JrTG9hZE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzNkVFQjdGMUJFOUVDOUUwMDZCNEI4MiAvKiBOZXR3b3JrTG9hZE1hYy5tbSAqLzsg
fTsKQEAgLTM3NTUsNiArMzc1Nyw5IEBACiAJCTgzMkVEMThBMUUyRkUxM0IwMDZCQTY0QSAvKiBQ
ZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODM0QjI1MEUxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0Nh
Y2hlRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUxMDFB
ODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgzNTczMUJFMUZBMEYwRUMwMDg1RjREMyAvKiBTZXJ2aWNlV29y
a2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2Vy
dmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4MzU3MzFCRjFGQTBGMEVDMDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNs
aWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2Vy
dmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODM1NzMxQzAxRkEwRjBFRDAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25u
ZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODM2MDM0OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzYwMzQ5RTFBQ0Iz
NEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MzZFRUI3RjFCRTlFQzlFMDA2QjRCODIgLyogTmV0d29ya0xv
YWRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3Jr
TG9hZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMDYsNiArNjIxMSw5
IEBACiAJCQkJNDEzMUYzQ0YxRjk2QTkzNjAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaC5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTMxRjNEMzFGOTZFOTMxMDA1OTk5NUEgLyogU2Vy
dmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLywKIAkJCQk0MTMxRjNEMjFGOTZFOTMwMDA1
OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmggKi8sCisJCQkJODM1NzMxQkUx
RkEwRjBFQzAwODVGNEQzIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5tZXNzYWdlcy5p
biAqLywKKwkJCQk4MzU3MzFDMDFGQTBGMEVEMDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNs
aWVudENvbm5lY3Rpb24uY3BwICovLAorCQkJCTgzNTczMUJGMUZBMEYwRUMwMDg1RjREMyAvKiBX
ZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oICovLAogCQkJCTQxMzFGM0UwMUY5ODcx
MkMwMDU5OTk1QSAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLywKIAkJ
CQk0MTlBQ0Y5QjFGOTgxRDI2MDA5RjFBODMgLyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5oICovLAogCQkJCTUxQkVCNjI5MUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29y
a2VyUHJvdmlkZXIuY3BwICovLApAQCAtODk3Niw2ICs4OTg0LDcgQEAKIAkJCQlGRURCRENENzFF
NjhEMjA1MDBBNTlGOEYgLyogV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlck1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzhFMkEzNjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5z
cGVjdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyODM0MTI3NUQ3MzgwMEJD
N0JEMCAvKiBXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODM1NzMxQzIx
RkEwRjBGODAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9y
UHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4OTFENjYxOUIxMjRGRjAwQkE3
OUREIC8qIFdlYkluc3BlY3RvclVJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0JCRTRBMTE5QjY2
QzUzMDA2QjdEODEgLyogV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDgyNSw2ICsxMDgzNCw3IEBACiAJCQkJRTFBRUEyMzAxNDY4N0JEQjAwODA0NTY5IC8qIFdL
RnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQ0E4NUM4
MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkM1NENDMTMxMkQ2NzRFRTAwNUM2N0IwIC8qIFdLR2VvbG9jYXRpb25N
YW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgzNTczMUMxMUZBMEYwRjgwMDg1RjREMyAv
KiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzA2RjQ0RjEyREJERjNGMDAyRDc4REUgLyogV0tHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEU2MTk5MTJENkNEMTIwMDEyQTcyQSAvKiBX
S0dlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDQjRFNTAxOEJC
RTA0NDAwMEZDRkM5IC8qIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggOGNjMGY4OTNlOTAuLmRjOWZl
MzdhYjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJl
bmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KQEAgLTg2LDE0ICs4NywxNiBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RhcnRGZXRjaCh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcgogICAgIHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnBv
c3RGZXRjaFRhc2soV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9w
dGlvbnMpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQordm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2Us
IHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQog
ewogICAgIGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoc2VydmljZVdvcmtl
cklkZW50aWZpZXIpOwogICAgIGlmICghc2VydmljZVdvcmtlcikKICAgICAgICAgcmV0dXJuOwog
CisgICAgYXV0byBjbGllbnRDb25uZWN0aW9uID0gV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5l
Y3Rpb246OmNyZWF0ZShtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLmNvcHlSZWYoKSwgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNvdXJjZUlkZW50aWZpZXIpOworCiAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBwYXNzIHZhbGlkIE1lc3NhZ2VQb3J0Q2hhbm5lbHMuCi0gICAgc2Vydmlj
ZVdvcmtlci0+dGhyZWFkKCkucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KG1lc3NhZ2UudmVjdG9yKCkpLCBudWxscHRyLCBz
b3VyY2VPcmlnaW4pOworICAgIHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoV1RGTW92ZShjbGllbnRDb25uZWN0aW9uKSwgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjphZG9wdChtZXNzYWdlLnZlY3RvcigpKSwgbnVsbHB0ciwgc291cmNl
SWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtl
ckNvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaAppbmRleCA3MDBlMGE3OWFhMy4uNGJiMTdkNDYxYzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlcih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJik7CiAg
ICAgdm9pZCBzdGFydEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYpOwot
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VPcmlnaW4pOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0
X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwogCiAgICAg
UmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzczsKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
Pj4gbV93b3JrZXJNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2Fn
ZXMuaW4KaW5kZXggODY2NjNmODFlN2MuLjlmOTY0ZmM4MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNvbnRleHRNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBACiBtZXNzYWdl
cyAtPiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIgewogICAgIFN0YXJ0U2VydmljZVdvcmtl
cih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSkKICAgICBTdGFydEZldGNoKHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIs
IHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zKQotICAgIFBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRh
dGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKKyAgICBQb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJl
bmNlIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmln
aW4pCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggMzA4NmVhNGZjMGUuLjEx
NjRkYWE4YjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJTV09yaWdpblRhYmxl
LmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckpvYkRhdGEuaD4KQEAgLTY4LDkgKzcwLDEzIEBAIHZvaWQgV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNl
cnZpY2VXb3JrZXJGZXRjCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHJlc3VsdCkpOwogfQogCi12b2lkIFdlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1
aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiBzY3JpcHRWYWx1ZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFdlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1
aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiBzY3JpcHRWYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc291cmNlKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVm
ZXJlbmNlIHsgc2NyaXB0VmFsdWUtPmRhdGEoKSB9LCBzb3VyY2VPcmlnaW4pKTsKKyAgICAvLyBG
SVhNRTogQWRkIHN1cHBvcnQgZm9yIHBvc3RpbmcgbWVzc2FnZXMgZnJvbSB3b3JrZXJzLgorICAg
IGlmICghaXM8RG9jdW1lbnQ+KHNvdXJjZSkpCisgICAgICAgIHJldHVybjsKKworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNl
IHsgc2NyaXB0VmFsdWUtPmRhdGEoKSB9LCBkb3duY2FzdDxEb2N1bWVudD4oc291cmNlKS5pZGVu
dGlmaWVyKCksIHNvdXJjZS5vcmlnaW4oKSkpOwogfQogCiBib29sIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6aGFzU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbikgY29uc3QKQEAgLTkyLDYgKzk4LDE5IEBAIFJlZjxTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2g+IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChXZWJTZXJ2aWNl
V29ya2VyCiAgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Y3JlYXRlKHByb3Zp
ZGVyLCBXVEZNb3ZlKGxvYWRlciksIGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgV1RG
TW92ZShjYWxsYmFjaykpOwogfQogCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0X3QgY2xpZW50SWRlbnRpZmllciwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlKQoreworICAgIC8vIEZJWE1FOiBjbGllbnRJ
ZGVudGlmaWVyIGNhbiBvbmx5IGlkZW50aWZ5IGEgRG9jdW1lbnQgYXQgdGhlIG1vbWVudC4KKyAg
ICBhdXRvKiBkZXN0aW5hdGlvbkRvY3VtZW50ID0gRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLmdl
dChjbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAoIWRlc3RpbmF0aW9uRG9jdW1lbnQpIHsKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgZmluZCBjbGllbnQgZG9jdW1lbnQgd2l0aCB0
aGUgZ2l2ZW4gaWRlbnRpZmllciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
RklYTUU6IERvIHNvbWV0aGluZy4KKyAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uaAppbmRleCAxY2QyOTI5OWUzZi4uMDg4YjU3MjFhMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2NoZWR1bGVKb2JJ
blNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpIGZpbmFsOwogICAg
IHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNvdXJj
ZSkgZmluYWw7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RlZEZyb21XZWJQcm9jZXNzKCk7CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKQEAgLTY0LDYgKzY0LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2VydmljZVdvcmtl
clJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKSBjb25z
dCBmaW5hbDsKICAgICBSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiBzdGFydEZldGNoKFdl
YlNlcnZpY2VXb3JrZXJQcm92aWRlciYsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4mJiwg
dWludDY0X3QgaWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpDYWxsYmFjayYm
KTsKIAorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0X3Qg
Y2xpZW50SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlKTsKKwog
cHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlU3RvcmFnZUpvYihjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iRGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
aW5kZXggMTE1NWQxYmFhZDguLjllZDljMDRlNDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCkBAIC0zMCw2ICszMCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ2xpZW50Q29u
bmVjdGlvbiB7CiAgICAgU3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcih1aW50NjRfdCBqb2JJZGVu
dGlmaWVyKQogCiAgICAgU2V0U1dPcmlnaW5UYWJsZVNoYXJlZE1lbW9yeShXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSkKKyAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2Fn
ZSkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VX
b3JrZXJDbGllbnRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uZjY2NzBiZDJmYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAg
LTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29u
bmVjdGlvbi5oIgorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKKyNpbmNsdWRlICJTdG9yYWdlUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1dl
YlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uOjpXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29u
bmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyKQorICAgIDog
bV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgLCBtX3NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICwgbV9jbGllbnRJ
ZGVudGlmaWVyKGNsaWVudElkZW50aWZpZXIpCit7Cit9CisKK1dlYlNlcnZpY2VXb3JrZXJDbGll
bnRDb25uZWN0aW9uOjp+V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24oKQoreworICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbiA9IFdURk1vdmUobV9jb25uZWN0
aW9uKV0geyB9KTsKK30KKwordm9pZCBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjo6
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiBtZXNzYWdlKQoreworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U3RvcmFn
ZVByb2Nlc3M6OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50IHsgbV9zZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgbV9jbGllbnRJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2Ug
eyBtZXNzYWdlLT5kYXRhKCkgfSB9LCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM4YzAxMDY2OTFlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckNsaWVu
dENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1l
c3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbiBmaW5hbDogcHVibGljIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uPiBjcmVhdGUoUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3QgY2xpZW50SWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uKFdURk1vdmUoY29u
bmVjdGlvbiksIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyKSk7
CisgICAgfQorCisgICAgfldlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uKCk7CisKKyAg
ICAvLyBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi4KKyAgICB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiYgbWVzc2FnZSkgZmluYWw7CisKK3ByaXZhdGU6CisgICAgV2ViU2VydmljZVdv
cmtlckNsaWVudENvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgdWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIpOworCisg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1fc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgdWludDY0X3QgbV9jbGllbnRJZGVudGlmaWVy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324899</attachid>
            <date>2017-10-25 14:51:59 -0700</date>
            <delta_ts>2017-10-25 16:23:01 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>178794_SW_Client_postMessage_wip.patch</filename>
            <type>text/plain</type>
            <size>57492</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBiZDg0YjRmZTlmOC4uOTk5ZTU3NzQxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI4NzksNiArMjg3OSw3IEBACiAJ
CTgzNzJEQjMxMUE2NzgwQTgwMEM2OTdDNSAvKiBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzJEQjMw
MUE2NzgwQTgwMEM2OTdDNSAvKiBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Mzc2NUY5NTFEQUM1
MjJGMDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2
ZW50SW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3OTY0Q0Ux
RjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gKi87IH07CisJCTgz
N0EyNDU4MUZBMEVDQzgwMEZCMTVFMiAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTI0NTYx
RkEwRUNDNTAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3QTgwMTMxRTFF
MTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0IGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBODAxMTFFMUUxMjczMDAwMjZCOUYg
LyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07CiAJCTgzN0I3RDIwMURDM0Y1NTAwMEQw
NTFGQyAvKiBWYWxpZGF0aW9uQnViYmxlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QjdEMUYxREMzRjU0QzAwRDA1MUZDIC8qIFZhbGlkYXRp
b25CdWJibGVJT1MubW0gKi87IH07CiAJCTgzN0ZCMzQ0MUY5RUEwNkQwMEQwRkMzMSAvKiBFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzN0ZCMzQyMUY5RUEwNjcwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2Fn
ZUV2ZW50LmNwcCAqLzsgfTsKQEAgLTEwNjI3LDYgKzEwNjI4LDcgQEAKIAkJODM3NjVGOTMxREFD
NTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBNb3VzZUV2ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzY1
Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9u
UG9zaXRpb25JT1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlv
blBvc2l0aW9uSU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTgzN0EyNDU2
MUZBMEVDQzUwMEZCMTVFMiAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdBODAxMjFFMUUxMjczMDAwMjZC
OUYgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQucGxpc3Quc3RyaW5nc2RpY3Q7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5n
bGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzZGljdDsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OwogCQk4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJsZUlP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZhbGlkYXRpb25C
dWJibGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzN0RGQjM0MUVCRkVB
NzAwMDYwMTM4NSAvKiBFbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMDY1NSw3ICsxMDY1Nyw3IEBACiAJCTgzOUFBRkVCMUEwQzBDOEQwMDYwNUY5OSAv
KiBIVE1MV0JSRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1M
V0JSRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0E0QTlGODFDRTdG
RDdFMDA3MDlCMDAgLyogSlNYTUxEb2N1bWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODNCMjUwMDkxRkExMTgxQzAwQkMwMkQ5IC8qIEpTU2VydmljZVdv
cmtlckNsaWVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2
aWNlV29ya2VyQ2xpZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0Iy
NTAwQjFGQTExODFEMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRU
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCMjUwMEIxRkExMTgxRDAw
QkMwMkQ5IC8qIEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjc0RUYyMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJh
Y2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I5Njg3OTE5RjhBQjgzMDA0
RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTgwNjcsNiArMTgwNjksNyBAQAogCQk1MTdDODcwNzFGOEU4RkYyMDBFQjgwNzYg
LyogY29udGV4dCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJODM3QTI0NTYxRkEwRUNDNTAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0
aW9uLmggKi8sCiAJCQkJNDE5QUNGOTAxRjk3RTdENjAwOUYxQTgzIC8qIFNlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAgKi8sCiAJCQkJNDE5QUNGOEUxRjk3RTdENTAwOUYxQTgzIC8qIFNlcnZpY2VXb3Jr
ZXJGZXRjaC5oICovLAogCQkJCTUxN0M4NzExMUY4RUU3MkYwMEVCODA3NiAvKiBTZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcCAqLywKQEAgLTI5NTMyLDYgKzI5NTM1LDcgQEAKIAkJCQkyRDkzQUVFMzE5
REY1NjQxMDAyQTg2QzMgLyogU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGMTc1NUQxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ2RUYxNDJEMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzdBMjQ1ODFGQTBFQ0M4MDBGQjE1RTIgLyog
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2RUYx
NDJDMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODM2OUZERkMxRkExMDJFMzAwQzFGRjFGIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU1RjFGM0VCQzgzMDBDNzQ5NTAgLyogU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCAyNWQ0YTVjZmQ0MC4uZDcyMmI3Y2RiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtNDM0LDkgKzQzNCwxNSBAQCBzdGF0aWMgdm9pZCBwcmludE5hdmlnYXRpb25FcnJvck1l
c3NhZ2UoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIGFjdGl2ZVVSTCwgY29ucwogCiB1aW50NjRf
dCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7CiAKLUhhc2hTZXQ8RG9jdW1lbnQq
PiYgRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpCitzdGF0aWMgRG9jdW1lbnQ6OklkZW50aWZpZXIg
Z2VuZXJhdGVEb2N1bWVudElkZW50aWZpZXIoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PERvY3VtZW50Kj4+IGRvY3VtZW50czsKKyAgICBzdGF0aWMgdWludDY0X3QgaWRl
bnRpZmllciA9IDA7CisgICAgcmV0dXJuICsraWRlbnRpZmllcjsKK30KKworYXV0byBEb2N1bWVu
dDo6YWxsRG9jdW1lbnRzKCkgLT4gSGFzaE1hcDxJZGVudGlmaWVyLCBEb2N1bWVudCo+Jgorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPElkZW50aWZpZXIsIERvY3VtZW50Kj4+
IGRvY3VtZW50czsKICAgICByZXR1cm4gZG9jdW1lbnRzOwogfQogCkBAIC00OTUsOCArNTAxLDkg
QEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2ln
bmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICAgICAsIG1faXNTeW50aGVzaXplZChjb25zdHJ1
Y3Rpb25GbGFncyAmIFN5bnRoZXNpemVkKQogICAgICwgbV9pc05vblJlbmRlcmVkUGxhY2Vob2xk
ZXIoY29uc3RydWN0aW9uRmxhZ3MgJiBOb25SZW5kZXJlZFBsYWNlaG9sZGVyKQogICAgICwgbV9v
cmllbnRhdGlvbk5vdGlmaWVyKGN1cnJlbnRPcmllbnRhdGlvbihmcmFtZSkpCisgICAgLCBtX2lk
ZW50aWZpZXIoZ2VuZXJhdGVEb2N1bWVudElkZW50aWZpZXIoKSkKIHsKLSAgICBhbGxEb2N1bWVu
dHMoKS5hZGQodGhpcyk7CisgICAgYWxsRG9jdW1lbnRzKCkuYWRkKG1faWRlbnRpZmllciwgdGhp
cyk7CiAKICAgICAvLyBXZSBkZXBlbmQgb24gdGhlIHVybCBnZXR0aW5nIGltbWVkaWF0ZWx5IHNl
dCBpbiBzdWJmcmFtZXMsIGJ1dCB3ZQogICAgIC8vIGFsc28gZGVwZW5kIG9uIHRoZSB1cmwgTk9U
IGdldHRpbmcgaW1tZWRpYXRlbHkgc2V0IGluIG9wZW5lZCB3aW5kb3dzLgpAQCAtNTQ2LDcgKzU1
Myw4IEBAIFJlZjxEb2N1bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgY29udGV4dERv
Y3VtZW50KQogCiBEb2N1bWVudDo6fkRvY3VtZW50KCkKIHsKLSAgICBhbGxEb2N1bWVudHMoKS5y
ZW1vdmUodGhpcyk7CisgICAgYm9vbCB3YXNSZW1vdmVkID0gYWxsRG9jdW1lbnRzKCkucmVtb3Zl
KG1faWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVk
KTsKIAogICAgIEFTU0VSVCghcmVuZGVyVmlldygpKTsKICAgICBBU1NFUlQobV9wYWdlQ2FjaGVT
dGF0ZSAhPSBJblBhZ2VDYWNoZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDE2NzE3ZTgxM2Rh
Li41MzQ2MWNiN2UxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM0Nyw3ICszNDcsOSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgSGFzaFNldDxEb2N1bWVudCo+JiBhbGxEb2N1bWVudHMoKTsKKyAgICB1c2luZyBJ
ZGVudGlmaWVyID0gdWludDY0X3Q7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hN
YXA8SWRlbnRpZmllciwgRG9jdW1lbnQqPiYgYWxsRG9jdW1lbnRzKCk7CiAKICAgICBNZWRpYVF1
ZXJ5TWF0Y2hlciYgbWVkaWFRdWVyeU1hdGNoZXIoKTsKIApAQCAtMTgyNiw2ICsxODI4LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fZ3JhbnRTdG9yYWdlQWNjZXNzT3ZlcnJpZGUgeyBmYWxzZSB9
OwogCiAgICAgUmVmUHRyPERvY3VtZW50VGltZWxpbmU+IG1fdGltZWxpbmU7CisgICAgSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JE
b2N1bWVudChEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCmluZGV4IDkyZTkwNTliOWEwLi5lOTc3NGQzMDk1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yLmgi
CiAjaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiUHVibGlj
VVJMTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCIKQEAgLTQ1
LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJOYXZp
Z2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9u
Z0lubGluZXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CkBAIC01
MjUsNCArNTI3LDE4IEBAIEpTQzo6RXhlY1N0YXRlKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpl
eGVjU3RhdGUoKQogICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUod29y
a2VyR2xvYmFsU2NvcGUpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorU2Vydmlj
ZVdvcmtlckNvbnRhaW5lciogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2VydmljZVdvcmtlckNv
bnRhaW5lcigpIGNvbnN0Cit7CisgICAgTmF2aWdhdG9yQmFzZSogbmF2aWdhdG9yID0gbnVsbHB0
cjsKKyAgICBpZiAoaXM8RG9jdW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoYXV0byogd2lu
ZG93ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCp0aGlzKS5kb21XaW5kb3coKSkKKyAgICAgICAgICAg
IG5hdmlnYXRvciA9IHdpbmRvdy0+bmF2aWdhdG9yKCk7CisgICAgfSBlbHNlCisgICAgICAgIG5h
dmlnYXRvciA9ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLm5hdmlnYXRvcigp
OworCisgICAgcmV0dXJuIG5hdmlnYXRvciA/IG5hdmlnYXRvci0+c2VydmljZVdvcmtlcigpIDog
bnVsbHB0cjsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAyNjZmNDlhZWVjMC4uOGUy
OGJkYzNkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aApAQCAtNjgsNiArNjgsMTAgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTb2NrZXRQ
cm92aWRlcjsKIGNsYXNzIFVSTDsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK2NsYXNz
IFNlcnZpY2VXb3JrZXJDb250YWluZXI7CisjZW5kaWYKKwogbmFtZXNwYWNlIElEQkNsaWVudCB7
CiBjbGFzcyBJREJDb25uZWN0aW9uUHJveHk7CiB9CkBAIC0yMzQsNiArMjM4LDggQEAgcHVibGlj
OgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB1aW50NjRfdCBzZWxlY3RlZFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRp
ZmllcjsgfQogICAgIHZvaWQgc2V0U2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcih1aW50
NjRfdCBpZGVudGlmaWVyKSB7IG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBpZGVudGlmaWVy
OyB9CisKKyAgICBTZXJ2aWNlV29ya2VyQ29udGFpbmVyKiBzZXJ2aWNlV29ya2VyQ29udGFpbmVy
KCkgY29uc3Q7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5jcHAKaW5kZXggN2FiMDkyNDM0YmYuLjNjYjNkZGZiYTA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTWVtb3J5UmVsZWFzZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFz
ZU5vbmNyaXRpY2FsTWVtb3J5KCkKIAogICAgIGNsZWFyV2lkdGhDYWNoZXMoKTsKIAotICAgIGZv
ciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpCisgICAgZm9yIChh
dXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkKICAgICAg
ICAgZG9jdW1lbnQtPmNsZWFyU2VsZWN0b3JRdWVyeUNhY2hlKCk7CiAKICAgICBNZW1vcnlDYWNo
ZTo6c2luZ2xldG9uKCkucHJ1bmVEZWFkUmVzb3VyY2VzVG9TaXplKDApOwpAQCAtODMsNyArODMs
NyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlQ3JpdGljYWxNZW1vcnkoU3luY2hyb25vdXMgc3luY2hy
b25vdXMpCiAKICAgICBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmRyYWluKCk7CiAKLSAgICBm
b3IgKGF1dG8mIGRvY3VtZW50IDogY29weVRvVmVjdG9yT2Y8UmVmUHRyPERvY3VtZW50Pj4oRG9j
dW1lbnQ6OmFsbERvY3VtZW50cygpKSkgeworICAgIGZvciAoYXV0byYgZG9jdW1lbnQgOiBjb3B5
VG9WZWN0b3JPZjxSZWZQdHI8RG9jdW1lbnQ+PihEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFs
dWVzKCkpKSB7CiAgICAgICAgIGRvY3VtZW50LT5zdHlsZVNjb3BlKCkuY2xlYXJSZXNvbHZlcigp
OwogICAgICAgICBkb2N1bWVudC0+Zm9udFNlbGVjdG9yKCkuZW1wdHlDYWNoZXMoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDUwMTZhMDZl
MjA0Li44MmM0ZTU3NjRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKQEAgLTE5NDUsNyArMTk0NSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpyZW1vdmVSYXJl
RGF0YSgpCiAKIHZvaWQgcHJpbnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cygpCiB7Ci0gICAg
Zm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgewor
ICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCku
dmFsdWVzKCkpIHsKICAgICAgICAgaWYgKCFkb2N1bWVudC0+cmVuZGVyVmlldygpKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChkb2N1bWVudC0+ZnJhbWUoKSAmJiBkb2N1bWVu
dC0+ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkKQEAgLTE5NTcsNyArMTk1Nyw3IEBAIHZvaWQgcHJp
bnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cygpCiAKIHZvaWQgcHJpbnRMYXllclRyZWVGb3JM
aXZlRG9jdW1lbnRzKCkKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1l
bnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgZm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERv
Y3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkgewogICAgICAgICBpZiAoIWRvY3VtZW50
LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGRvY3Vt
ZW50LT5mcmFtZSgpICYmIGRvY3VtZW50LT5mcmFtZSgpLT5pc01haW5GcmFtZSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNw
cAppbmRleCBhOTE2MDQ1ZTRiYS4uZjA3ZDRjMWI0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwCkBAIC0yNjgsNyAr
MjY4LDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3Mo
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgSGEKIAogc3RhdGljIHZvaWQgY29sbGVjdE5v
bkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3NGb3JDdXJyZW50UGFnZShIYXNoU2V0PGNvbnN0IFJl
bmRlckJsb2NrRmxvdyo+JiBsZWFmUmVuZGVyZXJzKQogewotICAgIGZvciAoY29uc3QgYXV0byog
ZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1
dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLnZhbHVlcygpKSB7CiAgICAg
ICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSB8fCBkb2N1bWVudC0+cGFnZUNhY2hlU3Rh
dGUoKSAhPSBEb2N1bWVudDo6Tm90SW5QYWdlQ2FjaGUpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgaWYgKCFkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQtPmlz
WEhUTUxEb2N1bWVudCgpKQpAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RO
b25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzRm9yQ3VycmVudFBhZ2UoSGFzaFNldDxjb25zdCBS
ZW5kCiAKIHZvaWQgdG9nZ2xlU2ltcGxlTGluZUxheW91dCgpCiB7Ci0gICAgZm9yIChhdXRvKiBk
b2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgIGZvciAoYXV0byogZG9j
dW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpIHsKICAgICAgICAgYXV0
byYgc2V0dGluZ3MgPSBkb2N1bWVudC0+bXV0YWJsZVNldHRpbmdzKCk7CiAgICAgICAgIHNldHRp
bmdzLnNldFNpbXBsZUxpbmVMYXlvdXRFbmFibGVkKCFzZXR0aW5ncy5zaW1wbGVMaW5lTGF5b3V0
RW5hYmxlZCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
NWExMTgxZTc5MjAuLjM5YWM4Yjg1YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC0yMTU0LDcgKzIxNTQsNyBAQCBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gSW50ZXJuYWxz
Ojpjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdAogdW5zaWdu
ZWQgSW50ZXJuYWxzOjpudW1iZXJPZkxpdmVOb2RlcygpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQg
bm9kZUNvdW50ID0gMDsKLSAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERv
Y3VtZW50cygpKQorICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1l
bnRzKCkudmFsdWVzKCkpCiAgICAgICAgIG5vZGVDb3VudCArPSBkb2N1bWVudC0+cmVmZXJlbmNp
bmdOb2RlQ291bnQoKTsKICAgICByZXR1cm4gbm9kZUNvdW50OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCmluZGV4IDE3OTY0ZWFkNjA0
Li4wY2Y5YTgxNjQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyLmNwcApAQCAtNjksNyArNjksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTZXJ2
aWNlV29ya2VyOjpwb3N0TWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBK
UwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0
ZXJhbCgiUGFzc2luZyBNZXNzYWdlUG9ydCBvYmplY3RzIHRvIHBvc3RNZXNzYWdlIGlzIG5vdCB5
ZXQgc3VwcG9ydGVkIikgfTsKIAogICAgIGF1dG8mIHN3Q29ubmVjdGlvbiA9IFNlcnZpY2VXb3Jr
ZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9u
KGNvbnRleHQuc2Vzc2lvbklEKCkpOwotICAgIHN3Q29ubmVjdGlvbi5wb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKG1faWRlbnRpZmllciwgbWVzc2FnZS5yZWxlYXNlUmV0dXJu
VmFsdWUoKSwgY29udGV4dC5vcmlnaW4oKSk7CisgICAgc3dDb25uZWN0aW9uLnBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUobV9pZGVudGlmaWVyLCBtZXNzYWdlLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpLCBjb250ZXh0KTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAK
aW5kZXggY2QzMDFkMDg4MjMuLjE2OTA1YThhYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCkBAIC0yOCwzNCAr
MjgsNTkgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlckNsaWVudC5oIgogCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
CisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCIKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1TZXJ2aWNlV29ya2VyQ2xpZW50OjpTZXJ2aWNlV29ya2VyQ2xpZW50KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFR5cGUgdHlwZSkKK1NlcnZpY2VXb3JrZXJD
bGllbnQ6OlNlcnZpY2VXb3JrZXJDbGllbnQoUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdWludDY0X3QgaWRlbnRpZmllciwgVHlw
ZSB0eXBlKQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmNvbnRleHQpCisgICAg
LCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1faWRlbnRpZmllcihp
ZGVudGlmaWVyKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiB9CiAKLVN0cmluZyBTZXJ2aWNlV29y
a2VyQ2xpZW50Ojp1cmwoKSBjb25zdAorU2VydmljZVdvcmtlckNsaWVudDo6flNlcnZpY2VXb3Jr
ZXJDbGllbnQoKQogewotICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gU2VydmljZVdvcmtlckNs
aWVudDo6ZnJhbWVUeXBlKCkgY29uc3QgLT4gRnJhbWVUeXBlCitTdHJpbmcgU2VydmljZVdvcmtl
ckNsaWVudDo6dXJsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRnJhbWVUeXBlOjpOb25lOworICAg
IHJldHVybiB7IH07CiB9CiAKIFN0cmluZyBTZXJ2aWNlV29ya2VyQ2xpZW50OjppZCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV9pZGVudGlm
aWVyKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlckNsaWVudDo6cG9zdE1l
c3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgVmVjdG9yPEpTQzo6
U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQorRXhjZXB0aW9uT3I8dm9pZD4gU2Vy
dmljZVdvcmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6
SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQogewotICAgIFVOVVNFRF9QQVJBTShtZXNzYWdlKTsKLSAg
ICBVTlVTRURfUEFSQU0odHJhbnNmZXIpOwotICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBw
b3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJjbGllbnQucG9zdE1lc3NhZ2UoKSBpcyBub3QgeWV0
IHN1cHBvcnRlZCIpIH07CisgICAgYXV0byogZXhlY1N0YXRlID0gY29udGV4dC5leGVjU3RhdGUo
KTsKKyAgICBBU1NFUlQoZXhlY1N0YXRlKTsKKworICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBv
cnQ+PiBwb3J0czsKKyAgICBhdXRvIG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZSgqZXhlY1N0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUodHJhbnNmZXIpLCBwb3J0cywg
U2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlKTsKKyAgICBpZiAobWVzc2Fn
ZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2UucmVsZWFzZUV4Y2VwdGlv
bigpOworCisgICAgLy8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4gcHJlcGFyYXRpb24gZm9yIHNl
bmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBjb250ZXh0LgorICAgIGF1dG8gY2hhbm5lbHNPckV4Y2Vw
dGlvbiA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKFdURk1vdmUocG9ydHMpKTsKKyAg
ICBpZiAoY2hhbm5lbHNPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IGNoYW5uZWxzT3JFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgLy8gRklYTUU6
IFN1cHBvcnQgc2VuZGluZyB0aGUgY2hhbm5lbHMuCisgICAgYXV0byBjaGFubmVscyA9IGNoYW5u
ZWxzT3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgaWYgKGNoYW5uZWxzICYm
ICFjaGFubmVscy0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3Vw
cG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUGFzc2luZyBNZXNzYWdlUG9ydCBvYmplY3RzIHRv
IHBvc3RNZXNzYWdlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIikgfTsKKworICAgIC8vIEZJWE1FOiBT
aG91bGQgbGlrZWx5IHBhc3MgdGhlIHNvdXJjZSBvcmlnaW4uCisgICAgbV9jb25uZWN0aW9uLT5w
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChtZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpKTsKKworICAgIHJldHVybiB7IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVu
dC5oCmluZGV4IDY5YjkxZTA4YTM5Li40ZWM5Y2MzY2IzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5oCkBAIC0zNCwzNyAr
MzQsNDUgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
LWNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTVmFsdWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworY2xhc3MgU2VydmljZVdvcmtlckNs
aWVudENvbm5lY3Rpb247CisKIGNsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnQgOiBwdWJsaWMgUmVm
Q291bnRlZDxTZXJ2aWNlV29ya2VyQ2xpZW50PiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyIHsKIHB1YmxpYzoKKyAgICB1c2luZyBDb25uZWN0aW9uID0gU2VydmljZVdvcmtlckNs
aWVudENvbm5lY3Rpb247CisKICAgICB1c2luZyBUeXBlID0gU2VydmljZVdvcmtlckNsaWVudFR5
cGU7Ci0gICAgZW51bSBjbGFzcyBGcmFtZVR5cGUgeworICAgICBlbnVtIGNsYXNzIEZyYW1lVHlw
ZSB7CiAgICAgICAgIEF1eGlsaWFyeSwKICAgICAgICAgVG9wTGV2ZWwsCiAgICAgICAgIE5lc3Rl
ZCwKICAgICAgICAgTm9uZQogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJD
bGllbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUeXBlIHR5cGUp
CisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50PiBjcmVhdGUoUmVmPENvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdWludDY0
X3QgaWRlbnRpZmllciwgVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2VydmljZVdvcmtlckNsaWVudChjb250ZXh0LCB0eXBlKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJDbGllbnQoV1RGTW92ZShjb25uZWN0aW9uKSwg
Y29udGV4dCwgaWRlbnRpZmllciwgdHlwZSkpOwogICAgIH0KIAorICAgIH5TZXJ2aWNlV29ya2Vy
Q2xpZW50KCk7CisKICAgICBTdHJpbmcgdXJsKCkgY29uc3Q7CiAgICAgRnJhbWVUeXBlIGZyYW1l
VHlwZSgpIGNvbnN0OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQog
ICAgIFN0cmluZyBpZCgpIGNvbnN0OwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1lc3Nh
Z2UoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgVmVjdG9yPEpTQzo6U3Ry
b25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBw
b3N0TWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2Us
IFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2Zlcik7CiAKIHByb3Rl
Y3RlZDoKLSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBU
eXBlKTsKKyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50KFJlZjxDb25uZWN0aW9uPiYmLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgdWludDY0X3QgaWRlbnRpZmllciwgVHlwZSk7CiAKKyAgICBSZWY8
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAg
ICBUeXBlIG1fdHlwZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAppbmRleCBmN2U0YTk4ZGUyMC4uZDhhY2Fj
OTk4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudC5pZGwKQEAgLTM1LDcgKzM1LDcgQEAKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgU2VydmljZVdvcmtlckNsaWVudFR5cGUgdHlwZTsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGlkOwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8
b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9w
dGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiB9OwogCiBlbnVtIEZyYW1l
VHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggMjU5MTlhYjFhMzkuLmFiZmRhY2Iz
NzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0yOSwyNSArMjksMTEgQEAKICNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRl
ICJXb3JrZXJOYXZpZ2F0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgU2Vy
dmljZVdvcmtlckNvbnRhaW5lciogY29udGFpbmVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotewotICAgIE5hdmlnYXRvckJhc2UqIG5h
dmlnYXRvciA9IG51bGxwdHI7Ci0gICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkgewotICAg
ICAgICBpZiAoYXV0byogd2luZG93ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLmRvbVdp
bmRvdygpKQotICAgICAgICAgICAgbmF2aWdhdG9yID0gd2luZG93LT5uYXZpZ2F0b3IoKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgbmF2aWdhdG9yID0gJmRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KS5uYXZpZ2F0b3IoKTsKLQotICAgIHJldHVybiBuYXZpZ2F0b3IgPyBuYXZpZ2F0
b3ItPnNlcnZpY2VXb3JrZXIoKSA6IG51bGxwdHI7Ci19Ci0KIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb246OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiByZWdpc3RyYXRpb25EYXRh
KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9yZWdpc3RyYXRpb25E
YXRhKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpCkBAIC05NCw3ICs4MCw3IEBAIHZvaWQgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dW5yZWdpc3RlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvKiBjb250YWluZXIg
PSBjb250YWluZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KCpjb250ZXh0KTsKKyAgICBhdXRv
KiBjb250YWluZXIgPSBjb250ZXh0LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7CiAgICAgaWYg
KCFjb250YWluZXIpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbihJbnZhbGlk
U3RhdGVFcnJvcikpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKaW5k
ZXggNDZkMjk5MGUyOTYuLjUyZTg2NmNiY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwCkBA
IC0zMiw4ICszMiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudDo6U2VydmljZVdvcmtlcldpbmRvd0NsaWVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KQotICAgIDogU2VydmljZVdvcmtlckNsaWVudChjb250ZXh0LCBUeXBlOjpX
aW5kb3cpCitTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50OjpTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50KFJlZjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgOiBTZXJ2aWNlV29ya2VyQ2xpZW50
KFdURk1vdmUoY29ubmVjdGlvbiksIGNvbnRleHQsIGlkZW50aWZpZXIsIFR5cGU6OldpbmRvdykK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJXaW5kb3dDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmgKaW5kZXggODNjODBlMjgwN2IuLmNiNmU3MGI3Zjkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
cldpbmRvd0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmgKQEAgLTM2LDkgKzM2LDkgQEAgY2xhc3MgRGVmZXJyZWRQ
cm9taXNlOwogCiBjbGFzcyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50IGZpbmFsIDogcHVibGlj
IFNlcnZpY2VXb3JrZXJDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VydmljZVdv
cmtlcldpbmRvd0NsaWVudD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
CisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50PiBjcmVhdGUoUmVmPENv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
dWludDY0X3QgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoY29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFdURk1vdmUoY29ubmVjdGlvbiks
IGNvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICBWaXNpYmlsaXR5U3RhdGUgdmlz
aWJpbGl0eVN0YXRlKCkgY29uc3Q7CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IG5hdmlnYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFJlZjxDb25u
ZWN0aW9uPiYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdWludDY0X3QgaWRlbnRpZmllcik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckNs
aWVudENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
ODljZDJjYmY4OWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEs
NDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOworCitjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbiA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbj4g
eworcHVibGljOgorICAgIHZpcnR1YWwgflNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uKCkg
eyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQo
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlKSA9IDA7Cit9OworCit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCBjZjc4ZTkxOTAyYi4uOWJhZDE4
OWFiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0zMiw4ICszMiwxMCBAQAog
I2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIgogI2luY2x1
ZGUgIkV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckZldGNoLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oIgogI2luY2x1ZGUgIldv
cmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CkBAIC05OSwxMiArMTAxLDEzIEBAIHZvaWQgU2VydmljZVdv
cmtlclRocmVhZDo6cG9zdEZldGNoVGFzayhSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+
JiYgY2xpZW50CiAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKLXZv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZShSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4mJiBjaGFubmVscywgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VPcmlnaW4pCit2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUoUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uPiYmIGNs
aWVudENvbm5lY3Rpb24sIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgc3Rk
Ojp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYmIGNoYW5uZWxzLCB1aW50NjRf
dCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soW2NoYW5uZWxzID0gV1RGTW92ZShjaGFu
bmVscyksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4gPSBzb3VyY2VP
cmlnaW4uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBt
dXRhYmxlIHsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soW2NsaWVudENv
bm5lY3Rpb24gPSBXVEZNb3ZlKGNsaWVudENvbm5lY3Rpb24pLCBjaGFubmVscyA9IFdURk1vdmUo
Y2hhbm5lbHMpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwg
c291cmNlT3JpZ2luID0gc291cmNlT3JpZ2luLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIHNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4
dCk7CiAgICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUsIFdURk1vdmUoY2hhbm5lbHMpKTsKLSAgICAgICAgc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6
Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4pKTsK
KyAgICAgICAgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2UgPSBSZWZQdHI8U2Vy
dmljZVdvcmtlckNsaWVudD4geyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50OjpjcmVhdGUoV1RG
TW92ZShjbGllbnRDb25uZWN0aW9uKSwgY29udGV4dCwgc291cmNlSWRlbnRpZmllcikgfTsKKyAg
ICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXh0ZW5kYWJsZU1l
c3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3Vy
Y2VPcmlnaW4sIHsgfSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS50aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgpLmNvbmZpcm1NZXNzYWdlRnJv
bVdvcmtlck9iamVjdChzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaGFzUGVuZGluZ0FjdGl2aXR5
KCkpOwogICAgIH0pOwogICAgIHJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuaAppbmRleCAzMzczMTM5YzJiNS4uYjFjZThlNjExOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgQ29udGVudFNlY3Vy
aXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzOwogY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsOwogY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7CitjbGFz
cyBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFdvcmtlck9iamVjdFByb3h5
Owogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIApAQCAtNTUsNyArNTYsNyBAQCBw
dWJsaWM6CiAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5KCkgY29uc3Qg
eyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwb3N0RmV0Y2hUYXNrKFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYsIEZldGNoT3B0aW9ucyYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoUmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYmLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50Q29u
bmVjdGlvbj4mJiwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgc3RkOjp1bmlxdWVfcHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYmLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAKIHByb3RlY3RlZDoKICAgICBSZWY8V29ya2Vy
R2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxk
Q29udGVudFNlY3VyaXR5UG9saWN5LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBN
b25vdG9uaWNUaW1lIHRpbWVPcmlnaW4sIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29u
bmVjdGlvbi5oCmluZGV4IDUwOGE1OGE0OWYyLi5mYzljZmJhZmU5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVj
dGlvbi5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlSm9iKFNl
cnZpY2VXb3JrZXJKb2ImKTsKICAgICB2b2lkIGZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2Vydmlj
ZVdvcmtlckpvYiYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZmFpbGVkRmV0Y2hpbmdTY3Jp
cHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VPcmlnaW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
c291cmNlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2lu
KGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcAppbmRleCBlOWJjYjMyNTM0Mi4uODA5ODMyMzhiOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xMDgsOSArMTA4LDkgQEAgdm9p
ZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyLCB1aW50NjRfdCBzZXJ2aWMKICAgICBzZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6
U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpTdGFydEZldGNoKGlkZW50aWZpZXIoKSwgZmV0
Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucykp
OwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikK
K3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKQogewotICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2Vz
OjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUoaWRlbnRpZmllcigpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbWVzc2Fn
ZSwgc291cmNlT3JpZ2luKSk7CisgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZShpZGVudGlmaWVyKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtZXNzYWdlLCBz
b3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IGZldGNoSWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMzgsNiArMTM4LDExIEBA
IHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWROb3RIYW5kbGVGZXRjaCh1aW50NjRfdCBm
ZXRjaElkZW50aWZpZXIpCiAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZp
ZXIpOwogfQogCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJDbGllbnQodWludDY0X3QgY2xpZW50SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBtZXNzYWdlKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29u
bmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBjbGllbnRJZGVudGlm
aWVyLCBtZXNzYWdlIH0pOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpCiB7CiAgICAg
aWYgKCFtX2NvbnRleHRDb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5oCmluZGV4IDI5MjZlODNlNDMxLi5iMmQ0NGY2ZGUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uaApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRG
YWlsRmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZE5vdEhhbmRs
ZUZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSk7CisKIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50
IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlByb2Nlc3Mp
CiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmluYWw7CkBAIC02Niw3ICs2OCw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50
NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJik7CiAKLSAgICB2b2lkIHBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VPcmlnaW4pOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbik7CiAKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgY29udGV4dCBXZWJQ
cm9jZXNzCiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggM2IyMDQ1YzY0NDQuLjU5Zjdl
ODI1NTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KQEAgLTI4LDcgKzI4LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uIHsKICAgICBGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQgcmVzdWx0KQogCiAgICAgU3RhcnRGZXRjaCh1aW50NjRf
dCBpZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0
aW9ucykKLSAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgU3Ry
aW5nIHNvdXJjZU9yaWdpbikKKyAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2Ug
bWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggODc2NGNkMDcwMmQuLmM2
MTYwMzk3YzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQ
cm9jZXNzLmNwcApAQCAtNDM1LDYgKzQzNSwxMiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRG
aW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0Xwog
ICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hGZXRjaChmZXRjaElkZW50aWZpZXIpOwogfQog
Cit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjbGllbnRJZGVudGlm
aWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UpCit7CisgICAgaWYgKGF1dG8q
IGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJDbGllbnQoY2xpZW50SWRlbnRpZmllciwgbWVzc2FnZSk7Cit9CisKIHZvaWQgU3RvcmFnZVBy
b2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQoIW1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5jb250YWlu
cyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmluZGV4IGFhODY0NWI3NzFjLi5hNzc0YjgzZTRmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtMTI1
LDYgKzEyNSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAg
ICB2b2lkIGRpZEZhaWxGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZUZldGNoKHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZp
ZXIpOworCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4g
aW5kZXhlZERhdGFiYXNlT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggMzM5MmFmNzE1ZDEuLmNlZTJiNmNkNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTQ2LDUg
KzQ2LDYgQEAgbWVzc2FnZXMgLT4gU3RvcmFnZVByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAg
IERpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UpCiAgICAgRGlkUmVjZWl2ZUZldGNoRGF0YSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAgICBEaWRGaW5pc2hGZXRjaCh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyKQorICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBJUEM6OkRh
dGFSZWZlcmVuY2UgbWVzc2FnZSkKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzdmMjUxYTdmMmEuLjg3NjI5MGFhNzlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTEzNzcsNiArMTM3Nyw4IEBACiAJCTgzMkVEMThDMUUyRkUxNTcwMDZCQTY0QSAvKiBQZXJB
Y3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJFRDE4QTFFMkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0aXZp
dHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oICovOyB9OwogCQk4MzRCMjUwRjFBODMxQThEMDBDRkIx
NTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM0QjI1MEUxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtD
YWNoZUZpbGVTeXN0ZW0uaCAqLzsgfTsKIAkJODM0QjI1MTIxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzNEIyNTEwMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0
aXN0aWNzLmggKi87IH07CisJCTgzNTczMUMxMUZBMEYwRjgwMDg1RjREMyAvKiBXZWJTZXJ2aWNl
V29ya2VyQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzU3MzFDMDFGQTBGMEVEMDA4NUY0RDMgLyogV2ViU2VydmljZVdv
cmtlckNsaWVudENvbm5lY3Rpb24uY3BwICovOyB9OworCQk4MzU3MzFDMjFGQTBGMEY4MDA4NUY0
RDMgLyogV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNTczMUJGMUZBMEYwRUMwMDg1RjREMyAv
KiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oICovOyB9OwogCQk4MzYwMzQ5RjFB
Q0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNjAzNDlEMUFDQjM0RDYwMDYy
NjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwICovOyB9OwogCQk4MzYwMzRBMDFB
Q0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzYwMzQ5RTFBQ0IzNEQ2MDA2MjY1
NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggKi87IH07CiAJCTgzNkVFQjgwMUJFOUVD
OUUwMDZCNEI4MiAvKiBOZXR3b3JrTG9hZE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNkVFQjdGMUJFOUVDOUUwMDZCNEI4MiAvKiBOZXR3b3Jr
TG9hZE1hYy5tbSAqLzsgfTsKQEAgLTM3NjEsNiArMzc2Myw5IEBACiAJCTgzMkVEMThBMUUyRkUx
M0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM0QjI1MEUxQTgzMUE4RDAwQ0ZCMTUw
IC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzRCMjUxMDFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzNTczMUJFMUZBMEYwRUMwMDg1RjRE
MyAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzU3MzFCRjFGQTBGMEVDMDA4NUY0RDMgLyogV2Vi
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODM1NzMxQzAxRkEwRjBFRDAwODVGNEQzIC8qIFdlYlNlcnZpY2VX
b3JrZXJDbGllbnRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODM2MDM0OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURh
dGFiYXNlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzYwMzQ5RTFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzZFRUI3RjFCRTlFQzlFMDA2QjRC
ODIgLyogTmV0d29ya0xvYWRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBOZXR3b3JrTG9hZE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTYyMTIsOCArNjIxNywxMSBAQAogCQkJCTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDEzMUYzRDMxRjk2RTkz
MTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgKi8sCiAJCQkJNDEz
MUYzRDIxRjk2RTkzMDAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oICov
LAorCQkJCTgzNTczMUJFMUZBMEYwRUMwMDg1RjREMyAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1h
bmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDE0REVEQzUxRjlFNEJFQzAwNDdDNDBEIC8qIFNl
cnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5jcHAgKi8sCiAJCQkJNDE0REVEQzQxRjlFNEJF
QjAwNDdDNDBEIC8qIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oICovLAorCQkJCTgz
NTczMUMwMUZBMEYwRUQwMDg1RjREMyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlv
bi5jcHAgKi8sCisJCQkJODM1NzMxQkYxRkEwRjBFQzAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3Jr
ZXJDbGllbnRDb25uZWN0aW9uLmggKi8sCiAJCQkJNDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8q
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwICovLAogCQkJCTQxOUFDRjlCMUY5
ODFEMjYwMDlGMUE4MyAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggKi8sCiAJ
CQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAyOUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5j
cHAgKi8sCkBAIC05MDY3LDYgKzkwNzUsNyBAQAogCQkJCTQxREM0NTlGMUUzREJEQTUwMEIxMUY1
MSAvKiBXZWJSVENTb2NrZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDMzYxRDczMTkyN0ZBMzYw
MDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RDNCOTQ4NDkxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODM1NzMxQzIxRkEwRjBGODAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJD
bGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUJFQjYyQzFGM0E1QUQ3MDA1
MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTQ4MzJENzFBOUNERjk2MDA4QjRERkUgLyogV2Vic2l0ZURhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNDgzMkQxMUE5QkRDMkYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMDcyMCw2ICsxMDcyOSw3IEBACiAJCQkJNTFGMDYwRTExNjU0MzE4NTAw
RjMyODFDIC8qIFdlYlJUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzM2MUQ3MjE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDNCOTQ4NDgxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNl
YXJjaFBvcHVwTWVudS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4MzU3MzFDMTFGQTBGMEY4MDA4
NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDEzMUYzRTIxRjk4ODA4NDAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCRUI2MkIxRjNBNUFENzAwNTAy
OUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QTQ4MzJENjFBOUNERjk2MDA4QjRERkUgLyogV2Vic2l0ZURhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29y
a2VyQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcAppbmRleCA5NGQ2MzRkNjEyYi4uOTFhMzg0
MTQxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVu
Y2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2Vydmlj
ZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0UHJvdmlkZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0VkaXRvckNsaWVudC5oPgpAQCAtMTMyLDE0ICsxMzMsMTYgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIKICAgICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPnRocmVhZCgpLnBv
c3RGZXRjaFRhc2soV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9w
dGlvbnMpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQordm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2Us
IHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQog
ewogICAgIGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoc2VydmljZVdvcmtl
cklkZW50aWZpZXIpOwogICAgIGlmICghc2VydmljZVdvcmtlcikKICAgICAgICAgcmV0dXJuOwog
CisgICAgYXV0byBjbGllbnRDb25uZWN0aW9uID0gV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5l
Y3Rpb246OmNyZWF0ZShtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLmNvcHlSZWYoKSwgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNvdXJjZUlkZW50aWZpZXIpOworCiAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBwYXNzIHZhbGlkIE1lc3NhZ2VQb3J0Q2hhbm5lbHMuCi0gICAgc2Vydmlj
ZVdvcmtlci0+dGhyZWFkKCkucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KG1lc3NhZ2UudmVjdG9yKCkpLCBudWxscHRyLCBz
b3VyY2VPcmlnaW4pOworICAgIHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoV1RGTW92ZShjbGllbnRDb25uZWN0aW9uKSwgU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjphZG9wdChtZXNzYWdlLnZlY3RvcigpKSwgbnVsbHB0ciwgc291cmNl
SWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtl
ckNvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaAppbmRleCBlMGRiODI2OWU3My4uOWE1ZWJiYzMwNzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlcih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJik7CiAg
ICAgdm9pZCBzdGFydEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYpOwot
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VPcmlnaW4pOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0
X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwogCiAgICAg
UmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzczsKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
Pj4gbV93b3JrZXJNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2Fn
ZXMuaW4KaW5kZXggODY2NjNmODFlN2MuLjlmOTY0ZmM4MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNvbnRleHRNYW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBACiBtZXNzYWdl
cyAtPiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIgewogICAgIFN0YXJ0U2VydmljZVdvcmtl
cih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSkKICAgICBTdGFydEZldGNoKHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIs
IHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zKQotICAgIFBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRh
dGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKKyAgICBQb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJl
bmNlIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmln
aW4pCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggMzA4NmVhNGZjMGUuLmM3
OGJlNmRjYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJTV09yaWdpblRhYmxl
LmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckpvYkRhdGEuaD4KQEAgLTY4LDkgKzcwLDEzIEBAIHZvaWQgV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNl
cnZpY2VXb3JrZXJGZXRjCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHJlc3VsdCkpOwogfQogCi12b2lkIFdlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1
aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiBzY3JpcHRWYWx1ZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFdlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1
aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiBzY3JpcHRWYWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc291cmNlKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVm
ZXJlbmNlIHsgc2NyaXB0VmFsdWUtPmRhdGEoKSB9LCBzb3VyY2VPcmlnaW4pKTsKKyAgICAvLyBG
SVhNRTogQWRkIHN1cHBvcnQgZm9yIHBvc3RpbmcgbWVzc2FnZXMgZnJvbSB3b3JrZXJzLgorICAg
IGlmICghaXM8RG9jdW1lbnQ+KHNvdXJjZSkpCisgICAgICAgIHJldHVybjsKKworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNl
IHsgc2NyaXB0VmFsdWUtPmRhdGEoKSB9LCBkb3duY2FzdDxEb2N1bWVudD4oc291cmNlKS5pZGVu
dGlmaWVyKCksIHNvdXJjZS5vcmlnaW4oKSkpOwogfQogCiBib29sIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6aGFzU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlP
cmlnaW4mIG9yaWdpbikgY29uc3QKQEAgLTkyLDYgKzk4LDI1IEBAIFJlZjxTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2g+IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChXZWJTZXJ2aWNl
V29ya2VyCiAgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Y3JlYXRlKHByb3Zp
ZGVyLCBXVEZNb3ZlKGxvYWRlciksIGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgV1RG
TW92ZShjYWxsYmFjaykpOwogfQogCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0X3QgY2xpZW50SWRlbnRpZmllciwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlKQoreworICAgIC8vIEZJWE1FOiBjbGllbnRJ
ZGVudGlmaWVyIGNhbiBvbmx5IGlkZW50aWZ5IGEgRG9jdW1lbnQgYXQgdGhlIG1vbWVudC4KKyAg
ICBhdXRvKiBkZXN0aW5hdGlvbkRvY3VtZW50ID0gRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLmdl
dChjbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAoIWRlc3RpbmF0aW9uRG9jdW1lbnQpIHsKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgZmluZCBjbGllbnQgZG9jdW1lbnQgd2l0aCB0
aGUgZ2l2ZW4gaWRlbnRpZmllciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0
byogY29udGFpbmVyID0gZGVzdGluYXRpb25Eb2N1bWVudC0+c2VydmljZVdvcmtlckNvbnRhaW5l
cigpOworICAgIGlmICghY29udGFpbmVyKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQg
bm90IGZpbmQgc2VydmljZSB3b3JrZXIgY29udGFpbmVyIGZvciBjbGllbnQgZG9jdW1lbnQiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBGaXJlIE1lc3NhZ2VFdmVu
dCBhdCBjb250YWluZXIuCisgICAgVU5VU0VEX1BBUkFNKG1lc3NhZ2UpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25u
ZWN0aW9uLmgKaW5kZXggMWNkMjkyOTllM2YuLjA4OGI1NzIxYTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
aApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjaGVkdWxlSm9iSW5TZXJ2
ZXIoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmKSBmaW5hbDsKICAgICB2b2lk
IGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckZldGNoUmVzdWx0JikgZmluYWw7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8V2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikg
ZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVp
bnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzb3VyY2UpIGZp
bmFsOwogCiAgICAgdm9pZCBkaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7
CkBAIC02NCw2ICs2NCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdp
c3RlcmVkRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgY29uc3QgZmlu
YWw7CiAgICAgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gc3RhcnRGZXRjaChXZWJTZXJ2
aWNlV29ya2VyUHJvdmlkZXImLCBSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYsIHVpbnQ2
NF90IGlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2smJik7CiAK
KyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGNsaWVu
dElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSk7CisKIHByaXZh
dGU6CiAgICAgdm9pZCBzY2hlZHVsZVN0b3JhZ2VKb2IoY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlckpvYkRhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4
IDExNTVkMWJhYWQ4Li45ZWQ5YzA0ZTQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbgpAQCAtMzAsNiArMzAsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV0NsaWVudENvbm5lY3Rp
b24gewogICAgIFN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIodWludDY0X3Qgam9iSWRlbnRpZmll
cikKIAogICAgIFNldFNXT3JpZ2luVGFibGVTaGFyZWRNZW1vcnkoV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OkhhbmRsZSBoYW5kbGUpCisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQo
dWludDY0X3QgY2xpZW50SWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
Q2xpZW50Q29ubmVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLmY2NjcwYmQyZmFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0wLDAg
KzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCisjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rp
b24uaCIKKworI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNl
LmgiCisjaW5jbHVkZSAiU3RvcmFnZVByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitXZWJTZXJ2
aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjo6V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rp
b24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgY2xpZW50SWRlbnRpZmllcikKKyAgICA6IG1fY29u
bmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQorICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAsIG1fY2xpZW50SWRlbnRp
ZmllcihjbGllbnRJZGVudGlmaWVyKQoreworfQorCitXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29u
bmVjdGlvbjo6fldlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uKCkKK3sKKyAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2Nvbm5lY3Rpb24gPSBXVEZNb3ZlKG1fY29ubmVjdGlvbild
IHsgfSk7Cit9CisKK3ZvaWQgV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb246OnBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
bWVzc2FnZSkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQcm9j
ZXNzOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCB7IG1fc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIG1fY2xpZW50SWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgbWVz
c2FnZS0+ZGF0YSgpIH0gfSwgMCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jOGMwMTA2NjkxZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25u
ZWN0aW9uLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29y
a2VyQ2xpZW50Q29ubmVjdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKworbmFtZXNwYWNl
IElQQyB7CitjbGFzcyBDb25uZWN0aW9uOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24gZmluYWw6IHB1YmxpYyBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbj4gY3JlYXRlKFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbihXVEZNb3ZlKGNvbm5lY3Rp
b24pLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllcikpOworICAg
IH0KKworICAgIH5XZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbigpOworCisgICAgLy8g
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uCisgICAgdm9pZCBwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckNsaWVudChSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmIG1lc3NhZ2UpIGZpbmFsOworCitwcml2YXRlOgorICAgIFdlYlNlcnZpY2VXb3JrZXJD
bGllbnRDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyKTsKKworICAgIFJl
ZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICB1aW50NjRfdCBtX3NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyOworICAgIHVpbnQ2NF90IG1fY2xpZW50SWRlbnRpZmllcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324917</attachid>
            <date>2017-10-25 16:23:01 -0700</date>
            <delta_ts>2017-10-25 17:03:19 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>178794_SW_Client_postMessage_wip.patch</filename>
            <type>text/plain</type>
            <size>59047</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBiZDg0YjRmZTlmOC4uOTk5ZTU3NzQxZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI4NzksNiArMjg3OSw3IEBACiAJ
CTgzNzJEQjMxMUE2NzgwQTgwMEM2OTdDNSAvKiBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzJEQjMw
MUE2NzgwQTgwMEM2OTdDNSAvKiBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4Mzc2NUY5NTFEQUM1
MjJGMDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNzY1Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2
ZW50SW5pdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3OTY0Q0Ux
RjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gKi87IH07CisJCTgz
N0EyNDU4MUZBMEVDQzgwMEZCMTVFMiAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTI0NTYx
RkEwRUNDNTAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3QTgwMTMxRTFF
MTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0IGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBODAxMTFFMUUxMjczMDAwMjZCOUYg
LyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07CiAJCTgzN0I3RDIwMURDM0Y1NTAwMEQw
NTFGQyAvKiBWYWxpZGF0aW9uQnViYmxlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QjdEMUYxREMzRjU0QzAwRDA1MUZDIC8qIFZhbGlkYXRp
b25CdWJibGVJT1MubW0gKi87IH07CiAJCTgzN0ZCMzQ0MUY5RUEwNkQwMEQwRkMzMSAvKiBFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzN0ZCMzQyMUY5RUEwNjcwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2Fn
ZUV2ZW50LmNwcCAqLzsgfTsKQEAgLTEwNjI3LDYgKzEwNjI4LDcgQEAKIAkJODM3NjVGOTMxREFD
NTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBNb3VzZUV2ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzY1
Rjk0MURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb3VzZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9u
UG9zaXRpb25JT1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlv
blBvc2l0aW9uSU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTgzN0EyNDU2
MUZBMEVDQzUwMEZCMTVFMiAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdBODAxMjFFMUUxMjczMDAwMjZC
OUYgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQucGxpc3Quc3RyaW5nc2RpY3Q7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5n
bGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzZGljdDsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OwogCQk4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJsZUlP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZhbGlkYXRpb25C
dWJibGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzN0RGQjM0MUVCRkVB
NzAwMDYwMTM4NSAvKiBFbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMDY1NSw3ICsxMDY1Nyw3IEBACiAJCTgzOUFBRkVCMUEwQzBDOEQwMDYwNUY5OSAv
KiBIVE1MV0JSRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1M
V0JSRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0E0QTlGODFDRTdG
RDdFMDA3MDlCMDAgLyogSlNYTUxEb2N1bWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODNCMjUwMDkxRkExMTgxQzAwQkMwMkQ5IC8qIEpTU2VydmljZVdv
cmtlckNsaWVudFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTZXJ2
aWNlV29ya2VyQ2xpZW50VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4M0Iy
NTAwQjFGQTExODFEMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRU
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODNCMjUwMEIxRkExMTgxRDAw
QkMwMkQ5IC8qIEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjc0RUYyMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVw
YWxpdmVSZXF1ZXN0VHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzQjc0RUYzMUYzRTBCRDcwMDk5NkJDNyAvKiBLZWVwYWxpdmVSZXF1ZXN0VHJhY2tl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBLZWVwYWxpdmVSZXF1ZXN0VHJh
Y2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I5Njg3OTE5RjhBQjgzMDA0
RUY3QUYgLyogU3R5bGVCdWlsZGVyQ29udmVydGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0eWxlQnVpbGRlckNvbnZlcnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTgwNjcsNiArMTgwNjksNyBAQAogCQk1MTdDODcwNzFGOEU4RkYyMDBFQjgwNzYg
LyogY29udGV4dCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJODM3QTI0NTYxRkEwRUNDNTAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0
aW9uLmggKi8sCiAJCQkJNDE5QUNGOTAxRjk3RTdENjAwOUYxQTgzIC8qIFNlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAgKi8sCiAJCQkJNDE5QUNGOEUxRjk3RTdENTAwOUYxQTgzIC8qIFNlcnZpY2VXb3Jr
ZXJGZXRjaC5oICovLAogCQkJCTUxN0M4NzExMUY4RUU3MkYwMEVCODA3NiAvKiBTZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcCAqLywKQEAgLTI5NTMyLDYgKzI5NTM1LDcgQEAKIAkJCQkyRDkzQUVFMzE5
REY1NjQxMDAyQTg2QzMgLyogU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFGMTc1NUQxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQ2RUYxNDJEMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzdBMjQ1ODFGQTBFQ0M4MDBGQjE1RTIgLyog
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2RUYx
NDJDMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODM2OUZERkMxRkExMDJFMzAwQzFGRjFGIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU1RjFGM0VCQzgzMDBDNzQ5NTAgLyogU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCAyNWQ0YTVjZmQ0MC4uZDcyMmI3Y2RiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtNDM0LDkgKzQzNCwxNSBAQCBzdGF0aWMgdm9pZCBwcmludE5hdmlnYXRpb25FcnJvck1l
c3NhZ2UoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIGFjdGl2ZVVSTCwgY29ucwogCiB1aW50NjRf
dCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7CiAKLUhhc2hTZXQ8RG9jdW1lbnQq
PiYgRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpCitzdGF0aWMgRG9jdW1lbnQ6OklkZW50aWZpZXIg
Z2VuZXJhdGVEb2N1bWVudElkZW50aWZpZXIoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxIYXNoU2V0PERvY3VtZW50Kj4+IGRvY3VtZW50czsKKyAgICBzdGF0aWMgdWludDY0X3QgaWRl
bnRpZmllciA9IDA7CisgICAgcmV0dXJuICsraWRlbnRpZmllcjsKK30KKworYXV0byBEb2N1bWVu
dDo6YWxsRG9jdW1lbnRzKCkgLT4gSGFzaE1hcDxJZGVudGlmaWVyLCBEb2N1bWVudCo+Jgorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPElkZW50aWZpZXIsIERvY3VtZW50Kj4+
IGRvY3VtZW50czsKICAgICByZXR1cm4gZG9jdW1lbnRzOwogfQogCkBAIC00OTUsOCArNTAxLDkg
QEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2ln
bmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICAgICAsIG1faXNTeW50aGVzaXplZChjb25zdHJ1
Y3Rpb25GbGFncyAmIFN5bnRoZXNpemVkKQogICAgICwgbV9pc05vblJlbmRlcmVkUGxhY2Vob2xk
ZXIoY29uc3RydWN0aW9uRmxhZ3MgJiBOb25SZW5kZXJlZFBsYWNlaG9sZGVyKQogICAgICwgbV9v
cmllbnRhdGlvbk5vdGlmaWVyKGN1cnJlbnRPcmllbnRhdGlvbihmcmFtZSkpCisgICAgLCBtX2lk
ZW50aWZpZXIoZ2VuZXJhdGVEb2N1bWVudElkZW50aWZpZXIoKSkKIHsKLSAgICBhbGxEb2N1bWVu
dHMoKS5hZGQodGhpcyk7CisgICAgYWxsRG9jdW1lbnRzKCkuYWRkKG1faWRlbnRpZmllciwgdGhp
cyk7CiAKICAgICAvLyBXZSBkZXBlbmQgb24gdGhlIHVybCBnZXR0aW5nIGltbWVkaWF0ZWx5IHNl
dCBpbiBzdWJmcmFtZXMsIGJ1dCB3ZQogICAgIC8vIGFsc28gZGVwZW5kIG9uIHRoZSB1cmwgTk9U
IGdldHRpbmcgaW1tZWRpYXRlbHkgc2V0IGluIG9wZW5lZCB3aW5kb3dzLgpAQCAtNTQ2LDcgKzU1
Myw4IEBAIFJlZjxEb2N1bWVudD4gRG9jdW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgY29udGV4dERv
Y3VtZW50KQogCiBEb2N1bWVudDo6fkRvY3VtZW50KCkKIHsKLSAgICBhbGxEb2N1bWVudHMoKS5y
ZW1vdmUodGhpcyk7CisgICAgYm9vbCB3YXNSZW1vdmVkID0gYWxsRG9jdW1lbnRzKCkucmVtb3Zl
KG1faWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VOVVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVk
KTsKIAogICAgIEFTU0VSVCghcmVuZGVyVmlldygpKTsKICAgICBBU1NFUlQobV9wYWdlQ2FjaGVT
dGF0ZSAhPSBJblBhZ2VDYWNoZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDE2NzE3ZTgxM2Rh
Li41MzQ2MWNiN2UxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM0Nyw3ICszNDcsOSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgSGFzaFNldDxEb2N1bWVudCo+JiBhbGxEb2N1bWVudHMoKTsKKyAgICB1c2luZyBJ
ZGVudGlmaWVyID0gdWludDY0X3Q7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hN
YXA8SWRlbnRpZmllciwgRG9jdW1lbnQqPiYgYWxsRG9jdW1lbnRzKCk7CiAKICAgICBNZWRpYVF1
ZXJ5TWF0Y2hlciYgbWVkaWFRdWVyeU1hdGNoZXIoKTsKIApAQCAtMTgyNiw2ICsxODI4LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fZ3JhbnRTdG9yYWdlQWNjZXNzT3ZlcnJpZGUgeyBmYWxzZSB9
OwogCiAgICAgUmVmUHRyPERvY3VtZW50VGltZWxpbmU+IG1fdGltZWxpbmU7CisgICAgSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiBFbGVtZW50KiBldmVudFRhcmdldEVsZW1lbnRGb3JE
b2N1bWVudChEb2N1bWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwCmluZGV4IDkyZTkwNTliOWEwLi4xM2IxZGI0YjU1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yLmgi
CiAjaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiUHVibGlj
VVJMTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCIKQEAgLTQ1
LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJOYXZp
Z2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9u
Z0lubGluZXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CkBAIC01
MjUsNCArNTI3LDE4IEBAIEpTQzo6RXhlY1N0YXRlKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpl
eGVjU3RhdGUoKQogICAgIHJldHVybiBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUod29y
a2VyR2xvYmFsU2NvcGUpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorU2Vydmlj
ZVdvcmtlckNvbnRhaW5lciogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2VydmljZVdvcmtlckNv
bnRhaW5lcigpCit7CisgICAgTmF2aWdhdG9yQmFzZSogbmF2aWdhdG9yID0gbnVsbHB0cjsKKyAg
ICBpZiAoaXM8RG9jdW1lbnQ+KCp0aGlzKSkgeworICAgICAgICBpZiAoYXV0byogd2luZG93ID0g
ZG93bmNhc3Q8RG9jdW1lbnQ+KCp0aGlzKS5kb21XaW5kb3coKSkKKyAgICAgICAgICAgIG5hdmln
YXRvciA9IHdpbmRvdy0+bmF2aWdhdG9yKCk7CisgICAgfSBlbHNlCisgICAgICAgIG5hdmlnYXRv
ciA9ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKnRoaXMpLm5hdmlnYXRvcigpOworCisg
ICAgcmV0dXJuIG5hdmlnYXRvciA/IG5hdmlnYXRvci0+c2VydmljZVdvcmtlcigpIDogbnVsbHB0
cjsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAyNjZmNDlhZWVjMC4uNTIxOGJlODUy
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAt
NjgsNiArNjgsMTAgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTb2NrZXRQcm92aWRl
cjsKIGNsYXNzIFVSTDsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK2NsYXNzIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI7CisjZW5kaWYKKwogbmFtZXNwYWNlIElEQkNsaWVudCB7CiBjbGFz
cyBJREJDb25uZWN0aW9uUHJveHk7CiB9CkBAIC0yMzQsNiArMjM4LDggQEAgcHVibGljOgogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB1aW50NjRfdCBzZWxlY3RlZFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsg
fQogICAgIHZvaWQgc2V0U2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcih1aW50NjRfdCBp
ZGVudGlmaWVyKSB7IG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisK
KyAgICBTZXJ2aWNlV29ya2VyQ29udGFpbmVyKiBzZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7CiAj
ZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1v
cnlSZWxlYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5k
ZXggN2FiMDkyNDM0YmYuLjNjYjNkZGZiYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01lbW9yeVJlbGVhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZU5vbmNyaXRpY2Fs
TWVtb3J5KCkKIAogICAgIGNsZWFyV2lkdGhDYWNoZXMoKTsKIAotICAgIGZvciAoYXV0byogZG9j
dW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpCisgICAgZm9yIChhdXRvKiBkb2N1bWVu
dCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkKICAgICAgICAgZG9jdW1lbnQt
PmNsZWFyU2VsZWN0b3JRdWVyeUNhY2hlKCk7CiAKICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9u
KCkucHJ1bmVEZWFkUmVzb3VyY2VzVG9TaXplKDApOwpAQCAtODMsNyArODMsNyBAQCBzdGF0aWMg
dm9pZCByZWxlYXNlQ3JpdGljYWxNZW1vcnkoU3luY2hyb25vdXMgc3luY2hyb25vdXMpCiAKICAg
ICBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmRyYWluKCk7CiAKLSAgICBmb3IgKGF1dG8mIGRv
Y3VtZW50IDogY29weVRvVmVjdG9yT2Y8UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERv
Y3VtZW50cygpKSkgeworICAgIGZvciAoYXV0byYgZG9jdW1lbnQgOiBjb3B5VG9WZWN0b3JPZjxS
ZWZQdHI8RG9jdW1lbnQ+PihEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpKSB7CiAg
ICAgICAgIGRvY3VtZW50LT5zdHlsZVNjb3BlKCkuY2xlYXJSZXNvbHZlcigpOwogICAgICAgICBk
b2N1bWVudC0+Zm9udFNlbGVjdG9yKCkuZW1wdHlDYWNoZXMoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDUwMTZhMDZlMjA0Li44MmM0ZTU3
NjRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE5
NDUsNyArMTk0NSw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpyZW1vdmVSYXJlRGF0YSgpCiAKIHZv
aWQgcHJpbnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cygpCiB7Ci0gICAgZm9yIChjb25zdCBh
dXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgIGZvciAoY29u
c3QgYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpIHsK
ICAgICAgICAgaWYgKCFkb2N1bWVudC0+cmVuZGVyVmlldygpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIGlmIChkb2N1bWVudC0+ZnJhbWUoKSAmJiBkb2N1bWVudC0+ZnJhbWUoKS0+
aXNNYWluRnJhbWUoKSkKQEAgLTE5NTcsNyArMTk1Nyw3IEBAIHZvaWQgcHJpbnRSZW5kZXJUcmVl
Rm9yTGl2ZURvY3VtZW50cygpCiAKIHZvaWQgcHJpbnRMYXllclRyZWVGb3JMaXZlRG9jdW1lbnRz
KCkKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3Vt
ZW50cygpKSB7CisgICAgZm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxE
b2N1bWVudHMoKS52YWx1ZXMoKSkgewogICAgICAgICBpZiAoIWRvY3VtZW50LT5yZW5kZXJWaWV3
KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKGRvY3VtZW50LT5mcmFtZSgp
ICYmIGRvY3VtZW50LT5mcmFtZSgpLT5pc01haW5GcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcAppbmRleCBhOTE2
MDQ1ZTRiYS4uZjA3ZDRjMWI0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgc3Rh
dGljIHZvaWQgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3MoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlciwgSGEKIAogc3RhdGljIHZvaWQgY29sbGVjdE5vbkVtcHR5TGVhZlJl
bmRlckJsb2NrRmxvd3NGb3JDdXJyZW50UGFnZShIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrRmxv
dyo+JiBsZWFmUmVuZGVyZXJzKQogewotICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBE
b2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50
IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLnZhbHVlcygpKSB7CiAgICAgICAgIGlmICghZG9j
dW1lbnQtPnJlbmRlclZpZXcoKSB8fCBkb2N1bWVudC0+cGFnZUNhY2hlU3RhdGUoKSAhPSBEb2N1
bWVudDo6Tm90SW5QYWdlQ2FjaGUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYg
KCFkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQtPmlzWEhUTUxEb2N1bWVu
dCgpKQpAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZS
ZW5kZXJCbG9ja0Zsb3dzRm9yQ3VycmVudFBhZ2UoSGFzaFNldDxjb25zdCBSZW5kCiAKIHZvaWQg
dG9nZ2xlU2ltcGxlTGluZUxheW91dCgpCiB7Ci0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERv
Y3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1
bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpIHsKICAgICAgICAgYXV0byYgc2V0dGluZ3Mg
PSBkb2N1bWVudC0+bXV0YWJsZVNldHRpbmdzKCk7CiAgICAgICAgIHNldHRpbmdzLnNldFNpbXBs
ZUxpbmVMYXlvdXRFbmFibGVkKCFzZXR0aW5ncy5zaW1wbGVMaW5lTGF5b3V0RW5hYmxlZCgpKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNWExMTgxZTc5MjAu
LjM5YWM4Yjg1YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMTU0
LDcgKzIxNTQsNyBAQCBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gSW50ZXJuYWxzOjpjb3VudEZpbmRN
YXRjaGVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdAogdW5zaWduZWQgSW50ZXJuYWxz
OjpudW1iZXJPZkxpdmVOb2RlcygpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgbm9kZUNvdW50ID0g
MDsKLSAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKQor
ICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVz
KCkpCiAgICAgICAgIG5vZGVDb3VudCArPSBkb2N1bWVudC0+cmVmZXJlbmNpbmdOb2RlQ291bnQo
KTsKICAgICByZXR1cm4gbm9kZUNvdW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCmluZGV4IDE3OTY0ZWFkNjA0Li4wY2Y5YTgxNjQy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
LmNwcApAQCAtNjksNyArNjksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTZXJ2aWNlV29ya2VyOjpw
b3N0TWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKUwogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUGFzc2lu
ZyBNZXNzYWdlUG9ydCBvYmplY3RzIHRvIHBvc3RNZXNzYWdlIGlzIG5vdCB5ZXQgc3VwcG9ydGVk
IikgfTsKIAogICAgIGF1dG8mIHN3Q29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6
c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKGNvbnRleHQuc2Vz
c2lvbklEKCkpOwotICAgIHN3Q29ubmVjdGlvbi5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlKG1faWRlbnRpZmllciwgbWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29u
dGV4dC5vcmlnaW4oKSk7CisgICAgc3dDb25uZWN0aW9uLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUobV9pZGVudGlmaWVyLCBtZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
LCBjb250ZXh0KTsKIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKaW5kZXggY2QzMDFk
MDg4MjMuLjM3M2U5MDNkY2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCkBAIC0yOCwxNCArMjgsMjUgQEAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudC5o
IgogCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1TZXJ2aWNlV29ya2VyQ2xpZW50OjpTZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFR5cGUgdHlwZSkKK1NlcnZpY2VXb3JrZXJDbGllbnQ6OlNlcnZp
Y2VXb3JrZXJDbGllbnQoUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgdWludDY0X3QgaWRlbnRpZmllciwgVHlwZSB0eXBlKQogICAg
IDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmNvbnRleHQpCisgICAgLCBtX2Nvbm5lY3Rp
b24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQog
ICAgICwgbV90eXBlKHR5cGUpCiB7CiB9CiAKK1NlcnZpY2VXb3JrZXJDbGllbnQ6On5TZXJ2aWNl
V29ya2VyQ2xpZW50KCkKK3sKK30KKwogU3RyaW5nIFNlcnZpY2VXb3JrZXJDbGllbnQ6OnVybCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTQ4LDE0ICs1OSwzMyBAQCBhdXRvIFNlcnZp
Y2VXb3JrZXJDbGllbnQ6OmZyYW1lVHlwZSgpIGNvbnN0IC0+IEZyYW1lVHlwZQogCiBTdHJpbmcg
U2VydmljZVdvcmtlckNsaWVudDo6aWQoKSBjb25zdAogewotICAgIHJldHVybiB7IH07CisgICAg
cmV0dXJuIFN0cmluZzo6bnVtYmVyKG1faWRlbnRpZmllcik7CiB9CiAKLUV4Y2VwdGlvbk9yPHZv
aWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU1ZhbHVlIG1lc3NhZ2UsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0
cmFuc2ZlcikKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNz
YWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6SlNWYWx1ZSBtZXNzYWdl
VmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlcikKIHsK
LSAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zZmVyKTsK
LSAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
Y2xpZW50LnBvc3RNZXNzYWdlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9OworICAgIGF1dG8q
IGV4ZWNTdGF0ZSA9IGNvbnRleHQuZXhlY1N0YXRlKCk7CisgICAgQVNTRVJUKGV4ZWNTdGF0ZSk7
CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7CisgICAgYXV0byBtZXNz
YWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmV4ZWNTdGF0ZSwgbWVzc2FnZVZh
bHVlLCBXVEZNb3ZlKHRyYW5zZmVyKSwgcG9ydHMsIFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3Jr
ZXJQb3N0TWVzc2FnZSk7CisgICAgaWYgKG1lc3NhZ2UuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBtZXNzYWdlLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIC8vIERpc2VudGFuZ2xl
IHRoZSBwb3J0IGluIHByZXBhcmF0aW9uIGZvciBzZW5kaW5nIGl0IHRvIHRoZSByZW1vdGUgY29u
dGV4dC4KKyAgICBhdXRvIGNoYW5uZWxzT3JFeGNlcHRpb24gPSBNZXNzYWdlUG9ydDo6ZGlzZW50
YW5nbGVQb3J0cyhXVEZNb3ZlKHBvcnRzKSk7CisgICAgaWYgKGNoYW5uZWxzT3JFeGNlcHRpb24u
aGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBjaGFubmVsc09yRXhjZXB0aW9uLnJlbGVh
c2VFeGNlcHRpb24oKTsKKworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNlbmRpbmcgdGhlIGNoYW5u
ZWxzLgorICAgIGF1dG8gY2hhbm5lbHMgPSBjaGFubmVsc09yRXhjZXB0aW9uLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOworICAgIGlmIChjaGFubmVscyAmJiAhY2hhbm5lbHMtPmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVyYWwo
IlBhc3NpbmcgTWVzc2FnZVBvcnQgb2JqZWN0cyB0byBwb3N0TWVzc2FnZSBpcyBub3QgeWV0IHN1
cHBvcnRlZCIpIH07CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIGxpa2VseSBwYXNzIHRoZSBzb3Vy
Y2Ugb3JpZ2luLgorICAgIG1fY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQobWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisKKyAgICByZXR1cm4geyB9Owog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaAppbmRleCA2OWI5MWUwOGEzOS4uODYz
OTRkOTg4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnQuaApAQCAtMzQsMTQgKzM0LDE4IEBACiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBK
U1ZhbHVlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTsKK2NsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uOworCiBjbGFzcyBT
ZXJ2aWNlV29ya2VyQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckNsaWVu
dD4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CisgICAgdXNp
bmcgQ29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uOworCiAgICAgdXNp
bmcgVHlwZSA9IFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOwogICAgIGVudW0gY2xhc3MgRnJhbWVU
eXBlIHsKICAgICAgICAgQXV4aWxpYXJ5LApAQCAtNTAsMjEgKzU0LDI1IEBAIHB1YmxpYzoKICAg
ICAgICAgTm9uZQogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnQ+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUeXBlIHR5cGUpCisgICAg
c3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50PiBjcmVhdGUoUmVmPENvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdWludDY0X3QgaWRl
bnRpZmllciwgVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U2VydmljZVdvcmtlckNsaWVudChjb250ZXh0LCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNlcnZpY2VXb3JrZXJDbGllbnQoV1RGTW92ZShjb25uZWN0aW9uKSwgY29udGV4
dCwgaWRlbnRpZmllciwgdHlwZSkpOwogICAgIH0KIAorICAgIH5TZXJ2aWNlV29ya2VyQ2xpZW50
KCk7CisKICAgICBTdHJpbmcgdXJsKCkgY29uc3Q7CiAgICAgRnJhbWVUeXBlIGZyYW1lVHlwZSgp
IGNvbnN0OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIFN0
cmluZyBpZCgpIGNvbnN0OwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2UoSlND
OjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpT
Qzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVz
c2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIFZlY3Rv
cjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2Zlcik7CiAKIHByb3RlY3RlZDoK
LSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBUeXBlKTsK
KyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50KFJlZjxDb25uZWN0aW9uPiYmLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgdWludDY0X3QgaWRlbnRpZmllciwgVHlwZSk7CiAKKyAgICBSZWY8Q29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBUeXBl
IG1fdHlwZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAppbmRleCBmN2U0YTk4ZGUyMC4uZDhhY2FjOTk4OTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudC5pZGwKQEAgLTM1LDcgKzM1LDcgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
U2VydmljZVdvcmtlckNsaWVudFR5cGUgdHlwZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGlkOwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0
PiB0cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
TWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFs
IHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiB9OwogCiBlbnVtIEZyYW1lVHlwZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggMjU5MTlhYjFhMzkuLmFiZmRhY2IzNzVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0yOSwyNSArMjksMTEgQEAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKLSNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJXb3Jr
ZXJOYXZpZ2F0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgU2VydmljZVdv
cmtlckNvbnRhaW5lciogY29udGFpbmVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotewotICAgIE5hdmlnYXRvckJhc2UqIG5hdmlnYXRv
ciA9IG51bGxwdHI7Ci0gICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkgewotICAgICAgICBp
ZiAoYXV0byogd2luZG93ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLmRvbVdpbmRvdygp
KQotICAgICAgICAgICAgbmF2aWdhdG9yID0gd2luZG93LT5uYXZpZ2F0b3IoKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgbmF2aWdhdG9yID0gJmRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KS5uYXZpZ2F0b3IoKTsKLQotICAgIHJldHVybiBuYXZpZ2F0b3IgPyBuYXZpZ2F0b3ItPnNl
cnZpY2VXb3JrZXIoKSA6IG51bGxwdHI7Ci19Ci0KIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiByZWdpc3RyYXRpb25EYXRhKQogICAg
IDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9yZWdpc3RyYXRpb25EYXRhKFdU
Rk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpCkBAIC05NCw3ICs4MCw3IEBAIHZvaWQgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbjo6dW5yZWdpc3RlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvKiBjb250YWluZXIgPSBjb250
YWluZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KCpjb250ZXh0KTsKKyAgICBhdXRvKiBjb250
YWluZXIgPSBjb250ZXh0LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7CiAgICAgaWYgKCFjb250
YWluZXIpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVF
cnJvcikpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKaW5kZXggNDZk
Mjk5MGUyOTYuLjUyZTg2NmNiY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwCkBAIC0zMiw4
ICszMiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudDo6U2VydmljZVdvcmtlcldpbmRvd0NsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KQotICAgIDogU2VydmljZVdvcmtlckNsaWVudChjb250ZXh0LCBUeXBlOjpXaW5kb3cp
CitTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50OjpTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFJl
ZjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgOiBTZXJ2aWNlV29ya2VyQ2xpZW50KFdURk1v
dmUoY29ubmVjdGlvbiksIGNvbnRleHQsIGlkZW50aWZpZXIsIFR5cGU6OldpbmRvdykKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyV2luZG93Q2xpZW50LmgKaW5kZXggODNjODBlMjgwN2IuLmNiNmU3MGI3ZjkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRv
d0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmgKQEAgLTM2LDkgKzM2LDkgQEAgY2xhc3MgRGVmZXJyZWRQcm9taXNl
OwogCiBjbGFzcyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50IGZpbmFsIDogcHVibGljIFNlcnZp
Y2VXb3JrZXJDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlcldp
bmRvd0NsaWVudD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCisgICAg
c3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50PiBjcmVhdGUoUmVmPENvbm5lY3Rp
b24+JiYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdWludDY0
X3QgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZp
Y2VXb3JrZXJXaW5kb3dDbGllbnQoY29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFdURk1vdmUoY29ubmVjdGlvbiksIGNvbnRl
eHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICBWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0
eVN0YXRlKCkgY29uc3Q7CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5hdmln
YXRlKGNvbnN0IFN0cmluZyYgdXJsLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogcHJpdmF0
ZToKLSAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKTsKKyAgICBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFJlZjxDb25uZWN0aW9u
PiYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdWludDY0X3QgaWRlbnRpZmllcik7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckNsaWVudENv
bm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODljZDJj
YmY4OWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOworCitjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbj4geworcHVi
bGljOgorICAgIHZpcnR1YWwgflNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uKCkgeyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlKSA9IDA7Cit9OworCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCBjZjc4ZTkxOTAyYi4uOWJhZDE4OWFiNDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0zMiw4ICszMiwxMCBAQAogI2luY2x1
ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oIgogI2luY2x1ZGUgIkV4
dGVuZGFibGVNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckZldGNoLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCisj
aW5jbHVkZSAiU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oIgogI2luY2x1ZGUgIldvcmtlckxv
YWRlclByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlIDxw
YWwvU2Vzc2lvbklELmg+CkBAIC05OSwxMiArMTAxLDEzIEBAIHZvaWQgU2VydmljZVdvcmtlclRo
cmVhZDo6cG9zdEZldGNoVGFzayhSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xp
ZW50CiAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKLXZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZDo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShS
ZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNz
YWdlUG9ydENoYW5uZWxBcnJheT4mJiBjaGFubmVscywgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4pCit2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUoUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uPiYmIGNsaWVudENv
bm5lY3Rpb24sIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgc3RkOjp1bmlx
dWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYmIGNoYW5uZWxzLCB1aW50NjRfdCBzb3Vy
Y2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soW2NoYW5uZWxzID0gV1RGTW92ZShjaGFubmVscyks
IG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4gPSBzb3VyY2VPcmlnaW4u
aXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxl
IHsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soW2NsaWVudENvbm5lY3Rp
b24gPSBXVEZNb3ZlKGNsaWVudENvbm5lY3Rpb24pLCBjaGFubmVscyA9IFdURk1vdmUoY2hhbm5l
bHMpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc291cmNl
T3JpZ2luID0gc291cmNlT3JpZ2luLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAg
ICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUsIFdURk1vdmUoY2hhbm5lbHMpKTsKLSAgICAgICAgc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6Y3JlYXRl
KFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4pKTsKKyAgICAg
ICAgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2UgPSBSZWZQdHI8U2VydmljZVdv
cmtlckNsaWVudD4geyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50OjpjcmVhdGUoV1RGTW92ZShj
bGllbnRDb25uZWN0aW9uKSwgY29udGV4dCwgc291cmNlSWRlbnRpZmllcikgfTsKKyAgICAgICAg
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXh0ZW5kYWJsZU1lc3NhZ2VF
dmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmln
aW4sIHsgfSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS50aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgpLmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtl
ck9iamVjdChzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaGFzUGVuZGluZ0FjdGl2aXR5KCkpOwog
ICAgIH0pOwogICAgIHJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuaAppbmRleCAzMzczMTM5YzJiNS4uYjFjZThlNjExOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzOwogY2xhc3MgTWVzc2FnZVBvcnRDaGFubmVsOwogY2xhc3MgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7CitjbGFzcyBTZXJ2
aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFdvcmtlck9iamVjdFByb3h5Owogc3Ry
dWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIApAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVjdFByb3h5KCkgY29uc3QgeyByZXR1
cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0
RmV0Y2hUYXNrKFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiwgUmVzb3VyY2VSZXF1
ZXN0JiYsIEZldGNoT3B0aW9ucyYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4m
Jiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYmLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlv
bj4mJiwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgc3RkOjp1bmlxdWVfcHRyPE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5PiYmLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbik7CiAKIHByb3RlY3RlZDoKICAgICBSZWY8V29ya2VyR2xvYmFs
U2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBNb25vdG9u
aWNUaW1lIHRpbWVPcmlnaW4sIFBBTDo6U2Vzc2lvbklEKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0
aW9uLmNwcAppbmRleCA4ZTkzYzVlMDZjOS4uYjQ1NTIwNjhiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVj
dGlvbi5jcHAKQEAgLTI4LDcgKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKKyNp
bmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckpvYkRhdGEuaCIKIApAQCAtMTA5LDYgKzExMiwyOCBAQCB2b2lkIFNXQ2xpZW50
Q29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcih1aW50NjRfdCBqb2JJZGVudGlm
aWVyKQogICAgIGpvYi0+c3RhcnRTY3JpcHRGZXRjaCgpOwogfQogCit2b2lkIFNXQ2xpZW50Q29u
bmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0X3QgY2xpZW50
SWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlKQoreworICAg
IC8vIEZJWE1FOiBjbGllbnRJZGVudGlmaWVyIGNhbiBvbmx5IGlkZW50aWZ5IGEgRG9jdW1lbnQg
YXQgdGhlIG1vbWVudC4KKyAgICBhdXRvKiBkZXN0aW5hdGlvbkRvY3VtZW50ID0gRG9jdW1lbnQ6
OmFsbERvY3VtZW50cygpLmdldChjbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAoIWRlc3RpbmF0
aW9uRG9jdW1lbnQpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgZmluZCBjbGll
bnQgZG9jdW1lbnQgd2l0aCB0aGUgZ2l2ZW4gaWRlbnRpZmllciIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byogY29udGFpbmVyID0gZGVzdGluYXRpb25Eb2N1bWVudC0+c2Vy
dmljZVdvcmtlckNvbnRhaW5lcigpOworICAgIGlmICghY29udGFpbmVyKSB7CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiQ291bGQgbm90IGZpbmQgc2VydmljZSB3b3JrZXIgY29udGFpbmVyIGZvciBj
bGllbnQgZG9jdW1lbnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1F
OiBQYXNzIGluIHBvcnRzLgorICAgIC8vIEZJWE1FOiBQYXNzIGluIG9yaWdpbi4KKyAgICAvLyBG
SVhNRTogUGFzcyBpbiBzb3VyY2UuCisgICAgYXV0byBtZXNzYWdlRXZlbnQgPSBNZXNzYWdlRXZl
bnQ6OmNyZWF0ZSh7IH0sIFdURk1vdmUobWVzc2FnZSksIHsgfSk7CisgICAgY29udGFpbmVyLT5k
aXNwYXRjaEV2ZW50KG1lc3NhZ2VFdmVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmlu
ZGV4IDUwOGE1OGE0OWYyLi5mM2I1NDAyZDI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJK
b2ImKTsKICAgICB2b2lkIGZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYs
IGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VPcmlnaW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc291cmNlKSA9IDA7
CiAKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJikgY29uc3QgPSAwOwpAQCAtNTksNiArNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKHVpbnQ2
NF90IGpvYklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKHVp
bnQ2NF90IGpvYklkZW50aWZpZXIsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcih1aW50NjRfdCBqb2JJ
ZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyQ2xpZW50KHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiYgbWVzc2FnZSk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IGU5YmNiMzI1MzQyLi44MDk4MzIz
OGI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTEwOCw5
ICsxMDgsOSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpYwogICAgIHNlbmRUb0NvbnRleHRQcm9j
ZXNzKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OlN0YXJ0RmV0Y2goaWRl
bnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1
ZXN0LCBvcHRpb25zKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKQordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0gICAgc2VuZFRvQ29udGV4dFBy
b2Nlc3MoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6UG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShpZGVudGlmaWVyKCksIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VPcmlnaW4pKTsKKyAgICBzZW5kVG9Db250ZXh0UHJvY2Vz
cyhNZXNzYWdlczo6U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpQb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKGlkZW50aWZpZXIoKSwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbikpOwogfQogCiB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qg
ZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEz
OCw2ICsxMzgsMTEgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmRpZE5vdEhhbmRsZUZl
dGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0s
IGZldGNoSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UpCit7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViU1dDbGllbnRDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCB7
IGNsaWVudElkZW50aWZpZXIsIG1lc3NhZ2UgfSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFU+
IGJvb2wgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVz
c2FnZSkKIHsKICAgICBpZiAoIW1fY29udGV4dENvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggMjkyNmU4M2U0MzEuLmIyZDQ0ZjZkZTNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZEZhaWxGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOwogICAgIHZv
aWQgZGlkTm90SGFuZGxlRmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKIAorICAgIHZv
aWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0X3QgY2xpZW50SWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlKTsKKwogcHJpdmF0ZToKICAg
ICAvLyBJbXBsZW1lbnQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24gKE1lc3NhZ2VzIHRvIHRoZSBjbGll
bnQgV2ViUHJvY2VzcykKICAgICB2b2lkIHJlamVjdEpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKQEAgLTY2LDcg
KzY4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRGZXRjaCh1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKTsKIAotICAg
IHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBT
VyBjb250ZXh0IFdlYlByb2Nlc3MKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQo
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJikgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAzYjIw
NDVjNjQ0NC4uNTlmN2U4MjU1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjgsNyArMjgsNyBAQCBtZXNzYWdlcyAtPiBXZWJT
V1NlcnZlckNvbm5lY3Rpb24gewogICAgIEZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCByZXN1bHQpCiAKICAgICBTdGFy
dEZldGNoKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZl
dGNoT3B0aW9ucyBvcHRpb25zKQotICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5j
ZSBtZXNzYWdlLCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIElQQzo6
RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBTdHJpbmcg
c291cmNlT3JpZ2luKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAppbmRleCA4
NzY0Y2QwNzAyZC4uYzYxNjAzOTdjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCkBAIC00MzUsNiArNDM1LDEyIEBAIHZvaWQgU3RvcmFn
ZVByb2Nlc3M6OmRpZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfCiAgICAgICAgIGNvbm5lY3Rpb24tPmRpZEZpbmlzaEZldGNoKGZldGNoSWRl
bnRpZmllcik7CiB9CiAKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OnBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyQ2xpZW50KGludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IGNsaWVudElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSkKK3sK
KyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudChjbGllbnRJZGVudGlmaWVyLCBtZXNzYWdlKTsKK30KKwog
dm9pZCBTdG9yYWdlUHJvY2Vzczo6cmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAgIEFTU0VSVCghbV9zd1NlcnZlckNvbm5l
Y3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKaW5kZXggYWE4NjQ1Yjc3MWMuLmE3
NzRiODNlNGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5oCkBAIC0xMjUsNiArMTI1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaEZl
dGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmFpbEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkTm90
SGFuZGxlRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IGZldGNoSWRlbnRpZmllcik7CisKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
Q2xpZW50KGludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGNsaWVu
dElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSk7CiAjZW5kaWYK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCAzMzkyYWY3MTVkMS4uY2VlMmI2Y2Q0MGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtNDYsNSArNDYsNiBAQCBtZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSkKICAgICBEaWRSZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERp
ZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIpCisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQo
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGNsaWVudElkZW50
aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKQogI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3N2YyNTFhN2Yy
YS4uODc2MjkwYWE3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTM3Nyw2ICsxMzc3LDggQEAKIAkJODMyRUQxOEMxRTJGRTE1NzAw
NkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkVEMThBMUUyRkUxM0IwMDZCQTY0
QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggKi87IH07CiAJCTgzNEIyNTBG
MUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCMjUwRTFBODMxQThEMDBDRkIx
NTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oICovOyB9OwogCQk4MzRCMjUxMjFBODQyQzg3
MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0QjI1MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5l
dHdvcmtDYWNoZVN0YXRpc3RpY3MuaCAqLzsgfTsKKwkJODM1NzMxQzExRkEwRjBGODAwODVGNEQz
IC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNTczMUMwMUZBMEYwRUQwMDg1RjREMyAv
KiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi87IH07CisJCTgzNTczMUMy
MUZBMEYwRjgwMDg1RjREMyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM1NzMxQkYxRkEw
RjBFQzAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggKi87IH07
CiAJCTgzNjAzNDlGMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2MDM0
OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi87IH07
CiAJCTgzNjAzNEEwMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNjAzNDlF
MUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCAqLzsgfTsKIAkJ
ODM2RUVCODAxQkU5RUM5RTAwNkI0QjgyIC8qIE5ldHdvcmtMb2FkTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2RUVCN0YxQkU5RUM5RTAwNkI0
QjgyIC8qIE5ldHdvcmtMb2FkTWFjLm1tICovOyB9OwpAQCAtMzc2MSw2ICszNzYzLDkgQEAKIAkJ
ODMyRUQxOEExRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyQWN0aXZpdHlTdGF0ZUNQ
VVVzYWdlU2FtcGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUwRTFB
ODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzNEIyNTEwMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2Fj
aGVTdGF0aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtD
YWNoZVN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM1NzMxQkUx
RkEwRjBFQzAwODVGNEQzIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVz
c2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzNTczMUJGMUZBMEYwRUMw
MDg1RjREMyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzU3MzFDMDFGQTBGMEVEMDA4NUY0RDMg
LyogV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkg
LyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgzNjAzNDlFMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRh
YmFzZVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNkVFQjdG
MUJFOUVDOUUwMDZCNEI4MiAvKiBOZXR3b3JrTG9hZE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtMb2FkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNjIxMiw4ICs2MjE3LDExIEBACiAJCQkJNDEzMUYzQ0YxRjk2QTkzNjAw
NTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbiAqLywKIAkJCQk0
MTMxRjNEMzFGOTZFOTMxMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNw
cCAqLywKIAkJCQk0MTMxRjNEMjFGOTZFOTMwMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRl
eHRNYW5hZ2VyLmggKi8sCisJCQkJODM1NzMxQkUxRkEwRjBFQzAwODVGNEQzIC8qIFNlcnZpY2VX
b3JrZXJDb250ZXh0TWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTRERURDNTFGOUU0QkVD
MDA0N0M0MEQgLyogU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcCAqLywKIAkJCQk0
MTRERURDNDFGOUU0QkVCMDA0N0M0MEQgLyogU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50
LmggKi8sCisJCQkJODM1NzMxQzAxRkEwRjBFRDAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJD
bGllbnRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk4MzU3MzFCRjFGQTBGMEVDMDA4NUY0RDMgLyog
V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAqLywKIAkJCQk0MTMxRjNFMDFGOTg3
MTJDMDA1OTk5NUEgLyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgKi8sCiAJ
CQkJNDE5QUNGOUIxRjk4MUQyNjAwOUYxQTgzIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQuaCAqLywKIAkJCQk1MUJFQjYyOTFGM0E1QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdv
cmtlclByb3ZpZGVyLmNwcCAqLywKQEAgLTkwNjcsNiArOTA3NSw3IEBACiAJCQkJNDFEQzQ1OUYx
RTNEQkRBNTAwQjExRjUxIC8qIFdlYlJUQ1NvY2tldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0Mz
NjFENzMxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlEM0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBN
ZW51LmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzU3MzFDMjFGQTBGMEY4MDA4NUY0RDMgLyogV2Vi
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQkVC
NjJDMUYzQTVBRDcwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNDgzMkQ3MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE0ODMyRDExQTlCREMyRjAwOEI0REZFIC8qIFdlYnNpdGVEYXRh
UmVjb3JkLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNzIwLDYgKzEwNzI5LDcgQEAKIAkJCQk1MUYw
NjBFMTE2NTQzMTg1MDBGMzI4MUMgLyogV2ViUlRDU29ja2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdDMzYxRDcyMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRN
ZXNzYWdlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEM0I5NDg0ODExRkY0QjY1MDAw
MzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgzNTcz
MUMxMUZBMEYwRjgwMDg1RjREMyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTMxRjNFMjFGOTg4MDg0MDA1OTk5NUEgLyogV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUJFQjYy
QjFGM0E1QUQ3MDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBNDgzMkQ2MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4IDk0ZDYz
NGQ2MTJiLi45MWEzODQxNDFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNs
dWRlICJXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRQcm92aWRl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CkBAIC0xMzIsMTQgKzEzMywx
NiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RhcnRGZXRjaCh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcgogICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS0+dGhyZWFkKCkucG9zdEZldGNoVGFzayhXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUob3B0aW9ucykpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFu
YWdlcjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4pCit2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VPcmlnaW4pCiB7CiAgICAgYXV0byogc2VydmljZVdvcmtlciA9IG1fd29ya2VyTWFwLmdl
dChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyKQogICAg
ICAgICByZXR1cm47CiAKKyAgICBhdXRvIGNsaWVudENvbm5lY3Rpb24gPSBXZWJTZXJ2aWNlV29y
a2VyQ2xpZW50Q29ubmVjdGlvbjo6Y3JlYXRlKG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3Mu
Y29weVJlZigpLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc291cmNlSWRlbnRpZmllcik7
CisKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgdmFsaWQgTWVzc2FnZVBvcnRDaGFubmVs
cy4KLSAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0b3Io
KSksIG51bGxwdHIsIHNvdXJjZU9yaWdpbik7CisgICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCku
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShXVEZNb3ZlKGNsaWVudENvbm5l
Y3Rpb24pLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KG1lc3NhZ2UudmVjdG9yKCkpLCBu
dWxscHRyLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oCmluZGV4IGUwZGI4MjY5ZTcz
Li45YTVlYmJjMzA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgKQEAgLTUyLDcgKzUy
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmKTsKICAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpGZXRj
aE9wdGlvbnMmJik7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50
NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBt
ZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbik7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQ
cm9jZXNzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk+PiBtX3dvcmtlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0
TWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCA4NjY2M2Y4MWU3Yy4uOWY5NjRmYzgyYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250
ZXh0TWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1
LDcgQEAKIG1lc3NhZ2VzIC0+IFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlciB7CiAgICAgU3Rh
cnRTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdHJ1
Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHREYXRhKQogICAgIFN0
YXJ0RmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZl
dGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9w
dGlvbnMpCi0gICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCBTdHJpbmcgc291cmNlT3JpZ2luKQor
ICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJ
UEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgU3Ry
aW5nIHNvdXJjZU9yaWdpbikKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCAz
MDg2ZWE0ZmMwZS4uZmUyZTNkYTA3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzUsNiAr
MzUsOCBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldl
YlNXT3JpZ2luVGFibGUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdl
cy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoUmVzdWx0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oPgpAQCAtNjgsOSArNzAs
MTMgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5T
ZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGMKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OkZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIocmVzdWx0KSk7CiB9
CiAKLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmIHNjcmlwdFZhbHVlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdp
bikKK3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmIHNjcmlwdFZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBz
b3VyY2UpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpQb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzY3JpcHRWYWx1ZS0+ZGF0YSgpIH0sIHNvdXJjZU9yaWdp
bikpOworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgcG9zdGluZyBtZXNzYWdlcyBmcm9t
IHdvcmtlcnMuCisgICAgaWYgKCFpczxEb2N1bWVudD4oc291cmNlKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpQb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6
OkRhdGFSZWZlcmVuY2UgeyBzY3JpcHRWYWx1ZS0+ZGF0YSgpIH0sIGRvd25jYXN0PERvY3VtZW50
Pihzb3VyY2UpLmlkZW50aWZpZXIoKSwgc291cmNlLm9yaWdpbigpKSk7CiB9CiAKIGJvb2wgV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpoYXNTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihj
b25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdApAQCAtOTIsNiArOTgsMTEgQEAgUmVm
PFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gV2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydEZl
dGNoKFdlYlNlcnZpY2VXb3JrZXIKICAgICByZXR1cm4gU2VydmljZVdvcmtlckNsaWVudEZldGNo
OjpjcmVhdGUocHJvdmlkZXIsIFdURk1vdmUobG9hZGVyKSwgaWRlbnRpZmllciwgbV9jb25uZWN0
aW9uLmdldCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKK3ZvaWQgV2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBjbGllbnRJ
ZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UpCit7CisgICAgU1dD
bGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjbGllbnRJ
ZGVudGlmaWVyLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KG1lc3NhZ2UudmVjdG9yKCkp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDFjZDI5Mjk5ZTNmLi4wODhiNTcyMWExMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
Y2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJikg
ZmluYWw7CiAgICAgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpIGZpbmFsOwotICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5n
JiBzb3VyY2VPcmlnaW4pIGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgc291cmNlKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nl
c3MoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIGZpbmFsOwpAQCAtNjQsNiArNjQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNT
ZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiYpIGNvbnN0IGZpbmFsOwogICAgIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+IHN0
YXJ0RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiwgUmVmPFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyPiYmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6
OkNhbGxiYWNrJiYpOwogCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVu
dCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1l
c3NhZ2UpOworCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVTdG9yYWdlSm9iKGNvbnN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgppbmRleCAxMTU1ZDFiYWFkOC4uOWVkOWMwNGU0OWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMwLDYgKzMwLDcgQEAgbWVzc2FnZXMgLT4gV2Vi
U1dDbGllbnRDb25uZWN0aW9uIHsKICAgICBTdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKHVpbnQ2
NF90IGpvYklkZW50aWZpZXIpCiAKICAgICBTZXRTV09yaWdpblRhYmxlU2hhcmVkTWVtb3J5KFdl
YktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlKQorICAgIFBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVy
ZW5jZSBtZXNzYWdlKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckNsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5mNjY3MGJkMmZhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0
aW9uLmNwcApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUgIldlYlNlcnZpY2VXb3Jr
ZXJDbGllbnRDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzTWVzc2FnZXMuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb246OldlYlNlcnZpY2VXb3Jr
ZXJDbGllbnRDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgdWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGNsaWVudElkZW50aWZp
ZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCisgICAg
LCBtX2NsaWVudElkZW50aWZpZXIoY2xpZW50SWRlbnRpZmllcikKK3sKK30KKworV2ViU2Vydmlj
ZVdvcmtlckNsaWVudENvbm5lY3Rpb246On5XZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlv
bigpCit7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9uID0gV1RGTW92
ZShtX2Nvbm5lY3Rpb24pXSB7IH0pOworfQorCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRD
b25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UpCit7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTdG9yYWdlUHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBt
X3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX2NsaWVudElkZW50aWZpZXIsIElQQzo6RGF0
YVJlZmVyZW5jZSB7IG1lc3NhZ2UtPmRhdGEoKSB9IH0sIDApOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzhjMDEwNjY5MWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Lmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uIGZpbmFs
OiBwdWJsaWMgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24+IGNyZWF0
ZShSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24o
V1RGTW92ZShjb25uZWN0aW9uKSwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNsaWVudElk
ZW50aWZpZXIpKTsKKyAgICB9CisKKyAgICB+V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rp
b24oKTsKKworICAgIC8vIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLgor
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUmVmPFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlKSBmaW5hbDsKKworcHJpdmF0ZToKKyAgICBX
ZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCB1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgY2xpZW50SWRlbnRp
Zmllcik7CisKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisgICAgdWlu
dDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCBtX2NsaWVu
dElkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324926</attachid>
            <date>2017-10-25 17:03:19 -0700</date>
            <delta_ts>2017-10-25 17:40:30 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>178794_SW_Client_postMessage_wip.patch</filename>
            <type>text/plain</type>
            <size>62591</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVz
c2FnZS5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggN2QxMjIzNTQ3NWYuLjM5ZmU3MWZmNzRhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDIgQEAKLVBBU1M6IFN0YXR1cyBj
b2RlIGlzIDIwMAotUEFTUzogU3RhdHVzIHRleHQgaXMgV29ya2VyIHJlY2VpdmVkIHRoZSBtZXNz
YWdlIGV2ZW50LiBtZXNzYWdlRXZlbnQub3JpZ2luIHdhcyBodHRwczovLzEyNy4wLjAuMTo4NDQz
Ci1QQVNTOiBTb3VyY2UgaXMgU2VydmljZSB3b3JrZXIKK1BBU1M6IFJlY2VpdmVkIG1lc3NhZ2Ug
J01lc3NhZ2UgMScgZnJvbSBvcmlnaW4gJ2h0dHBzOi8vMTI3LjAuMC4xOjg0NDMnCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9i
YXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBv
c3RNZXNzYWdlLXdvcmtlci5qcwppbmRleCA4NDM5NWIyYTZkMy4uOTQ4YzgyNDk0NmIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9i
YXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLXdvcmtlci5qcworKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtU2VydmljZVdvcmtl
ci1wb3N0TWVzc2FnZS13b3JrZXIuanMKQEAgLTEsMTQgKzEsNCBAQAotbGV0IHJlc3BvbnNlVG9T
ZW5kID0geyBzdGF0dXM6IDQwNCwgc3RhdHVzVGV4dDogIk5vdCBGb3VuZCIgfTsKLQogc2VsZi5h
ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7Ci0gICAgcmVzcG9uc2VUb1Nl
bmQgPSBldmVudC5kYXRhOwotICAgIHJlc3BvbnNlVG9TZW5kLnN0YXR1c1RleHQgKz0gIiBtZXNz
YWdlRXZlbnQub3JpZ2luIHdhcyAiICsgZXZlbnQub3JpZ2luOworICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgiUmVjZWl2ZWQgbWVzc2FnZSAnIiArIGV2ZW50LmRhdGEgKyAiJyBmcm9tIG9y
aWdpbiAnIiArIGV2ZW50Lm9yaWdpbiArICInIik7CiB9KTsKIAotc2VsZi5hZGRFdmVudExpc3Rl
bmVyKCJmZXRjaCIsIChldmVudCkgPT4gewotICAgIGlmIChldmVudC5yZXF1ZXN0LnVybC5pbmRl
eE9mKCJ0ZXN0MSIpICE9PSAtMSkgewotICAgICAgICBldmVudC5yZXNwb25kV2l0aChuZXcgUmVz
cG9uc2UobnVsbCwgcmVzcG9uc2VUb1NlbmQpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBldmVudC5yZXNwb25kV2l0aChSZXNwb25zZS5lcnJvcigpKTsKLX0pOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNl
cnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS5qcwpp
bmRleCA5NmE0MWNhMDg2OC4uNTQzY2Y2YzdlNzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBv
c3RNZXNzYWdlLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLmpzCkBAIC0xLDM3ICsx
LDggQEAKLWZ1bmN0aW9uIGRvbmUoKQoteworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZl
bnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgbG9nKCJQQVNTOiAi
ICsgZXZlbnQuZGF0YSk7CiAgICAgZmluaXNoU1dUZXN0KCk7Ci19Cit9KTsKIAotYXN5bmMgZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgdHJ5IHsKLSAgICAgICAgYXdhaXQgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNz
YWdlLXdvcmtlci5qcyIsIHsgfSk7Ci0KLSAgICAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
Y29udHJvbGxlci5wb3N0TWVzc2FnZSh7IHN0YXR1czogMjAwLCBzdGF0dXNUZXh0OiAiV29ya2Vy
IHJlY2VpdmVkIHRoZSBtZXNzYWdlIGV2ZW50LiIgfSk7Ci0KLSAgICAgICAgbGV0IHJlc3BvbnNl
ID0gYXdhaXQgZmV0Y2goInRlc3QxIik7Ci0gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0g
MjAwKQotICAgICAgICAgICAgbG9nKCJQQVNTOiBTdGF0dXMgY29kZSBpcyAiICsgcmVzcG9uc2Uu
c3RhdHVzKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9nKCJGQUlMOiBTdGF0dXMgY29k
ZSBpcyAiICsgcmVzcG9uc2Uuc3RhdHVzKTsKLQotICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVz
VGV4dC5zdGFydHNXaXRoKCJXb3JrZXIgcmVjZWl2ZWQgdGhlIG1lc3NhZ2UiKSkKLSAgICAgICAg
ICAgIGxvZygiUEFTUzogU3RhdHVzIHRleHQgaXMgIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2coIkZBSUw6IFN0YXR1cyB0ZXh0IGlzICIgKyBy
ZXNwb25zZS5zdGF0dXNUZXh0KTsKLQotICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewot
ICAgICAgICAgICAgbGV0IHNvdXJjZSA9IGludGVybmFscy5mZXRjaFJlc3BvbnNlU291cmNlKHJl
c3BvbnNlKTsKLSAgICAgICAgICAgIGlmIChzb3VyY2UgPT09ICJTZXJ2aWNlIHdvcmtlciIpCi0g
ICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBTb3VyY2UgaXMgIiArIHNvdXJjZSk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBTb3VyY2UgaXMgIiArIHNvdXJj
ZSk7Ci0gICAgICAgIH0KLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgbG9nKCJHb3QgZXhjZXB0
aW9uOiAiICsgZSk7Ci0gICAgfQotICAgIGZpbmlzaFNXVGVzdCgpOwotfQotCi10ZXN0KCk7Citu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VX
b3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIiwgeyB9KS50aGVuKGZ1bmN0aW9uKCkgeworICAg
IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmNvbnRyb2xsZXIucG9zdE1lc3NhZ2UoIk1lc3NhZ2Ug
MSIpOworfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYmQ4NGI0ZmU5ZjguLjk5OWU1Nzc0MWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yODc5LDYgKzI4
NzksNyBAQAogCQk4MzcyREIzMTFBNjc4MEE4MDBDNjk3QzUgLyogRGlhZ25vc3RpY0xvZ2dpbmdS
ZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzcyREIzMDFBNjc4MEE4MDBDNjk3QzUgLyogRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3
NjVGOTUxREFDNTIyRjAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc2NUY5NDFEQUM1MjE4MDBDMDY1Mzcg
LyogTW91c2VFdmVudEluaXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3Np
dGlvbklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICov
OyB9OworCQk4MzdBMjQ1ODFGQTBFQ0M4MDBGQjE1RTIgLyogU2VydmljZVdvcmtlckNsaWVudENv
bm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzN0EyNDU2MUZBMEVDQzUwMEZCMTVFMiAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgz
N0E4MDEzMUUxRTEyNzMwMDAyNkI5RiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzZGljdCBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QTgwMTExRTFFMTI3
MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0ICovOyB9OwogCQk4MzdCN0QyMDFE
QzNGNTUwMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAv
KiBWYWxpZGF0aW9uQnViYmxlSU9TLm1tICovOyB9OwogCQk4MzdGQjM0NDFGOUVBMDZEMDBEMEZD
MzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdGQjM0MjFGOUVBMDY3MDBEMEZDMzEgLyogRXh0ZW5k
YWJsZU1lc3NhZ2VFdmVudC5jcHAgKi87IH07CkBAIC0xMDYyNyw2ICsxMDYyOCw3IEBACiAJCTgz
NzY1RjkzMURBQzUyMTgwMEMwNjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gTW91c2VFdmVudEluaXQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4Mzc2NUY5NDFEQUM1MjE4MDBDMDY1MzcgLyogTW91c2VFdmVudEluaXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW91c2VFdmVudEluaXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9u
UG9zaXRpb25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBH
ZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlvbi9pb3Mv
R2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owor
CQk4MzdBMjQ1NjFGQTBFQ0M1MDBGQjE1RTIgLyogU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVu
dENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3QTgwMTIxRTFF
MTI3MzAwMDI2QjlGIC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3NkaWN0OyBuYW1lID0gRW5nbGlzaDsg
cGF0aCA9IEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5nc2RpY3Q7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAwRDA1MUZDIC8qIFZhbGlkYXRp
b25CdWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBW
YWxpZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdE
RkIzNDFFQkZFQTcwMDA2MDEzODUgLyogRWxlbWVudENTU0lubGluZVN0eWxlLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBFbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTA2NTUsNyArMTA2NTcsNyBAQAogCQk4MzlBQUZFQjFBMEMwQzhE
MDA2MDVGOTkgLyogSFRNTFdCUkVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSFRNTFdCUkVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNB
NEE5RjgxQ0U3RkQ3RTAwNzA5QjAwIC8qIEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNYTUxEb2N1bWVudEN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjI1MDA5MUZBMTE4MUMwMEJDMDJEOSAvKiBK
U1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJODNCMjUwMEIxRkExMTgxRDAwQkMwMkQ5IC8qIEpTU2VydmljZVdvcmtlckNsaWVudFR5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNTZXJ2aWNlV29y
a2VyQ2xpZW50VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzQjI1MDBC
MUZBMTE4MUQwMEJDMDJEOSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4M0I3NEVGMjFGM0UwQkQ3MDA5OTZC
QzcgLyogS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gS2VlcGFsaXZlUmVxdWVzdFRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4M0I3NEVGMzFGM0UwQkQ3MDA5OTZCQzcgLyogS2VlcGFsaXZlUmVx
dWVzdFRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS2VlcGFsaXZl
UmVxdWVzdFRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNCOTY4Nzkx
OUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MDY3LDYgKzE4MDY5LDcgQEAKIAkJNTE3Qzg3MDcxRjhFOEZG
MjAwRUI4MDc2IC8qIGNvbnRleHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTgzN0EyNDU2MUZBMEVDQzUwMEZCMTVFMiAvKiBTZXJ2aWNlV29ya2VyQ2xp
ZW50Q29ubmVjdGlvbi5oICovLAogCQkJCTQxOUFDRjkwMUY5N0U3RDYwMDlGMUE4MyAvKiBTZXJ2
aWNlV29ya2VyRmV0Y2guY3BwICovLAogCQkJCTQxOUFDRjhFMUY5N0U3RDUwMDlGMUE4MyAvKiBT
ZXJ2aWNlV29ya2VyRmV0Y2guaCAqLywKIAkJCQk1MTdDODcxMTFGOEVFNzJGMDBFQjgwNzYgLyog
U2VydmljZVdvcmtlclRocmVhZC5jcHAgKi8sCkBAIC0yOTUzMiw2ICsyOTUzNSw3IEBACiAJCQkJ
MkQ5M0FFRTMxOURGNTY0MTAwMkE4NkMzIC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxRjE3NTVEMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29y
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkVGMTQyRDFGOTdCN0Q4MDBDMkE1MjQgLyogU2Vy
dmljZVdvcmtlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODM3QTI0NTgxRkEwRUNDODAw
RkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0NkVGMTQyQzFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTgzNjlGREZDMUZBMTAyRTMwMEMxRkYxRiAvKiBTZXJ2aWNlV29y
a2VyQ2xpZW50VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc1NUYxRjNFQkM4MzAwQzc0
OTUwIC8qIFNlcnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggMjVkNGE1Y2ZkNDAuLmQ3MjJiN2NkYjU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTQzNCw5ICs0MzQsMTUgQEAgc3RhdGljIHZvaWQgcHJpbnROYXZpZ2F0
aW9uRXJyb3JNZXNzYWdlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiBhY3RpdmVVUkwsIGNvbnMK
IAogdWludDY0X3QgRG9jdW1lbnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24gPSAwOwogCi1IYXNoU2V0
PERvY3VtZW50Kj4mIERvY3VtZW50OjphbGxEb2N1bWVudHMoKQorc3RhdGljIERvY3VtZW50OjpJ
ZGVudGlmaWVyIGdlbmVyYXRlRG9jdW1lbnRJZGVudGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaFNldDxEb2N1bWVudCo+PiBkb2N1bWVudHM7CisgICAgc3RhdGljIHVp
bnQ2NF90IGlkZW50aWZpZXIgPSAwOworICAgIHJldHVybiArK2lkZW50aWZpZXI7Cit9CisKK2F1
dG8gRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpIC0+IEhhc2hNYXA8SWRlbnRpZmllciwgRG9jdW1l
bnQqPiYKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxJZGVudGlmaWVyLCBE
b2N1bWVudCo+PiBkb2N1bWVudHM7CiAgICAgcmV0dXJuIGRvY3VtZW50czsKIH0KIApAQCAtNDk1
LDggKzUwMSw5IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYg
dXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMsIHVuc2lnCiAgICAgLCBtX2lzU3ludGhlc2l6
ZWQoY29uc3RydWN0aW9uRmxhZ3MgJiBTeW50aGVzaXplZCkKICAgICAsIG1faXNOb25SZW5kZXJl
ZFBsYWNlaG9sZGVyKGNvbnN0cnVjdGlvbkZsYWdzICYgTm9uUmVuZGVyZWRQbGFjZWhvbGRlcikK
ICAgICAsIG1fb3JpZW50YXRpb25Ob3RpZmllcihjdXJyZW50T3JpZW50YXRpb24oZnJhbWUpKQor
ICAgICwgbV9pZGVudGlmaWVyKGdlbmVyYXRlRG9jdW1lbnRJZGVudGlmaWVyKCkpCiB7Ci0gICAg
YWxsRG9jdW1lbnRzKCkuYWRkKHRoaXMpOworICAgIGFsbERvY3VtZW50cygpLmFkZChtX2lkZW50
aWZpZXIsIHRoaXMpOwogCiAgICAgLy8gV2UgZGVwZW5kIG9uIHRoZSB1cmwgZ2V0dGluZyBpbW1l
ZGlhdGVseSBzZXQgaW4gc3ViZnJhbWVzLCBidXQgd2UKICAgICAvLyBhbHNvIGRlcGVuZCBvbiB0
aGUgdXJsIE5PVCBnZXR0aW5nIGltbWVkaWF0ZWx5IHNldCBpbiBvcGVuZWQgd2luZG93cy4KQEAg
LTU0Niw3ICs1NTMsOCBAQCBSZWY8RG9jdW1lbnQ+IERvY3VtZW50OjpjcmVhdGUoRG9jdW1lbnQm
IGNvbnRleHREb2N1bWVudCkKIAogRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiB7Ci0gICAgYWxsRG9j
dW1lbnRzKCkucmVtb3ZlKHRoaXMpOworICAgIGJvb2wgd2FzUmVtb3ZlZCA9IGFsbERvY3VtZW50
cygpLnJlbW92ZShtX2lkZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwg
d2FzUmVtb3ZlZCk7CiAKICAgICBBU1NFUlQoIXJlbmRlclZpZXcoKSk7CiAgICAgQVNTRVJUKG1f
cGFnZUNhY2hlU3RhdGUgIT0gSW5QYWdlQ2FjaGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAx
NjcxN2U4MTNkYS4uNTM0NjFjYjdlMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNDcsNyAr
MzQ3LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8RG9jdW1lbnQqPiYgYWxsRG9jdW1lbnRzKCk7Cisg
ICAgdXNpbmcgSWRlbnRpZmllciA9IHVpbnQ2NF90OworICAgIElkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBIYXNoTWFwPElkZW50aWZpZXIsIERvY3VtZW50Kj4mIGFsbERvY3VtZW50cygpOwogCiAg
ICAgTWVkaWFRdWVyeU1hdGNoZXImIG1lZGlhUXVlcnlNYXRjaGVyKCk7CiAKQEAgLTE4MjYsNiAr
MTgyOCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2dyYW50U3RvcmFnZUFjY2Vzc092ZXJyaWRl
IHsgZmFsc2UgfTsKIAogICAgIFJlZlB0cjxEb2N1bWVudFRpbWVsaW5lPiBtX3RpbWVsaW5lOwor
ICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAogRWxlbWVudCogZXZlbnRUYXJnZXRF
bGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA5MmU5MDU5YjlhMC4uMTNiMWRiNGI1NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTM4
LDYgKzM4LDcgQEAKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVk
ZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIk5h
dmlnYXRvci5oIgogI2luY2x1ZGUgIk5vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5oIgogI2luY2x1
ZGUgIlB1YmxpY1VSTE1hbmFnZXIuaCIKICNpbmNsdWRlICJSZWplY3RlZFByb21pc2VUcmFja2Vy
LmgiCkBAIC00NSw2ICs0Niw3IEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAi
V29ya2VyTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8
aGVhcC9TdHJvbmdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFj
ay5oPgpAQCAtNTI1LDQgKzUyNywxOCBAQCBKU0M6OkV4ZWNTdGF0ZSogU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6ZXhlY1N0YXRlKCkKICAgICByZXR1cm4gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2Jh
bFNjb3BlKHdvcmtlckdsb2JhbFNjb3BlKTsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKK1NlcnZpY2VXb3JrZXJDb250YWluZXIqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNlcnZp
Y2VXb3JrZXJDb250YWluZXIoKQoreworICAgIE5hdmlnYXRvckJhc2UqIG5hdmlnYXRvciA9IG51
bGxwdHI7CisgICAgaWYgKGlzPERvY3VtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGF1dG8q
IHdpbmRvdyA9IGRvd25jYXN0PERvY3VtZW50PigqdGhpcykuZG9tV2luZG93KCkpCisgICAgICAg
ICAgICBuYXZpZ2F0b3IgPSB3aW5kb3ctPm5hdmlnYXRvcigpOworICAgIH0gZWxzZQorICAgICAg
ICBuYXZpZ2F0b3IgPSAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5uYXZpZ2F0
b3IoKTsKKworICAgIHJldHVybiBuYXZpZ2F0b3IgPyBuYXZpZ2F0b3ItPnNlcnZpY2VXb3JrZXIo
KSA6IG51bGxwdHI7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMjY2ZjQ5YWVlYzAu
LjUyMThiZTg1MjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKQEAgLTY4LDYgKzY4LDEwIEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU29j
a2V0UHJvdmlkZXI7CiBjbGFzcyBVUkw7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitj
bGFzcyBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOworI2VuZGlmCisKIG5hbWVzcGFjZSBJREJDbGll
bnQgewogY2xhc3MgSURCQ29ubmVjdGlvblByb3h5OwogfQpAQCAtMjM0LDYgKzIzOCw4IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdWludDY0X3Qgc2VsZWN0ZWRT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlcklk
ZW50aWZpZXI7IH0KICAgICB2b2lkIHNldFNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIo
dWludDY0X3QgaWRlbnRpZmllcikgeyBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gaWRlbnRp
ZmllcjsgfQorCisgICAgU2VydmljZVdvcmtlckNvbnRhaW5lciogc2VydmljZVdvcmtlckNvbnRh
aW5lcigpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVh
c2UuY3BwCmluZGV4IDdhYjA5MjQzNGJmLi4zY2IzZGRmYmEwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L01lbW9yeVJlbGVhc2UuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VO
b25jcml0aWNhbE1lbW9yeSgpCiAKICAgICBjbGVhcldpZHRoQ2FjaGVzKCk7CiAKLSAgICBmb3Ig
KGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKQorICAgIGZvciAoYXV0
byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpCiAgICAgICAg
IGRvY3VtZW50LT5jbGVhclNlbGVjdG9yUXVlcnlDYWNoZSgpOwogCiAgICAgTWVtb3J5Q2FjaGU6
OnNpbmdsZXRvbigpLnBydW5lRGVhZFJlc291cmNlc1RvU2l6ZSgwKTsKQEAgLTgzLDcgKzgzLDcg
QEAgc3RhdGljIHZvaWQgcmVsZWFzZUNyaXRpY2FsTWVtb3J5KFN5bmNocm9ub3VzIHN5bmNocm9u
b3VzKQogCiAgICAgQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5kcmFpbigpOwogCi0gICAgZm9y
IChhdXRvJiBkb2N1bWVudCA6IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxEb2N1bWVudD4+KERvY3Vt
ZW50OjphbGxEb2N1bWVudHMoKSkpIHsKKyAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogY29weVRv
VmVjdG9yT2Y8UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLnZhbHVl
cygpKSkgewogICAgICAgICBkb2N1bWVudC0+c3R5bGVTY29wZSgpLmNsZWFyUmVzb2x2ZXIoKTsK
ICAgICAgICAgZG9jdW1lbnQtPmZvbnRTZWxlY3RvcigpLmVtcHR5Q2FjaGVzKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA1MDE2YTA2ZTIw
NC4uODJjNGU1NzY0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCkBAIC0xOTQ1LDcgKzE5NDUsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlUmFyZURh
dGEoKQogCiB2b2lkIHByaW50UmVuZGVyVHJlZUZvckxpdmVEb2N1bWVudHMoKQogewotICAgIGZv
ciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLnZh
bHVlcygpKSB7CiAgICAgICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoZG9jdW1lbnQtPmZyYW1lKCkgJiYgZG9jdW1lbnQt
PmZyYW1lKCktPmlzTWFpbkZyYW1lKCkpCkBAIC0xOTU3LDcgKzE5NTcsNyBAQCB2b2lkIHByaW50
UmVuZGVyVHJlZUZvckxpdmVEb2N1bWVudHMoKQogCiB2b2lkIHByaW50TGF5ZXJUcmVlRm9yTGl2
ZURvY3VtZW50cygpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50
OjphbGxEb2N1bWVudHMoKSkgeworICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1
bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKCFkb2N1bWVudC0+
cmVuZGVyVmlldygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChkb2N1bWVu
dC0+ZnJhbWUoKSAmJiBkb2N1bWVudC0+ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAK
aW5kZXggYTkxNjA0NWU0YmEuLmYwN2Q0YzFiNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcApAQCAtMjY4LDcgKzI2
OCw3IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzKGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIEhhCiAKIHN0YXRpYyB2b2lkIGNvbGxlY3ROb25F
bXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzRm9yQ3VycmVudFBhZ2UoSGFzaFNldDxjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cqPiYgbGVhZlJlbmRlcmVycykKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIGRv
Y3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgZm9yIChjb25zdCBhdXRv
KiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkgewogICAgICAg
ICBpZiAoIWRvY3VtZW50LT5yZW5kZXJWaWV3KCkgfHwgZG9jdW1lbnQtPnBhZ2VDYWNoZVN0YXRl
KCkgIT0gRG9jdW1lbnQ6Ok5vdEluUGFnZUNhY2hlKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIGlmICghZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkgJiYgIWRvY3VtZW50LT5pc1hI
VE1MRG9jdW1lbnQoKSkKQEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0Tm9u
RW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93c0ZvckN1cnJlbnRQYWdlKEhhc2hTZXQ8Y29uc3QgUmVu
ZAogCiB2b2lkIHRvZ2dsZVNpbXBsZUxpbmVMYXlvdXQoKQogewotICAgIGZvciAoYXV0byogZG9j
dW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKKyAgICBmb3IgKGF1dG8qIGRvY3Vt
ZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLnZhbHVlcygpKSB7CiAgICAgICAgIGF1dG8m
IHNldHRpbmdzID0gZG9jdW1lbnQtPm11dGFibGVTZXR0aW5ncygpOwogICAgICAgICBzZXR0aW5n
cy5zZXRTaW1wbGVMaW5lTGF5b3V0RW5hYmxlZCghc2V0dGluZ3Muc2ltcGxlTGluZUxheW91dEVu
YWJsZWQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDVh
MTE4MWU3OTIwLi4zOWFjOGI4NWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cApAQCAtMjE1NCw3ICsyMTU0LDcgQEAgRXhjZXB0aW9uT3I8dW5zaWduZWQ+IEludGVybmFsczo6
Y291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3QKIHVuc2lnbmVk
IEludGVybmFsczo6bnVtYmVyT2ZMaXZlTm9kZXMoKSBjb25zdAogewogICAgIHVuc2lnbmVkIG5v
ZGVDb3VudCA9IDA7Ci0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1
bWVudHMoKSkKKyAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50
cygpLnZhbHVlcygpKQogICAgICAgICBub2RlQ291bnQgKz0gZG9jdW1lbnQtPnJlZmVyZW5jaW5n
Tm9kZUNvdW50KCk7CiAgICAgcmV0dXJuIG5vZGVDb3VudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcAppbmRleCAxNzk2NGVhZDYwNC4u
MGNmOWE4MTY0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU2Vydmlj
ZVdvcmtlcjo6cG9zdE1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlMK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVy
YWwoIlBhc3NpbmcgTWVzc2FnZVBvcnQgb2JqZWN0cyB0byBwb3N0TWVzc2FnZSBpcyBub3QgeWV0
IHN1cHBvcnRlZCIpIH07CiAKICAgICBhdXRvJiBzd0Nvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2Vy
UHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihj
b250ZXh0LnNlc3Npb25JRCgpKTsKLSAgICBzd0Nvbm5lY3Rpb24ucG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZShtX2lkZW50aWZpZXIsIG1lc3NhZ2UucmVsZWFzZVJldHVyblZh
bHVlKCksIGNvbnRleHQub3JpZ2luKCkpOworICAgIHN3Q29ubmVjdGlvbi5wb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKG1faWRlbnRpZmllciwgbWVzc2FnZS5yZWxlYXNlUmV0
dXJuVmFsdWUoKSwgY29udGV4dCk7CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCmlu
ZGV4IGNkMzAxZDA4ODIzLi4zNzNlOTAzZGNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcApAQCAtMjgsMTQgKzI4
LDI1IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJDbGllbnQuaCIKIAorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmgiCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU2VydmljZVdvcmtlckNsaWVudDo6U2VydmljZVdvcmtlckNsaWVudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUeXBlIHR5cGUpCitTZXJ2aWNlV29ya2VyQ2xp
ZW50OjpTZXJ2aWNlV29ya2VyQ2xpZW50KFJlZjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFR5cGUg
dHlwZSkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZjb250ZXh0KQorICAgICwg
bV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAgLCBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKICAgICAsIG1fdHlwZSh0eXBlKQogewogfQogCitTZXJ2aWNlV29ya2VyQ2xpZW50
Ojp+U2VydmljZVdvcmtlckNsaWVudCgpCit7Cit9CisKIFN0cmluZyBTZXJ2aWNlV29ya2VyQ2xp
ZW50Ojp1cmwoKSBjb25zdAogewogICAgIHJldHVybiB7IH07CkBAIC00OCwxNCArNTksMzMgQEAg
YXV0byBTZXJ2aWNlV29ya2VyQ2xpZW50OjpmcmFtZVR5cGUoKSBjb25zdCAtPiBGcmFtZVR5cGUK
IAogU3RyaW5nIFNlcnZpY2VXb3JrZXJDbGllbnQ6OmlkKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
eyB9OworICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihtX2lkZW50aWZpZXIpOwogfQogCi1FeGNl
cHRpb25Pcjx2b2lkPiBTZXJ2aWNlV29ya2VyQ2xpZW50Ojpwb3N0TWVzc2FnZShKU0M6OkV4ZWNT
dGF0ZSYsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09i
amVjdD4+JiYgdHJhbnNmZXIpCitFeGNlcHRpb25Pcjx2b2lkPiBTZXJ2aWNlV29ya2VyQ2xpZW50
Ojpwb3N0TWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKU0M6OkpTVmFs
dWUgbWVzc2FnZVZhbHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJh
bnNmZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1lc3NhZ2UpOwotICAgIFVOVVNFRF9QQVJBTSh0
cmFuc2Zlcik7Ci0gICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJ
SUxpdGVyYWwoImNsaWVudC5wb3N0TWVzc2FnZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIikgfTsK
KyAgICBhdXRvKiBleGVjU3RhdGUgPSBjb250ZXh0LmV4ZWNTdGF0ZSgpOworICAgIEFTU0VSVChl
eGVjU3RhdGUpOworCisgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOworICAg
IGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCpleGVjU3RhdGUs
IG1lc3NhZ2VWYWx1ZSwgV1RGTW92ZSh0cmFuc2ZlciksIHBvcnRzLCBTZXJpYWxpemF0aW9uQ29u
dGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UpOworICAgIGlmIChtZXNzYWdlLmhhc0V4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gbWVzc2FnZS5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICAvLyBE
aXNlbnRhbmdsZSB0aGUgcG9ydCBpbiBwcmVwYXJhdGlvbiBmb3Igc2VuZGluZyBpdCB0byB0aGUg
cmVtb3RlIGNvbnRleHQuCisgICAgYXV0byBjaGFubmVsc09yRXhjZXB0aW9uID0gTWVzc2FnZVBv
cnQ6OmRpc2VudGFuZ2xlUG9ydHMoV1RGTW92ZShwb3J0cykpOworICAgIGlmIChjaGFubmVsc09y
RXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gY2hhbm5lbHNPckV4Y2Vw
dGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICAvLyBGSVhNRTogU3VwcG9ydCBzZW5kaW5n
IHRoZSBjaGFubmVscy4KKyAgICBhdXRvIGNoYW5uZWxzID0gY2hhbm5lbHNPckV4Y2VwdGlvbi5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBpZiAoY2hhbm5lbHMgJiYgIWNoYW5uZWxzLT5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVND
SUlMaXRlcmFsKCJQYXNzaW5nIE1lc3NhZ2VQb3J0IG9iamVjdHMgdG8gcG9zdE1lc3NhZ2UgaXMg
bm90IHlldCBzdXBwb3J0ZWQiKSB9OworCisgICAgLy8gRklYTUU6IFNob3VsZCBsaWtlbHkgcGFz
cyB0aGUgc291cmNlIG9yaWdpbi4KKyAgICBtX2Nvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KG1lc3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCkpOworCisgICAgcmV0
dXJuIHsgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmgKaW5kZXggNjliOTFl
MDhhMzkuLjg2Mzk0ZDk4OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmgKQEAgLTM0LDE0ICszNCwxOCBAQAogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRl
OwogY2xhc3MgSlNWYWx1ZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTZXJp
YWxpemVkU2NyaXB0VmFsdWU7CitjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjsK
KwogY2xhc3MgU2VydmljZVdvcmtlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VX
b3JrZXJDbGllbnQ+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGlj
OgorICAgIHVzaW5nIENvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjsK
KwogICAgIHVzaW5nIFR5cGUgPSBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTsKICAgICBlbnVtIGNs
YXNzIEZyYW1lVHlwZSB7CiAgICAgICAgIEF1eGlsaWFyeSwKQEAgLTUwLDIxICs1NCwyNSBAQCBw
dWJsaWM6CiAgICAgICAgIE5vbmUKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29y
a2VyQ2xpZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVHlwZSB0
eXBlKQorICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckNsaWVudD4gY3JlYXRlKFJlZjxDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVp
bnQ2NF90IGlkZW50aWZpZXIsIFR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNlcnZpY2VXb3JrZXJDbGllbnQoY29udGV4dCwgdHlwZSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyQ2xpZW50KFdURk1vdmUoY29ubmVjdGlv
biksIGNvbnRleHQsIGlkZW50aWZpZXIsIHR5cGUpKTsKICAgICB9CiAKKyAgICB+U2VydmljZVdv
cmtlckNsaWVudCgpOworCiAgICAgU3RyaW5nIHVybCgpIGNvbnN0OwogICAgIEZyYW1lVHlwZSBm
cmFtZVR5cGUoKSBjb25zdDsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KICAgICBTdHJpbmcgaWQoKSBjb25zdDsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RN
ZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIFZlY3RvcjxKU0M6
OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2Zlcik7CisgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gcG9zdE1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6SlNWYWx1ZSBtZXNz
YWdlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgU2VydmljZVdvcmtlckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgVHlwZSk7CisgICAgU2VydmljZVdvcmtlckNsaWVudChSZWY8Q29ubmVjdGlvbj4mJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFR5cGUpOwogCisgICAg
UmVmPENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7
CiAgICAgVHlwZSBtX3R5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwKaW5kZXggZjdlNGE5OGRlMjAuLmQ4
YWNhYzk5ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCkBAIC0zNSw3ICszNSw3IEBACiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBpZDsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVl
bmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdl
LCBvcHRpb25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOwogfTsKIAogZW51bSBG
cmFtZVR5cGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDI1OTE5YWIxYTM5Li5hYmZk
YWNiMzc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcApAQCAtMjksMjUgKzI5LDExIEBACiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5j
bHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IFNlcnZpY2VXb3JrZXJDb250YWluZXIqIGNvbnRhaW5lckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBOYXZpZ2F0b3JCYXNl
KiBuYXZpZ2F0b3IgPSBudWxscHRyOwotICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5k
b21XaW5kb3coKSkKLSAgICAgICAgICAgIG5hdmlnYXRvciA9IHdpbmRvdy0+bmF2aWdhdG9yKCk7
Ci0gICAgfSBlbHNlCi0gICAgICAgIG5hdmlnYXRvciA9ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dCkubmF2aWdhdG9yKCk7Ci0KLSAgICByZXR1cm4gbmF2aWdhdG9yID8gbmF2
aWdhdG9yLT5zZXJ2aWNlV29ya2VyKCkgOiBudWxscHRyOwotfQotCiBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9u
RGF0YSkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fcmVnaXN0cmF0
aW9uRGF0YShXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpKQpAQCAtOTQsNyArODAsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnVucmVnaXN0ZXIoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byogY29udGFp
bmVyID0gY29udGFpbmVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgqY29udGV4dCk7CisgICAg
YXV0byogY29udGFpbmVyID0gY29udGV4dC0+c2VydmljZVdvcmtlckNvbnRhaW5lcigpOwogICAg
IGlmICghY29udGFpbmVyKSB7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24oSW52
YWxpZFN0YXRlRXJyb3IpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3Bw
CmluZGV4IDQ2ZDI5OTBlMjk2Li41MmU4NjZjYmNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNw
cApAQCAtMzIsOCArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQ6OlNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkKLSAgICA6IFNlcnZpY2VXb3JrZXJDbGllbnQoY29udGV4dCwgVHlw
ZTo6V2luZG93KQorU2VydmljZVdvcmtlcldpbmRvd0NsaWVudDo6U2VydmljZVdvcmtlcldpbmRv
d0NsaWVudChSZWY8Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIDogU2VydmljZVdvcmtlckNs
aWVudChXVEZNb3ZlKGNvbm5lY3Rpb24pLCBjb250ZXh0LCBpZGVudGlmaWVyLCBUeXBlOjpXaW5k
b3cpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oCmluZGV4IDgzYzgwZTI4MDdiLi5jYjZlNzBi
N2Y5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJXaW5kb3dDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oCkBAIC0zNiw5ICszNiw5IEBAIGNsYXNzIERlZmVy
cmVkUHJvbWlzZTsKIAogY2xhc3MgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudCBmaW5hbCA6IHB1
YmxpYyBTZXJ2aWNlV29ya2VyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNlcnZp
Y2VXb3JrZXJXaW5kb3dDbGllbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KQorICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlcldpbmRvd0NsaWVudD4gY3JlYXRlKFJl
ZjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIHVpbnQ2NF90IGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudChXVEZNb3ZlKGNvbm5lY3Rp
b24pLCBjb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgVmlzaWJpbGl0eVN0YXRl
IHZpc2liaWxpdHlTdGF0ZSgpIGNvbnN0OwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBuYXZpZ2F0ZShjb25zdCBTdHJpbmcmIHVybCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7
CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudChSZWY8
Q29ubmVjdGlvbj4mJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHVpbnQ2NF90IGlkZW50aWZp
ZXIpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJDbGllbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjg5Y2QyY2JmODllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaApAQCAtMCww
ICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTsKKworY2xhc3MgU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rp
b24+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlv
bigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSkgPSAwOworfTsKKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggY2Y3OGU5MTkwMmIuLjli
YWQxODlhYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtMzIsOCArMzIsMTAg
QEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCIKICNp
bmNsdWRlICJFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaCIKICNpbmNsdWRl
ICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAj
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtOTksMTIgKzEwMSwxMyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OnBvc3RGZXRjaFRhc2soUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xp
ZW50PiYmIGNsaWVudAogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQog
Ci12b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUoUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBzdGQ6OnVuaXF1
ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+JiYgY2hhbm5lbHMsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKQordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbj4m
JiBjbGllbnRDb25uZWN0aW9uLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2Us
IHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4mJiBjaGFubmVscywgdWlu
dDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0g
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0YXNrKFtjaGFubmVscyA9IFdURk1vdmUo
Y2hhbm5lbHMpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luID0gc291
cmNlT3JpZ2luLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgbXV0YWJsZSB7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0YXNrKFtjbGll
bnRDb25uZWN0aW9uID0gV1RGTW92ZShjbGllbnRDb25uZWN0aW9uKSwgY2hhbm5lbHMgPSBXVEZN
b3ZlKGNoYW5uZWxzKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZp
ZXIsIHNvdXJjZU9yaWdpbiA9IHNvdXJjZU9yaWdpbi5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBhdXRvJiBzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpOwogICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMo
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBXVEZNb3ZlKGNoYW5uZWxzKSk7Ci0gICAgICAgIHNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KEV4dGVuZGFibGVNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2lu
KSk7CisgICAgICAgIEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3VyY2Ugc291cmNlID0gUmVmUHRy
PFNlcnZpY2VXb3JrZXJDbGllbnQ+IHsgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudDo6Y3JlYXRl
KFdURk1vdmUoY2xpZW50Q29ubmVjdGlvbiksIGNvbnRleHQsIHNvdXJjZUlkZW50aWZpZXIpIH07
CisgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KEV4dGVuZGFi
bGVNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgV1RGTW92ZShtZXNzYWdlKSwg
c291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUoc291cmNlKSkpOwogICAgICAgICBzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29ya2VyT2JqZWN0UHJveHkoKS5jb25maXJtTWVzc2Fn
ZUZyb21Xb3JrZXJPYmplY3Qoc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmhhc1BlbmRpbmdBY3Rp
dml0eSgpKTsKICAgICB9KTsKICAgICBydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggMzM3MzEzOWMyYjUuLmIxY2U4ZTYxMTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbDsK
IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFdvcmtlckxvYWRlclByb3h5Owor
Y2xhc3MgU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb247CiBjbGFzcyBXb3JrZXJPYmplY3RQ
cm94eTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiAKQEAgLTU1LDcgKzU2LDcg
QEAgcHVibGljOgogICAgIFdvcmtlck9iamVjdFByb3h5JiB3b3JrZXJPYmplY3RQcm94eSgpIGNv
bnN0IHsgcmV0dXJuIG1fd29ya2VyT2JqZWN0UHJveHk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcG9zdEZldGNoVGFzayhSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYsIFJl
c291cmNlUmVxdWVzdCYmLCBGZXRjaE9wdGlvbnMmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiYsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4mJiwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShSZWY8U2VydmljZVdvcmtlckNsaWVu
dENvbm5lY3Rpb24+JiYsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIHN0ZDo6dW5pcXVl
X3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4mJiwgdWludDY0X3Qgc291cmNlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwogCiBwcm90ZWN0ZWQ6CiAgICAgUmVmPFdv
cmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdp
biwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBQQUw6OlNlc3Npb25JRCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xp
ZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggOGU5M2M1ZTA2YzkuLmI0NTUyMDY4YjBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0Ns
aWVudENvbm5lY3Rpb24uY3BwCkBAIC0yOCw3ICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25E
YXRhLmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckNvbnRhaW5lci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhLmgiCiAKQEAgLTEwOSw2ICsxMTIsMjggQEAgdm9p
ZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIodWludDY0X3Qg
am9iSWRlbnRpZmllcikKICAgICBqb2ItPnN0YXJ0U2NyaXB0RmV0Y2goKTsKIH0KIAordm9pZCBT
V0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2
NF90IGNsaWVudElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2Fn
ZSkKK3sKKyAgICAvLyBGSVhNRTogY2xpZW50SWRlbnRpZmllciBjYW4gb25seSBpZGVudGlmeSBh
IERvY3VtZW50IGF0IHRoZSBtb21lbnQuCisgICAgYXV0byogZGVzdGluYXRpb25Eb2N1bWVudCA9
IERvY3VtZW50OjphbGxEb2N1bWVudHMoKS5nZXQoY2xpZW50SWRlbnRpZmllcik7CisgICAgaWYg
KCFkZXN0aW5hdGlvbkRvY3VtZW50KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90
IGZpbmQgY2xpZW50IGRvY3VtZW50IHdpdGggdGhlIGdpdmVuIGlkZW50aWZpZXIiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIGNvbnRhaW5lciA9IGRlc3RpbmF0aW9uRG9j
dW1lbnQtPnNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKKyAgICBpZiAoIWNvbnRhaW5lcikgewor
ICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBmaW5kIHNlcnZpY2Ugd29ya2VyIGNvbnRh
aW5lciBmb3IgY2xpZW50IGRvY3VtZW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAvLyBGSVhNRTogUGFzcyBpbiBwb3J0cy4KKyAgICAvLyBGSVhNRTogUGFzcyBpbiBvcmlnaW4u
CisgICAgLy8gRklYTUU6IFBhc3MgaW4gc291cmNlLgorICAgIGF1dG8gbWVzc2FnZUV2ZW50ID0g
TWVzc2FnZUV2ZW50OjpjcmVhdGUoeyB9LCBXVEZNb3ZlKG1lc3NhZ2UpLCB7IH0pOworICAgIGNv
bnRhaW5lci0+ZGlzcGF0Y2hFdmVudChtZXNzYWdlRXZlbnQpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5l
Y3Rpb24uaAppbmRleCA1MDhhNThhNDlmMi4uZjNiNTQwMmQyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rp
b24uaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZUpvYihTZXJ2
aWNlV29ya2VySm9iJik7CiAgICAgdm9pZCBmaW5pc2hlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VX
b3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGZhaWxlZEZldGNoaW5nU2NyaXB0
KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdmlydHVhbCB2
b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNv
dXJjZSkgPSAwOwogCiAgICAgdmlydHVhbCB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihj
b25zdCBTZWN1cml0eU9yaWdpbiYpIGNvbnN0ID0gMDsKQEAgLTU5LDYgKzU5LDcgQEAgcHJvdGVj
dGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNl
cnZlcih1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YSYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJ
blNlcnZlcih1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIodWlu
dDY0X3Qgam9iSWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBlOWJjYjMyNTM0
Mi4uODA5ODMyMzhiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CkBAIC0xMDgsOSArMTA4LDkgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0
Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWMKICAgICBzZW5kVG9D
b250ZXh0UHJvY2VzcyhNZXNzYWdlczo6U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpTdGFy
dEZldGNoKGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgcmVxdWVzdCwgb3B0aW9ucykpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlv
bjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNv
dXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewotICAgIHNlbmRU
b0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OlBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoaWRlbnRpZmllcigpLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlT3JpZ2luKSk7CisgICAgc2VuZFRvQ29u
dGV4dFByb2Nlc3MoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6UG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShpZGVudGlmaWVyKCksIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pKTsK
IH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNl
KHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCkBAIC0xMzgsNiArMTM4LDExIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRO
b3RIYW5kbGVGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCiAgICAgbV9jb250ZW50Q29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RI
YW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogfQogCit2b2lkIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0X3QgY2xpZW50SWRl
bnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJDbGllbnQgeyBjbGllbnRJZGVudGlmaWVyLCBtZXNzYWdlIH0pOworfQorCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBib29sIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nl
c3MoVSYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtX2NvbnRleHRDb25uZWN0aW9uKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDI5MjZlODNlNDMxLi5iMmQ0NGY2ZGUz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNTcsNiArNTcsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsRmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVy
KTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZUZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7
CiAKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGNs
aWVudElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSk7CisKIHBy
aXZhdGU6CiAgICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdlcyB0
byB0aGUgY2xpZW50IFdlYlByb2Nlc3MpCiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudCh1aW50
NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmluYWw7
CkBAIC02Niw3ICs2OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
Jik7CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWlu
dDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAKICAgICAvLyBNZXNzYWdl
cyB0byB0aGUgU1cgY29udGV4dCBXZWJQcm9jZXNzCiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
aW5kZXggM2IyMDQ1YzY0NDQuLjU5ZjdlODI1NTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI4LDcgKzI4LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIHsKICAgICBGaW5pc2hGZXRjaGluZ1NjcmlwdElu
U2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQgcmVzdWx0KQog
CiAgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBpZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBX
ZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKLSAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRh
dGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKKyAgICBQb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmll
ciwgU3RyaW5nIHNvdXJjZU9yaWdpbikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5j
cHAKaW5kZXggODc2NGNkMDcwMmQuLmM2MTYwMzk3YzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtNDM1LDYgKzQzNSwxMiBAQCB2
b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgdWludDY0XwogICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hGZXRj
aChmZXRjaElkZW50aWZpZXIpOwogfQogCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudChpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1l
c3NhZ2UpCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBtX3N3U2VydmVyQ29ubmVjdGlv
bnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY2xpZW50SWRlbnRpZmllciwgbWVzc2Fn
ZSk7Cit9CisKIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9u
KFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQoIW1fc3dT
ZXJ2ZXJDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmluZGV4IGFhODY0
NWI3NzFjLi5hNzc0YjgzZTRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVByb2Nlc3MuaApAQCAtMTI1LDYgKzEyNSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZhaWxGZXRjaCh1aW50NjRfdCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2
b2lkIGRpZE5vdEhhbmRsZUZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOworCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckNsaWVudChpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50
NjRfdCBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2Up
OwogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgVmVjdG9yPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gaW5kZXhlZERhdGFiYXNlT3JpZ2lucyhjb25zdCBTdHJp
bmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMzM5MmFmNzE1ZDEuLmNlZTJiNmNkNDBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTQ2LDUgKzQ2LDYgQEAgbWVzc2FnZXMgLT4gU3RvcmFnZVByb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAgRGlkUmVjZWl2ZUZldGNoRGF0
YSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCkKICAgICBEaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQorICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBj
bGllbnRJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkKICNlbmRpZgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NzdmMjUxYTdmMmEuLjg3NjI5MGFhNzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNzcsNiArMTM3Nyw4IEBACiAJCTgzMkVEMThD
MUUyRkUxNTcwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJFRDE4QTFFMkZF
MTNCMDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oICovOyB9Owog
CQk4MzRCMjUwRjFBODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0QjI1MEUxQTgz
MUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCAqLzsgfTsKIAkJODM0QjI1
MTIxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEIyNTEwMUE4NDJDODcwMENG
QjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmggKi87IH07CisJCTgzNTczMUMxMUZBMEYw
RjgwMDg1RjREMyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzU3MzFDMDFGQTBGMEVE
MDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3BwICovOyB9Owor
CQk4MzU3MzFDMjFGQTBGMEY4MDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
NTczMUJGMUZBMEYwRUMwMDg1RjREMyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlv
bi5oICovOyB9OwogCQk4MzYwMzQ5RjFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJh
c2VUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIu
Y3BwICovOyB9OwogCQk4MzYwMzRBMDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJh
c2VUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzYwMzQ5RTFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgg
Ki87IH07CiAJCTgzNkVFQjgwMUJFOUVDOUUwMDZCNEI4MiAvKiBOZXR3b3JrTG9hZE1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNkVFQjdGMUJF
OUVDOUUwMDZCNEI4MiAvKiBOZXR3b3JrTG9hZE1hYy5tbSAqLzsgfTsKQEAgLTM3NjEsNiArMzc2
Myw5IEBACiAJCTgzMkVEMThBMUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BV
VXNhZ2VTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlckFjdGl2
aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODM0QjI1MEUxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUxMDFBODQyQzg3MDBDRkIxNTAgLyog
TmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTgzNTczMUJFMUZBMEYwRUMwMDg1RjREMyAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIu
bWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VydmljZVdvcmtlckNvbnRleHRN
YW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzU3MzFC
RjFGQTBGMEVDMDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2VydmljZVdvcmtlckNsaWVudENv
bm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM1NzMxQzAxRkEwRjBF
RDAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25u
ZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM2MDM0OUQxQUNCMzRE
NjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzYwMzQ5RTFBQ0IzNEQ2MDA2MjY1NDkgLyogV2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzZFRUI3RjFCRTlFQzlFMDA2QjRCODIgLyogTmV0d29ya0xvYWRNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrTG9hZE1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMTIsOCArNjIxNywxMSBAQAogCQkJCTQxMzFGM0NG
MUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVzc2FnZXMuaW4g
Ki8sCiAJCQkJNDEzMUYzRDMxRjk2RTkzMTAwNTk5OTVBIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0
TWFuYWdlci5jcHAgKi8sCiAJCQkJNDEzMUYzRDIxRjk2RTkzMDAwNTk5OTVBIC8qIFNlcnZpY2VX
b3JrZXJDb250ZXh0TWFuYWdlci5oICovLAorCQkJCTgzNTczMUJFMUZBMEYwRUMwMDg1RjREMyAv
KiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJCQkJNDE0REVE
QzUxRjlFNEJFQzAwNDdDNDBEIC8qIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Ki8sCiAJCQkJNDE0REVEQzQxRjlFNEJFQjAwNDdDNDBEIC8qIFNlcnZpY2VXb3JrZXJGcmFtZUxv
YWRlckNsaWVudC5oICovLAorCQkJCTgzNTczMUMwMUZBMEYwRUQwMDg1RjREMyAvKiBXZWJTZXJ2
aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJODM1NzMxQkYxRkEwRjBFQzAw
ODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggKi8sCiAJCQkJNDEz
MUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQu
Y3BwICovLAogCQkJCTQxOUFDRjlCMUY5ODFEMjYwMDlGMUE4MyAvKiBXZWJTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrQ2xpZW50LmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAyOUI5IC8qIFdl
YlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCkBAIC05MDY3LDYgKzkwNzUsNyBAQAogCQkJ
CTQxREM0NTlGMUUzREJEQTUwMEIxMUY1MSAvKiBXZWJSVENTb2NrZXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDMzYxRDczMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNCOTQ4NDkxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNl
YXJjaFBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODM1NzMxQzIxRkEwRjBGODAwODVG
NEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUJFQjYyQzFGM0E1QUQ3MDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ4MzJENzFBOUNERjk2MDA4QjRERkUgLyogV2Vic2l0
ZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQxMUE5QkRDMkYwMDhCNERGRSAvKiBX
ZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDcyMCw2ICsxMDcyOSw3IEBA
CiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFDIC8qIFdlYlJUQ1NvY2tldE1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzM2MUQ3MjE5MjdGQTM2MDAzNkE1OUQgLyog
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDNCOTQ4NDgx
MUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk4MzU3MzFDMTFGQTBGMEY4MDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNsaWVudENv
bm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMUYzRTIxRjk4ODA4NDAwNTk5OTVB
IC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTFCRUI2MkIxRjNBNUFENzAwNTAyOUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTQ4MzJENjFBOUNERjk2MDA4QjRERkUgLyogV2Vic2l0
ZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcApp
bmRleCA5NGQ2MzRkNjEyYi4uOTFhMzg0MTQxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5h
Z2VyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzS2V5cy5o
IgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCisjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU29j
a2V0UHJvdmlkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvckNsaWVudC5oPgpAQCAtMTMy
LDE0ICsxMzMsMTYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnN0YXJ0RmV0
Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIKICAgICBzZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHktPnRocmVhZCgpLnBvc3RGZXRjaFRhc2soV1RGTW92ZShjbGllbnQpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGV4dE1hbmFnZXI6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luKQordm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKQogewogICAgIGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBtX3dv
cmtlck1hcC5nZXQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIGlmICghc2VydmljZVdv
cmtlcikKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBjbGllbnRDb25uZWN0aW9uID0gV2Vi
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb246OmNyZWF0ZShtX2Nvbm5lY3Rpb25Ub1N0b3Jh
Z2VQcm9jZXNzLmNvcHlSZWYoKSwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHNvdXJjZUlk
ZW50aWZpZXIpOworCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIHZhbGlkIE1lc3NhZ2VQ
b3J0Q2hhbm5lbHMuCi0gICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KG1lc3Nh
Z2UudmVjdG9yKCkpLCBudWxscHRyLCBzb3VyY2VPcmlnaW4pOworICAgIHNlcnZpY2VXb3JrZXIt
PnRocmVhZCgpLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoV1RGTW92ZShj
bGllbnRDb25uZWN0aW9uKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChtZXNzYWdlLnZl
Y3RvcigpKSwgbnVsbHB0ciwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaAppbmRleCBl
MGRiODI2OWU3My4uOWE1ZWJiYzMwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oCkBA
IC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlcih1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhJik7CiAgICAgdm9pZCBzdGFydEZldGNoKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6RmV0Y2hPcHRpb25zJiYpOwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VPcmlnaW4pOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
VG9TdG9yYWdlUHJvY2VzczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6
U2VydmljZVdvcmtlclRocmVhZFByb3h5Pj4gbV93b3JrZXJNYXA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29y
a2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggODY2NjNmODFlN2MuLjlmOTY0ZmM4
MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNl
V29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLm1lc3NhZ2VzLmluCkBA
IC0yNSw3ICsyNSw3IEBACiBtZXNzYWdlcyAtPiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIg
ewogICAgIFN0YXJ0U2VydmljZVdvcmtlcih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
Zmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0
YSkKICAgICBTdGFydEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyBvcHRpb25zKQotICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNvdXJj
ZU9yaWdpbikKKyAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50
aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5j
cHAKaW5kZXggMzA4NmVhNGZjMGUuLmZlMmUzZGEwN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAK
QEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJXZWJTV09yaWdpblRhYmxlLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRj
aFJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckpvYkRhdGEuaD4KQEAg
LTY4LDkgKzcwLDEzIEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGlu
Z1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHJl
c3VsdCkpOwogfQogCi12b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzY3JpcHRWYWx1ZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VPcmlnaW4pCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzY3JpcHRWYWx1ZSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgc291cmNlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc2NyaXB0VmFsdWUtPmRhdGEoKSB9LCBz
b3VyY2VPcmlnaW4pKTsKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHBvc3RpbmcgbWVz
c2FnZXMgZnJvbSB3b3JrZXJzLgorICAgIGlmICghaXM8RG9jdW1lbnQ+KHNvdXJjZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6
UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc2NyaXB0VmFsdWUtPmRhdGEoKSB9LCBkb3duY2Fz
dDxEb2N1bWVudD4oc291cmNlKS5pZGVudGlmaWVyKCksIHNvdXJjZS5vcmlnaW4oKSkpOwogfQog
CiBib29sIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6aGFzU2VydmljZVdvcmtlclJlZ2lzdGVyZWRG
b3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QKQEAgLTkyLDYgKzk4
LDExIEBAIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+IFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6c3RhcnRGZXRjaChXZWJTZXJ2aWNlV29ya2VyCiAgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6Y3JlYXRlKHByb3ZpZGVyLCBXVEZNb3ZlKGxvYWRlciksIGlkZW50aWZpZXIs
IG1fY29ubmVjdGlvbi5nZXQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCit2b2lkIFdlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0
X3QgY2xpZW50SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlKQor
eworICAgIFNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGll
bnQoY2xpZW50SWRlbnRpZmllciwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChtZXNzYWdl
LnZlY3RvcigpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAxY2QyOTI5OWUzZi4uMDg4
YjU3MjFhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKLSAgICB2b2lk
IHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNv
bnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNvdXJjZSkgZmluYWw7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RlZEZy
b21XZWJQcm9jZXNzKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTY0LDYgKzY0LDggQEAgcHVibGljOgogICAg
IGJvb2wgaGFzU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsKICAgICBSZWY8U2VydmljZVdvcmtlckNsaWVu
dEZldGNoPiBzdGFydEZldGNoKFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYsIFJlZjxXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcj4mJiwgdWludDY0X3QgaWRlbnRpZmllciwgU2VydmljZVdvcmtlckNs
aWVudEZldGNoOjpDYWxsYmFjayYmKTsKIAorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQodWludDY0X3QgY2xpZW50SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBtZXNzYWdlKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlU3RvcmFnZUpv
Yihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggMTE1NWQxYmFhZDguLjllZDljMDRlNDlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMCw2ICszMCw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiB7CiAgICAgU3RhcnRTY3JpcHRGZXRjaEZvclNl
cnZlcih1aW50NjRfdCBqb2JJZGVudGlmaWVyKQogCiAgICAgU2V0U1dPcmlnaW5UYWJsZVNoYXJl
ZE1lbW9yeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSkKKyAgICBQb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBJUEM6
OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjY2NzBiZDJmYWMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyQ2xp
ZW50Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRlICJXZWJT
ZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTdG9yYWdlUHJvY2Vzc01l
c3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KKyNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK1dlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uOjpXZWJT
ZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjbGll
bnRJZGVudGlmaWVyKQorICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisg
ICAgLCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyKQorICAgICwgbV9jbGllbnRJZGVudGlmaWVyKGNsaWVudElkZW50aWZpZXIpCit7Cit9CisK
K1dlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uOjp+V2ViU2VydmljZVdvcmtlckNsaWVu
dENvbm5lY3Rpb24oKQoreworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlv
biA9IFdURk1vdmUobV9jb25uZWN0aW9uKV0geyB9KTsKK30KKwordm9pZCBXZWJTZXJ2aWNlV29y
a2VyQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUmVm
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlKQoreworICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
Q2xpZW50IHsgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgbV9jbGllbnRJZGVudGlmaWVy
LCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBtZXNzYWdlLT5kYXRhKCkgfSB9LCAwKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25u
ZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmM4YzAxMDY2
OTFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNp
bmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgorCituYW1lc3BhY2UgSVBDIHsKK2NsYXNzIENvbm5lY3Rpb247Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVj
dGlvbiBmaW5hbDogcHVibGljIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9u
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0
aW9uPiBjcmVhdGUoUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCB1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgY2xpZW50SWRlbnRpZmllcikKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlNlcnZpY2VXb3JrZXJDbGllbnRD
b25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbiksIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjbGllbnRJZGVudGlmaWVyKSk7CisgICAgfQorCisgICAgfldlYlNlcnZpY2VXb3JrZXJDbGll
bnRDb25uZWN0aW9uKCk7CisKKyAgICAvLyBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50Q29u
bmVjdGlvbi4KKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFJlZjxX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSkgZmluYWw7CisKK3ByaXZh
dGU6CisgICAgV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiwgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGNs
aWVudElkZW50aWZpZXIpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OworICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgdWludDY0
X3QgbV9jbGllbnRJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324929</attachid>
            <date>2017-10-25 17:40:30 -0700</date>
            <delta_ts>2017-10-25 20:14:02 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>178794_SW_Client_postMessage_wip.patch</filename>
            <type>text/plain</type>
            <size>67379</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVz
c2FnZS5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggN2QxMjIzNTQ3NWYuLmMwOTU1ZjgzNGE3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKLVBBU1M6IFN0YXR1cyBj
b2RlIGlzIDIwMAotUEFTUzogU3RhdHVzIHRleHQgaXMgV29ya2VyIHJlY2VpdmVkIHRoZSBtZXNz
YWdlIGV2ZW50LiBtZXNzYWdlRXZlbnQub3JpZ2luIHdhcyBodHRwczovLzEyNy4wLjAuMTo4NDQz
Ci1QQVNTOiBTb3VyY2UgaXMgU2VydmljZSB3b3JrZXIKK1BBU1M6IENsaWVudCByZWNlaXZlZCBt
ZXNzYWdlIGZyb20gc2VydmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MworUEFTUzogUmVjZWl2ZWQgbWVzc2FnZSAnTWVzc2FnZSAxJyBmcm9tIG9yaWdpbiAnaHR0cHM6
Ly8xMjcuMC4wLjE6ODQ0MycKK1BBU1M6IENsaWVudCByZWNlaXZlZCBtZXNzYWdlIGZyb20gc2Vy
dmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MworUEFTUzogUmVjZWl2
ZWQgbWVzc2FnZSAnTWVzc2FnZSAyJyBmcm9tIG9yaWdpbiAnaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MycKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCmluZGV4IDg0Mzk1YjJhNmQzLi45NDhjODI0
OTQ2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLXdvcmtlci5qcwpAQCAtMSwxNCArMSw0IEBACi1sZXQg
cmVzcG9uc2VUb1NlbmQgPSB7IHN0YXR1czogNDA0LCBzdGF0dXNUZXh0OiAiTm90IEZvdW5kIiB9
OwotCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKLSAgICBy
ZXNwb25zZVRvU2VuZCA9IGV2ZW50LmRhdGE7Ci0gICAgcmVzcG9uc2VUb1NlbmQuc3RhdHVzVGV4
dCArPSAiIG1lc3NhZ2VFdmVudC5vcmlnaW4gd2FzICIgKyBldmVudC5vcmlnaW47CisgICAgZXZl
bnQuc291cmNlLnBvc3RNZXNzYWdlKCJSZWNlaXZlZCBtZXNzYWdlICciICsgZXZlbnQuZGF0YSAr
ICInIGZyb20gb3JpZ2luICciICsgZXZlbnQub3JpZ2luICsgIiciKTsKIH0pOwogCi1zZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoImZldGNoIiwgKGV2ZW50KSA9PiB7Ci0gICAgaWYgKGV2ZW50LnJlcXVl
c3QudXJsLmluZGV4T2YoInRlc3QxIikgIT09IC0xKSB7Ci0gICAgICAgIGV2ZW50LnJlc3BvbmRX
aXRoKG5ldyBSZXNwb25zZShudWxsLCByZXNwb25zZVRvU2VuZCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGV2ZW50LnJlc3BvbmRXaXRoKFJlc3BvbnNlLmVycm9yKCkpOwotfSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmpzCmluZGV4IDk2YTQxY2EwODY4Li4xZjBhNjMwNDRiZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2UuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuanMK
QEAgLTEsMzcgKzEsMTQgQEAKLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGZpbmlzaFNXVGVzdCgp
OwotfQotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB0cnkgewotICAgICAgICBhd2Fp
dCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIiwgeyB9KTsKLQotICAgICAgICBuYXZpZ2F0
b3Iuc2VydmljZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKHsgc3RhdHVzOiAyMDAsIHN0
YXR1c1RleHQ6ICJXb3JrZXIgcmVjZWl2ZWQgdGhlIG1lc3NhZ2UgZXZlbnQuIiB9KTsKLQotICAg
ICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgidGVzdDEiKTsKLSAgICAgICAgaWYgKHJl
c3BvbnNlLnN0YXR1cyA9PSAyMDApCi0gICAgICAgICAgICBsb2coIlBBU1M6IFN0YXR1cyBjb2Rl
IGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2co
IkZBSUw6IFN0YXR1cyBjb2RlIGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotCi0gICAgICAgIGlm
IChyZXNwb25zZS5zdGF0dXNUZXh0LnN0YXJ0c1dpdGgoIldvcmtlciByZWNlaXZlZCB0aGUgbWVz
c2FnZSIpKQotICAgICAgICAgICAgbG9nKCJQQVNTOiBTdGF0dXMgdGV4dCBpcyAiICsgcmVzcG9u
c2Uuc3RhdHVzVGV4dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygiRkFJTDogU3Rh
dHVzIHRleHQgaXMgIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOwotCi0gICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICBsZXQgc291cmNlID0gaW50ZXJuYWxzLmZldGNo
UmVzcG9uc2VTb3VyY2UocmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKHNvdXJjZSA9PT0gIlNl
cnZpY2Ugd29ya2VyIikKLSAgICAgICAgICAgICAgICBsb2coIlBBU1M6IFNvdXJjZSBpcyAiICsg
c291cmNlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsb2coIkZBSUw6IFNv
dXJjZSBpcyAiICsgc291cmNlKTsKLSAgICAgICAgfQotICAgIH0gY2F0Y2goZSkgewotICAgICAg
ICBsb2coIkdvdCBleGNlcHRpb246ICIgKyBlKTsKLSAgICB9Ci0gICAgZmluaXNoU1dUZXN0KCk7
Ci19Ci0KLXRlc3QoKTsKK3ZhciBtZXNzYWdlTnVtYmVyID0gMTsKK25hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgeworICAg
IGxvZygiUEFTUzogQ2xpZW50IHJlY2VpdmVkIG1lc3NhZ2UgZnJvbSBzZXJ2aWNlIHdvcmtlciwg
b3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICBsb2coIlBBU1M6ICIgKyBldmVudC5kYXRh
KTsKKyAgICBpZiAobWVzc2FnZU51bWJlciA9PSAxKSB7CisgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgiTWVzc2FnZSAyIik7CisgICAgICAgIG1lc3NhZ2VOdW1iZXIrKzsKKyAgICB9
IGVsc2UKKyAgICAgICAgZmluaXNoU1dUZXN0KCk7Cit9KTsKKworbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdl
LXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBuYXZpZ2F0b3Iuc2Vydmlj
ZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKCJNZXNzYWdlIDEiKTsKK30pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJk
ODRiNGZlOWY4Li45OTllNTc3NDFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjg3OSw2ICsyODc5LDcgQEAKIAkJODM3MkRC
MzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MkRCMzAxQTY3ODBB
ODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMw
NjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3
OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlB
MDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLzsgfTsKKwkJODM3QTI0NTgx
RkEwRUNDODAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBMjQ1NjFGQTBFQ0M1
MDBGQjE1RTIgLyogU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzdBODAxMzFFMUUxMjczMDAw
MjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBMb2Nh
bGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZDIC8q
IFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJs
ZUlPUy5tbSAqLzsgfTsKIAkJODM3RkIzNDQxRjlFQTA2RDAwRDBGQzMxIC8qIEV4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM3RkIzNDIxRjlFQTA2NzAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQu
Y3BwICovOyB9OwpAQCAtMTA2MjcsNiArMTA2MjgsNyBAQAogCQk4Mzc2NUY5MzFEQUM1MjE4MDBD
MDY1MzcgLyogTW91c2VFdmVudEluaXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vdXNl
RXZlbnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVGOTQxREFD
NTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1vdXNlRXZlbnRJbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Qb3NpdGlv
bklPUy5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRp
b25JT1MubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJODM3QTI0NTYxRkEwRUND
NTAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMwMDAyNkI5RiAvKiBF
bmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxw
cm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnViYmxlSU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmFsaWRhdGlvbkJ1YmJsZUlP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3REZCMzQxRUJGRUE3MDAwNjAx
Mzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RWxlbWVudENTU0lubGluZVN0eWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwNjU1LDcgKzEwNjU3LDcgQEAKIAkJODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxX
QlJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxXQlJFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQTRBOUY4MUNFN0ZEN0UwMDcw
OUIwMCAvKiBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4M0IyNTAwOTFGQTExODFDMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xp
ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3Jr
ZXJDbGllbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzQjI1MDBCMUZB
MTE4MUQwMEJDMDJEOSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0IyNTAwQjFGQTExODFEMDBCQzAyRDkg
LyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODNCNzRFRjIxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJl
cXVlc3RUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtl
ZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAv
KiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3R5bGVCdWlsZGVyQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xODA2Nyw2ICsxODA2OSw3IEBACiAJCTUxN0M4NzA3MUY4RThGRjIwMEVCODA3NiAvKiBjb250
ZXh0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4MzdB
MjQ1NjFGQTBFQ0M1MDBGQjE1RTIgLyogU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAq
LywKIAkJCQk0MTlBQ0Y5MDFGOTdFN0Q2MDA5RjFBODMgLyogU2VydmljZVdvcmtlckZldGNoLmNw
cCAqLywKIAkJCQk0MTlBQ0Y4RTFGOTdFN0Q1MDA5RjFBODMgLyogU2VydmljZVdvcmtlckZldGNo
LmggKi8sCiAJCQkJNTE3Qzg3MTExRjhFRTcyRjAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJl
YWQuY3BwICovLApAQCAtMjk1MzIsNiArMjk1MzUsNyBAQAogCQkJCTJEOTNBRUUzMTlERjU2NDEw
MDJBODZDMyAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUYxNzU1RDFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDZFRjE0MkQxRjk3QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTgzN0EyNDU4MUZBMEVDQzgwMEZCMTVFMiAvKiBTZXJ2aWNl
V29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZFRjE0MkMxRjk3
QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4MzY5RkRGQzFGQTEwMkUzMDBDMUZGMUYgLyogU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxRjE3NTVGMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IDI1ZDRhNWNmZDQwLi5kNzIyYjdjZGI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00
MzQsOSArNDM0LDE1IEBAIHN0YXRpYyB2b2lkIHByaW50TmF2aWdhdGlvbkVycm9yTWVzc2FnZShG
cmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgYWN0aXZlVVJMLCBjb25zCiAKIHVpbnQ2NF90IERvY3Vt
ZW50OjpzX2dsb2JhbFRyZWVWZXJzaW9uID0gMDsKIAotSGFzaFNldDxEb2N1bWVudCo+JiBEb2N1
bWVudDo6YWxsRG9jdW1lbnRzKCkKK3N0YXRpYyBEb2N1bWVudDo6SWRlbnRpZmllciBnZW5lcmF0
ZURvY3VtZW50SWRlbnRpZmllcigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hT
ZXQ8RG9jdW1lbnQqPj4gZG9jdW1lbnRzOworICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVy
ID0gMDsKKyAgICByZXR1cm4gKytpZGVudGlmaWVyOworfQorCithdXRvIERvY3VtZW50OjphbGxE
b2N1bWVudHMoKSAtPiBIYXNoTWFwPElkZW50aWZpZXIsIERvY3VtZW50Kj4mCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8SWRlbnRpZmllciwgRG9jdW1lbnQqPj4gZG9jdW1l
bnRzOwogICAgIHJldHVybiBkb2N1bWVudHM7CiB9CiAKQEAgLTQ5NSw4ICs1MDEsOSBAQCBEb2N1
bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9j
dW1lbnRDbGFzc2VzLCB1bnNpZwogICAgICwgbV9pc1N5bnRoZXNpemVkKGNvbnN0cnVjdGlvbkZs
YWdzICYgU3ludGhlc2l6ZWQpCiAgICAgLCBtX2lzTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihjb25z
dHJ1Y3Rpb25GbGFncyAmIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIpCiAgICAgLCBtX29yaWVudGF0
aW9uTm90aWZpZXIoY3VycmVudE9yaWVudGF0aW9uKGZyYW1lKSkKKyAgICAsIG1faWRlbnRpZmll
cihnZW5lcmF0ZURvY3VtZW50SWRlbnRpZmllcigpKQogewotICAgIGFsbERvY3VtZW50cygpLmFk
ZCh0aGlzKTsKKyAgICBhbGxEb2N1bWVudHMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKIAog
ICAgIC8vIFdlIGRlcGVuZCBvbiB0aGUgdXJsIGdldHRpbmcgaW1tZWRpYXRlbHkgc2V0IGluIHN1
YmZyYW1lcywgYnV0IHdlCiAgICAgLy8gYWxzbyBkZXBlbmQgb24gdGhlIHVybCBOT1QgZ2V0dGlu
ZyBpbW1lZGlhdGVseSBzZXQgaW4gb3BlbmVkIHdpbmRvd3MuCkBAIC01NDYsNyArNTUzLDggQEAg
UmVmPERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlKERvY3VtZW50JiBjb250ZXh0RG9jdW1lbnQp
CiAKIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogewotICAgIGFsbERvY3VtZW50cygpLnJlbW92ZSh0
aGlzKTsKKyAgICBib29sIHdhc1JlbW92ZWQgPSBhbGxEb2N1bWVudHMoKS5yZW1vdmUobV9pZGVu
dGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwogCiAg
ICAgQVNTRVJUKCFyZW5kZXJWaWV3KCkpOwogICAgIEFTU0VSVChtX3BhZ2VDYWNoZVN0YXRlICE9
IEluUGFnZUNhY2hlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMTY3MTdlODEzZGEuLjUzNDYx
Y2I3ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQ3LDcgKzM0Nyw5IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBIYXNoU2V0PERvY3VtZW50Kj4mIGFsbERvY3VtZW50cygpOworICAgIHVzaW5nIElkZW50aWZp
ZXIgPSB1aW50NjRfdDsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaE1hcDxJZGVu
dGlmaWVyLCBEb2N1bWVudCo+JiBhbGxEb2N1bWVudHMoKTsKIAogICAgIE1lZGlhUXVlcnlNYXRj
aGVyJiBtZWRpYVF1ZXJ5TWF0Y2hlcigpOwogCkBAIC0xODI2LDYgKzE4MjgsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9ncmFudFN0b3JhZ2VBY2Nlc3NPdmVycmlkZSB7IGZhbHNlIH07CiAKICAg
ICBSZWZQdHI8RG9jdW1lbnRUaW1lbGluZT4gbV90aW1lbGluZTsKKyAgICBJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKIH07CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50
KERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCmluZGV4IDU0ODU5NmNm
MWY4Li44N2VjMTc1ZWY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VF
dmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKQEAgLTE1
MCwxNSArMTUwLDkgQEAgdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoRXhlY1N0
YXRlJiBzdGF0ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLAogICAgIG1fcG9ydHMgPSBXVEZN
b3ZlKHBvcnRzKTsKIH0KIAotRXZlbnRUYXJnZXQqIE1lc3NhZ2VFdmVudDo6c291cmNlKCkgY29u
c3QKK2NvbnN0IHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYgTWVzc2FnZUV2ZW50
Ojpzb3VyY2UoKSBjb25zdAogewotICAgIGlmICghbV9zb3VyY2UpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9zb3VyY2UudmFsdWUoKSwKLSAg
ICAgICAgW10gKGNvbnN0IFJlZlB0cjxET01XaW5kb3c+JiB3aW5kb3cpIC0+IEV2ZW50VGFyZ2V0
KiB7IHJldHVybiBjb25zdF9jYXN0PERPTVdpbmRvdyo+KHdpbmRvdy5nZXQoKSk7IH0sCi0gICAg
ICAgIFtdIChjb25zdCBSZWZQdHI8TWVzc2FnZVBvcnQ+JiBtZXNzYWdlUG9ydCkgLT4gRXZlbnRU
YXJnZXQqIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8TWVzc2FnZVBvcnQqPihtZXNzYWdlUG9ydC5nZXQo
KSk7IH0KLSAgICApOworICAgIHJldHVybiBtX3NvdXJjZTsKIH0KIAogUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gTWVzc2FnZUV2ZW50Ojp0cnlTZXJpYWxpemVEYXRhKEV4ZWNTdGF0ZSog
ZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAppbmRleCBlZmQ2NWIzYzQ4MS4uZmRlM2Vm
NmVlMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgogI2luY2x1
ZGUgPGJpbmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIApA
QCAtMzgsNyArMzksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCbG9iOwogCi11
c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBWYXJpYW50PFJlZlB0cjxET01XaW5kb3c+LCBSZWZQ
dHI8TWVzc2FnZVBvcnQ+PjsKK3VzaW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9IFZhcmlhbnQ8UmVm
UHRyPERPTVdpbmRvdz4sIFJlZlB0cjxNZXNzYWdlUG9ydD4KKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisgICAgLCBSZWZQdHI8U2VydmljZVdvcmtlcj4KKyNlbmRpZgorICAgID47CiAKIGNs
YXNzIE1lc3NhZ2VFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6CkBAIC02NCw3
ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcmlnaW47IH0KICAgICBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXN0RXZlbnRJZDsgfQotICAgIEV2ZW50VGFyZ2V0KiBzb3VyY2UoKSBjb25z
dDsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mIHNvdXJjZSgp
IGNvbnN0OwogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgcG9ydHMoKSBj
b25zdCB7IHJldHVybiBtX3BvcnRzOyB9CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgd2hl
biB3ZSBoYXZlIGN1c3RvbSBPYmpDIGJpbmRpbmcgc3VwcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5pZGwKaW5kZXggY2I5MmUwMTJlOWUuLjY2NGQwYWJjYmYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmlkbApAQCAtMjYsNiArMjYsMTIgQEAKICAqCiAgKi8KIAorI2lmIGRl
ZmluZWQoRU5BQkxFX1NFUlZJQ0VfV09SS0VSKSAmJiBFTkFCTEVfU0VSVklDRV9XT1JLRVIKK3R5
cGVkZWYgKERPTVdpbmRvdyBvciBNZXNzYWdlUG9ydCBvciBTZXJ2aWNlV29ya2VyKSBNZXNzYWdl
RXZlbnRTb3VyY2U7CisjZWxzZQordHlwZWRlZiAoRE9NV2luZG93IG9yIE1lc3NhZ2VQb3J0KSBN
ZXNzYWdlRXZlbnRTb3VyY2U7CisjZW5kaWYKKwogWwogICAgIENvbnN0cnVjdG9yKERPTVN0cmlu
ZyB0eXBlLCBvcHRpb25hbCBNZXNzYWdlRXZlbnRJbml0IGV2ZW50SW5pdERpY3QpLAogICAgIENv
bnN0cnVjdG9yQ2FsbFdpdGg9U2NyaXB0U3RhdGUsCkBAIC0zMywxMiArMzksMTIgQEAKIF0gaW50
ZXJmYWNlIE1lc3NhZ2VFdmVudCA6IEV2ZW50IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNW
U3RyaW5nIG9yaWdpbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhc3RFdmVu
dElkOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFdmVudFRhcmdldD8gc291cmNlOworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBNZXNzYWdlRXZlbnRTb3VyY2U/IHNvdXJjZTsKICAgICBbQ2FjaGVk
QXR0cmlidXRlLCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgZGF0YTsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRnJvemVuQXJyYXk8TWVzc2FnZVBvcnQ+IHBvcnRzOwogCiAg
ICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIGluaXRNZXNzYWdlRXZlbnQoRE9NU3RyaW5n
IHR5cGUsIG9wdGlvbmFsIGJvb2xlYW4gYnViYmxlcyA9IGZhbHNlLCBvcHRpb25hbCBib29sZWFu
IGNhbmNlbGFibGUgPSBmYWxzZSwKLSAgICAgICAgb3B0aW9uYWwgYW55IGRhdGEgPSBudWxsLCBv
cHRpb25hbCBVU1ZTdHJpbmcgb3JpZ2luQXJnID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyBsYXN0
RXZlbnRJZCA9ICIiLCBvcHRpb25hbCAoRE9NV2luZG93IG9yIE1lc3NhZ2VQb3J0KT8gc291cmNl
ID0gbnVsbCwKKyAgICAgICAgb3B0aW9uYWwgYW55IGRhdGEgPSBudWxsLCBvcHRpb25hbCBVU1ZT
dHJpbmcgb3JpZ2luQXJnID0gIiIsIG9wdGlvbmFsIERPTVN0cmluZyBsYXN0RXZlbnRJZCA9ICIi
LCBvcHRpb25hbCBNZXNzYWdlRXZlbnRTb3VyY2U/IHNvdXJjZSA9IG51bGwsCiAgICAgICAgIG9w
dGlvbmFsIHNlcXVlbmNlPE1lc3NhZ2VQb3J0PiBtZXNzYWdlUG9ydHMgPSBbXSk7CiB9OwogCkBA
IC00Niw2ICs1Miw2IEBAIGRpY3Rpb25hcnkgTWVzc2FnZUV2ZW50SW5pdCA6IEV2ZW50SW5pdCB7
CiAgICAgICBhbnkgZGF0YSA9IG51bGw7CiAgICAgICBVU1ZTdHJpbmcgb3JpZ2luID0gIiI7CiAg
ICAgICBET01TdHJpbmcgbGFzdEV2ZW50SWQgPSAiIjsKLSAgICAgIChET01XaW5kb3cgb3IgTWVz
c2FnZVBvcnQpPyBzb3VyY2UgPSBudWxsOworICAgICAgTWVzc2FnZUV2ZW50U291cmNlPyBzb3Vy
Y2UgPSBudWxsOwogICAgICAgc2VxdWVuY2U8TWVzc2FnZVBvcnQ+IHBvcnRzID0gW107CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDky
ZTkwNTliOWEwLi4xM2IxZGI0YjU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTRE9NRXhj
ZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiTm9FdmVudERp
c3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiUHVibGljVVJMTWFuYWdlci5oIgogI2luY2x1
ZGUgIlJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCIKQEAgLTQ1LDYgKzQ2LDcgQEAKICNpbmNsdWRl
ICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV29ya2Vy
R2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJX
b3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRl
IDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CkBAIC01MjUsNCArNTI3LDE4IEBAIEpTQzo6
RXhlY1N0YXRlKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVjU3RhdGUoKQogICAgIHJldHVy
biBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpOwogfQog
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorU2VydmljZVdvcmtlckNvbnRhaW5lciogU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6c2VydmljZVdvcmtlckNvbnRhaW5lcigpCit7CisgICAgTmF2
aWdhdG9yQmFzZSogbmF2aWdhdG9yID0gbnVsbHB0cjsKKyAgICBpZiAoaXM8RG9jdW1lbnQ+KCp0
aGlzKSkgeworICAgICAgICBpZiAoYXV0byogd2luZG93ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCp0
aGlzKS5kb21XaW5kb3coKSkKKyAgICAgICAgICAgIG5hdmlnYXRvciA9IHdpbmRvdy0+bmF2aWdh
dG9yKCk7CisgICAgfSBlbHNlCisgICAgICAgIG5hdmlnYXRvciA9ICZkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oKnRoaXMpLm5hdmlnYXRvcigpOworCisgICAgcmV0dXJuIG5hdmlnYXRvciA/
IG5hdmlnYXRvci0+c2VydmljZVdvcmtlcigpIDogbnVsbHB0cjsKK30KKyNlbmRpZgorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaAppbmRleCAyNjZmNDlhZWVjMC4uNTIxOGJlODUyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNjgsNiArNjgsMTAgQEAgY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKIGNsYXNzIFVSTDsKIAorI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKK2NsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXI7Cisj
ZW5kaWYKKwogbmFtZXNwYWNlIElEQkNsaWVudCB7CiBjbGFzcyBJREJDb25uZWN0aW9uUHJveHk7
CiB9CkBAIC0yMzQsNiArMjM4LDggQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICB1aW50NjRfdCBzZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQogICAgIHZvaWQgc2V0U2VsZWN0
ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKSB7IG1fc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisKKyAgICBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyKiBzZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggN2FiMDkyNDM0YmYuLjNjYjNk
ZGZiYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKQEAgLTY1LDcgKzY1
LDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZU5vbmNyaXRpY2FsTWVtb3J5KCkKIAogICAgIGNsZWFy
V2lkdGhDYWNoZXMoKTsKIAotICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxs
RG9jdW1lbnRzKCkpCisgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1
bWVudHMoKS52YWx1ZXMoKSkKICAgICAgICAgZG9jdW1lbnQtPmNsZWFyU2VsZWN0b3JRdWVyeUNh
Y2hlKCk7CiAKICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucHJ1bmVEZWFkUmVzb3VyY2Vz
VG9TaXplKDApOwpAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlQ3JpdGljYWxN
ZW1vcnkoU3luY2hyb25vdXMgc3luY2hyb25vdXMpCiAKICAgICBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmRyYWluKCk7CiAKLSAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogY29weVRvVmVjdG9y
T2Y8UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSkgeworICAgIGZv
ciAoYXV0byYgZG9jdW1lbnQgOiBjb3B5VG9WZWN0b3JPZjxSZWZQdHI8RG9jdW1lbnQ+PihEb2N1
bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpKSB7CiAgICAgICAgIGRvY3VtZW50LT5zdHls
ZVNjb3BlKCkuY2xlYXJSZXNvbHZlcigpOwogICAgICAgICBkb2N1bWVudC0+Zm9udFNlbGVjdG9y
KCkuZW1wdHlDYWNoZXMoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IDUwMTZhMDZlMjA0Li44MmM0ZTU3NjRlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE5NDUsNyArMTk0NSw3IEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpyZW1vdmVSYXJlRGF0YSgpCiAKIHZvaWQgcHJpbnRSZW5kZXJUcmVlRm9y
TGl2ZURvY3VtZW50cygpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3Vt
ZW50OjphbGxEb2N1bWVudHMoKSkgeworICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBE
b2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKCFkb2N1bWVu
dC0+cmVuZGVyVmlldygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChkb2N1
bWVudC0+ZnJhbWUoKSAmJiBkb2N1bWVudC0+ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkKQEAgLTE5
NTcsNyArMTk1Nyw3IEBAIHZvaWQgcHJpbnRSZW5kZXJUcmVlRm9yTGl2ZURvY3VtZW50cygpCiAK
IHZvaWQgcHJpbnRMYXllclRyZWVGb3JMaXZlRG9jdW1lbnRzKCkKIHsKLSAgICBmb3IgKGNvbnN0
IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgZm9yIChj
b25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkg
ewogICAgICAgICBpZiAoIWRvY3VtZW50LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgaWYgKGRvY3VtZW50LT5mcmFtZSgpICYmIGRvY3VtZW50LT5mcmFtZSgp
LT5pc01haW5GcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dENvdmVyYWdlLmNwcAppbmRleCBhOTE2MDQ1ZTRiYS4uZjA3ZDRjMWI0N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292
ZXJhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
Q292ZXJhZ2UuY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdE5vbkVt
cHR5TGVhZlJlbmRlckJsb2NrRmxvd3MoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgSGEK
IAogc3RhdGljIHZvaWQgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJsb2NrRmxvd3NGb3JDdXJy
ZW50UGFnZShIYXNoU2V0PGNvbnN0IFJlbmRlckJsb2NrRmxvdyo+JiBsZWFmUmVuZGVyZXJzKQog
ewotICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRz
KCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3Vt
ZW50cygpLnZhbHVlcygpKSB7CiAgICAgICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSB8
fCBkb2N1bWVudC0+cGFnZUNhY2hlU3RhdGUoKSAhPSBEb2N1bWVudDo6Tm90SW5QYWdlQ2FjaGUp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCFkb2N1bWVudC0+aXNIVE1MRG9j
dW1lbnQoKSAmJiAhZG9jdW1lbnQtPmlzWEhUTUxEb2N1bWVudCgpKQpAQCAtMjc5LDcgKzI3OSw3
IEBAIHN0YXRpYyB2b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzRm9yQ3Vy
cmVudFBhZ2UoSGFzaFNldDxjb25zdCBSZW5kCiAKIHZvaWQgdG9nZ2xlU2ltcGxlTGluZUxheW91
dCgpCiB7Ci0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMo
KSkgeworICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCku
dmFsdWVzKCkpIHsKICAgICAgICAgYXV0byYgc2V0dGluZ3MgPSBkb2N1bWVudC0+bXV0YWJsZVNl
dHRpbmdzKCk7CiAgICAgICAgIHNldHRpbmdzLnNldFNpbXBsZUxpbmVMYXlvdXRFbmFibGVkKCFz
ZXR0aW5ncy5zaW1wbGVMaW5lTGF5b3V0RW5hYmxlZCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggNWExMTgxZTc5MjAuLjM5YWM4Yjg1YjljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMTU0LDcgKzIxNTQsNyBAQCBFeGNlcHRp
b25Pcjx1bnNpZ25lZD4gSW50ZXJuYWxzOjpjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgVmVjdAogdW5zaWduZWQgSW50ZXJuYWxzOjpudW1iZXJPZkxpdmVOb2Rlcygp
IGNvbnN0CiB7CiAgICAgdW5zaWduZWQgbm9kZUNvdW50ID0gMDsKLSAgICBmb3IgKGF1dG8qIGRv
Y3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKQorICAgIGZvciAoYXV0byogZG9jdW1l
bnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpCiAgICAgICAgIG5vZGVDb3Vu
dCArPSBkb2N1bWVudC0+cmVmZXJlbmNpbmdOb2RlQ291bnQoKTsKICAgICByZXR1cm4gbm9kZUNv
dW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXIuY3BwCmluZGV4IDE3OTY0ZWFkNjA0Li4wY2Y5YTgxNjQyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcApAQCAtNjksNyArNjksNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBTZXJ2aWNlV29ya2VyOjpwb3N0TWVzc2FnZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBKUwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90
U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUGFzc2luZyBNZXNzYWdlUG9ydCBvYmplY3Rz
IHRvIHBvc3RNZXNzYWdlIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIikgfTsKIAogICAgIGF1dG8mIHN3
Q29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdv
cmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKGNvbnRleHQuc2Vzc2lvbklEKCkpOwotICAgIHN3Q29u
bmVjdGlvbi5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKG1faWRlbnRpZmll
ciwgbWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dC5vcmlnaW4oKSk7CisgICAg
c3dDb25uZWN0aW9uLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUobV9pZGVu
dGlmaWVyLCBtZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0KTsKIAogICAgIHJl
dHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5jcHAKaW5kZXggY2QzMDFkMDg4MjMuLmUyYzJmOWNlNmZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnQuY3BwCkBAIC0yOCwxNCArMjgsMjUgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudC5oIgogCisjaW5jbHVkZSAiTWVzc2Fn
ZVBvcnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudENv
bm5lY3Rpb24uaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZXJ2aWNlV29ya2VyQ2xpZW50
OjpTZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFR5
cGUgdHlwZSkKK1NlcnZpY2VXb3JrZXJDbGllbnQ6OlNlcnZpY2VXb3JrZXJDbGllbnQoUmVmPENv
bm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
dWludDY0X3QgaWRlbnRpZmllciwgVHlwZSB0eXBlKQogICAgIDogQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIoJmNvbnRleHQpCisgICAgLCBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9u
KSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV90eXBlKHR5cGUpCiB7
CiB9CiAKK1NlcnZpY2VXb3JrZXJDbGllbnQ6On5TZXJ2aWNlV29ya2VyQ2xpZW50KCkKK3sKK30K
KwogU3RyaW5nIFNlcnZpY2VXb3JrZXJDbGllbnQ6OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHsgfTsKQEAgLTQ4LDE0ICs1OSwzMiBAQCBhdXRvIFNlcnZpY2VXb3JrZXJDbGllbnQ6OmZyYW1l
VHlwZSgpIGNvbnN0IC0+IEZyYW1lVHlwZQogCiBTdHJpbmcgU2VydmljZVdvcmtlckNsaWVudDo6
aWQoKSBjb25zdAogewotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVy
KG1faWRlbnRpZmllcik7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGll
bnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlcikKK0V4Y2VwdGlvbk9y
PHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlVmFsdWUsIFZlY3RvcjxKU0M6OlN0
cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlcikKIHsKLSAgICBVTlVTRURfUEFSQU0obWVz
c2FnZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRyYW5zZmVyKTsKLSAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiY2xpZW50LnBvc3RNZXNzYWdlKCkg
aXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9OworICAgIGF1dG8qIGV4ZWNTdGF0ZSA9IGNvbnRleHQu
ZXhlY1N0YXRlKCk7CisgICAgQVNTRVJUKGV4ZWNTdGF0ZSk7CisKKyAgICBWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0Pj4gcG9ydHM7CisgICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoKmV4ZWNTdGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKHRyYW5zZmVy
KSwgcG9ydHMsIFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSk7CisgICAg
aWYgKG1lc3NhZ2UuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtZXNzYWdlLnJlbGVh
c2VFeGNlcHRpb24oKTsKKworICAgIC8vIERpc2VudGFuZ2xlIHRoZSBwb3J0IGluIHByZXBhcmF0
aW9uIGZvciBzZW5kaW5nIGl0IHRvIHRoZSByZW1vdGUgY29udGV4dC4KKyAgICBhdXRvIGNoYW5u
ZWxzT3JFeGNlcHRpb24gPSBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhXVEZNb3ZlKHBv
cnRzKSk7CisgICAgaWYgKGNoYW5uZWxzT3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiBjaGFubmVsc09yRXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAg
IC8vIEZJWE1FOiBTdXBwb3J0IHNlbmRpbmcgdGhlIGNoYW5uZWxzLgorICAgIGF1dG8gY2hhbm5l
bHMgPSBjaGFubmVsc09yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGlmIChj
aGFubmVscyAmJiAhY2hhbm5lbHMtPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVyYWwoIlBhc3NpbmcgTWVzc2FnZVBvcnQg
b2JqZWN0cyB0byBwb3N0TWVzc2FnZSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH07CisKKyAgICBt
X2Nvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KG1lc3NhZ2UucmVs
ZWFzZVJldHVyblZhbHVlKCksIGNvbnRleHQub3JpZ2luKCkpOworCisgICAgcmV0dXJuIHsgfTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmgKaW5kZXggNjliOTFlMDhhMzkuLjg2
Mzk0ZDk4OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50LmgKQEAgLTM0LDE0ICszNCwxOCBAQAogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3Mg
SlNWYWx1ZTsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CitjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjsKKwogY2xhc3Mg
U2VydmljZVdvcmtlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGll
bnQ+LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgorICAgIHVz
aW5nIENvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjsKKwogICAgIHVz
aW5nIFR5cGUgPSBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTsKICAgICBlbnVtIGNsYXNzIEZyYW1l
VHlwZSB7CiAgICAgICAgIEF1eGlsaWFyeSwKQEAgLTUwLDIxICs1NCwyNSBAQCBwdWJsaWM6CiAg
ICAgICAgIE5vbmUKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVHlwZSB0eXBlKQorICAg
IHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckNsaWVudD4gY3JlYXRlKFJlZjxDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVpbnQ2NF90IGlk
ZW50aWZpZXIsIFR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNlcnZpY2VXb3JrZXJDbGllbnQoY29udGV4dCwgdHlwZSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyQ2xpZW50KFdURk1vdmUoY29ubmVjdGlvbiksIGNvbnRl
eHQsIGlkZW50aWZpZXIsIHR5cGUpKTsKICAgICB9CiAKKyAgICB+U2VydmljZVdvcmtlckNsaWVu
dCgpOworCiAgICAgU3RyaW5nIHVybCgpIGNvbnN0OwogICAgIEZyYW1lVHlwZSBmcmFtZVR5cGUo
KSBjb25zdDsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBT
dHJpbmcgaWQoKSBjb25zdDsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RNZXNzYWdlKEpT
Qzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIFZlY3RvcjxKU0M6OlN0cm9uZzxK
U0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2Zlcik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1l
c3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBWZWN0
b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgU2VydmljZVdvcmtlckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVHlwZSk7
CisgICAgU2VydmljZVdvcmtlckNsaWVudChSZWY8Q29ubmVjdGlvbj4mJiwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFR5cGUpOwogCisgICAgUmVmPENvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAgICAgVHlw
ZSBtX3R5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwKaW5kZXggZjdlNGE5OGRlMjAuLmQ4YWNhYzk5ODkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnQuaWRsCkBAIC0zNSw3ICszNSw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBpZDsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVj
dD4gdHJhbnNmZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25h
bCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOwogfTsKIAogZW51bSBGcmFtZVR5cGUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDI1OTE5YWIxYTM5Li5hYmZkYWNiMzc1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcApAQCAtMjksMjUgKzI5LDExIEBACiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCi0jaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNv
bnRhaW5lci5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiV29y
a2VyTmF2aWdhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFNlcnZpY2VX
b3JrZXJDb250YWluZXIqIGNvbnRhaW5lckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBOYXZpZ2F0b3JCYXNlKiBuYXZpZ2F0
b3IgPSBudWxscHRyOwotICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpIHsKLSAgICAgICAg
aWYgKGF1dG8qIHdpbmRvdyA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5kb21XaW5kb3co
KSkKLSAgICAgICAgICAgIG5hdmlnYXRvciA9IHdpbmRvdy0+bmF2aWdhdG9yKCk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIG5hdmlnYXRvciA9ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCkubmF2aWdhdG9yKCk7Ci0KLSAgICByZXR1cm4gbmF2aWdhdG9yID8gbmF2aWdhdG9yLT5z
ZXJ2aWNlV29ya2VyKCkgOiBudWxscHRyOwotfQotCiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSkKICAg
ICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fcmVnaXN0cmF0aW9uRGF0YShX
VEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpKQpAQCAtOTQsNyArODAsNyBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb246OnVucmVnaXN0ZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byogY29udGFpbmVyID0gY29u
dGFpbmVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgqY29udGV4dCk7CisgICAgYXV0byogY29u
dGFpbmVyID0gY29udGV4dC0+c2VydmljZVdvcmtlckNvbnRhaW5lcigpOwogICAgIGlmICghY29u
dGFpbmVyKSB7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24oSW52YWxpZFN0YXRl
RXJyb3IpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwCmluZGV4IDQ2
ZDI5OTBlMjk2Li41MmU4NjZjYmNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcApAQCAtMzIs
OCArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VXb3JrZXJXaW5kb3dD
bGllbnQ6OlNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkKLSAgICA6IFNlcnZpY2VXb3JrZXJDbGllbnQoY29udGV4dCwgVHlwZTo6V2luZG93
KQorU2VydmljZVdvcmtlcldpbmRvd0NsaWVudDo6U2VydmljZVdvcmtlcldpbmRvd0NsaWVudChS
ZWY8Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIDogU2VydmljZVdvcmtlckNsaWVudChXVEZN
b3ZlKGNvbm5lY3Rpb24pLCBjb250ZXh0LCBpZGVudGlmaWVyLCBUeXBlOjpXaW5kb3cpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5oCmluZGV4IDgzYzgwZTI4MDdiLi5jYjZlNzBiN2Y5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5k
b3dDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlcldpbmRvd0NsaWVudC5oCkBAIC0zNiw5ICszNiw5IEBAIGNsYXNzIERlZmVycmVkUHJvbWlz
ZTsKIAogY2xhc3MgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudCBmaW5hbCA6IHB1YmxpYyBTZXJ2
aWNlV29ya2VyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJX
aW5kb3dDbGllbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorICAg
IHN0YXRpYyBSZWY8U2VydmljZVdvcmtlcldpbmRvd0NsaWVudD4gY3JlYXRlKFJlZjxDb25uZWN0
aW9uPiYmIGNvbm5lY3Rpb24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVpbnQ2
NF90IGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50KGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudChXVEZNb3ZlKGNvbm5lY3Rpb24pLCBjb250
ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxp
dHlTdGF0ZSgpIGNvbnN0OwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBuYXZp
Z2F0ZShjb25zdCBTdHJpbmcmIHVybCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik7CisgICAgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudChSZWY8Q29ubmVjdGlv
bj4mJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHVpbnQ2NF90IGlkZW50aWZpZXIpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJDbGllbnRD
b25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVlZDMy
NzMxZWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDQ2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTsKKworY2xhc3MgU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24gOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24+IHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5TZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbigpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pID0g
MDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGNm
NzhlOTE5MDJiLi45YmFkMTg5YWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAg
LTMyLDggKzMyLDEwIEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VI
ZWFkZXJzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2guaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50
LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJPYmpl
Y3RQcm94eS5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTk5LDEyICsxMDEsMTMg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpwb3N0RmV0Y2hUYXNrKFJlZjxTZXJ2aWNlV29y
a2VyRmV0Y2g6OkNsaWVudD4mJiBjbGllbnQKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0
TW9kZSgpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2Fn
ZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYmIGNoYW5uZWxzLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShSZWY8U2VydmljZVdvcmtlckNsaWVu
dENvbm5lY3Rpb24+JiYgY2xpZW50Q29ubmVjdGlvbiwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiBtZXNzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+JiYg
Y2hhbm5lbHMsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKQogewotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgdGFzayhbY2hhbm5l
bHMgPSBXVEZNb3ZlKGNoYW5uZWxzKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHNvdXJj
ZU9yaWdpbiA9IHNvdXJjZU9yaWdpbi5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRh
c2sgdGFzayhbY2xpZW50Q29ubmVjdGlvbiA9IFdURk1vdmUoY2xpZW50Q29ubmVjdGlvbiksIGNo
YW5uZWxzID0gV1RGTW92ZShjaGFubmVscyksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBz
b3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4gPSBzb3VyY2VPcmlnaW4uaXNvbGF0ZWRDb3B5
KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAg
YXV0byYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0Ojpl
bnRhbmdsZVBvcnRzKHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShjaGFubmVscykp
OwotICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChFeHRlbmRh
YmxlTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIFdURk1vdmUobWVzc2FnZSks
IHNvdXJjZU9yaWdpbikpOworICAgICAgICBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNlIHNv
dXJjZSA9IFJlZlB0cjxTZXJ2aWNlV29ya2VyQ2xpZW50PiB7IFNlcnZpY2VXb3JrZXJXaW5kb3dD
bGllbnQ6OmNyZWF0ZShXVEZNb3ZlKGNsaWVudENvbm5lY3Rpb24pLCBjb250ZXh0LCBzb3VyY2VJ
ZGVudGlmaWVyKSB9OworICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZGlzcGF0Y2hF
dmVudChFeHRlbmRhYmxlTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIFdURk1v
dmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgeyB9LCBXVEZNb3ZlKHNvdXJjZSkpKTsKICAgICAg
ICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLndvcmtlck9iamVjdFByb3h5KCku
Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5o
YXNQZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgfSk7CiAgICAgcnVuTG9vcCgpLnBvc3RUYXNrKFdU
Rk1vdmUodGFzaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4IDMzNzMxMzljMmI1Li5i
MWNlOGU2MTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtMzksNiArMzksNyBAQCBj
bGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM7CiBjbGFzcyBNZXNzYWdl
UG9ydENoYW5uZWw7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBXb3JrZXJM
b2FkZXJQcm94eTsKK2NsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uOwogY2xhc3Mg
V29ya2VyT2JqZWN0UHJveHk7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogCkBA
IC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2Jq
ZWN0UHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtlck9iamVjdFByb3h5OyB9CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RGZXRjaFRhc2soUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6
Q2xpZW50PiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgRmV0Y2hPcHRpb25zJiYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoUmVmPFNlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uPiYmLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYm
LCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+JiYsIHVpbnQ2NF90IHNv
dXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKIAogcHJvdGVjdGVk
OgogICAgIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUEFMOjpTZXNzaW9uSUQp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDhlOTNjNWUwNmM5Li5mM2E3NDg4
NzllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMjgsNyArMjgsMTAgQEAKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJDb250YWluZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hS
ZXN1bHQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogCkBAIC0xMDksNiAr
MTEyLDMyIEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNoRm9yU2Vy
dmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIpCiAgICAgam9iLT5zdGFydFNjcmlwdEZldGNoKCk7
CiB9CiAKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQoreworICAgIC8vIEZJWE1FOiBj
bGllbnRJZGVudGlmaWVyIGNhbiBvbmx5IGlkZW50aWZ5IGEgRG9jdW1lbnQgYXQgdGhlIG1vbWVu
dC4KKyAgICBhdXRvKiBkZXN0aW5hdGlvbkRvY3VtZW50ID0gRG9jdW1lbnQ6OmFsbERvY3VtZW50
cygpLmdldChjbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAoIWRlc3RpbmF0aW9uRG9jdW1lbnQp
IHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgZmluZCBjbGllbnQgZG9jdW1lbnQg
d2l0aCB0aGUgZ2l2ZW4gaWRlbnRpZmllciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byogY29udGFpbmVyID0gZGVzdGluYXRpb25Eb2N1bWVudC0+c2VydmljZVdvcmtlckNv
bnRhaW5lcigpOworICAgIGlmICghY29udGFpbmVyKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
Q291bGQgbm90IGZpbmQgc2VydmljZSB3b3JrZXIgY29udGFpbmVyIGZvciBjbGllbnQgZG9jdW1l
bnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBQYXNzIGluIHBv
cnRzLgorICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKworICAgIC8vIEZJ
WE1FOiBVc2luZyBjb250YWluZXItPmNvbnRyb2xsZXIoKSBhcyBzb3VyY2UgaGVyZSBpcyBub3Qg
cXVpdGUgcmlnaHQuCisgICAgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+IHNvdXJj
ZTsKKyAgICBpZiAoYXV0byogY29udHJvbGxlciA9IGNvbnRhaW5lci0+Y29udHJvbGxlcigpKQor
ICAgICAgICBzb3VyY2UgPSBNZXNzYWdlRXZlbnRTb3VyY2UgeyBSZWZQdHI8U2VydmljZVdvcmtl
cj4geyBjb250cm9sbGVyIH0gfTsKKyAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBvcmlnaW4sIHsgfSwg
V1RGTW92ZShzb3VyY2UpKTsKKyAgICBjb250YWluZXItPmRpc3BhdGNoRXZlbnQobWVzc2FnZUV2
ZW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggNTA4YTU4YTQ5ZjIuLjg0ZGIz
NGI4YjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYiYpOwogICAgIHZvaWQgZmluaXNo
ZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCBmYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYpOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBzb3VyY2UpID0gMDsKIAogICAgIHZpcnR1YWwgdWludDY0
X3QgaWRlbnRpZmllcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzU2VydmljZVdv
cmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCA9IDA7
CkBAIC01OSw2ICs1OSw3IEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
Z2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIodWludDY0X3Qgam9iSWRlbnRpZmllciwgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1
bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIodWludDY0X3Qgam9iSWRlbnRpZmllciwg
Ym9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFy
dFNjcmlwdEZldGNoRm9yU2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0X3Qg
Y2xpZW50SWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIG9yaWdpbik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVk
dWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IGU5YmNiMzI1MzQyLi5iN2I0ZmNh
OTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTEwOCw5
ICsxMDgsOSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpYwogICAgIHNlbmRUb0NvbnRleHRQcm9j
ZXNzKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OlN0YXJ0RmV0Y2goaWRl
bnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1
ZXN0LCBvcHRpb25zKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKQordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0gICAgc2VuZFRvQ29udGV4dFBy
b2Nlc3MoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6UG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShpZGVudGlmaWVyKCksIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VPcmlnaW4pKTsKKyAgICBzZW5kVG9Db250ZXh0UHJvY2Vz
cyhNZXNzYWdlczo6U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpQb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKGlkZW50aWZpZXIoKSwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbikpOwogfQogCiB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qg
ZmV0Y2hJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEz
OCw2ICsxMzgsMTEgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmRpZE5vdEhhbmRsZUZl
dGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0s
IGZldGNoSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQor
eworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQgeyBjbGllbnRJZGVudGlmaWVyLCBtZXNzYWdlLCBvcmlnaW4g
fSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fY29udGV4
dENvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggMjky
NmU4M2U0MzEuLjMzYmMxMzE1NDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5oCkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWxGZXRjaCh1aW50
NjRfdCBmZXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkTm90SGFuZGxlRmV0Y2godWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJDbGllbnQodWludDY0X3QgY2xpZW50SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CisKIHByaXZhdGU6CiAgICAgLy8g
SW1wbGVtZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdl
YlByb2Nlc3MpCiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmluYWw7CkBAIC02Niw3ICs2OCw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJik7CiAKLSAgICB2b2lk
IHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgY29u
dGV4dCBXZWJQcm9jZXNzCiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggM2IyMDQ1YzY0
NDQuLjU5ZjdlODI1NTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI4LDcgKzI4LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uIHsKICAgICBGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQgcmVzdWx0KQogCiAgICAgU3RhcnRGZXRj
aCh1aW50NjRfdCBpZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9w
dGlvbnMgb3B0aW9ucykKLSAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
KHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVz
c2FnZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKKyAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFS
ZWZlcmVuY2UgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgU3RyaW5nIHNvdXJj
ZU9yaWdpbikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggODc2NGNk
MDcwMmQuLjExMDNjOTZmYzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtNDM1LDYgKzQzNSwxMiBAQCB2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpkaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
dWludDY0XwogICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hGZXRjaChmZXRjaElkZW50aWZp
ZXIpOwogfQogCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjbGll
bnRJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgb3JpZ2luKQoreworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNv
bm5lY3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5l
Y3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNsaWVudElkZW50aWZpZXIs
IG1lc3NhZ2UsIG9yaWdpbik7Cit9CisKIHZvaWQgU3RvcmFnZVByb2Nlc3M6OnJlZ2lzdGVyU1dT
ZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAg
ICBBU1NFUlQoIW1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50
aWZpZXIoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5oCmluZGV4IGFhODY0NWI3NzFjLi4wOTM0OGRjYjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtMTI1LDYgKzEyNSw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZhaWxGZXRj
aCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZUZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOworCisgICAgdm9pZCBw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKICNlbmRpZgogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDMzOTJhZjcxNWQxLi4wNDk0YzUwNTA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00
Niw1ICs0Niw2IEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKQogICAgIERpZFJlY2VpdmVGZXRjaERhdGEodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNoRmV0
Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllcikKKyAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgY2xpZW50SWRlbnRpZmllciwgSVBD
OjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIFN0cmluZyBvcmlnaW4pCiAjZW5kaWYKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc3ZjI1
MWE3ZjJhLi44NzYyOTBhYTc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzc3LDYgKzEzNzcsOCBAQAogCQk4MzJFRDE4QzFFMkZF
MTU3MDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyRUQxOEExRTJGRTEzQjAw
NkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCAqLzsgfTsKIAkJODM0
QjI1MEYxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEIyNTBFMUE4MzFBOEQw
MENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggKi87IH07CiAJCTgzNEIyNTEyMUE4
NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCMjUxMDFBODQyQzg3MDBDRkIxNTAg
LyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovOyB9OworCQk4MzU3MzFDMTFGQTBGMEY4MDA4
NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM1NzMxQzAxRkEwRjBFRDAwODVG
NEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJODM1
NzMxQzIxRkEwRjBGODAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzU3MzFC
RjFGQTBGMEVDMDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAq
LzsgfTsKIAkJODM2MDM0OUYxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJh
Y2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAq
LzsgfTsKIAkJODM2MDM0QTAxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJh
Y2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2
MDM0OUUxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oICovOyB9
OwogCQk4MzZFRUI4MDFCRTlFQzlFMDA2QjRCODIgLyogTmV0d29ya0xvYWRNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzZFRUI3RjFCRTlFQzlF
MDA2QjRCODIgLyogTmV0d29ya0xvYWRNYWMubW0gKi87IH07CkBAIC0zNzYxLDYgKzM3NjMsOSBA
QAogCQk4MzJFRDE4QTFFMkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdl
U2FtcGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJBY3Rpdml0eVN0
YXRlQ1BVVXNhZ2VTYW1wbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNEIy
NTBFMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM0QjI1MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdv
cmtDYWNoZVN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0
d29ya0NhY2hlU3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzU3
MzFCRTFGQTBGMEVDMDA4NUY0RDMgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLm1lc3Nh
Z2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdl
ci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM1NzMxQkYxRkEw
RjBFQzAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzNTczMUMwMUZBMEYwRUQwMDg1
RjREMyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNjAzNDlEMUFDQjM0RDYwMDYy
NjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM2MDM0OUUxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM2
RUVCN0YxQkU5RUM5RTAwNkI0QjgyIC8qIE5ldHdvcmtMb2FkTWFjLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya0xvYWRNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC02MjEyLDggKzYyMTcsMTEgQEAKIAkJCQk0MTMxRjNDRjFGOTZB
OTM2MDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluICovLAog
CQkJCTQxMzFGM0QzMUY5NkU5MzEwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFn
ZXIuY3BwICovLAogCQkJCTQxMzFGM0QyMUY5NkU5MzAwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2Vy
Q29udGV4dE1hbmFnZXIuaCAqLywKKwkJCQk4MzU3MzFCRTFGQTBGMEVDMDA4NUY0RDMgLyogU2Vy
dmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLm1lc3NhZ2VzLmluICovLAogCQkJCTQxNERFREM1MUY5
RTRCRUMwMDQ3QzQwRCAvKiBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwICovLAog
CQkJCTQxNERFREM0MUY5RTRCRUIwMDQ3QzQwRCAvKiBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJD
bGllbnQuaCAqLywKKwkJCQk4MzU3MzFDMDFGQTBGMEVEMDA4NUY0RDMgLyogV2ViU2VydmljZVdv
cmtlckNsaWVudENvbm5lY3Rpb24uY3BwICovLAorCQkJCTgzNTczMUJGMUZBMEYwRUMwMDg1RjRE
MyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oICovLAogCQkJCTQxMzFGM0Uw
MUY5ODcxMkMwMDU5OTk1QSAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAq
LywKIAkJCQk0MTlBQ0Y5QjFGOTgxRDI2MDA5RjFBODMgLyogV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudC5oICovLAogCQkJCTUxQkVCNjI5MUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2
aWNlV29ya2VyUHJvdmlkZXIuY3BwICovLApAQCAtOTA2Nyw2ICs5MDc1LDcgQEAKIAkJCQk0MURD
NDU5RjFFM0RCREE1MDBCMTFGNTEgLyogV2ViUlRDU29ja2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QzM2MUQ3MzE5MjdGQTM2MDAzNkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQ
b3B1cE1lbnUuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzNTczMUMyMUZBMEYwRjgwMDg1RjREMyAv
KiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTFCRUI2MkMxRjNBNUFENzAwNTAyOUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE0ODMyRDcxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ4MzJEMTFBOUJEQzJGMDA4QjRERkUgLyogV2Vic2l0
ZURhdGFSZWNvcmQuaCBpbiBIZWFkZXJzICovLApAQCAtMTA3MjAsNiArMTA3MjksNyBAQAogCQkJ
CTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxQyAvKiBXZWJSVENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzNjFENzIxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNj
cmlwdE1lc3NhZ2VIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQzQjk0ODQ4MTFGRjRC
NjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
ODM1NzMxQzExRkEwRjBGODAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzFGM0UyMUY5ODgwODQwMDU5OTk1QSAvKiBX
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
QkVCNjJCMUYzQTVBRDcwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE0ODMyRDYxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRh
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKaW5kZXgg
OTRkNjM0ZDYxMmIuLjkxYTM4NDE0MWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNp
bmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlNvY2tldFBy
b3ZpZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3JDbGllbnQuaD4KQEAgLTEzMiwxNCAr
MTMzLDE2IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpzdGFydEZldGNoKHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyCiAgICAgc2VydmljZVdvcmtlclRocmVh
ZFByb3h5LT50aHJlYWQoKS5wb3N0RmV0Y2hUYXNrKFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShvcHRpb25zKSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRl
eHRNYW5hZ2VyOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikKK3ZvaWQgU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikKIHsKICAgICBhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJN
YXAuZ2V0KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBpZiAoIXNlcnZpY2VXb3JrZXIp
CiAgICAgICAgIHJldHVybjsKIAorICAgIGF1dG8gY2xpZW50Q29ubmVjdGlvbiA9IFdlYlNlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uOjpjcmVhdGUobV9jb25uZWN0aW9uVG9TdG9yYWdlUHJv
Y2Vzcy5jb3B5UmVmKCksIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzb3VyY2VJZGVudGlm
aWVyKTsKKwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcGFzcyB2YWxpZCBNZXNzYWdlUG9ydENo
YW5uZWxzLgotICAgIHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChtZXNzYWdlLnZl
Y3RvcigpKSwgbnVsbHB0ciwgc291cmNlT3JpZ2luKTsKKyAgICBzZXJ2aWNlV29ya2VyLT50aHJl
YWQoKS5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFdURk1vdmUoY2xpZW50
Q29ubmVjdGlvbiksIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0b3Io
KSksIG51bGxwdHIsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgKaW5kZXggZTBkYjgy
NjllNzMuLjlhNWViYmMzMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaApAQCAtNTIs
NyArNTIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXIodWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSYpOwogICAgIHZvaWQgc3RhcnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OkZldGNoT3B0aW9ucyYmKTsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvU3Rv
cmFnZVByb2Nlc3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eT4+IG1fd29ya2VyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNv
bnRleHRNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDg2NjYzZjgxZTdjLi45Zjk2NGZjODJhZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtl
ckNvbnRleHRNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjUs
NyArMjUsNyBAQAogbWVzc2FnZXMgLT4gU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyIHsKICAg
ICBTdGFydFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEpCiAg
ICAgU3RhcnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlv
bnMgb3B0aW9ucykKLSAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIFN0cmluZyBzb3VyY2VPcmln
aW4pCisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVy
LCBTdHJpbmcgc291cmNlT3JpZ2luKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmlu
ZGV4IDMwODZlYTRmYzBlLi40NWI3ZTQzMTMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0z
NSw2ICszNSw4IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViU1dPcmlnaW5UYWJsZS5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1l
c3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmg+CkBAIC02OCw5
ICs3MCwxMyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdTY3Jp
cHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0YwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6RmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihyZXN1bHQp
KTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc2NyaXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKQordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc2NyaXB0VmFsdWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIHNvdXJjZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246
OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHNjcmlwdFZhbHVlLT5kYXRhKCkgfSwgc291cmNl
T3JpZ2luKSk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBwb3N0aW5nIG1lc3NhZ2Vz
IGZyb20gd29ya2Vycy4KKyAgICBpZiAoIWlzPERvY3VtZW50Pihzb3VyY2UpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IElQQzo6RGF0YVJlZmVyZW5jZSB7IHNjcmlwdFZhbHVlLT5kYXRhKCkgfSwgZG93bmNhc3Q8RG9j
dW1lbnQ+KHNvdXJjZSkuaWRlbnRpZmllcigpLCBzb3VyY2Uub3JpZ2luKCkpKTsKIH0KIAogYm9v
bCBXZWJTV0NsaWVudENvbm5lY3Rpb246Omhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3Jp
Z2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pIGNvbnN0CkBAIC05Miw2ICs5OCwxMSBA
QCBSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN0
YXJ0RmV0Y2goV2ViU2VydmljZVdvcmtlcgogICAgIHJldHVybiBTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OmNyZWF0ZShwcm92aWRlciwgV1RGTW92ZShsb2FkZXIpLCBpZGVudGlmaWVyLCBtX2Nv
bm5lY3Rpb24uZ2V0KCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAordm9pZCBXZWJTV0NsaWVu
dENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGNs
aWVudElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4pCit7CisgICAgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudChjbGllbnRJZGVudGlmaWVyLCBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmFkb3B0KG1lc3NhZ2UudmVjdG9yKCkpLCBvcmlnaW4pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmgKaW5kZXggMWNkMjkyOTllM2YuLjIyYWMyNWViNTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIGZpbmlz
aEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNo
UmVzdWx0JikgZmluYWw7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgZmluYWw7
CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzb3VyY2UpIGZpbmFsOwog
CiAgICAgdm9pZCBkaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC02
NCw2ICs2NCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVk
Rm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgY29uc3QgZmluYWw7CiAg
ICAgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gc3RhcnRGZXRjaChXZWJTZXJ2aWNlV29y
a2VyUHJvdmlkZXImLCBSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYsIHVpbnQ2NF90IGlk
ZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2smJik7CiAKKyAgICB2
b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGNsaWVudElkZW50
aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4pOworCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVTdG9yYWdlSm9iKGNvbnN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbgppbmRleCAxMTU1ZDFiYWFkOC4uNWJhZGFkY2U3NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMwLDYgKzMwLDcgQEAgbWVzc2FnZXMgLT4gV2Vi
U1dDbGllbnRDb25uZWN0aW9uIHsKICAgICBTdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKHVpbnQ2
NF90IGpvYklkZW50aWZpZXIpCiAKICAgICBTZXRTV09yaWdpblRhYmxlU2hhcmVkTWVtb3J5KFdl
YktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlKQorICAgIFBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVy
ZW5jZSBtZXNzYWdlLCBTdHJpbmcgb3JpZ2luKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44NDU2NTZjMTg4OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3Jr
ZXJDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUg
IldlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0b3JhZ2VQcm9j
ZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
PgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb246
OldlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYg
Y29ubmVjdGlvbiwgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IGNsaWVudElkZW50aWZpZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9u
KSkKKyAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIpCisgICAgLCBtX2NsaWVudElkZW50aWZpZXIoY2xpZW50SWRlbnRpZmllcikKK3sK
K30KKworV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb246On5XZWJTZXJ2aWNlV29ya2Vy
Q2xpZW50Q29ubmVjdGlvbigpCit7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25u
ZWN0aW9uID0gV1RGTW92ZShtX2Nvbm5lY3Rpb24pXSB7IH0pOworfQorCit2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVu
dChSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKQoreworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6
OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50IHsgbV9zZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgbV9jbGllbnRJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBtZXNzYWdl
LT5kYXRhKCkgfSwgb3JpZ2luIH0sIDApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
ZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjE5YmFjM2Y4YzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyQ2xpZW50
Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgPFdlYkNvcmUvU2Vydmlj
ZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisKK25hbWVz
cGFjZSBJUEMgeworY2xhc3MgQ29ubmVjdGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uIGZpbmFsOiBwdWJsaWMgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24geworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24+IGNyZWF0ZShSZWY8SVBDOjpD
b25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24oV1RGTW92ZShjb25u
ZWN0aW9uKSwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIpKTsK
KyAgICB9CisKKyAgICB+V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24oKTsKKworICAg
IC8vIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLgorICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgZmluYWw7CisKK3ByaXZh
dGU6CisgICAgV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVj
dGlvbj4mJiwgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGNs
aWVudElkZW50aWZpZXIpOworCisgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9u
OworICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgdWludDY0
X3QgbV9jbGllbnRJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324947</attachid>
            <date>2017-10-25 20:14:02 -0700</date>
            <delta_ts>2017-10-26 09:32:24 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>178794_SW_Client_postMessage_wip.patch</filename>
            <type>text/plain</type>
            <size>63631</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVz
c2FnZS5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggN2QxMjIzNTQ3NWYuLmMwOTU1ZjgzNGE3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKLVBBU1M6IFN0YXR1cyBj
b2RlIGlzIDIwMAotUEFTUzogU3RhdHVzIHRleHQgaXMgV29ya2VyIHJlY2VpdmVkIHRoZSBtZXNz
YWdlIGV2ZW50LiBtZXNzYWdlRXZlbnQub3JpZ2luIHdhcyBodHRwczovLzEyNy4wLjAuMTo4NDQz
Ci1QQVNTOiBTb3VyY2UgaXMgU2VydmljZSB3b3JrZXIKK1BBU1M6IENsaWVudCByZWNlaXZlZCBt
ZXNzYWdlIGZyb20gc2VydmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MworUEFTUzogUmVjZWl2ZWQgbWVzc2FnZSAnTWVzc2FnZSAxJyBmcm9tIG9yaWdpbiAnaHR0cHM6
Ly8xMjcuMC4wLjE6ODQ0MycKK1BBU1M6IENsaWVudCByZWNlaXZlZCBtZXNzYWdlIGZyb20gc2Vy
dmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MworUEFTUzogUmVjZWl2
ZWQgbWVzc2FnZSAnTWVzc2FnZSAyJyBmcm9tIG9yaWdpbiAnaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MycKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCmluZGV4IDg0Mzk1YjJhNmQzLi45NDhjODI0
OTQ2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLXdvcmtlci5qcwpAQCAtMSwxNCArMSw0IEBACi1sZXQg
cmVzcG9uc2VUb1NlbmQgPSB7IHN0YXR1czogNDA0LCBzdGF0dXNUZXh0OiAiTm90IEZvdW5kIiB9
OwotCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKLSAgICBy
ZXNwb25zZVRvU2VuZCA9IGV2ZW50LmRhdGE7Ci0gICAgcmVzcG9uc2VUb1NlbmQuc3RhdHVzVGV4
dCArPSAiIG1lc3NhZ2VFdmVudC5vcmlnaW4gd2FzICIgKyBldmVudC5vcmlnaW47CisgICAgZXZl
bnQuc291cmNlLnBvc3RNZXNzYWdlKCJSZWNlaXZlZCBtZXNzYWdlICciICsgZXZlbnQuZGF0YSAr
ICInIGZyb20gb3JpZ2luICciICsgZXZlbnQub3JpZ2luICsgIiciKTsKIH0pOwogCi1zZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoImZldGNoIiwgKGV2ZW50KSA9PiB7Ci0gICAgaWYgKGV2ZW50LnJlcXVl
c3QudXJsLmluZGV4T2YoInRlc3QxIikgIT09IC0xKSB7Ci0gICAgICAgIGV2ZW50LnJlc3BvbmRX
aXRoKG5ldyBSZXNwb25zZShudWxsLCByZXNwb25zZVRvU2VuZCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGV2ZW50LnJlc3BvbmRXaXRoKFJlc3BvbnNlLmVycm9yKCkpOwotfSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmpzCmluZGV4IDk2YTQxY2EwODY4Li4xZjBhNjMwNDRiZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2UuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuanMK
QEAgLTEsMzcgKzEsMTQgQEAKLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGZpbmlzaFNXVGVzdCgp
OwotfQotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB0cnkgewotICAgICAgICBhd2Fp
dCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIiwgeyB9KTsKLQotICAgICAgICBuYXZpZ2F0
b3Iuc2VydmljZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKHsgc3RhdHVzOiAyMDAsIHN0
YXR1c1RleHQ6ICJXb3JrZXIgcmVjZWl2ZWQgdGhlIG1lc3NhZ2UgZXZlbnQuIiB9KTsKLQotICAg
ICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgidGVzdDEiKTsKLSAgICAgICAgaWYgKHJl
c3BvbnNlLnN0YXR1cyA9PSAyMDApCi0gICAgICAgICAgICBsb2coIlBBU1M6IFN0YXR1cyBjb2Rl
IGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2co
IkZBSUw6IFN0YXR1cyBjb2RlIGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotCi0gICAgICAgIGlm
IChyZXNwb25zZS5zdGF0dXNUZXh0LnN0YXJ0c1dpdGgoIldvcmtlciByZWNlaXZlZCB0aGUgbWVz
c2FnZSIpKQotICAgICAgICAgICAgbG9nKCJQQVNTOiBTdGF0dXMgdGV4dCBpcyAiICsgcmVzcG9u
c2Uuc3RhdHVzVGV4dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygiRkFJTDogU3Rh
dHVzIHRleHQgaXMgIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOwotCi0gICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICBsZXQgc291cmNlID0gaW50ZXJuYWxzLmZldGNo
UmVzcG9uc2VTb3VyY2UocmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKHNvdXJjZSA9PT0gIlNl
cnZpY2Ugd29ya2VyIikKLSAgICAgICAgICAgICAgICBsb2coIlBBU1M6IFNvdXJjZSBpcyAiICsg
c291cmNlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsb2coIkZBSUw6IFNv
dXJjZSBpcyAiICsgc291cmNlKTsKLSAgICAgICAgfQotICAgIH0gY2F0Y2goZSkgewotICAgICAg
ICBsb2coIkdvdCBleGNlcHRpb246ICIgKyBlKTsKLSAgICB9Ci0gICAgZmluaXNoU1dUZXN0KCk7
Ci19Ci0KLXRlc3QoKTsKK3ZhciBtZXNzYWdlTnVtYmVyID0gMTsKK25hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgeworICAg
IGxvZygiUEFTUzogQ2xpZW50IHJlY2VpdmVkIG1lc3NhZ2UgZnJvbSBzZXJ2aWNlIHdvcmtlciwg
b3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICBsb2coIlBBU1M6ICIgKyBldmVudC5kYXRh
KTsKKyAgICBpZiAobWVzc2FnZU51bWJlciA9PSAxKSB7CisgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgiTWVzc2FnZSAyIik7CisgICAgICAgIG1lc3NhZ2VOdW1iZXIrKzsKKyAgICB9
IGVsc2UKKyAgICAgICAgZmluaXNoU1dUZXN0KCk7Cit9KTsKKworbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdl
LXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBuYXZpZ2F0b3Iuc2Vydmlj
ZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKCJNZXNzYWdlIDEiKTsKK30pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkx
NmNhZjZmMmMzLi44NjQ4NzE5MjgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjgxNCw2ICsyODE0LDcgQEAKIAkJODM3MkRC
MzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MkRCMzAxQTY3ODBB
ODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMw
NjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3
OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlB
MDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLzsgfTsKKwkJODM3QTI0NTgx
RkEwRUNDODAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBMjQ1NjFGQTBFQ0M1
MDBGQjE1RTIgLyogU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzdBODAxMzFFMUUxMjczMDAw
MjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBMb2Nh
bGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZDIC8q
IFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJs
ZUlPUy5tbSAqLzsgfTsKIAkJODM3RkIzNDQxRjlFQTA2RDAwRDBGQzMxIC8qIEV4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM3RkIzNDIxRjlFQTA2NzAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQu
Y3BwICovOyB9OwpAQCAtMTA0MTIsNiArMTA0MTMsNyBAQAogCQk4Mzc2NUY5MzFEQUM1MjE4MDBD
MDY1MzcgLyogTW91c2VFdmVudEluaXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vdXNl
RXZlbnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVGOTQxREFD
NTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1vdXNlRXZlbnRJbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Qb3NpdGlv
bklPUy5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRp
b25JT1MubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJODM3QTI0NTYxRkEwRUND
NTAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMwMDAyNkI5RiAvKiBF
bmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxw
cm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnViYmxlSU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmFsaWRhdGlvbkJ1YmJsZUlP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3REZCMzQxRUJGRUE3MDAwNjAx
Mzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RWxlbWVudENTU0lubGluZVN0eWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwNDQwLDcgKzEwNDQyLDcgQEAKIAkJODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxX
QlJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxXQlJFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQTRBOUY4MUNFN0ZEN0UwMDcw
OUIwMCAvKiBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4M0IyNTAwOTFGQTExODFDMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xp
ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3Jr
ZXJDbGllbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzQjI1MDBCMUZB
MTE4MUQwMEJDMDJEOSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0IyNTAwQjFGQTExODFEMDBCQzAyRDkg
LyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODNCNzRFRjIxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJl
cXVlc3RUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtl
ZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAv
KiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3R5bGVCdWlsZGVyQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNzg1Miw2ICsxNzg1NCw3IEBACiAJCTUxN0M4NzA3MUY4RThGRjIwMEVCODA3NiAvKiBjb250
ZXh0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4MzdB
MjQ1NjFGQTBFQ0M1MDBGQjE1RTIgLyogU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAq
LywKIAkJCQk0MTlBQ0Y5MDFGOTdFN0Q2MDA5RjFBODMgLyogU2VydmljZVdvcmtlckZldGNoLmNw
cCAqLywKIAkJCQk0MTlBQ0Y4RTFGOTdFN0Q1MDA5RjFBODMgLyogU2VydmljZVdvcmtlckZldGNo
LmggKi8sCiAJCQkJNTE3Qzg3MTExRjhFRTcyRjAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJl
YWQuY3BwICovLApAQCAtMjkzMTcsNiArMjkzMjAsNyBAQAogCQkJCTJEOTNBRUUzMTlERjU2NDEw
MDJBODZDMyAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUYxNzU1RDFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDZFRjE0MkQxRjk3QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTgzN0EyNDU4MUZBMEVDQzgwMEZCMTVFMiAvKiBTZXJ2aWNl
V29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZFRjE0MkMxRjk3
QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4MzY5RkRGQzFGQTEwMkUzMDBDMUZGMUYgLyogU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxRjE3NTVGMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IDk3NWMyNjgxNDM2Li4xNzg4NTE1YzQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00
MzQsOSArNDM0LDE1IEBAIHN0YXRpYyB2b2lkIHByaW50TmF2aWdhdGlvbkVycm9yTWVzc2FnZShG
cmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgYWN0aXZlVVJMLCBjb25zCiAKIHVpbnQ2NF90IERvY3Vt
ZW50OjpzX2dsb2JhbFRyZWVWZXJzaW9uID0gMDsKIAotSGFzaFNldDxEb2N1bWVudCo+JiBEb2N1
bWVudDo6YWxsRG9jdW1lbnRzKCkKK3N0YXRpYyBEb2N1bWVudDo6SWRlbnRpZmllciBnZW5lcmF0
ZURvY3VtZW50SWRlbnRpZmllcigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hT
ZXQ8RG9jdW1lbnQqPj4gZG9jdW1lbnRzOworICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVy
ID0gMDsKKyAgICByZXR1cm4gKytpZGVudGlmaWVyOworfQorCithdXRvIERvY3VtZW50OjphbGxE
b2N1bWVudHMoKSAtPiBIYXNoTWFwPElkZW50aWZpZXIsIERvY3VtZW50Kj4mCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8SWRlbnRpZmllciwgRG9jdW1lbnQqPj4gZG9jdW1l
bnRzOwogICAgIHJldHVybiBkb2N1bWVudHM7CiB9CiAKQEAgLTQ5Niw4ICs1MDIsOSBAQCBEb2N1
bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9j
dW1lbnRDbGFzc2VzLCB1bnNpZwogICAgICwgbV9pc1N5bnRoZXNpemVkKGNvbnN0cnVjdGlvbkZs
YWdzICYgU3ludGhlc2l6ZWQpCiAgICAgLCBtX2lzTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihjb25z
dHJ1Y3Rpb25GbGFncyAmIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIpCiAgICAgLCBtX29yaWVudGF0
aW9uTm90aWZpZXIoY3VycmVudE9yaWVudGF0aW9uKGZyYW1lKSkKKyAgICAsIG1faWRlbnRpZmll
cihnZW5lcmF0ZURvY3VtZW50SWRlbnRpZmllcigpKQogewotICAgIGFsbERvY3VtZW50cygpLmFk
ZCh0aGlzKTsKKyAgICBhbGxEb2N1bWVudHMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKIAog
ICAgIC8vIFdlIGRlcGVuZCBvbiB0aGUgdXJsIGdldHRpbmcgaW1tZWRpYXRlbHkgc2V0IGluIHN1
YmZyYW1lcywgYnV0IHdlCiAgICAgLy8gYWxzbyBkZXBlbmQgb24gdGhlIHVybCBOT1QgZ2V0dGlu
ZyBpbW1lZGlhdGVseSBzZXQgaW4gb3BlbmVkIHdpbmRvd3MuCkBAIC01NDcsNyArNTU0LDggQEAg
UmVmPERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlKERvY3VtZW50JiBjb250ZXh0RG9jdW1lbnQp
CiAKIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogewotICAgIGFsbERvY3VtZW50cygpLnJlbW92ZSh0
aGlzKTsKKyAgICBib29sIHdhc1JlbW92ZWQgPSBhbGxEb2N1bWVudHMoKS5yZW1vdmUobV9pZGVu
dGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwogCiAg
ICAgQVNTRVJUKCFyZW5kZXJWaWV3KCkpOwogICAgIEFTU0VSVChtX3BhZ2VDYWNoZVN0YXRlICE9
IEluUGFnZUNhY2hlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNDg4MmNiNWVlNDcuLjkxMGUx
YzBhZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQ3LDcgKzM0Nyw5IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBIYXNoU2V0PERvY3VtZW50Kj4mIGFsbERvY3VtZW50cygpOworICAgIHVzaW5nIElkZW50aWZp
ZXIgPSB1aW50NjRfdDsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaE1hcDxJZGVu
dGlmaWVyLCBEb2N1bWVudCo+JiBhbGxEb2N1bWVudHMoKTsKIAogICAgIE1lZGlhUXVlcnlNYXRj
aGVyJiBtZWRpYVF1ZXJ5TWF0Y2hlcigpOwogCkBAIC0xODMwLDYgKzE4MzIsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9ncmFudFN0b3JhZ2VBY2Nlc3NPdmVycmlkZSB7IGZhbHNlIH07CiAKICAg
ICBSZWZQdHI8RG9jdW1lbnRUaW1lbGluZT4gbV90aW1lbGluZTsKKyAgICBJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKIH07CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50
KERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHAKaW5kZXggOTJlOTA1OWI5YTAuLjEzYjFkYjRiNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Lmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNs
dWRlICJOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNpbmNsdWRlICJQdWJsaWNVUkxNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgpAQCAtNDUsNiArNDYs
NyBAQAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5o
IgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5l
cy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KQEAgLTUyNSw0ICs1
MjcsMTggQEAgSlNDOjpFeGVjU3RhdGUqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0
ZSgpCiAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9i
YWxTY29wZSk7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXJ2aWNlV29ya2VyQ29udGFpbmVy
KCkKK3sKKyAgICBOYXZpZ2F0b3JCYXNlKiBuYXZpZ2F0b3IgPSBudWxscHRyOworICAgIGlmIChp
czxEb2N1bWVudD4oKnRoaXMpKSB7CisgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb3duY2Fz
dDxEb2N1bWVudD4oKnRoaXMpLmRvbVdpbmRvdygpKQorICAgICAgICAgICAgbmF2aWdhdG9yID0g
d2luZG93LT5uYXZpZ2F0b3IoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbmF2aWdhdG9yID0gJmRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykubmF2aWdhdG9yKCk7CisKKyAgICByZXR1
cm4gbmF2aWdhdG9yID8gbmF2aWdhdG9yLT5zZXJ2aWNlV29ya2VyKCkgOiBudWxscHRyOworfQor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDI2NmY0OWFlZWMwLi41MjE4YmU4NTIzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC02OCw2ICs2
OCwxMCBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xh
c3MgVVJMOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorY2xhc3MgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgSURCQ2xpZW50IHsKIGNsYXNzIElEQkNv
bm5lY3Rpb25Qcm94eTsKIH0KQEAgLTIzNCw2ICsyMzgsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIHVpbnQ2NF90IHNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOyB9CiAgICAg
dm9pZCBzZXRTZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKHVpbnQ2NF90IGlkZW50aWZp
ZXIpIHsgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KKworICAgIFNl
cnZpY2VXb3JrZXJDb250YWluZXIqIHNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKICNlbmRpZgog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAppbmRleCA3YWIw
OTI0MzRiZi4uM2NiM2RkZmJhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVt
b3J5UmVsZWFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNw
cApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlTm9uY3JpdGljYWxNZW1vcnko
KQogCiAgICAgY2xlYXJXaWR0aENhY2hlcygpOwogCi0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6
IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkKKyAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9j
dW1lbnQ6OmFsbERvY3VtZW50cygpLnZhbHVlcygpKQogICAgICAgICBkb2N1bWVudC0+Y2xlYXJT
ZWxlY3RvclF1ZXJ5Q2FjaGUoKTsKIAogICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5wcnVu
ZURlYWRSZXNvdXJjZXNUb1NpemUoMCk7CkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyB2b2lkIHJl
bGVhc2VDcml0aWNhbE1lbW9yeShTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKIAogICAgIENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuZHJhaW4oKTsKIAotICAgIGZvciAoYXV0byYgZG9jdW1lbnQg
OiBjb3B5VG9WZWN0b3JPZjxSZWZQdHI8RG9jdW1lbnQ+PihEb2N1bWVudDo6YWxsRG9jdW1lbnRz
KCkpKSB7CisgICAgZm9yIChhdXRvJiBkb2N1bWVudCA6IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxE
b2N1bWVudD4+KERvY3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkpIHsKICAgICAgICAg
ZG9jdW1lbnQtPnN0eWxlU2NvcGUoKS5jbGVhclJlc29sdmVyKCk7CiAgICAgICAgIGRvY3VtZW50
LT5mb250U2VsZWN0b3IoKS5lbXB0eUNhY2hlcygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNTAxNmEwNmUyMDQuLjgyYzRlNTc2NGU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTk0NSw3ICsx
OTQ1LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVJhcmVEYXRhKCkKIAogdm9pZCBwcmlu
dFJlbmRlclRyZWVGb3JMaXZlRG9jdW1lbnRzKCkKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIGRv
Y3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgZm9yIChjb25zdCBhdXRv
KiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkgewogICAgICAg
ICBpZiAoIWRvY3VtZW50LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgaWYgKGRvY3VtZW50LT5mcmFtZSgpICYmIGRvY3VtZW50LT5mcmFtZSgpLT5pc01haW5G
cmFtZSgpKQpAQCAtMTk1Nyw3ICsxOTU3LDcgQEAgdm9pZCBwcmludFJlbmRlclRyZWVGb3JMaXZl
RG9jdW1lbnRzKCkKIAogdm9pZCBwcmludExheWVyVHJlZUZvckxpdmVEb2N1bWVudHMoKQogewot
ICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkp
IHsKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50
cygpLnZhbHVlcygpKSB7CiAgICAgICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoZG9jdW1lbnQtPmZyYW1lKCkgJiYgZG9j
dW1lbnQtPmZyYW1lKCktPmlzTWFpbkZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwCmluZGV4IGE5MTYwNDVlNGJh
Li5mMDdkNGMxYjQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0aWMgdm9p
ZCBjb2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93cyhjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyLCBIYQogCiBzdGF0aWMgdm9pZCBjb2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxv
Y2tGbG93c0ZvckN1cnJlbnRQYWdlKEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2tGbG93Kj4mIGxl
YWZSZW5kZXJlcnMpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50
OjphbGxEb2N1bWVudHMoKSkgeworICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1
bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKCFkb2N1bWVudC0+
cmVuZGVyVmlldygpIHx8IGRvY3VtZW50LT5wYWdlQ2FjaGVTdGF0ZSgpICE9IERvY3VtZW50OjpO
b3RJblBhZ2VDYWNoZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoIWRvY3Vt
ZW50LT5pc0hUTUxEb2N1bWVudCgpICYmICFkb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCkBA
IC0yNzksNyArMjc5LDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJs
b2NrRmxvd3NGb3JDdXJyZW50UGFnZShIYXNoU2V0PGNvbnN0IFJlbmQKIAogdm9pZCB0b2dnbGVT
aW1wbGVMaW5lTGF5b3V0KCkKIHsKLSAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6
OmFsbERvY3VtZW50cygpKSB7CisgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50Ojph
bGxEb2N1bWVudHMoKS52YWx1ZXMoKSkgewogICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IGRvY3Vt
ZW50LT5tdXRhYmxlU2V0dGluZ3MoKTsKICAgICAgICAgc2V0dGluZ3Muc2V0U2ltcGxlTGluZUxh
eW91dEVuYWJsZWQoIXNldHRpbmdzLnNpbXBsZUxpbmVMYXlvdXRFbmFibGVkKCkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA1YTExODFlNzkyMC4uMzlhYzhi
ODViOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIxNTQsNyArMjE1
NCw3IEBAIEV4Y2VwdGlvbk9yPHVuc2lnbmVkPiBJbnRlcm5hbHM6OmNvdW50RmluZE1hdGNoZXMo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0CiB1bnNpZ25lZCBJbnRlcm5hbHM6Om51bWJl
ck9mTGl2ZU5vZGVzKCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBub2RlQ291bnQgPSAwOwotICAg
IGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpCisgICAgZm9y
IChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkKICAg
ICAgICAgbm9kZUNvdW50ICs9IGRvY3VtZW50LT5yZWZlcmVuY2luZ05vZGVDb3VudCgpOwogICAg
IHJldHVybiBub2RlQ291bnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlci5jcHAKaW5kZXggMTc5NjRlYWQ2MDQuLjBjZjlhODE2NDJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCkBA
IC02OSw3ICs2OSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXI6OnBvc3RNZXNz
YWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJQYXNzaW5nIE1lc3Nh
Z2VQb3J0IG9iamVjdHMgdG8gcG9zdE1lc3NhZ2UgaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9Owog
CiAgICAgYXV0byYgc3dDb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0
b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oY29udGV4dC5zZXNzaW9uSUQo
KSk7Ci0gICAgc3dDb25uZWN0aW9uLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUobV9pZGVudGlmaWVyLCBtZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0Lm9y
aWdpbigpKTsKKyAgICBzd0Nvbm5lY3Rpb24ucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZShtX2lkZW50aWZpZXIsIG1lc3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnRl
eHQpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAppbmRleCBjZDMwMWQwODgyMy4u
ZTJjMmY5Y2U2ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKQEAgLTI4LDE0ICsyOCwyNSBAQAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50LmgiCiAKKyNp
bmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZp
Y2VXb3JrZXJDbGllbnQ6OlNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgVHlwZSB0eXBlKQorU2VydmljZVdvcmtlckNsaWVudDo6U2VydmljZVdvcmtl
ckNsaWVudChSZWY8Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCB1aW50NjRfdCBpZGVudGlmaWVyLCBUeXBlIHR5cGUpCiAgICAgOiBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmY29udGV4dCkKKyAgICAsIG1fY29ubmVjdGlvbihXVEZN
b3ZlKGNvbm5lY3Rpb24pKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBt
X3R5cGUodHlwZSkKIHsKIH0KIAorU2VydmljZVdvcmtlckNsaWVudDo6flNlcnZpY2VXb3JrZXJD
bGllbnQoKQoreworfQorCiBTdHJpbmcgU2VydmljZVdvcmtlckNsaWVudDo6dXJsKCkgY29uc3QK
IHsKICAgICByZXR1cm4geyB9OwpAQCAtNDgsMTQgKzU5LDMyIEBAIGF1dG8gU2VydmljZVdvcmtl
ckNsaWVudDo6ZnJhbWVUeXBlKCkgY29uc3QgLT4gRnJhbWVUeXBlCiAKIFN0cmluZyBTZXJ2aWNl
V29ya2VyQ2xpZW50OjppZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4g
U3RyaW5nOjpudW1iZXIobV9pZGVudGlmaWVyKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gU2Vy
dmljZVdvcmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUgbWVzc2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVy
KQorRXhjZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwg
VmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQogewotICAgIFVO
VVNFRF9QQVJBTShtZXNzYWdlKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNmZXIpOwotICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJjbGllbnQu
cG9zdE1lc3NhZ2UoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH07CisgICAgYXV0byogZXhlY1N0
YXRlID0gY29udGV4dC5leGVjU3RhdGUoKTsKKyAgICBBU1NFUlQoZXhlY1N0YXRlKTsKKworICAg
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAgICBhdXRvIG1lc3NhZ2UgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZXhlY1N0YXRlLCBtZXNzYWdlVmFsdWUsIFdU
Rk1vdmUodHJhbnNmZXIpLCBwb3J0cywgU2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RN
ZXNzYWdlKTsKKyAgICBpZiAobWVzc2FnZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IG1lc3NhZ2UucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgLy8gRGlzZW50YW5nbGUgdGhlIHBv
cnQgaW4gcHJlcGFyYXRpb24gZm9yIHNlbmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBjb250ZXh0Lgor
ICAgIGF1dG8gY2hhbm5lbHNPckV4Y2VwdGlvbiA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBv
cnRzKFdURk1vdmUocG9ydHMpKTsKKyAgICBpZiAoY2hhbm5lbHNPckV4Y2VwdGlvbi5oYXNFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGNoYW5uZWxzT3JFeGNlcHRpb24ucmVsZWFzZUV4Y2Vw
dGlvbigpOworCisgICAgLy8gRklYTUU6IFN1cHBvcnQgc2VuZGluZyB0aGUgY2hhbm5lbHMuCisg
ICAgYXV0byBjaGFubmVscyA9IGNoYW5uZWxzT3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVl
KCk7CisgICAgaWYgKGNoYW5uZWxzICYmICFjaGFubmVscy0+aXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUGFzc2lu
ZyBNZXNzYWdlUG9ydCBvYmplY3RzIHRvIHBvc3RNZXNzYWdlIGlzIG5vdCB5ZXQgc3VwcG9ydGVk
IikgfTsKKworICAgIG1fY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGll
bnQobWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dC5vcmlnaW4oKSk7CisKKyAg
ICByZXR1cm4geyB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaAppbmRleCA2
OWI5MWUwOGEzOS4uODYzOTRkOTg4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaApAQCAtMzQsMTQgKzM0LDE4IEBACiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVj
U3RhdGU7CiBjbGFzcyBKU1ZhbHVlOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK2NsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0
aW9uOworCiBjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8U2Vy
dmljZVdvcmtlckNsaWVudD4sIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBw
dWJsaWM6CisgICAgdXNpbmcgQ29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0
aW9uOworCiAgICAgdXNpbmcgVHlwZSA9IFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOwogICAgIGVu
dW0gY2xhc3MgRnJhbWVUeXBlIHsKICAgICAgICAgQXV4aWxpYXJ5LApAQCAtNTAsMjEgKzU0LDI1
IEBAIHB1YmxpYzoKICAgICAgICAgTm9uZQogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPFNlcnZp
Y2VXb3JrZXJDbGllbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBU
eXBlIHR5cGUpCisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50PiBjcmVhdGUoUmVm
PENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgdWludDY0X3QgaWRlbnRpZmllciwgVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckNsaWVudChjb250ZXh0LCB0eXBlKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJDbGllbnQoV1RGTW92ZShjb25u
ZWN0aW9uKSwgY29udGV4dCwgaWRlbnRpZmllciwgdHlwZSkpOwogICAgIH0KIAorICAgIH5TZXJ2
aWNlV29ya2VyQ2xpZW50KCk7CisKICAgICBTdHJpbmcgdXJsKCkgY29uc3Q7CiAgICAgRnJhbWVU
eXBlIGZyYW1lVHlwZSgpIGNvbnN0OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQogICAgIFN0cmluZyBpZCgpIGNvbnN0OwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4g
cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgVmVjdG9y
PEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKTsKKyAgICBFeGNlcHRpb25P
cjx2b2lkPiBwb3N0TWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpKU1ZhbHVl
IG1lc3NhZ2UsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2Zlcik7
CiAKIHByb3RlY3RlZDoKLSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBUeXBlKTsKKyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50KFJlZjxDb25uZWN0aW9uPiYm
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdWludDY0X3QgaWRlbnRpZmllciwgVHlwZSk7CiAK
KyAgICBSZWY8Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1faWRlbnRp
ZmllcjsKICAgICBUeXBlIG1fdHlwZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAppbmRleCBmN2U0YTk4ZGUy
MC4uZDhhY2FjOTk4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwKQEAgLTM1LDcgKzM1LDcgQEAKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgU2VydmljZVdvcmtlckNsaWVudFR5cGUgdHlwZTsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwg
c2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1l
c3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiB9OwogCiBl
bnVtIEZyYW1lVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggMjU5MTlhYjFhMzku
LmFiZmRhY2IzNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0yOSwyNSArMjksMTEg
QEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIK
LSNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgU2VydmljZVdvcmtlckNvbnRhaW5lciogY29udGFpbmVyRm9yU2NyaXB0RXhlY3V0aW9u
Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotewotICAgIE5hdmlnYXRv
ckJhc2UqIG5hdmlnYXRvciA9IG51bGxwdHI7Ci0gICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0
KSkgewotICAgICAgICBpZiAoYXV0byogd2luZG93ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRl
eHQpLmRvbVdpbmRvdygpKQotICAgICAgICAgICAgbmF2aWdhdG9yID0gd2luZG93LT5uYXZpZ2F0
b3IoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbmF2aWdhdG9yID0gJmRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KS5uYXZpZ2F0b3IoKTsKLQotICAgIHJldHVybiBuYXZpZ2F0b3Ig
PyBuYXZpZ2F0b3ItPnNlcnZpY2VXb3JrZXIoKSA6IG51bGxwdHI7Ci19Ci0KIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb246OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiByZWdpc3Ry
YXRpb25EYXRhKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9yZWdp
c3RyYXRpb25EYXRhKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpCkBAIC05NCw3ICs4MCw3IEBA
IHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dW5yZWdpc3RlcihSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvKiBj
b250YWluZXIgPSBjb250YWluZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KCpjb250ZXh0KTsK
KyAgICBhdXRvKiBjb250YWluZXIgPSBjb250ZXh0LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7
CiAgICAgaWYgKCFjb250YWluZXIpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlv
bihJbnZhbGlkU3RhdGVFcnJvcikpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dC5jcHAKaW5kZXggNDZkMjk5MGUyOTYuLjUyZTg2NmNiY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGll
bnQuY3BwCkBAIC0zMiw4ICszMiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudDo6U2VydmljZVdvcmtlcldpbmRvd0NsaWVudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQotICAgIDogU2VydmljZVdvcmtlckNsaWVudChjb250ZXh0
LCBUeXBlOjpXaW5kb3cpCitTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50OjpTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50KFJlZjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgOiBTZXJ2aWNlV29y
a2VyQ2xpZW50KFdURk1vdmUoY29ubmVjdGlvbiksIGNvbnRleHQsIGlkZW50aWZpZXIsIFR5cGU6
OldpbmRvdykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmgKaW5kZXggODNjODBlMjgwN2IuLmNi
NmU3MGI3ZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlcldpbmRvd0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmgKQEAgLTM2LDkgKzM2LDkgQEAgY2xhc3Mg
RGVmZXJyZWRQcm9taXNlOwogCiBjbGFzcyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50IGZpbmFs
IDogcHVibGljIFNlcnZpY2VXb3JrZXJDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
U2VydmljZVdvcmtlcldpbmRvd0NsaWVudD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50PiBjcmVh
dGUoUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgdWludDY0X3QgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoY29udGV4dCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFdURk1vdmUoY29u
bmVjdGlvbiksIGNvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICBWaXNpYmlsaXR5
U3RhdGUgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIG5hdmlnYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50
KFJlZjxDb25uZWN0aW9uPiYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdWludDY0X3QgaWRl
bnRpZmllcik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyQ2xpZW50Q29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uZWVkMzI3MzFlYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oCkBA
IC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOworCitjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVj
dGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyQ2xpZW50Q29u
bmVjdGlvbj4geworcHVibGljOgorICAgIHZpcnR1YWwgflNlcnZpY2VXb3JrZXJDbGllbnRDb25u
ZWN0aW9uKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJDbGllbnQoUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIG9yaWdpbikgPSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5jcHAKaW5kZXggY2Y3OGU5MTkwMmIuLjliYWQxODlhYjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkLmNwcApAQCAtMzIsOCArMzIsMTAgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMuaCIKICNpbmNsdWRlICJFeHRlbmRhYmxlTWVzc2FnZUV2ZW50
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Q2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaC5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQuaCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1
ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAt
OTksMTIgKzEwMSwxMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBvc3RGZXRjaFRhc2so
UmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVudAogICAgIH0sIFdvcmtlclJ1
bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoUmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiBtZXNzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+
JiYgY2hhbm5lbHMsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQordm9pZCBTZXJ2aWNlV29y
a2VyVGhyZWFkOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxTZXJ2
aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbj4mJiBjbGllbnRDb25uZWN0aW9uLCBSZWY8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENo
YW5uZWxBcnJheT4mJiBjaGFubmVscywgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayB0YXNrKFtjaGFubmVscyA9IFdURk1vdmUoY2hhbm5lbHMpLCBtZXNzYWdlID0gV1RGTW92ZSht
ZXNzYWdlKSwgc291cmNlT3JpZ2luID0gc291cmNlT3JpZ2luLmlzb2xhdGVkQ29weSgpXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayB0YXNrKFtjbGllbnRDb25uZWN0aW9uID0gV1RGTW92ZShjbGllbnRD
b25uZWN0aW9uKSwgY2hhbm5lbHMgPSBXVEZNb3ZlKGNoYW5uZWxzKSwgbWVzc2FnZSA9IFdURk1v
dmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiA9IHNvdXJjZU9yaWdp
bi5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFi
bGUgewogICAgICAgICBhdXRvJiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAgICBhdXRvIHBvcnRzID0g
TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBXVEZN
b3ZlKGNoYW5uZWxzKSk7Ci0gICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5kaXNwYXRj
aEV2ZW50KEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgV1RG
TW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luKSk7CisgICAgICAgIEV4dGVuZGFibGVNZXNzYWdl
RXZlbnRTb3VyY2Ugc291cmNlID0gUmVmUHRyPFNlcnZpY2VXb3JrZXJDbGllbnQ+IHsgU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudDo6Y3JlYXRlKFdURk1vdmUoY2xpZW50Q29ubmVjdGlvbiksIGNv
bnRleHQsIHNvdXJjZUlkZW50aWZpZXIpIH07CisgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5kaXNwYXRjaEV2ZW50KEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3Zl
KHBvcnRzKSwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUoc291
cmNlKSkpOwogICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29ya2Vy
T2JqZWN0UHJveHkoKS5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qoc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKICAgICB9KTsKICAgICBydW5Mb29w
KCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXgg
MzM3MzEzOWMyYjUuLmIxY2U4ZTYxMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBAIC0z
OSw2ICszOSw3IEBAIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsK
IGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
IGNsYXNzIFdvcmtlckxvYWRlclByb3h5OworY2xhc3MgU2VydmljZVdvcmtlckNsaWVudENvbm5l
Y3Rpb247CiBjbGFzcyBXb3JrZXJPYmplY3RQcm94eTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE7CiAKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAgIFdvcmtlck9iamVjdFBy
b3h5JiB3b3JrZXJPYmplY3RQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyT2JqZWN0UHJv
eHk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdEZldGNoVGFzayhSZWY8U2Vydmlj
ZVdvcmtlckZldGNoOjpDbGllbnQ+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBGZXRjaE9wdGlvbnMm
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlKFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIHN0ZDo6dW5pcXVlX3B0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZShSZWY8U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24+JiYsIFJlZjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+JiYsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4m
JiwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
OwogCiBwcm90ZWN0ZWQ6CiAgICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJH
bG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVm
PFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBQ
QUw6OlNlc3Npb25JRCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggOGU5M2M1
ZTA2YzkuLmYzYTc0ODg3OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0yOCw3ICsy
OCwxMCBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50
LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRhaW5lci5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJGZXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhLmgi
CiAKQEAgLTEwOSw2ICsxMTIsMzIgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2Ny
aXB0RmV0Y2hGb3JTZXJ2ZXIodWludDY0X3Qgam9iSWRlbnRpZmllcikKICAgICBqb2ItPnN0YXJ0
U2NyaXB0RmV0Y2goKTsKIH0KIAordm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIsIFJlZjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7Cisg
ICAgLy8gRklYTUU6IGNsaWVudElkZW50aWZpZXIgY2FuIG9ubHkgaWRlbnRpZnkgYSBEb2N1bWVu
dCBhdCB0aGUgbW9tZW50LgorICAgIGF1dG8qIGRlc3RpbmF0aW9uRG9jdW1lbnQgPSBEb2N1bWVu
dDo6YWxsRG9jdW1lbnRzKCkuZ2V0KGNsaWVudElkZW50aWZpZXIpOworICAgIGlmICghZGVzdGlu
YXRpb25Eb2N1bWVudCkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBmaW5kIGNs
aWVudCBkb2N1bWVudCB3aXRoIHRoZSBnaXZlbiBpZGVudGlmaWVyIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBhdXRvKiBjb250YWluZXIgPSBkZXN0aW5hdGlvbkRvY3VtZW50LT5z
ZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7CisgICAgaWYgKCFjb250YWluZXIpIHsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgZmluZCBzZXJ2aWNlIHdvcmtlciBjb250YWluZXIgZm9y
IGNsaWVudCBkb2N1bWVudCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklY
TUU6IFBhc3MgaW4gcG9ydHMuCisgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRz
OworCisgICAgLy8gRklYTUU6IFVzaW5nIGNvbnRhaW5lci0+Y29udHJvbGxlcigpIGFzIHNvdXJj
ZSBoZXJlIGlzIG5vdCBxdWl0ZSByaWdodC4KKyAgICBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVu
dFNvdXJjZT4gc291cmNlOworICAgIGlmIChhdXRvKiBjb250cm9sbGVyID0gY29udGFpbmVyLT5j
b250cm9sbGVyKCkpCisgICAgICAgIHNvdXJjZSA9IE1lc3NhZ2VFdmVudFNvdXJjZSB7IFJlZlB0
cjxTZXJ2aWNlV29ya2VyPiB7IGNvbnRyb2xsZXIgfSB9OworICAgIGF1dG8gbWVzc2FnZUV2ZW50
ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIFdURk1vdmUobWVzc2FnZSks
IG9yaWdpbiwgeyB9LCBXVEZNb3ZlKHNvdXJjZSkpOworICAgIGNvbnRhaW5lci0+ZGlzcGF0Y2hF
dmVudChtZXNzYWdlRXZlbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCA1MDhh
NThhNDlmMi4uODRkYjM0YjhiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaApAQCAtNDksNyArNDks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iJik7CiAg
ICAgdm9pZCBmaW5pc2hlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIGZhaWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2Im
LCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNvdXJjZSkgPSAwOwogCiAgICAg
dmlydHVhbCB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBoYXNTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biYpIGNvbnN0ID0gMDsKQEAgLTU5LDYgKzU5LDcgQEAgcHJvdGVjdGVkOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcih1aW50NjRfdCBqb2JJ
ZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcih1aW50NjRfdCBq
b2JJZGVudGlmaWVyLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIodWludDY0X3Qgam9iSWRlbnRpZmll
cik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggZTliY2Iz
MjUzNDIuLmI3YjRmY2E5NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcApAQCAtMTA4LDkgKzEwOCw5IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFy
dEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljCiAgICAgc2Vu
ZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6
U3RhcnRGZXRjaChpZGVudGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRf
dCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBz
ZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2Vy
OjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKGlkZW50aWZpZXIoKSwgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZU9yaWdpbikpOworICAgIHNlbmRU
b0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OlBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoaWRlbnRpZmllcigpLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2lu
KSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZSh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQpAQCAtMTM4LDYgKzEzOCwxMSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
ZGlkTm90SGFuZGxlRmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQogICAgIG1fY29udGVu
dENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlk
Tm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAordm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGNsaWVu
dElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4pCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9u
OjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCB7IGNsaWVudElkZW50aWZpZXIsIG1l
c3NhZ2UsIG9yaWdpbiB9KTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnNlbmRUb0NvbnRleHRQcm9jZXNzKFUmJiBtZXNzYWdlKQogewogICAg
IGlmICghbV9jb250ZXh0Q29ubmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uaAppbmRleCAyOTI2ZTgzZTQzMS4uMzNiYzEzMTU0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlk
RmFpbEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWROb3RIYW5k
bGVGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOwogCisgICAgdm9pZCBwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKKwogcHJp
dmF0ZToKICAgICAvLyBJbXBsZW1lbnQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24gKE1lc3NhZ2VzIHRv
IHRoZSBjbGllbnQgV2ViUHJvY2VzcykKICAgICB2b2lkIHJlamVjdEpvYkluQ2xpZW50KHVpbnQ2
NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsK
QEAgLTY2LDcgKzY4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRGZXRjaCh1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMm
KTsKIAotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50
NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCBwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKIAogICAgIC8vIE1lc3NhZ2Vz
IHRvIHRoZSBTVyBjb250ZXh0IFdlYlByb2Nlc3MKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtl
ckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpp
bmRleCAzYjIwNDVjNjQ0NC4uNTlmN2U4MjU1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjgsNyArMjgsNyBAQCBtZXNzYWdl
cyAtPiBXZWJTV1NlcnZlckNvbm5lY3Rpb24gewogICAgIEZpbmlzaEZldGNoaW5nU2NyaXB0SW5T
ZXJ2ZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCByZXN1bHQpCiAK
ICAgICBTdGFydEZldGNoKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdl
YkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zKQotICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIElQQzo6RGF0
YVJlZmVyZW5jZSBtZXNzYWdlLCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVy
LCBTdHJpbmcgc291cmNlT3JpZ2luKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNw
cAppbmRleCA4NzY0Y2QwNzAyZC4uMTEwM2M5NmZjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCkBAIC00MzUsNiArNDM1LDEyIEBAIHZv
aWQgU3RvcmFnZVByb2Nlc3M6OmRpZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfCiAgICAgICAgIGNvbm5lY3Rpb24tPmRpZEZpbmlzaEZldGNo
KGZldGNoSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OnBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KGludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24g
PSBtX3N3U2VydmVyQ29ubmVjdGlvbnMuZ2V0KHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkK
KyAgICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY2xp
ZW50SWRlbnRpZmllciwgbWVzc2FnZSwgb3JpZ2luKTsKK30KKwogdm9pZCBTdG9yYWdlUHJvY2Vz
czo6cmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKQogewogICAgIEFTU0VSVCghbV9zd1NlcnZlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNv
bm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLmgKaW5kZXggYWE4NjQ1Yjc3MWMuLjA5MzQ4ZGNiOTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC0xMjUsNiAr
MTI1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOwogICAgIHZv
aWQgZGlkRmFpbEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50
NjRfdCBmZXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkTm90SGFuZGxlRmV0Y2godWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7
CisKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4gaW5kZXhlZERhdGFiYXNlT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBh
dGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMzM5MmFmNzE1ZDEuLjA0OTRjNTA1MDQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTQ2LDUgKzQ2LDYgQEAgbWVzc2FnZXMgLT4gU3RvcmFnZVByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIERpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAgRGlkUmVjZWl2ZUZldGNoRGF0YSh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVy
LCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKICAg
ICBEaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWlu
dDY0X3QgZmV0Y2hJZGVudGlmaWVyKQorICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjbGllbnRJ
ZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIG9yaWdpbikKICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOTcxZmJkZTdmMzQuLmFjNTkxZTFkZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNzgsNiArMTM3OCw4IEBACiAJ
CTgzMkVEMThDMUUyRkUxNTcwMDZCQTY0QSAvKiBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1w
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJF
RDE4QTFFMkZFMTNCMDA2QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5o
ICovOyB9OwogCQk4MzRCMjUwRjFBODMxQThEMDBDRkIxNTAgLyogTmV0d29ya0NhY2hlRmlsZVN5
c3RlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0
QjI1MEUxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCAqLzsgfTsK
IAkJODM0QjI1MTIxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNEIyNTEwMUE4
NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmggKi87IH07CisJCTgzNTcz
MUMxMUZBMEYwRjgwMDg1RjREMyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzU3MzFD
MDFGQTBGMEVEMDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3Bw
ICovOyB9OworCQk4MzU3MzFDMjFGQTBGMEY4MDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNs
aWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzNTczMUJGMUZBMEYwRUMwMDg1RjREMyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50
Q29ubmVjdGlvbi5oICovOyB9OwogCQk4MzYwMzQ5RjFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuY3BwICovOyB9OwogCQk4MzYwMzRBMDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzYwMzQ5RTFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VU
cmFja2VyLmggKi87IH07CiAJCTgzNkVFQjgwMUJFOUVDOUUwMDZCNEI4MiAvKiBOZXR3b3JrTG9h
ZE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
NkVFQjdGMUJFOUVDOUUwMDZCNEI4MiAvKiBOZXR3b3JrTG9hZE1hYy5tbSAqLzsgfTsKQEAgLTM3
NjQsNiArMzc2Niw5IEBACiAJCTgzMkVEMThBMUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rpdml0
eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODM0QjI1MEUxQTgzMUE4RDAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0
ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlRmlsZVN5
c3RlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUxMDFBODQyQzg3MDBD
RkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTgzNTczMUJFMUZBMEYwRUMwMDg1RjREMyAvKiBTZXJ2aWNlV29ya2VyQ29udGV4
dE1hbmFnZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2VydmljZVdvcmtl
ckNvbnRleHRNYW5hZ2VyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4MzU3MzFCRjFGQTBGMEVDMDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5l
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2VydmljZVdvcmtl
ckNsaWVudENvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM1NzMx
QzAxRkEwRjBFRDAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlcnZpY2VXb3JrZXJD
bGllbnRDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM2MDM0
OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzYwMzQ5RTFBQ0IzNEQ2MDA2MjY1
NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4MzZFRUI3RjFCRTlFQzlFMDA2QjRCODIgLyogTmV0d29ya0xvYWRNYWMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOZXR3b3JrTG9hZE1hYy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMTcsOCArNjIyMiwxMSBAQAogCQkJ
CTQxMzFGM0NGMUY5NkE5MzYwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2gubWVz
c2FnZXMuaW4gKi8sCiAJCQkJNDEzMUYzRDMxRjk2RTkzMTAwNTk5OTVBIC8qIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0TWFuYWdlci5jcHAgKi8sCiAJCQkJNDEzMUYzRDIxRjk2RTkzMDAwNTk5OTVBIC8q
IFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oICovLAorCQkJCTgzNTczMUJFMUZBMEYwRUMw
MDg1RjREMyAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJNDE0REVEQzUxRjlFNEJFQzAwNDdDNDBEIC8qIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNs
aWVudC5jcHAgKi8sCiAJCQkJNDE0REVEQzQxRjlFNEJFQjAwNDdDNDBEIC8qIFNlcnZpY2VXb3Jr
ZXJGcmFtZUxvYWRlckNsaWVudC5oICovLAorCQkJCTgzNTczMUMwMUZBMEYwRUQwMDg1RjREMyAv
KiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi8sCisJCQkJODM1NzMxQkYx
RkEwRjBFQzAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggKi8s
CiAJCQkJNDEzMUYzRTAxRjk4NzEyQzAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwICovLAogCQkJCTQxOUFDRjlCMUY5ODFEMjYwMDlGMUE4MyAvKiBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmggKi8sCiAJCQkJNTFCRUI2MjkxRjNBNUFDRDAwNTAy
OUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5jcHAgKi8sCkBAIC05MDcyLDYgKzkwODAs
NyBAQAogCQkJCTQxREM0NTlGMUUzREJEQTUwMEIxMUY1MSAvKiBXZWJSVENTb2NrZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdDMzYxRDczMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDNCOTQ4NDkxMUZGNEI2NTAwMDMyQjM5
IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8sCisJCQkJODM1NzMxQzIxRkEw
RjBGODAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUJFQjYyQzFGM0E1QUQ3MDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ4MzJENzFBOUNERjk2MDA4QjRERkUg
LyogV2Vic2l0ZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDgzMkQxMUE5QkRDMkYwMDhC
NERGRSAvKiBXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDcyNiw2ICsx
MDczNSw3IEBACiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODFDIC8qIFdlYlJUQ1NvY2tldE1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzM2MUQ3MjE5MjdGQTM2MDAz
NkE1OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RDNCOTQ4NDgxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk4MzU3MzFDMTFGQTBGMEY4MDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtl
ckNsaWVudENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMUYzRTIxRjk4ODA4
NDAwNTk5OTVBIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTFCRUI2MkIxRjNBNUFENzAwNTAyOUI5IC8qIFdlYlNlcnZpY2VXb3JrZXJQ
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTQ4MzJENjFBOUNERjk2MDA4QjRERkUg
LyogV2Vic2l0ZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5h
Z2VyLmNwcAppbmRleCA5NGQ2MzRkNjEyYi4uOTFhMzg0MTQxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNv
bnRleHRNYW5hZ2VyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVu
Y2VzS2V5cy5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV2ViU29ja2V0UHJvdmlkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvckNsaWVudC5o
PgpAQCAtMTMyLDE0ICsxMzMsMTYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6
OnN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIKICAgICBzZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHktPnRocmVhZCgpLnBvc3RGZXRjaFRhc2soV1RGTW92ZShjbGll
bnQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKIH0KIAotdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQordm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFn
ZXI6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewogICAgIGF1dG8qIHNlcnZpY2VXb3Jr
ZXIgPSBtX3dvcmtlck1hcC5nZXQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIGlmICgh
c2VydmljZVdvcmtlcikKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBjbGllbnRDb25uZWN0
aW9uID0gV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb246OmNyZWF0ZShtX2Nvbm5lY3Rp
b25Ub1N0b3JhZ2VQcm9jZXNzLmNvcHlSZWYoKSwgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHNvdXJjZUlkZW50aWZpZXIpOworCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIHZhbGlk
IE1lc3NhZ2VQb3J0Q2hhbm5lbHMuCi0gICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFk
b3B0KG1lc3NhZ2UudmVjdG9yKCkpLCBudWxscHRyLCBzb3VyY2VPcmlnaW4pOworICAgIHNlcnZp
Y2VXb3JrZXItPnRocmVhZCgpLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUo
V1RGTW92ZShjbGllbnRDb25uZWN0aW9uKSwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdCht
ZXNzYWdlLnZlY3RvcigpKSwgbnVsbHB0ciwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2lu
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIu
aAppbmRleCBlMGRiODI2OWU3My4uOWE1ZWJiYzMwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFu
YWdlci5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0U2Vydmlj
ZVdvcmtlcih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJik7CiAgICAgdm9pZCBzdGFydEZldGNoKHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIs
IHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYpOwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9j
b25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5Pj4gbV93b3JrZXJNYXA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4
dE1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9T
ZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggODY2NjNmODFlN2Mu
LjlmOTY0ZmM4MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLm1lc3Nh
Z2VzLmluCkBAIC0yNSw3ICsyNSw3IEBACiBtZXNzYWdlcyAtPiBTZXJ2aWNlV29ya2VyQ29udGV4
dE1hbmFnZXIgewogICAgIFN0YXJ0U2VydmljZVdvcmtlcih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBj
b250ZXh0RGF0YSkKICAgICBTdGFydEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNv
cmU6OkZldGNoT3B0aW9ucyBvcHRpb25zKQotICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgU3Ry
aW5nIHNvdXJjZU9yaWdpbikKKyAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIHVpbnQ2NF90IHNv
dXJjZUlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKaW5kZXggMzA4NmVhNGZjMGUuLjQ1YjdlNDMxMzM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5jcHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKICNpbmNsdWRlICJXZWJTV09yaWdpblRhYmxlLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJGZXRjaFJlc3VsdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckpvYkRh
dGEuaD4KQEAgLTY4LDkgKzcwLDEzIEBAIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpmaW5p
c2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpGaW5pc2hGZXRjaGluZ1NjcmlwdElu
U2VydmVyKHJlc3VsdCkpOwogfQogCi12b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzY3JpcHRWYWx1ZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzY3JpcHRWYWx1ZSwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgc291cmNlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc2NyaXB0VmFsdWUtPmRh
dGEoKSB9LCBzb3VyY2VPcmlnaW4pKTsKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHBv
c3RpbmcgbWVzc2FnZXMgZnJvbSB3b3JrZXJzLgorICAgIGlmICghaXM8RG9jdW1lbnQ+KHNvdXJj
ZSkpCisgICAgICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29u
bmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc2NyaXB0VmFsdWUtPmRhdGEoKSB9
LCBkb3duY2FzdDxEb2N1bWVudD4oc291cmNlKS5pZGVudGlmaWVyKCksIHNvdXJjZS5vcmlnaW4o
KSkpOwogfQogCiBib29sIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6aGFzU2VydmljZVdvcmtlclJl
Z2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QKQEAg
LTkyLDYgKzk4LDExIEBAIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+IFdlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChXZWJTZXJ2aWNlV29ya2VyCiAgICAgcmV0dXJuIFNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6Y3JlYXRlKHByb3ZpZGVyLCBXVEZNb3ZlKGxvYWRlciksIGlk
ZW50aWZpZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCit2
b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGll
bnQodWludDY0X3QgY2xpZW50SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKK3sKKyAgICBTV0NsaWVudENvbm5lY3Rpb246
OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNsaWVudElkZW50aWZpZXIsIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0b3IoKSksIG9yaWdpbik7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24uaAppbmRleCAxY2QyOTI5OWUzZi4uMjJhYzI1ZWI1NmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2NoZWR1bGVK
b2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpIGZpbmFsOwog
ICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJl
ZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNv
dXJjZSkgZmluYWw7CiAKICAgICB2b2lkIGRpc2Nvbm5lY3RlZEZyb21XZWJQcm9jZXNzKCk7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBmaW5hbDsKQEAgLTY0LDYgKzY0LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2VydmljZVdv
cmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKSBj
b25zdCBmaW5hbDsKICAgICBSZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiBzdGFydEZldGNo
KFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlciYsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4m
JiwgdWludDY0X3QgaWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpDYWxsYmFj
ayYmKTsKIAorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0
X3QgY2xpZW50SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIG9yaWdpbik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVN0b3Jh
Z2VKb2IoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDExNTVkMWJhYWQ4Li41YmFkYWRjZTc0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzAsNiArMzAsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJTV0NsaWVudENvbm5lY3Rpb24gewogICAgIFN0YXJ0U2NyaXB0RmV0Y2hG
b3JTZXJ2ZXIodWludDY0X3Qgam9iSWRlbnRpZmllcikKIAogICAgIFNldFNXT3JpZ2luVGFibGVT
aGFyZWRNZW1vcnkoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUpCisgICAgUG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0X3QgY2xpZW50SWRlbnRpZmllciwg
SVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIFN0cmluZyBvcmlnaW4pCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVj
dGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg0NTY1NmMx
ODg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCIKKworI2lu
Y2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVk
ZSAiU3RvcmFnZVByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitXZWJTZXJ2aWNlV29ya2VyQ2xp
ZW50Q29ubmVjdGlvbjo6V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24oUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3QgY2xpZW50SWRlbnRpZmllcikKKyAgICA6IG1fY29ubmVjdGlvbihXVEZN
b3ZlKGNvbm5lY3Rpb24pKQorICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAsIG1fY2xpZW50SWRlbnRpZmllcihjbGllbnRJ
ZGVudGlmaWVyKQoreworfQorCitXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjo6fldl
YlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uKCkKK3sKKyAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2Nvbm5lY3Rpb24gPSBXVEZNb3ZlKG1fY29ubmVjdGlvbildIHsgfSk7Cit9CisK
K3ZvaWQgV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
dG9yYWdlUHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBtX3NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX2NsaWVudElkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVy
ZW5jZSB7IG1lc3NhZ2UtPmRhdGEoKSB9LCBvcmlnaW4gfSwgMCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMTliYWMzZjhjOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KKworbmFtZXNwYWNlIElQQyB7CitjbGFzcyBDb25uZWN0aW9uOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24gZmlu
YWw6IHB1YmxpYyBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbj4gY3Jl
YXRlKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlv
bihXVEZNb3ZlKGNvbm5lY3Rpb24pLCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY2xpZW50
SWRlbnRpZmllcikpOworICAgIH0KKworICAgIH5XZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVj
dGlvbigpOworCisgICAgLy8gV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24u
CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChSZWY8V2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSBm
aW5hbDsKKworcHJpdmF0ZToKKyAgICBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbihS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3QgY2xpZW50SWRlbnRpZmllcik7CisKKyAgICBSZWY8SVBDOjpDb25uZWN0aW9u
PiBtX2Nvbm5lY3Rpb247CisgICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
cjsKKyAgICB1aW50NjRfdCBtX2NsaWVudElkZW50aWZpZXI7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325017</attachid>
            <date>2017-10-26 09:32:24 -0700</date>
            <delta_ts>2017-10-26 09:33:47 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>178794_SW_Client_postMessage_wip.patch</filename>
            <type>text/plain</type>
            <size>64554</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVz
c2FnZS5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggN2QxMjIzNTQ3NWYuLmMwOTU1ZjgzNGE3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKLVBBU1M6IFN0YXR1cyBj
b2RlIGlzIDIwMAotUEFTUzogU3RhdHVzIHRleHQgaXMgV29ya2VyIHJlY2VpdmVkIHRoZSBtZXNz
YWdlIGV2ZW50LiBtZXNzYWdlRXZlbnQub3JpZ2luIHdhcyBodHRwczovLzEyNy4wLjAuMTo4NDQz
Ci1QQVNTOiBTb3VyY2UgaXMgU2VydmljZSB3b3JrZXIKK1BBU1M6IENsaWVudCByZWNlaXZlZCBt
ZXNzYWdlIGZyb20gc2VydmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MworUEFTUzogUmVjZWl2ZWQgbWVzc2FnZSAnTWVzc2FnZSAxJyBmcm9tIG9yaWdpbiAnaHR0cHM6
Ly8xMjcuMC4wLjE6ODQ0MycKK1BBU1M6IENsaWVudCByZWNlaXZlZCBtZXNzYWdlIGZyb20gc2Vy
dmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MworUEFTUzogUmVjZWl2
ZWQgbWVzc2FnZSAnTWVzc2FnZSAyJyBmcm9tIG9yaWdpbiAnaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MycKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCmluZGV4IDg0Mzk1YjJhNmQzLi45NDhjODI0
OTQ2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLXdvcmtlci5qcwpAQCAtMSwxNCArMSw0IEBACi1sZXQg
cmVzcG9uc2VUb1NlbmQgPSB7IHN0YXR1czogNDA0LCBzdGF0dXNUZXh0OiAiTm90IEZvdW5kIiB9
OwotCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKLSAgICBy
ZXNwb25zZVRvU2VuZCA9IGV2ZW50LmRhdGE7Ci0gICAgcmVzcG9uc2VUb1NlbmQuc3RhdHVzVGV4
dCArPSAiIG1lc3NhZ2VFdmVudC5vcmlnaW4gd2FzICIgKyBldmVudC5vcmlnaW47CisgICAgZXZl
bnQuc291cmNlLnBvc3RNZXNzYWdlKCJSZWNlaXZlZCBtZXNzYWdlICciICsgZXZlbnQuZGF0YSAr
ICInIGZyb20gb3JpZ2luICciICsgZXZlbnQub3JpZ2luICsgIiciKTsKIH0pOwogCi1zZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoImZldGNoIiwgKGV2ZW50KSA9PiB7Ci0gICAgaWYgKGV2ZW50LnJlcXVl
c3QudXJsLmluZGV4T2YoInRlc3QxIikgIT09IC0xKSB7Ci0gICAgICAgIGV2ZW50LnJlc3BvbmRX
aXRoKG5ldyBSZXNwb25zZShudWxsLCByZXNwb25zZVRvU2VuZCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGV2ZW50LnJlc3BvbmRXaXRoKFJlc3BvbnNlLmVycm9yKCkpOwotfSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmpzCmluZGV4IDk2YTQxY2EwODY4Li4xZjBhNjMwNDRiZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2UuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuanMK
QEAgLTEsMzcgKzEsMTQgQEAKLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGZpbmlzaFNXVGVzdCgp
OwotfQotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB0cnkgewotICAgICAgICBhd2Fp
dCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIiwgeyB9KTsKLQotICAgICAgICBuYXZpZ2F0
b3Iuc2VydmljZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKHsgc3RhdHVzOiAyMDAsIHN0
YXR1c1RleHQ6ICJXb3JrZXIgcmVjZWl2ZWQgdGhlIG1lc3NhZ2UgZXZlbnQuIiB9KTsKLQotICAg
ICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgidGVzdDEiKTsKLSAgICAgICAgaWYgKHJl
c3BvbnNlLnN0YXR1cyA9PSAyMDApCi0gICAgICAgICAgICBsb2coIlBBU1M6IFN0YXR1cyBjb2Rl
IGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2co
IkZBSUw6IFN0YXR1cyBjb2RlIGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotCi0gICAgICAgIGlm
IChyZXNwb25zZS5zdGF0dXNUZXh0LnN0YXJ0c1dpdGgoIldvcmtlciByZWNlaXZlZCB0aGUgbWVz
c2FnZSIpKQotICAgICAgICAgICAgbG9nKCJQQVNTOiBTdGF0dXMgdGV4dCBpcyAiICsgcmVzcG9u
c2Uuc3RhdHVzVGV4dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygiRkFJTDogU3Rh
dHVzIHRleHQgaXMgIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOwotCi0gICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICBsZXQgc291cmNlID0gaW50ZXJuYWxzLmZldGNo
UmVzcG9uc2VTb3VyY2UocmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKHNvdXJjZSA9PT0gIlNl
cnZpY2Ugd29ya2VyIikKLSAgICAgICAgICAgICAgICBsb2coIlBBU1M6IFNvdXJjZSBpcyAiICsg
c291cmNlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsb2coIkZBSUw6IFNv
dXJjZSBpcyAiICsgc291cmNlKTsKLSAgICAgICAgfQotICAgIH0gY2F0Y2goZSkgewotICAgICAg
ICBsb2coIkdvdCBleGNlcHRpb246ICIgKyBlKTsKLSAgICB9Ci0gICAgZmluaXNoU1dUZXN0KCk7
Ci19Ci0KLXRlc3QoKTsKK3ZhciBtZXNzYWdlTnVtYmVyID0gMTsKK25hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgeworICAg
IGxvZygiUEFTUzogQ2xpZW50IHJlY2VpdmVkIG1lc3NhZ2UgZnJvbSBzZXJ2aWNlIHdvcmtlciwg
b3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICBsb2coIlBBU1M6ICIgKyBldmVudC5kYXRh
KTsKKyAgICBpZiAobWVzc2FnZU51bWJlciA9PSAxKSB7CisgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgiTWVzc2FnZSAyIik7CisgICAgICAgIG1lc3NhZ2VOdW1iZXIrKzsKKyAgICB9
IGVsc2UKKyAgICAgICAgZmluaXNoU1dUZXN0KCk7Cit9KTsKKworbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdl
LXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBuYXZpZ2F0b3Iuc2Vydmlj
ZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKCJNZXNzYWdlIDEiKTsKK30pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkx
NmNhZjZmMmMzLi44NjQ4NzE5MjgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjgxNCw2ICsyODE0LDcgQEAKIAkJODM3MkRC
MzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MkRCMzAxQTY3ODBB
ODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMw
NjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3
OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlB
MDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLzsgfTsKKwkJODM3QTI0NTgx
RkEwRUNDODAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBMjQ1NjFGQTBFQ0M1
MDBGQjE1RTIgLyogU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzdBODAxMzFFMUUxMjczMDAw
MjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBMb2Nh
bGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZDIC8q
IFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJs
ZUlPUy5tbSAqLzsgfTsKIAkJODM3RkIzNDQxRjlFQTA2RDAwRDBGQzMxIC8qIEV4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM3RkIzNDIxRjlFQTA2NzAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQu
Y3BwICovOyB9OwpAQCAtMTA0MTIsNiArMTA0MTMsNyBAQAogCQk4Mzc2NUY5MzFEQUM1MjE4MDBD
MDY1MzcgLyogTW91c2VFdmVudEluaXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vdXNl
RXZlbnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVGOTQxREFD
NTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1vdXNlRXZlbnRJbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Qb3NpdGlv
bklPUy5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRp
b25JT1MubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJODM3QTI0NTYxRkEwRUND
NTAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMwMDAyNkI5RiAvKiBF
bmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxw
cm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnViYmxlSU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmFsaWRhdGlvbkJ1YmJsZUlP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3REZCMzQxRUJGRUE3MDAwNjAx
Mzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RWxlbWVudENTU0lubGluZVN0eWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwNDQwLDcgKzEwNDQyLDcgQEAKIAkJODM5QUFGRUIxQTBDMEM4RDAwNjA1Rjk5IC8qIEhUTUxX
QlJFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxXQlJFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQTRBOUY4MUNFN0ZEN0UwMDcw
OUIwMCAvKiBKU1hNTERvY3VtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTWE1MRG9jdW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4M0IyNTAwOTFGQTExODFDMDBCQzAyRDkgLyogSlNTZXJ2aWNlV29ya2VyQ2xp
ZW50VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NlcnZpY2VXb3Jr
ZXJDbGllbnRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzQjI1MDBCMUZB
MTE4MUQwMEJDMDJEOSAvKiBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTU2VydmljZVdvcmtlckNsaWVudFR5cGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4M0IyNTAwQjFGQTExODFEMDBCQzAyRDkg
LyogSlNTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODNCNzRFRjIxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJl
cXVlc3RUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtl
ZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODNCNzRFRjMxRjNFMEJENzAwOTk2QkM3IC8qIEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtlZXBhbGl2ZVJlcXVlc3RUcmFja2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjk2ODc5MTlGOEFCODMwMDRFRjdBRiAv
KiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3R5bGVCdWlsZGVyQ29udmVydGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNzg1Miw2ICsxNzg1NCw3IEBACiAJCTUxN0M4NzA3MUY4RThGRjIwMEVCODA3NiAvKiBjb250
ZXh0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4MzdB
MjQ1NjFGQTBFQ0M1MDBGQjE1RTIgLyogU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAq
LywKIAkJCQk0MTlBQ0Y5MDFGOTdFN0Q2MDA5RjFBODMgLyogU2VydmljZVdvcmtlckZldGNoLmNw
cCAqLywKIAkJCQk0MTlBQ0Y4RTFGOTdFN0Q1MDA5RjFBODMgLyogU2VydmljZVdvcmtlckZldGNo
LmggKi8sCiAJCQkJNTE3Qzg3MTExRjhFRTcyRjAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJl
YWQuY3BwICovLApAQCAtMjkzMTcsNiArMjkzMjAsNyBAQAogCQkJCTJEOTNBRUUzMTlERjU2NDEw
MDJBODZDMyAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUYxNzU1RDFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDZFRjE0MkQxRjk3QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTgzN0EyNDU4MUZBMEVDQzgwMEZCMTVFMiAvKiBTZXJ2aWNl
V29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZFRjE0MkMxRjk3
QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4MzY5RkRGQzFGQTEwMkUzMDBDMUZGMUYgLyogU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxRjE3NTVGMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IDk3NWMyNjgxNDM2Li4xNzg4NTE1YzQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00
MzQsOSArNDM0LDE1IEBAIHN0YXRpYyB2b2lkIHByaW50TmF2aWdhdGlvbkVycm9yTWVzc2FnZShG
cmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgYWN0aXZlVVJMLCBjb25zCiAKIHVpbnQ2NF90IERvY3Vt
ZW50OjpzX2dsb2JhbFRyZWVWZXJzaW9uID0gMDsKIAotSGFzaFNldDxEb2N1bWVudCo+JiBEb2N1
bWVudDo6YWxsRG9jdW1lbnRzKCkKK3N0YXRpYyBEb2N1bWVudDo6SWRlbnRpZmllciBnZW5lcmF0
ZURvY3VtZW50SWRlbnRpZmllcigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hT
ZXQ8RG9jdW1lbnQqPj4gZG9jdW1lbnRzOworICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVy
ID0gMDsKKyAgICByZXR1cm4gKytpZGVudGlmaWVyOworfQorCithdXRvIERvY3VtZW50OjphbGxE
b2N1bWVudHMoKSAtPiBIYXNoTWFwPElkZW50aWZpZXIsIERvY3VtZW50Kj4mCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8SWRlbnRpZmllciwgRG9jdW1lbnQqPj4gZG9jdW1l
bnRzOwogICAgIHJldHVybiBkb2N1bWVudHM7CiB9CiAKQEAgLTQ5Niw4ICs1MDIsOSBAQCBEb2N1
bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgZG9j
dW1lbnRDbGFzc2VzLCB1bnNpZwogICAgICwgbV9pc1N5bnRoZXNpemVkKGNvbnN0cnVjdGlvbkZs
YWdzICYgU3ludGhlc2l6ZWQpCiAgICAgLCBtX2lzTm9uUmVuZGVyZWRQbGFjZWhvbGRlcihjb25z
dHJ1Y3Rpb25GbGFncyAmIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIpCiAgICAgLCBtX29yaWVudGF0
aW9uTm90aWZpZXIoY3VycmVudE9yaWVudGF0aW9uKGZyYW1lKSkKKyAgICAsIG1faWRlbnRpZmll
cihnZW5lcmF0ZURvY3VtZW50SWRlbnRpZmllcigpKQogewotICAgIGFsbERvY3VtZW50cygpLmFk
ZCh0aGlzKTsKKyAgICBhbGxEb2N1bWVudHMoKS5hZGQobV9pZGVudGlmaWVyLCB0aGlzKTsKIAog
ICAgIC8vIFdlIGRlcGVuZCBvbiB0aGUgdXJsIGdldHRpbmcgaW1tZWRpYXRlbHkgc2V0IGluIHN1
YmZyYW1lcywgYnV0IHdlCiAgICAgLy8gYWxzbyBkZXBlbmQgb24gdGhlIHVybCBOT1QgZ2V0dGlu
ZyBpbW1lZGlhdGVseSBzZXQgaW4gb3BlbmVkIHdpbmRvd3MuCkBAIC01NDcsNyArNTU0LDggQEAg
UmVmPERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlKERvY3VtZW50JiBjb250ZXh0RG9jdW1lbnQp
CiAKIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogewotICAgIGFsbERvY3VtZW50cygpLnJlbW92ZSh0
aGlzKTsKKyAgICBib29sIHdhc1JlbW92ZWQgPSBhbGxEb2N1bWVudHMoKS5yZW1vdmUobV9pZGVu
dGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwogCiAg
ICAgQVNTRVJUKCFyZW5kZXJWaWV3KCkpOwogICAgIEFTU0VSVChtX3BhZ2VDYWNoZVN0YXRlICE9
IEluUGFnZUNhY2hlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNDg4MmNiNWVlNDcuLjkxMGUx
YzBhZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzQ3LDcgKzM0Nyw5IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcmVtb3ZlZExhc3RSZWYoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBIYXNoU2V0PERvY3VtZW50Kj4mIGFsbERvY3VtZW50cygpOworICAgIHVzaW5nIElkZW50aWZp
ZXIgPSB1aW50NjRfdDsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaE1hcDxJZGVu
dGlmaWVyLCBEb2N1bWVudCo+JiBhbGxEb2N1bWVudHMoKTsKIAogICAgIE1lZGlhUXVlcnlNYXRj
aGVyJiBtZWRpYVF1ZXJ5TWF0Y2hlcigpOwogCkBAIC0xODMwLDYgKzE4MzIsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9ncmFudFN0b3JhZ2VBY2Nlc3NPdmVycmlkZSB7IGZhbHNlIH07CiAKICAg
ICBSZWZQdHI8RG9jdW1lbnRUaW1lbGluZT4gbV90aW1lbGluZTsKKyAgICBJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKIH07CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50
KERvY3VtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHAKaW5kZXggOTJlOTA1OWI5YTAuLjEzYjFkYjRiNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Lmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNs
dWRlICJOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNpbmNsdWRlICJQdWJsaWNVUkxNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgpAQCAtNDUsNiArNDYs
NyBAQAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5o
IgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5l
cy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KQEAgLTUyNSw0ICs1
MjcsMTggQEAgSlNDOjpFeGVjU3RhdGUqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0
ZSgpCiAgICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9i
YWxTY29wZSk7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXJ2aWNlV29ya2VyQ29udGFpbmVy
KCkKK3sKKyAgICBOYXZpZ2F0b3JCYXNlKiBuYXZpZ2F0b3IgPSBudWxscHRyOworICAgIGlmIChp
czxEb2N1bWVudD4oKnRoaXMpKSB7CisgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb3duY2Fz
dDxEb2N1bWVudD4oKnRoaXMpLmRvbVdpbmRvdygpKQorICAgICAgICAgICAgbmF2aWdhdG9yID0g
d2luZG93LT5uYXZpZ2F0b3IoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbmF2aWdhdG9yID0gJmRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykubmF2aWdhdG9yKCk7CisKKyAgICByZXR1
cm4gbmF2aWdhdG9yID8gbmF2aWdhdG9yLT5zZXJ2aWNlV29ya2VyKCkgOiBudWxscHRyOworfQor
I2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDI2NmY0OWFlZWMwLi41MjE4YmU4NTIzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC02OCw2ICs2
OCwxMCBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xh
c3MgVVJMOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorY2xhc3MgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgSURCQ2xpZW50IHsKIGNsYXNzIElEQkNv
bm5lY3Rpb25Qcm94eTsKIH0KQEAgLTIzNCw2ICsyMzgsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogICAgIHVpbnQ2NF90IHNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOyB9CiAgICAg
dm9pZCBzZXRTZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKHVpbnQ2NF90IGlkZW50aWZp
ZXIpIHsgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KKworICAgIFNl
cnZpY2VXb3JrZXJDb250YWluZXIqIHNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKICNlbmRpZgog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAppbmRleCA3YWIw
OTI0MzRiZi4uM2NiM2RkZmJhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVt
b3J5UmVsZWFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNw
cApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgdm9pZCByZWxlYXNlTm9uY3JpdGljYWxNZW1vcnko
KQogCiAgICAgY2xlYXJXaWR0aENhY2hlcygpOwogCi0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6
IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkKKyAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9j
dW1lbnQ6OmFsbERvY3VtZW50cygpLnZhbHVlcygpKQogICAgICAgICBkb2N1bWVudC0+Y2xlYXJT
ZWxlY3RvclF1ZXJ5Q2FjaGUoKTsKIAogICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5wcnVu
ZURlYWRSZXNvdXJjZXNUb1NpemUoMCk7CkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyB2b2lkIHJl
bGVhc2VDcml0aWNhbE1lbW9yeShTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKIAogICAgIENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuZHJhaW4oKTsKIAotICAgIGZvciAoYXV0byYgZG9jdW1lbnQg
OiBjb3B5VG9WZWN0b3JPZjxSZWZQdHI8RG9jdW1lbnQ+PihEb2N1bWVudDo6YWxsRG9jdW1lbnRz
KCkpKSB7CisgICAgZm9yIChhdXRvJiBkb2N1bWVudCA6IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxE
b2N1bWVudD4+KERvY3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkpIHsKICAgICAgICAg
ZG9jdW1lbnQtPnN0eWxlU2NvcGUoKS5jbGVhclJlc29sdmVyKCk7CiAgICAgICAgIGRvY3VtZW50
LT5mb250U2VsZWN0b3IoKS5lbXB0eUNhY2hlcygpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggNTAxNmEwNmUyMDQuLjgyYzRlNTc2NGU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTk0NSw3ICsx
OTQ1LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVJhcmVEYXRhKCkKIAogdm9pZCBwcmlu
dFJlbmRlclRyZWVGb3JMaXZlRG9jdW1lbnRzKCkKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIGRv
Y3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgZm9yIChjb25zdCBhdXRv
KiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkgewogICAgICAg
ICBpZiAoIWRvY3VtZW50LT5yZW5kZXJWaWV3KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgaWYgKGRvY3VtZW50LT5mcmFtZSgpICYmIGRvY3VtZW50LT5mcmFtZSgpLT5pc01haW5G
cmFtZSgpKQpAQCAtMTk1Nyw3ICsxOTU3LDcgQEAgdm9pZCBwcmludFJlbmRlclRyZWVGb3JMaXZl
RG9jdW1lbnRzKCkKIAogdm9pZCBwcmludExheWVyVHJlZUZvckxpdmVEb2N1bWVudHMoKQogewot
ICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkp
IHsKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50
cygpLnZhbHVlcygpKSB7CiAgICAgICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoZG9jdW1lbnQtPmZyYW1lKCkgJiYgZG9j
dW1lbnQtPmZyYW1lKCktPmlzTWFpbkZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwCmluZGV4IGE5MTYwNDVlNGJh
Li5mMDdkNGMxYjQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0aWMgdm9p
ZCBjb2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93cyhjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyLCBIYQogCiBzdGF0aWMgdm9pZCBjb2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxv
Y2tGbG93c0ZvckN1cnJlbnRQYWdlKEhhc2hTZXQ8Y29uc3QgUmVuZGVyQmxvY2tGbG93Kj4mIGxl
YWZSZW5kZXJlcnMpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50
OjphbGxEb2N1bWVudHMoKSkgeworICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1
bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKCFkb2N1bWVudC0+
cmVuZGVyVmlldygpIHx8IGRvY3VtZW50LT5wYWdlQ2FjaGVTdGF0ZSgpICE9IERvY3VtZW50OjpO
b3RJblBhZ2VDYWNoZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoIWRvY3Vt
ZW50LT5pc0hUTUxEb2N1bWVudCgpICYmICFkb2N1bWVudC0+aXNYSFRNTERvY3VtZW50KCkpCkBA
IC0yNzksNyArMjc5LDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdE5vbkVtcHR5TGVhZlJlbmRlckJs
b2NrRmxvd3NGb3JDdXJyZW50UGFnZShIYXNoU2V0PGNvbnN0IFJlbmQKIAogdm9pZCB0b2dnbGVT
aW1wbGVMaW5lTGF5b3V0KCkKIHsKLSAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6
OmFsbERvY3VtZW50cygpKSB7CisgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50Ojph
bGxEb2N1bWVudHMoKS52YWx1ZXMoKSkgewogICAgICAgICBhdXRvJiBzZXR0aW5ncyA9IGRvY3Vt
ZW50LT5tdXRhYmxlU2V0dGluZ3MoKTsKICAgICAgICAgc2V0dGluZ3Muc2V0U2ltcGxlTGluZUxh
eW91dEVuYWJsZWQoIXNldHRpbmdzLnNpbXBsZUxpbmVMYXlvdXRFbmFibGVkKCkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA1YTExODFlNzkyMC4uMzlhYzhi
ODViOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTIxNTQsNyArMjE1
NCw3IEBAIEV4Y2VwdGlvbk9yPHVuc2lnbmVkPiBJbnRlcm5hbHM6OmNvdW50RmluZE1hdGNoZXMo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0CiB1bnNpZ25lZCBJbnRlcm5hbHM6Om51bWJl
ck9mTGl2ZU5vZGVzKCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBub2RlQ291bnQgPSAwOwotICAg
IGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpCisgICAgZm9y
IChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkKICAg
ICAgICAgbm9kZUNvdW50ICs9IGRvY3VtZW50LT5yZWZlcmVuY2luZ05vZGVDb3VudCgpOwogICAg
IHJldHVybiBub2RlQ291bnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlci5jcHAKaW5kZXggMTc5NjRlYWQ2MDQuLjBjZjlhODE2NDJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCkBA
IC02OSw3ICs2OSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXI6OnBvc3RNZXNz
YWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJQYXNzaW5nIE1lc3Nh
Z2VQb3J0IG9iamVjdHMgdG8gcG9zdE1lc3NhZ2UgaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9Owog
CiAgICAgYXV0byYgc3dDb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0
b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oY29udGV4dC5zZXNzaW9uSUQo
KSk7Ci0gICAgc3dDb25uZWN0aW9uLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUobV9pZGVudGlmaWVyLCBtZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0Lm9y
aWdpbigpKTsKKyAgICBzd0Nvbm5lY3Rpb24ucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZShtX2lkZW50aWZpZXIsIG1lc3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnRl
eHQpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAppbmRleCBjZDMwMWQwODgyMy4u
ODNmZDUwODg3MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKQEAgLTI4LDE0ICsyOCwyNyBAQAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50LmgiCiAKKyNp
bmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1TZXJ2aWNlV29ya2VyQ2xpZW50OjpTZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFR5cGUgdHlwZSkKK1NlcnZpY2VXb3JrZXJDbGll
bnQ6OlNlcnZpY2VXb3JrZXJDbGllbnQoUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdWludDY0X3QgaWRlbnRpZmllciwgVHlwZSB0
eXBlKQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmNvbnRleHQpCisgICAgLCBt
X2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiB9CiAKK1NlcnZpY2VXb3JrZXJDbGllbnQ6
On5TZXJ2aWNlV29ya2VyQ2xpZW50KCkKK3sKK30KKwogU3RyaW5nIFNlcnZpY2VXb3JrZXJDbGll
bnQ6OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTQ4LDE0ICs2MSwzMyBAQCBh
dXRvIFNlcnZpY2VXb3JrZXJDbGllbnQ6OmZyYW1lVHlwZSgpIGNvbnN0IC0+IEZyYW1lVHlwZQog
CiBTdHJpbmcgU2VydmljZVdvcmtlckNsaWVudDo6aWQoKSBjb25zdAogewotICAgIHJldHVybiB7
IH07CisgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1faWRlbnRpZmllcik7CiB9CiAKLUV4Y2Vw
dGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2Jq
ZWN0Pj4mJiB0cmFuc2ZlcikKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6
OnBvc3RNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6SlNWYWx1
ZSBtZXNzYWdlVmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFu
c2ZlcikKIHsKLSAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRy
YW5zZmVyKTsKLSAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiY2xpZW50LnBvc3RNZXNzYWdlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9Owor
ICAgIGF1dG8qIGV4ZWNTdGF0ZSA9IGNvbnRleHQuZXhlY1N0YXRlKCk7CisgICAgQVNTRVJUKGV4
ZWNTdGF0ZSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7CisgICAg
YXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmV4ZWNTdGF0ZSwg
bWVzc2FnZVZhbHVlLCBXVEZNb3ZlKHRyYW5zZmVyKSwgcG9ydHMsIFNlcmlhbGl6YXRpb25Db250
ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSk7CisgICAgaWYgKG1lc3NhZ2UuaGFzRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBtZXNzYWdlLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIC8vIERp
c2VudGFuZ2xlIHRoZSBwb3J0IGluIHByZXBhcmF0aW9uIGZvciBzZW5kaW5nIGl0IHRvIHRoZSBy
ZW1vdGUgY29udGV4dC4KKyAgICBhdXRvIGNoYW5uZWxzT3JFeGNlcHRpb24gPSBNZXNzYWdlUG9y
dDo6ZGlzZW50YW5nbGVQb3J0cyhXVEZNb3ZlKHBvcnRzKSk7CisgICAgaWYgKGNoYW5uZWxzT3JF
eGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBjaGFubmVsc09yRXhjZXB0
aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNlbmRpbmcg
dGhlIGNoYW5uZWxzLgorICAgIGF1dG8gY2hhbm5lbHMgPSBjaGFubmVsc09yRXhjZXB0aW9uLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGlmIChjaGFubmVscyAmJiAhY2hhbm5lbHMtPmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJ
SUxpdGVyYWwoIlBhc3NpbmcgTWVzc2FnZVBvcnQgb2JqZWN0cyB0byBwb3N0TWVzc2FnZSBpcyBu
b3QgeWV0IHN1cHBvcnRlZCIpIH07CisKKyAgICB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFk
KCkuaWRlbnRpZmllcigpOworICAgIG1fY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQobWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnRleHQub3JpZ2luKCkpOworCisgICAgcmV0dXJuIHsgfTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmgKaW5kZXggNjliOTFlMDhhMzkuLjg2Mzk0ZDk4OGEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50LmgKQEAgLTM0LDE0ICszNCwxOCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNWYWx1ZTsK
IH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7
CitjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjsKKwogY2xhc3MgU2VydmljZVdv
cmtlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnQ+LCBwdWJs
aWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgorICAgIHVzaW5nIENvbm5l
Y3Rpb24gPSBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbjsKKwogICAgIHVzaW5nIFR5cGUg
PSBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTsKICAgICBlbnVtIGNsYXNzIEZyYW1lVHlwZSB7CiAg
ICAgICAgIEF1eGlsaWFyeSwKQEAgLTUwLDIxICs1NCwyNSBAQCBwdWJsaWM6CiAgICAgICAgIE5v
bmUKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50PiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVHlwZSB0eXBlKQorICAgIHN0YXRpYyBS
ZWY8U2VydmljZVdvcmtlckNsaWVudD4gY3JlYXRlKFJlZjxDb25uZWN0aW9uPiYmIGNvbm5lY3Rp
b24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVpbnQ2NF90IGlkZW50aWZpZXIs
IFR5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VX
b3JrZXJDbGllbnQoY29udGV4dCwgdHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTZXJ2aWNlV29ya2VyQ2xpZW50KFdURk1vdmUoY29ubmVjdGlvbiksIGNvbnRleHQsIGlkZW50
aWZpZXIsIHR5cGUpKTsKICAgICB9CiAKKyAgICB+U2VydmljZVdvcmtlckNsaWVudCgpOworCiAg
ICAgU3RyaW5nIHVybCgpIGNvbnN0OwogICAgIEZyYW1lVHlwZSBmcmFtZVR5cGUoKSBjb25zdDsK
ICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBTdHJpbmcgaWQo
KSBjb25zdDsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2Jq
ZWN0Pj4mJiB0cmFuc2Zlcik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBWZWN0b3I8SlNDOjpT
dHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgU2Vy
dmljZVdvcmtlckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVHlwZSk7CisgICAgU2Vy
dmljZVdvcmtlckNsaWVudChSZWY8Q29ubmVjdGlvbj4mJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFR5cGUpOwogCisgICAgUmVmPENvbm5lY3Rpb24+IG1f
Y29ubmVjdGlvbjsKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAgICAgVHlwZSBtX3R5cGU7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudC5pZGwKaW5kZXggZjdlNGE5OGRlMjAuLmQ4YWNhYzk5ODkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnQuaWRsCkBAIC0zNSw3ICszNSw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNlcnZpY2VX
b3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBp
ZDsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
cG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNm
ZXIgPSBbXSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93
RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25hbCBzZXF1ZW5j
ZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOwogfTsKIAogZW51bSBGcmFtZVR5cGUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24uY3BwCmluZGV4IDI1OTE5YWIxYTM5Li5hYmZkYWNiMzc1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uLmNwcApAQCAtMjksMjUgKzI5LDExIEBACiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0j
aW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRhaW5lci5o
IgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiV29ya2VyTmF2aWdh
dG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFNlcnZpY2VXb3JrZXJDb250
YWluZXIqIGNvbnRhaW5lckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkKLXsKLSAgICBOYXZpZ2F0b3JCYXNlKiBuYXZpZ2F0b3IgPSBudWxs
cHRyOwotICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpIHsKLSAgICAgICAgaWYgKGF1dG8q
IHdpbmRvdyA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5kb21XaW5kb3coKSkKLSAgICAg
ICAgICAgIG5hdmlnYXRvciA9IHdpbmRvdy0+bmF2aWdhdG9yKCk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIG5hdmlnYXRvciA9ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkubmF2
aWdhdG9yKCk7Ci0KLSAgICByZXR1cm4gbmF2aWdhdG9yID8gbmF2aWdhdG9yLT5zZXJ2aWNlV29y
a2VyKCkgOiBudWxscHRyOwotfQotCiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSkKICAgICA6IEFjdGl2
ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fcmVnaXN0cmF0aW9uRGF0YShXVEZNb3ZlKHJl
Z2lzdHJhdGlvbkRhdGEpKQpAQCAtOTQsNyArODAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb246OnVucmVnaXN0ZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byogY29udGFpbmVyID0gY29udGFpbmVyRm9y
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgqY29udGV4dCk7CisgICAgYXV0byogY29udGFpbmVyID0g
Y29udGV4dC0+c2VydmljZVdvcmtlckNvbnRhaW5lcigpOwogICAgIGlmICghY29udGFpbmVyKSB7
CiAgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJyb3IpKTsK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwCmluZGV4IDQ2ZDI5OTBlMjk2
Li41MmU4NjZjYmNlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcApAQCAtMzIsOCArMzIsOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6OlNl
cnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkK
LSAgICA6IFNlcnZpY2VXb3JrZXJDbGllbnQoY29udGV4dCwgVHlwZTo6V2luZG93KQorU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudDo6U2VydmljZVdvcmtlcldpbmRvd0NsaWVudChSZWY8Q29ubmVj
dGlvbj4mJiBjb25uZWN0aW9uLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1aW50
NjRfdCBpZGVudGlmaWVyKQorICAgIDogU2VydmljZVdvcmtlckNsaWVudChXVEZNb3ZlKGNvbm5l
Y3Rpb24pLCBjb250ZXh0LCBpZGVudGlmaWVyLCBUeXBlOjpXaW5kb3cpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudC5oCmluZGV4IDgzYzgwZTI4MDdiLi5jYjZlNzBiN2Y5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRv
d0NsaWVudC5oCkBAIC0zNiw5ICszNiw5IEBAIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKIAogY2xh
c3MgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudCBmaW5hbCA6IHB1YmxpYyBTZXJ2aWNlV29ya2Vy
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJXaW5kb3dDbGll
bnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorICAgIHN0YXRpYyBS
ZWY8U2VydmljZVdvcmtlcldpbmRvd0NsaWVudD4gY3JlYXRlKFJlZjxDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVpbnQ2NF90IGlkZW50
aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50KGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Vy
dmljZVdvcmtlcldpbmRvd0NsaWVudChXVEZNb3ZlKGNvbm5lY3Rpb24pLCBjb250ZXh0LCBpZGVu
dGlmaWVyKSk7CiAgICAgfQogCiAgICAgVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSgp
IGNvbnN0OwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBuYXZpZ2F0ZShjb25z
dCBTdHJpbmcmIHVybCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKIHByaXZhdGU6Ci0gICAg
ZXhwbGljaXQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Jik7CisgICAgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudChSZWY8Q29ubmVjdGlvbj4mJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIHVpbnQ2NF90IGlkZW50aWZpZXIpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYzMmZjMmZiZDlmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsK
KworY2xhc3MgU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24+IHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIH5TZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbigpIHsgfQorCisgICAgdmly
dHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFJlZjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VPcmlnaW4pID0gMDsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwCmluZGV4IGNmNzhlOTE5MDJiLi45YmFkMTg5YWI0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTMyLDggKzMyLDEwIEBACiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCiAjaW5jbHVkZSAiRXh0ZW5kYWJsZU1l
c3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0
Y2guaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHku
aCIKICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KQEAgLTk5LDEyICsxMDEsMTMgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpwb3N0
RmV0Y2hUYXNrKFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiBjbGllbnQKICAgICB9
LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5PiYmIGNoYW5uZWxzLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQg
U2VydmljZVdvcmtlclRocmVhZDo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZShSZWY8U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24+JiYgY2xpZW50Q29ubmVjdGlvbiwg
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+JiYgY2hhbm5lbHMsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewotICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2sgdGFzayhbY2hhbm5lbHMgPSBXVEZNb3ZlKGNoYW5uZWxzKSwgbWVzc2FnZSA9
IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiA9IHNvdXJjZU9yaWdpbi5pc29sYXRlZENv
cHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgdGFzayhbY2xpZW50Q29ubmVjdGlvbiA9IFdURk1v
dmUoY2xpZW50Q29ubmVjdGlvbiksIGNoYW5uZWxzID0gV1RGTW92ZShjaGFubmVscyksIG1lc3Nh
Z2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4gPSBz
b3VyY2VPcmlnaW4uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0g
ZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgYXV0
byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSwgV1RGTW92ZShjaGFubmVscykpOwotICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUuZGlzcGF0Y2hFdmVudChFeHRlbmRhYmxlTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShw
b3J0cyksIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbikpOworICAgICAgICBFeHRlbmRh
YmxlTWVzc2FnZUV2ZW50U291cmNlIHNvdXJjZSA9IFJlZlB0cjxTZXJ2aWNlV29ya2VyQ2xpZW50
PiB7IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6OmNyZWF0ZShXVEZNb3ZlKGNsaWVudENvbm5l
Y3Rpb24pLCBjb250ZXh0LCBzb3VyY2VJZGVudGlmaWVyKSB9OworICAgICAgICBzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChFeHRlbmRhYmxlTWVzc2FnZUV2ZW50OjpjcmVh
dGUoV1RGTW92ZShwb3J0cyksIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgeyB9LCBX
VEZNb3ZlKHNvdXJjZSkpKTsKICAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVh
ZCgpLndvcmtlck9iamVjdFByb3h5KCkuY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KHNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgfSk7CiAg
ICAgcnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oCmluZGV4IDMzNzMxMzljMmI1Li5iMWNlOGU2MTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnM7CiBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWw7CiBjbGFzcyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CiBjbGFzcyBXb3JrZXJMb2FkZXJQcm94eTsKK2NsYXNzIFNlcnZpY2VXb3JrZXJD
bGllbnRDb25uZWN0aW9uOwogY2xhc3MgV29ya2VyT2JqZWN0UHJveHk7CiBzdHJ1Y3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOwogCkBAIC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBXb3Jr
ZXJPYmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtl
ck9iamVjdFByb3h5OyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RGZXRjaFRhc2so
UmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgRmV0
Y2hPcHRpb25zJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZShSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBzdGQ6OnVu
aXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+JiYsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUoUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uPiYmLCBSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+JiYsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKTsKIAogcHJvdGVjdGVkOgogICAgIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gY3Jl
YXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3ksIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGlt
ZU9yaWdpbiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCmlu
ZGV4IDhlOTNjNWUwNmM5Li4zZDgxOTczYzk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcApA
QCAtMjgsNyArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250YWluZXIuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Sm9iRGF0YS5oIgogCkBAIC0xMDksNiArMTEyLDM1IEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9u
OjpzdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIpCiAgICAg
am9iLT5zdGFydFNjcmlwdEZldGNoKCk7CiB9CiAKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVy
LCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIC8vIEZJWE1FOiBj
bGllbnRJZGVudGlmaWVyIGNhbiBvbmx5IGlkZW50aWZ5IGEgRG9jdW1lbnQgYXQgdGhlIG1vbWVu
dC4KKyAgICBhdXRvKiBkZXN0aW5hdGlvbkRvY3VtZW50ID0gRG9jdW1lbnQ6OmFsbERvY3VtZW50
cygpLmdldChjbGllbnRJZGVudGlmaWVyKTsKKyAgICBpZiAoIWRlc3RpbmF0aW9uRG9jdW1lbnQp
IHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgZmluZCBjbGllbnQgZG9jdW1lbnQg
d2l0aCB0aGUgZ2l2ZW4gaWRlbnRpZmllciIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byogY29udGFpbmVyID0gZGVzdGluYXRpb25Eb2N1bWVudC0+c2VydmljZVdvcmtlckNv
bnRhaW5lcigpOworICAgIGlmICghY29udGFpbmVyKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygi
Q291bGQgbm90IGZpbmQgc2VydmljZSB3b3JrZXIgY29udGFpbmVyIGZvciBjbGllbnQgZG9jdW1l
bnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBQYXNzIGluIHBv
cnRzLgorICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKworICAgIHN0ZDo6
b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiBzb3VyY2U7CisgICAgaWYgKGRlc3RpbmF0aW9u
RG9jdW1lbnQtPnNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIoKSA9PSBzb3VyY2VJZGVu
dGlmaWVyKSB7CisgICAgICAgIEFTU0VSVChjb250YWluZXItPmNvbnRyb2xsZXIoKS0+aWRlbnRp
ZmllcigpID09IHNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBzb3VyY2UgPSBNZXNzYWdlRXZl
bnRTb3VyY2UgeyBSZWZQdHI8U2VydmljZVdvcmtlcj4geyBjb250YWluZXItPmNvbnRyb2xsZXIo
KSB9IH07CisgICAgfSBlbHNlCisgICAgICAgIHNvdXJjZSA9IE1lc3NhZ2VFdmVudFNvdXJjZSB7
IFJlZlB0cjxTZXJ2aWNlV29ya2VyPiB7IFNlcnZpY2VXb3JrZXI6OmNyZWF0ZSgqZGVzdGluYXRp
b25Eb2N1bWVudCwgc291cmNlSWRlbnRpZmllcikgfSB9OworCisgICAgYXV0byBtZXNzYWdlRXZl
bnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgV1RGTW92ZShtZXNzYWdl
KSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUoc291cmNlKSk7CisgICAgY29udGFpbmVyLT5k
aXNwYXRjaEV2ZW50KG1lc3NhZ2VFdmVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmlu
ZGV4IDUwOGE1OGE0OWYyLi44ZDQ3YzE1NDg0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC00
OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJK
b2ImKTsKICAgICB2b2lkIGZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYs
IGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VPcmlnaW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc291cmNlKSA9IDA7
CiAKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJikgY29uc3QgPSAwOwpAQCAtNTksNiArNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKHVpbnQ2
NF90IGpvYklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKHVp
bnQ2NF90IGpvYklkZW50aWZpZXIsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcih1aW50NjRfdCBqb2JJ
ZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyQ2xpZW50KHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VPcmlnaW4pOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVs
ZUpvYkluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBlOWJjYjMyNTM0Mi4uYjQwODI1Yzgx
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xMDgsOSAr
MTA4LDkgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3Qg
ZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWMKICAgICBzZW5kVG9Db250ZXh0UHJvY2Vz
cyhNZXNzYWdlczo6U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpTdGFydEZldGNoKGlkZW50
aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVz
dCwgb3B0aW9ucykpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewotICAgIHNlbmRUb0NvbnRleHRQcm9j
ZXNzKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OlBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoaWRlbnRpZmllcigpLCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgbWVzc2FnZSwgc291cmNlT3JpZ2luKSk7CisgICAgc2VuZFRvQ29udGV4dFByb2Nlc3Mo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6UG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZShpZGVudGlmaWVyKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pKTsKIH0KIAogdm9pZCBX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IGZl
dGNoSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMzgs
NiArMTM4LDExIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWROb3RIYW5kbGVGZXRj
aCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCiAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBm
ZXRjaElkZW50aWZpZXIpOwogfQogCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0X3QgY2xpZW50SWRlbnRpZmllciwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V0NsaWVudENvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50IHsgY2xp
ZW50SWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luIH0p
OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtX2NvbnRleHRD
b25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDI5MjZl
ODNlNDMxLi5lMjViMmQxOTRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsRmV0Y2godWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZUZldGNoKHVpbnQ2NF90
IGZldGNoSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
Q2xpZW50KHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VPcmlnaW4pOworCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudCBTV1NlcnZlcjo6Q29ubmVj
dGlvbiAoTWVzc2FnZXMgdG8gdGhlIGNsaWVudCBXZWJQcm9jZXNzKQogICAgIHZvaWQgcmVqZWN0
Sm9iSW5DbGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YSYpIGZpbmFsOwpAQCAtNjYsNyArNjgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBz
dGFydEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OkZldGNoT3B0aW9ucyYpOwogCi0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAg
ICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwg
dWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwog
CiAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGNvbnRleHQgV2ViUHJvY2VzcwogICAgIHZvaWQg
c3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCmluZGV4IDNiMjA0NWM2NDQ0Li41OWY3ZTgyNTUxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yOCw3
ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyQ29ubmVjdGlvbiB7CiAgICAgRmluaXNo
RmV0Y2hpbmdTY3JpcHRJblNlcnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNo
UmVzdWx0IHJlc3VsdCkKIAogICAgIFN0YXJ0RmV0Y2godWludDY0X3QgaWRlbnRpZmllciwgdWlu
dDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9wdGlvbnMpCi0gICAgUG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIFN0cmluZyBzb3VyY2VPcmlnaW4p
CisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIHVpbnQ2NF90
IHNvdXJjZUlkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVByb2Nlc3MuY3BwCmluZGV4IDg3NjRjZDA3MDJkLi5hNDAyMGRlNDcyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKQEAgLTQz
NSw2ICs0MzUsMTIgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoRmV0Y2godWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF8KICAgICAgICAgY29ubmVjdGlv
bi0+ZGlkRmluaXNoRmV0Y2goZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAordm9pZCBTdG9yYWdlUHJv
Y2Vzczo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoaW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgY2xpZW50SWRlbnRpZmllciwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dT
ZXJ2ZXJDb25uZWN0aW9ucy5nZXQoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAg
ICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjbGllbnRJZGVu
dGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOworfQorCiB2
b2lkIFN0b3JhZ2VQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZl
ckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX3N3U2VydmVyQ29ubmVj
dGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAppbmRleCBhYTg2NDViNzcxYy4uODAz
NjUwZGI3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFn
ZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9j
ZXNzLmgKQEAgLTEyNSw2ICsxMjUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoRmV0
Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllcik7CiAgICAgdm9pZCBkaWRGYWlsRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWROb3RI
YW5kbGVGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
ZmV0Y2hJZGVudGlmaWVyKTsKKworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQoaW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgY2xpZW50
SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBz
b3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5t
ZXNzYWdlcy5pbgppbmRleCAzMzkyYWY3MTVkMS4uMDc0MmM1MzM1YjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtNDYsNSArNDYsNiBAQCBtZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciB7CiAgICAgRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSkKICAgICBEaWRSZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2NF90IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIElQQzo6
RGF0YVJlZmVyZW5jZSBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZEZp
bmlzaEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBm
ZXRjaElkZW50aWZpZXIpCisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGNsaWVudElkZW50aWZp
ZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVy
LCBTdHJpbmcgc291cmNlT3JpZ2luKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5NzFmYmRlN2YzNC4uYWM1OTFlMWRk
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTM3OCw2ICsxMzc4LDggQEAKIAkJODMyRUQxOEMxRTJGRTE1NzAwNkJBNjRBIC8qIFBl
ckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkVEMThBMUUyRkUxM0IwMDZCQTY0QSAvKiBQZXJBY3Rp
dml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmggKi87IH07CiAJCTgzNEIyNTBGMUE4MzFBOEQwMENG
QjE1MCAvKiBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCMjUwRTFBODMxQThEMDBDRkIxNTAgLyogTmV0d29y
a0NhY2hlRmlsZVN5c3RlbS5oICovOyB9OwogCQk4MzRCMjUxMjFBODQyQzg3MDBDRkIxNTAgLyog
TmV0d29ya0NhY2hlU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM0QjI1MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuaCAqLzsgfTsKKwkJODM1NzMxQzExRkEwRjBGODAwODVGNEQzIC8qIFdlYlNlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzNTczMUMwMUZBMEYwRUQwMDg1RjREMyAvKiBXZWJTZXJ2aWNl
V29ya2VyQ2xpZW50Q29ubmVjdGlvbi5jcHAgKi87IH07CisJCTgzNTczMUMyMUZBMEYwRjgwMDg1
RjREMyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM1NzMxQkYxRkEwRjBFQzAwODVGNEQz
IC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggKi87IH07CiAJCTgzNjAzNDlG
MUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2MDM0OUQxQUNCMzRENjAw
NjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi87IH07CiAJCTgzNjAzNEEw
MUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNjAzNDlFMUFDQjM0RDYwMDYy
NjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCAqLzsgfTsKIAkJODM2RUVCODAxQkU5
RUM5RTAwNkI0QjgyIC8qIE5ldHdvcmtMb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2RUVCN0YxQkU5RUM5RTAwNkI0QjgyIC8qIE5ldHdv
cmtMb2FkTWFjLm1tICovOyB9OwpAQCAtMzc2NCw2ICszNzY2LDkgQEAKIAkJODMyRUQxOEExRTJG
RTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3RhdGVDUFVVc2FnZVNhbXBsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzRCMjUwRTFBODMxQThEMDBDRkIx
NTAgLyogTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzNEIyNTEwMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZVN0YXRpc3Rp
Y3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM1NzMxQkUxRkEwRjBFQzAwODVG
NEQzIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzNTczMUJGMUZBMEYwRUMwMDg1RjREMyAvKiBX
ZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4MzU3MzFDMDFGQTBGMEVEMDA4NUY0RDMgLyogV2ViU2Vydmlj
ZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzNjAzNDlFMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU1FMaXRlRGF0YWJhc2VUcmFj
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNkVFQjdGMUJFOUVDOUUwMDZC
NEI4MiAvKiBOZXR3b3JrTG9hZE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IE5ldHdvcmtMb2FkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjIxNyw4ICs2MjIyLDExIEBACiAJCQkJNDEzMUYzQ0YxRjk2QTkzNjAwNTk5OTVBIC8qIFNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaC5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTMxRjNEMzFGOTZF
OTMxMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcCAqLywKIAkJCQk0
MTMxRjNEMjFGOTZFOTMwMDA1OTk5NUEgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgg
Ki8sCisJCQkJODM1NzMxQkUxRkEwRjBFQzAwODVGNEQzIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0
TWFuYWdlci5tZXNzYWdlcy5pbiAqLywKIAkJCQk0MTRERURDNTFGOUU0QkVDMDA0N0M0MEQgLyog
U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmNwcCAqLywKIAkJCQk0MTRERURDNDFGOUU0
QkVCMDA0N0M0MEQgLyogU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmggKi8sCisJCQkJ
ODM1NzMxQzAxRkEwRjBFRDAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0
aW9uLmNwcCAqLywKKwkJCQk4MzU3MzFCRjFGQTBGMEVDMDA4NUY0RDMgLyogV2ViU2VydmljZVdv
cmtlckNsaWVudENvbm5lY3Rpb24uaCAqLywKIAkJCQk0MTMxRjNFMDFGOTg3MTJDMDA1OTk5NUEg
LyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgKi8sCiAJCQkJNDE5QUNGOUIx
Rjk4MUQyNjAwOUYxQTgzIC8qIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuaCAqLywK
IAkJCQk1MUJFQjYyOTFGM0E1QUNEMDA1MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVy
LmNwcCAqLywKQEAgLTkwNzIsNiArOTA4MCw3IEBACiAJCQkJNDFEQzQ1OUYxRTNEQkRBNTAwQjEx
RjUxIC8qIFdlYlJUQ1NvY2tldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzNjFENzMxOTI3RkEz
NjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlEM0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk4MzU3MzFDMjFGQTBGMEY4MDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtl
ckNsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQkVCNjJDMUYzQTVBRDcw
MDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNDgzMkQ3MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE0ODMyRDExQTlCREMyRjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhUmVjb3JkLmggaW4g
SGVhZGVycyAqLywKQEAgLTEwNzI2LDYgKzEwNzM1LDcgQEAKIAkJCQk1MUYwNjBFMTE2NTQzMTg1
MDBGMzI4MUMgLyogV2ViUlRDU29ja2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDMzYxRDcyMTkyN0ZBMzYwMDM2QTU5RCAvKiBXZWJTY3JpcHRNZXNzYWdlSGFuZGxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEM0I5NDg0ODExRkY0QjY1MDAwMzJCMzkgLyogV2Vi
U2VhcmNoUG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgzNTczMUMxMUZBMEYwRjgw
MDg1RjREMyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0MTMxRjNFMjFGOTg4MDg0MDA1OTk5NUEgLyogV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUJFQjYyQjFGM0E1QUQ3MDA1
MDI5QjkgLyogV2ViU2VydmljZVdvcmtlclByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBNDgzMkQ2MUE5Q0RGOTYwMDhCNERGRSAvKiBXZWJzaXRlRGF0YS5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VX
b3JrZXJDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4IDk0ZDYzNGQ2MTJiLi45MWEz
ODQxNDFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2Vy
dmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVy
ZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJTZXJ2
aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRQcm92aWRlci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvRWRpdG9yQ2xpZW50Lmg+CkBAIC0xMzIsMTQgKzEzMywxNiBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6c3RhcnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcgogICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+dGhyZWFkKCku
cG9zdEZldGNoVGFzayhXVEZNb3ZlKGNsaWVudCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUo
b3B0aW9ucykpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6cG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lk
IFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2Fn
ZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
CiB7CiAgICAgYXV0byogc2VydmljZVdvcmtlciA9IG1fd29ya2VyTWFwLmdldChzZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyKQogICAgICAgICByZXR1cm47
CiAKKyAgICBhdXRvIGNsaWVudENvbm5lY3Rpb24gPSBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29u
bmVjdGlvbjo6Y3JlYXRlKG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MuY29weVJlZigpLCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc291cmNlSWRlbnRpZmllcik7CisKICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHBhc3MgdmFsaWQgTWVzc2FnZVBvcnRDaGFubmVscy4KLSAgICBzZXJ2
aWNlV29ya2VyLT50aHJlYWQoKS5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0b3IoKSksIG51bGxwdHIs
IHNvdXJjZU9yaWdpbik7CisgICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShXVEZNb3ZlKGNsaWVudENvbm5lY3Rpb24pLCBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KG1lc3NhZ2UudmVjdG9yKCkpLCBudWxscHRyLCBzb3Vy
Y2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29y
a2VyQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5oCmluZGV4IGUwZGI4MjY5ZTczLi45YTVlYmJjMzA3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsK
ICAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJik7
Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbik7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50
NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAKICAg
ICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzOwogICAg
IEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk+PiBtX3dvcmtlck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5tZXNz
YWdlcy5pbgppbmRleCA4NjY2M2Y4MWU3Yy4uOWY5NjRmYzgyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNl
V29ya2VyQ29udGV4dE1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAKIG1lc3Nh
Z2VzIC0+IFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlciB7CiAgICAgU3RhcnRTZXJ2aWNlV29y
a2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRleHREYXRhKQogICAgIFN0YXJ0RmV0Y2godWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmll
ciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9wdGlvbnMpCi0gICAg
UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIElQQzo6
RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZl
cmVuY2UgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgU3RyaW5nIHNvdXJjZU9y
aWdpbikKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCAzMDg2ZWE0ZmMwZS4u
NTk3NmJiZDE3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzUsNiArMzUsOCBAQAogI2lu
Y2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlNXT3JpZ2luVGFi
bGUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoUmVzdWx0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oPgpAQCAtNjgsOSArNzAsMTMgQEAgdm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3Qg
U2VydmljZVdvcmtlckZldGMKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OkZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIocmVzdWx0KSk7CiB9CiAKLXZvaWQgV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
KHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmIHNjcmlwdFZhbHVlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
KHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmIHNjcmlwdFZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzb3VyY2UpCiB7Ci0g
ICAgc2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFS
ZWZlcmVuY2UgeyBzY3JpcHRWYWx1ZS0+ZGF0YSgpIH0sIHNvdXJjZU9yaWdpbikpOworICAgIC8v
IEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgcG9zdGluZyBtZXNzYWdlcyBmcm9tIHdvcmtlcnMuCisg
ICAgaWYgKCFpczxEb2N1bWVudD4oc291cmNlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVu
Y2UgeyBzY3JpcHRWYWx1ZS0+ZGF0YSgpIH0sIGRvd25jYXN0PERvY3VtZW50Pihzb3VyY2UpLmlk
ZW50aWZpZXIoKSwgc291cmNlLm9yaWdpbigpKSk7CiB9CiAKIGJvb2wgV2ViU1dDbGllbnRDb25u
ZWN0aW9uOjpoYXNTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbiYgb3JpZ2luKSBjb25zdApAQCAtOTIsNiArOTgsMTEgQEAgUmVmPFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaD4gV2ViU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydEZldGNoKFdlYlNlcnZp
Y2VXb3JrZXIKICAgICByZXR1cm4gU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpjcmVhdGUocHJv
dmlkZXIsIFdURk1vdmUobG9hZGVyKSwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLmdldCgpLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKK3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIFNXQ2xpZW50Q29ubmVjdGlv
bjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY2xpZW50SWRlbnRpZmllciwgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChtZXNzYWdlLnZlY3RvcigpKSwgc291cmNlSWRlbnRp
Zmllciwgc291cmNlT3JpZ2luKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDFjZDI5Mjk5
ZTNmLi41ZTc3MGFiY2U3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2JEYXRhJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdElu
U2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpIGZpbmFsOwot
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pIGZpbmFsOworICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc291cmNlKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzY29u
bmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpAQCAtNjQsNiArNjQsOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpIGNvbnN0IGZpbmFsOwogICAgIFJlZjxTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2g+IHN0YXJ0RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiwgUmVm
PFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OkNhbGxiYWNrJiYpOwogCisgICAgdm9pZCBwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlU3Rv
cmFnZUpvYihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggMTE1NWQxYmFhZDguLjgxMzQzYmE3YTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMCw2ICszMCw3IEBA
IG1lc3NhZ2VzIC0+IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiB7CiAgICAgU3RhcnRTY3JpcHRGZXRj
aEZvclNlcnZlcih1aW50NjRfdCBqb2JJZGVudGlmaWVyKQogCiAgICAgU2V0U1dPcmlnaW5UYWJs
ZVNoYXJlZE1lbW9yeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSkKKyAgICBQ
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVy
LCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwg
U3RyaW5nIHNvdXJjZU9yaWdpbikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjk1NDVkOTM2Y2QKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyQ2xpZW50
Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRlICJXZWJTZXJ2
aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIgorCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJTdG9yYWdlUHJvY2Vzc01lc3Nh
Z2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KKyNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK1dlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uOjpXZWJTZXJ2
aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rp
b24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjbGllbnRJ
ZGVudGlmaWVyKQorICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikpCisgICAg
LCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KQorICAgICwgbV9jbGllbnRJZGVudGlmaWVyKGNsaWVudElkZW50aWZpZXIpCit7Cit9CisKK1dl
YlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uOjp+V2ViU2VydmljZVdvcmtlckNsaWVudENv
bm5lY3Rpb24oKQoreworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29ubmVjdGlvbiA9
IFdURk1vdmUobV9jb25uZWN0aW9uKV0geyB9KTsKK30KKwordm9pZCBXZWJTZXJ2aWNlV29ya2Vy
Q2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlN0b3JhZ2VQcm9jZXNzOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVu
dCB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIG1fY2xpZW50SWRlbnRpZmllciwgSVBD
OjpEYXRhUmVmZXJlbmNlIHsgbWVzc2FnZS0+ZGF0YSgpIH0sIHNvdXJjZUlkZW50aWZpZXIsIHNv
dXJjZU9yaWdpbiB9LCAwKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdv
cmtlckNsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjI0Y2IxZDI4OTc5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rp
b24uaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJD
bGllbnRDb25uZWN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorCituYW1lc3BhY2UgSVBD
IHsKK2NsYXNzIENvbm5lY3Rpb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbiBmaW5hbDogcHVibGljIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdl
YlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uPiBjcmVhdGUoUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWlu
dDY0X3QgY2xpZW50SWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbiks
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyKSk7CisgICAgfQor
CisgICAgfldlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uKCk7CisKKyAgICAvLyBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi4KKyAgICB2b2lkIHBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
JiYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VPcmlnaW4pIGZpbmFsOworCitwcml2YXRlOgorICAgIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRD
b25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyKTsKKworICAgIFJlZjxJUEM6
OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICB1aW50NjRfdCBtX3NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyOworICAgIHVpbnQ2NF90IG1fY2xpZW50SWRlbnRpZmllcjsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325019</attachid>
            <date>2017-10-26 09:33:47 -0700</date>
            <delta_ts>2017-10-26 16:25:38 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>178794_SW_Client_postMessage_wip.patch</filename>
            <type>text/plain</type>
            <size>62894</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVz
c2FnZS5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggN2QxMjIzNTQ3NWYuLmMwOTU1ZjgzNGE3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKLVBBU1M6IFN0YXR1cyBj
b2RlIGlzIDIwMAotUEFTUzogU3RhdHVzIHRleHQgaXMgV29ya2VyIHJlY2VpdmVkIHRoZSBtZXNz
YWdlIGV2ZW50LiBtZXNzYWdlRXZlbnQub3JpZ2luIHdhcyBodHRwczovLzEyNy4wLjAuMTo4NDQz
Ci1QQVNTOiBTb3VyY2UgaXMgU2VydmljZSB3b3JrZXIKK1BBU1M6IENsaWVudCByZWNlaXZlZCBt
ZXNzYWdlIGZyb20gc2VydmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MworUEFTUzogUmVjZWl2ZWQgbWVzc2FnZSAnTWVzc2FnZSAxJyBmcm9tIG9yaWdpbiAnaHR0cHM6
Ly8xMjcuMC4wLjE6ODQ0MycKK1BBU1M6IENsaWVudCByZWNlaXZlZCBtZXNzYWdlIGZyb20gc2Vy
dmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MworUEFTUzogUmVjZWl2
ZWQgbWVzc2FnZSAnTWVzc2FnZSAyJyBmcm9tIG9yaWdpbiAnaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MycKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCmluZGV4IDg0Mzk1YjJhNmQzLi45NDhjODI0
OTQ2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLXdvcmtlci5qcwpAQCAtMSwxNCArMSw0IEBACi1sZXQg
cmVzcG9uc2VUb1NlbmQgPSB7IHN0YXR1czogNDA0LCBzdGF0dXNUZXh0OiAiTm90IEZvdW5kIiB9
OwotCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKLSAgICBy
ZXNwb25zZVRvU2VuZCA9IGV2ZW50LmRhdGE7Ci0gICAgcmVzcG9uc2VUb1NlbmQuc3RhdHVzVGV4
dCArPSAiIG1lc3NhZ2VFdmVudC5vcmlnaW4gd2FzICIgKyBldmVudC5vcmlnaW47CisgICAgZXZl
bnQuc291cmNlLnBvc3RNZXNzYWdlKCJSZWNlaXZlZCBtZXNzYWdlICciICsgZXZlbnQuZGF0YSAr
ICInIGZyb20gb3JpZ2luICciICsgZXZlbnQub3JpZ2luICsgIiciKTsKIH0pOwogCi1zZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoImZldGNoIiwgKGV2ZW50KSA9PiB7Ci0gICAgaWYgKGV2ZW50LnJlcXVl
c3QudXJsLmluZGV4T2YoInRlc3QxIikgIT09IC0xKSB7Ci0gICAgICAgIGV2ZW50LnJlc3BvbmRX
aXRoKG5ldyBSZXNwb25zZShudWxsLCByZXNwb25zZVRvU2VuZCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGV2ZW50LnJlc3BvbmRXaXRoKFJlc3BvbnNlLmVycm9yKCkpOwotfSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmpzCmluZGV4IDk2YTQxY2EwODY4Li4xZjBhNjMwNDRiZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2UuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuanMK
QEAgLTEsMzcgKzEsMTQgQEAKLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGZpbmlzaFNXVGVzdCgp
OwotfQotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB0cnkgewotICAgICAgICBhd2Fp
dCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIiwgeyB9KTsKLQotICAgICAgICBuYXZpZ2F0
b3Iuc2VydmljZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKHsgc3RhdHVzOiAyMDAsIHN0
YXR1c1RleHQ6ICJXb3JrZXIgcmVjZWl2ZWQgdGhlIG1lc3NhZ2UgZXZlbnQuIiB9KTsKLQotICAg
ICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgidGVzdDEiKTsKLSAgICAgICAgaWYgKHJl
c3BvbnNlLnN0YXR1cyA9PSAyMDApCi0gICAgICAgICAgICBsb2coIlBBU1M6IFN0YXR1cyBjb2Rl
IGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2co
IkZBSUw6IFN0YXR1cyBjb2RlIGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotCi0gICAgICAgIGlm
IChyZXNwb25zZS5zdGF0dXNUZXh0LnN0YXJ0c1dpdGgoIldvcmtlciByZWNlaXZlZCB0aGUgbWVz
c2FnZSIpKQotICAgICAgICAgICAgbG9nKCJQQVNTOiBTdGF0dXMgdGV4dCBpcyAiICsgcmVzcG9u
c2Uuc3RhdHVzVGV4dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygiRkFJTDogU3Rh
dHVzIHRleHQgaXMgIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOwotCi0gICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICBsZXQgc291cmNlID0gaW50ZXJuYWxzLmZldGNo
UmVzcG9uc2VTb3VyY2UocmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKHNvdXJjZSA9PT0gIlNl
cnZpY2Ugd29ya2VyIikKLSAgICAgICAgICAgICAgICBsb2coIlBBU1M6IFNvdXJjZSBpcyAiICsg
c291cmNlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsb2coIkZBSUw6IFNv
dXJjZSBpcyAiICsgc291cmNlKTsKLSAgICAgICAgfQotICAgIH0gY2F0Y2goZSkgewotICAgICAg
ICBsb2coIkdvdCBleGNlcHRpb246ICIgKyBlKTsKLSAgICB9Ci0gICAgZmluaXNoU1dUZXN0KCk7
Ci19Ci0KLXRlc3QoKTsKK3ZhciBtZXNzYWdlTnVtYmVyID0gMTsKK25hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgeworICAg
IGxvZygiUEFTUzogQ2xpZW50IHJlY2VpdmVkIG1lc3NhZ2UgZnJvbSBzZXJ2aWNlIHdvcmtlciwg
b3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICBsb2coIlBBU1M6ICIgKyBldmVudC5kYXRh
KTsKKyAgICBpZiAobWVzc2FnZU51bWJlciA9PSAxKSB7CisgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgiTWVzc2FnZSAyIik7CisgICAgICAgIG1lc3NhZ2VOdW1iZXIrKzsKKyAgICB9
IGVsc2UKKyAgICAgICAgZmluaXNoU1dUZXN0KCk7Cit9KTsKKworbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdl
LXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBuYXZpZ2F0b3Iuc2Vydmlj
ZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKCJNZXNzYWdlIDEiKTsKK30pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk1
ZjRjMzRkODY5Li40Y2RmNWJiYmZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjMwOCw2ICsyMzA4LDcgQEAKIAkJODM3MkRC
MzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3MkRCMzAxQTY3ODBB
ODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzNzY1Rjk1MURBQzUyMkYwMEMw
NjUzNyAvKiBNb3VzZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM3NjVGOTQxREFDNTIxODAwQzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM3
OTY0Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlB
MDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLzsgfTsKKwkJODM3QTI0NTgx
RkEwRUNDODAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBMjQ1NjFGQTBFQ0M1
MDBGQjE1RTIgLyogU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzdBODAxMzFFMUUxMjczMDAw
MjZCOUYgLyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBMb2Nh
bGl6YWJsZS5zdHJpbmdzZGljdCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZDIC8q
IFZhbGlkYXRpb25CdWJibGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzdCN0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJs
ZUlPUy5tbSAqLzsgfTsKIAkJODM3RkIzNDUxRjlFQTA2RDAwRDBGQzMxIC8qIEV4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzN0ZCMzQwMUY5RUEwNjYwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50Lmgg
Ki87IH07CkBAIC05NjAwLDYgKzk2MDEsNyBAQAogCQk4Mzc2NUY5MzFEQUM1MjE4MDBDMDY1Mzcg
LyogTW91c2VFdmVudEluaXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vdXNlRXZlbnRJ
bml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3NjVGOTQxREFDNTIxODAw
QzA2NTM3IC8qIE1vdXNlRXZlbnRJbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1vdXNlRXZlbnRJbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNzk2
NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5t
bTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRpb25JT1Mu
bW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJODM3QTI0NTYxRkEwRUNDNTAwRkIx
NUUyIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMwMDAyNkI5RiAvKiBFbmdsaXNo
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5w
bGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL0xv
Y2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgz
N0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnViYmxlSU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3REZCMzQxRUJGRUE3MDAwNjAxMzg1IC8q
IEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRWxlbWVu
dENTU0lubGluZVN0eWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MjM3
LDYgKzE3MjM5LDcgQEAKIAkJNTE3Qzg3MDcxRjhFOEZGMjAwRUI4MDc2IC8qIGNvbnRleHQgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTgzN0EyNDU2MUZB
MEVDQzUwMEZCMTVFMiAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oICovLAogCQkJ
CTQxOUFDRjkwMUY5N0U3RDYwMDlGMUE4MyAvKiBTZXJ2aWNlV29ya2VyRmV0Y2guY3BwICovLAog
CQkJCTQxOUFDRjhFMUY5N0U3RDUwMDlGMUE4MyAvKiBTZXJ2aWNlV29ya2VyRmV0Y2guaCAqLywK
IAkJCQk1MTdDODcxMTFGOEVFNzJGMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVhZC5jcHAg
Ki8sCkBAIC0yODg5Nyw2ICsyODkwMCw3IEBACiAJCQkJMkQ5M0FFRTMxOURGNTY0MTAwMkE4NkMz
IC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3
NTVEMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NkVGMTQyRDFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJODM3QTI0NTgxRkEwRUNDODAwRkIxNUUyIC8qIFNlcnZpY2VXb3JrZXJD
bGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkVGMTQyQzFGOTdCN0Q4MDBD
MkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNjlG
REZDMUZBMTAyRTMwMEMxRkYxRiAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTFGMTc1NUYxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJDb250
YWluZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMWZjYWJm
N2E4MDMuLjMyYzEzODcyMGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQzNCw5ICs0
MzQsMTUgQEAgc3RhdGljIHZvaWQgcHJpbnROYXZpZ2F0aW9uRXJyb3JNZXNzYWdlKEZyYW1lKiBm
cmFtZSwgY29uc3QgVVJMJiBhY3RpdmVVUkwsIGNvbnMKIAogdWludDY0X3QgRG9jdW1lbnQ6OnNf
Z2xvYmFsVHJlZVZlcnNpb24gPSAwOwogCi1IYXNoU2V0PERvY3VtZW50Kj4mIERvY3VtZW50Ojph
bGxEb2N1bWVudHMoKQorc3RhdGljIERvY3VtZW50OjpJZGVudGlmaWVyIGdlbmVyYXRlRG9jdW1l
bnRJZGVudGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxEb2N1
bWVudCo+PiBkb2N1bWVudHM7CisgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIgPSAwOwor
ICAgIHJldHVybiArK2lkZW50aWZpZXI7Cit9CisKK2F1dG8gRG9jdW1lbnQ6OmFsbERvY3VtZW50
cygpIC0+IEhhc2hNYXA8SWRlbnRpZmllciwgRG9jdW1lbnQqPiYKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaE1hcDxJZGVudGlmaWVyLCBEb2N1bWVudCo+PiBkb2N1bWVudHM7CiAg
ICAgcmV0dXJuIGRvY3VtZW50czsKIH0KIApAQCAtNDk2LDggKzUwMiw5IEBAIERvY3VtZW50OjpE
b2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENs
YXNzZXMsIHVuc2lnCiAgICAgLCBtX2lzU3ludGhlc2l6ZWQoY29uc3RydWN0aW9uRmxhZ3MgJiBT
eW50aGVzaXplZCkKICAgICAsIG1faXNOb25SZW5kZXJlZFBsYWNlaG9sZGVyKGNvbnN0cnVjdGlv
bkZsYWdzICYgTm9uUmVuZGVyZWRQbGFjZWhvbGRlcikKICAgICAsIG1fb3JpZW50YXRpb25Ob3Rp
ZmllcihjdXJyZW50T3JpZW50YXRpb24oZnJhbWUpKQorICAgICwgbV9pZGVudGlmaWVyKGdlbmVy
YXRlRG9jdW1lbnRJZGVudGlmaWVyKCkpCiB7Ci0gICAgYWxsRG9jdW1lbnRzKCkuYWRkKHRoaXMp
OworICAgIGFsbERvY3VtZW50cygpLmFkZChtX2lkZW50aWZpZXIsIHRoaXMpOwogCiAgICAgLy8g
V2UgZGVwZW5kIG9uIHRoZSB1cmwgZ2V0dGluZyBpbW1lZGlhdGVseSBzZXQgaW4gc3ViZnJhbWVz
LCBidXQgd2UKICAgICAvLyBhbHNvIGRlcGVuZCBvbiB0aGUgdXJsIE5PVCBnZXR0aW5nIGltbWVk
aWF0ZWx5IHNldCBpbiBvcGVuZWQgd2luZG93cy4KQEAgLTU0Nyw3ICs1NTQsOCBAQCBSZWY8RG9j
dW1lbnQ+IERvY3VtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGNvbnRleHREb2N1bWVudCkKIAogRG9j
dW1lbnQ6On5Eb2N1bWVudCgpCiB7Ci0gICAgYWxsRG9jdW1lbnRzKCkucmVtb3ZlKHRoaXMpOwor
ICAgIGJvb2wgd2FzUmVtb3ZlZCA9IGFsbERvY3VtZW50cygpLnJlbW92ZShtX2lkZW50aWZpZXIp
OworICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7CiAKICAgICBBU1NF
UlQoIXJlbmRlclZpZXcoKSk7CiAgICAgQVNTRVJUKG1fcGFnZUNhY2hlU3RhdGUgIT0gSW5QYWdl
Q2FjaGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA0ODgyY2I1ZWU0Ny4uOTEwZTFjMGFlNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNDcsNyArMzQ3LDkgQEAgcHVibGljOgogCiAgICAg
dm9pZCByZW1vdmVkTGFzdFJlZigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hT
ZXQ8RG9jdW1lbnQqPiYgYWxsRG9jdW1lbnRzKCk7CisgICAgdXNpbmcgSWRlbnRpZmllciA9IHVp
bnQ2NF90OworICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoTWFwPElkZW50aWZpZXIs
IERvY3VtZW50Kj4mIGFsbERvY3VtZW50cygpOwogCiAgICAgTWVkaWFRdWVyeU1hdGNoZXImIG1l
ZGlhUXVlcnlNYXRjaGVyKCk7CiAKQEAgLTE4MzAsNiArMTgzMiw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2dyYW50U3RvcmFnZUFjY2Vzc092ZXJyaWRlIHsgZmFsc2UgfTsKIAogICAgIFJlZlB0
cjxEb2N1bWVudFRpbWVsaW5lPiBtX3RpbWVsaW5lOworICAgIElkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwogfTsKIAogRWxlbWVudCogZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1l
bnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApp
bmRleCA5MmU5MDU5YjlhMC4uMTNiMWRiNGI1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJK
U0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNs
dWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIk5v
RXZlbnREaXNwYXRjaEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIlB1YmxpY1VSTE1hbmFnZXIuaCIK
ICNpbmNsdWRlICJSZWplY3RlZFByb21pc2VUcmFja2VyLmgiCkBAIC00NSw2ICs0Niw3IEBACiAj
aW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
Ildvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAjaW5j
bHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgpAQCAtNTI1LDQgKzUyNywxOCBA
QCBKU0M6OkV4ZWNTdGF0ZSogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZXhlY1N0YXRlKCkKICAg
ICByZXR1cm4gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNjb3Bl
KTsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK1NlcnZpY2VXb3JrZXJDb250YWlu
ZXIqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNlcnZpY2VXb3JrZXJDb250YWluZXIoKQorewor
ICAgIE5hdmlnYXRvckJhc2UqIG5hdmlnYXRvciA9IG51bGxwdHI7CisgICAgaWYgKGlzPERvY3Vt
ZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvd25jYXN0PERvY3Vt
ZW50PigqdGhpcykuZG9tV2luZG93KCkpCisgICAgICAgICAgICBuYXZpZ2F0b3IgPSB3aW5kb3ct
Pm5hdmlnYXRvcigpOworICAgIH0gZWxzZQorICAgICAgICBuYXZpZ2F0b3IgPSAmZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5uYXZpZ2F0b3IoKTsKKworICAgIHJldHVybiBuYXZp
Z2F0b3IgPyBuYXZpZ2F0b3ItPnNlcnZpY2VXb3JrZXIoKSA6IG51bGxwdHI7Cit9CisjZW5kaWYK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgKaW5kZXggMjY2ZjQ5YWVlYzAuLjUyMThiZTg1MjMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTY4LDYgKzY4LDEwIEBA
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBVUkw7
CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitjbGFzcyBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOworI2VuZGlmCisKIG5hbWVzcGFjZSBJREJDbGllbnQgewogY2xhc3MgSURCQ29ubmVjdGlv
blByb3h5OwogfQpAQCAtMjM0LDYgKzIzOCw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgdWludDY0X3Qgc2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7IH0KICAgICB2b2lkIHNl
dFNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIodWludDY0X3QgaWRlbnRpZmllcikgeyBt
X3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorCisgICAgU2VydmljZVdv
cmtlckNvbnRhaW5lciogc2VydmljZVdvcmtlckNvbnRhaW5lcigpOwogI2VuZGlmCiAKIHByb3Rl
Y3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCmluZGV4IDdhYjA5MjQzNGJm
Li4zY2IzZGRmYmEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxl
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC02
NSw3ICs2NSw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VOb25jcml0aWNhbE1lbW9yeSgpCiAKICAg
ICBjbGVhcldpZHRoQ2FjaGVzKCk7CiAKLSAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1l
bnQ6OmFsbERvY3VtZW50cygpKQorICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6
YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpCiAgICAgICAgIGRvY3VtZW50LT5jbGVhclNlbGVjdG9y
UXVlcnlDYWNoZSgpOwogCiAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnBydW5lRGVhZFJl
c291cmNlc1RvU2l6ZSgwKTsKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIHZvaWQgcmVsZWFzZUNy
aXRpY2FsTWVtb3J5KFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKQogCiAgICAgQ1NTVmFsdWVQb29s
OjpzaW5nbGV0b24oKS5kcmFpbigpOwogCi0gICAgZm9yIChhdXRvJiBkb2N1bWVudCA6IGNvcHlU
b1ZlY3Rvck9mPFJlZlB0cjxEb2N1bWVudD4+KERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkpIHsK
KyAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogY29weVRvVmVjdG9yT2Y8UmVmUHRyPERvY3VtZW50
Pj4oRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLnZhbHVlcygpKSkgewogICAgICAgICBkb2N1bWVu
dC0+c3R5bGVTY29wZSgpLmNsZWFyUmVzb2x2ZXIoKTsKICAgICAgICAgZG9jdW1lbnQtPmZvbnRT
ZWxlY3RvcigpLmVtcHR5Q2FjaGVzKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcAppbmRleCA1MDE2YTA2ZTIwNC4uODJjNGU1NzY0ZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xOTQ1LDcgKzE5NDUsNyBA
QCB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlUmFyZURhdGEoKQogCiB2b2lkIHByaW50UmVuZGVy
VHJlZUZvckxpdmVEb2N1bWVudHMoKQogewotICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQg
OiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3Vt
ZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLnZhbHVlcygpKSB7CiAgICAgICAgIGlmICgh
ZG9jdW1lbnQtPnJlbmRlclZpZXcoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBp
ZiAoZG9jdW1lbnQtPmZyYW1lKCkgJiYgZG9jdW1lbnQtPmZyYW1lKCktPmlzTWFpbkZyYW1lKCkp
CkBAIC0xOTU3LDcgKzE5NTcsNyBAQCB2b2lkIHByaW50UmVuZGVyVHJlZUZvckxpdmVEb2N1bWVu
dHMoKQogCiB2b2lkIHByaW50TGF5ZXJUcmVlRm9yTGl2ZURvY3VtZW50cygpCiB7Ci0gICAgZm9y
IChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkgeworICAg
IGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFs
dWVzKCkpIHsKICAgICAgICAgaWYgKCFkb2N1bWVudC0+cmVuZGVyVmlldygpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIGlmIChkb2N1bWVudC0+ZnJhbWUoKSAmJiBkb2N1bWVudC0+
ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAKaW5kZXggYTkxNjA0NWU0YmEuLmYwN2Q0
YzFiNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dENvdmVyYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dENvdmVyYWdlLmNwcApAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRpYyB2b2lkIGNvbGxl
Y3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIsIEhhCiAKIHN0YXRpYyB2b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dz
Rm9yQ3VycmVudFBhZ2UoSGFzaFNldDxjb25zdCBSZW5kZXJCbG9ja0Zsb3cqPiYgbGVhZlJlbmRl
cmVycykKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERv
Y3VtZW50cygpKSB7CisgICAgZm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50Ojph
bGxEb2N1bWVudHMoKS52YWx1ZXMoKSkgewogICAgICAgICBpZiAoIWRvY3VtZW50LT5yZW5kZXJW
aWV3KCkgfHwgZG9jdW1lbnQtPnBhZ2VDYWNoZVN0YXRlKCkgIT0gRG9jdW1lbnQ6Ok5vdEluUGFn
ZUNhY2hlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghZG9jdW1lbnQtPmlz
SFRNTERvY3VtZW50KCkgJiYgIWRvY3VtZW50LT5pc1hIVE1MRG9jdW1lbnQoKSkKQEAgLTI3OSw3
ICsyNzksNyBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVyQmxvY2tGbG93
c0ZvckN1cnJlbnRQYWdlKEhhc2hTZXQ8Y29uc3QgUmVuZAogCiB2b2lkIHRvZ2dsZVNpbXBsZUxp
bmVMYXlvdXQoKQogewotICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9j
dW1lbnRzKCkpIHsKKyAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3Vt
ZW50cygpLnZhbHVlcygpKSB7CiAgICAgICAgIGF1dG8mIHNldHRpbmdzID0gZG9jdW1lbnQtPm11
dGFibGVTZXR0aW5ncygpOwogICAgICAgICBzZXR0aW5ncy5zZXRTaW1wbGVMaW5lTGF5b3V0RW5h
YmxlZCghc2V0dGluZ3Muc2ltcGxlTGluZUxheW91dEVuYWJsZWQoKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDVhMTE4MWU3OTIwLi4zOWFjOGI4NWI5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjE1NCw3ICsyMTU0LDcgQEAg
RXhjZXB0aW9uT3I8dW5zaWduZWQ+IEludGVybmFsczo6Y291bnRGaW5kTWF0Y2hlcyhjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IFZlY3QKIHVuc2lnbmVkIEludGVybmFsczo6bnVtYmVyT2ZMaXZl
Tm9kZXMoKSBjb25zdAogewogICAgIHVuc2lnbmVkIG5vZGVDb3VudCA9IDA7Ci0gICAgZm9yIChh
dXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkKKyAgICBmb3IgKGF1dG8q
IGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLnZhbHVlcygpKQogICAgICAgICBu
b2RlQ291bnQgKz0gZG9jdW1lbnQtPnJlZmVyZW5jaW5nTm9kZUNvdW50KCk7CiAgICAgcmV0dXJu
IG5vZGVDb3VudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyLmNwcAppbmRleCAxNzk2NGVhZDYwNC4uMGNmOWE4MTY0MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAKQEAgLTY5LDcg
KzY5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlcjo6cG9zdE1lc3NhZ2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlMKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVyYWwoIlBhc3NpbmcgTWVzc2FnZVBvcnQg
b2JqZWN0cyB0byBwb3N0TWVzc2FnZSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH07CiAKICAgICBh
dXRvJiBzd0Nvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNl
cnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihjb250ZXh0LnNlc3Npb25JRCgpKTsKLSAg
ICBzd0Nvbm5lY3Rpb24ucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShtX2lk
ZW50aWZpZXIsIG1lc3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnRleHQub3JpZ2luKCkp
OworICAgIHN3Q29ubmVjdGlvbi5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
KG1faWRlbnRpZmllciwgbWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCk7CiAK
ICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCmluZGV4IGNkMzAxZDA4ODIzLi44M2ZkNTA4
ODczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50LmNwcApAQCAtMjgsMTQgKzI4LDI3IEBACiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnQuaCIKIAorI2luY2x1ZGUg
Ik1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJD
bGllbnRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgi
CisjaW5jbHVkZSAiU2VydmljZVdvcmtlclRocmVhZC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVNlcnZpY2VXb3JrZXJDbGllbnQ6OlNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgVHlwZSB0eXBlKQorU2VydmljZVdvcmtlckNsaWVudDo6U2Vy
dmljZVdvcmtlckNsaWVudChSZWY8Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCB1aW50NjRfdCBpZGVudGlmaWVyLCBUeXBlIHR5cGUpCiAg
ICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmY29udGV4dCkKKyAgICAsIG1fY29ubmVj
dGlvbihXVEZNb3ZlKGNvbm5lY3Rpb24pKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
CiAgICAgLCBtX3R5cGUodHlwZSkKIHsKIH0KIAorU2VydmljZVdvcmtlckNsaWVudDo6flNlcnZp
Y2VXb3JrZXJDbGllbnQoKQoreworfQorCiBTdHJpbmcgU2VydmljZVdvcmtlckNsaWVudDo6dXJs
KCkgY29uc3QKIHsKICAgICByZXR1cm4geyB9OwpAQCAtNDgsMTQgKzYxLDMzIEBAIGF1dG8gU2Vy
dmljZVdvcmtlckNsaWVudDo6ZnJhbWVUeXBlKCkgY29uc3QgLT4gRnJhbWVUeXBlCiAKIFN0cmlu
ZyBTZXJ2aWNlV29ya2VyQ2xpZW50OjppZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAg
ICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV9pZGVudGlmaWVyKTsKIH0KIAotRXhjZXB0aW9uT3I8
dm9pZD4gU2VydmljZVdvcmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkpTVmFsdWUgbWVzc2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYm
IHRyYW5zZmVyKQorRXhjZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlckNsaWVudDo6cG9zdE1l
c3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNDOjpKU1ZhbHVlIG1lc3Nh
Z2VWYWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQog
ewotICAgIFVOVVNFRF9QQVJBTShtZXNzYWdlKTsKLSAgICBVTlVTRURfUEFSQU0odHJhbnNmZXIp
OwotICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFs
KCJjbGllbnQucG9zdE1lc3NhZ2UoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH07CisgICAgYXV0
byogZXhlY1N0YXRlID0gY29udGV4dC5leGVjU3RhdGUoKTsKKyAgICBBU1NFUlQoZXhlY1N0YXRl
KTsKKworICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKKyAgICBhdXRvIG1l
c3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZXhlY1N0YXRlLCBtZXNzYWdl
VmFsdWUsIFdURk1vdmUodHJhbnNmZXIpLCBwb3J0cywgU2VyaWFsaXphdGlvbkNvbnRleHQ6Oldv
cmtlclBvc3RNZXNzYWdlKTsKKyAgICBpZiAobWVzc2FnZS5oYXNFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIG1lc3NhZ2UucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgLy8gRGlzZW50YW5n
bGUgdGhlIHBvcnQgaW4gcHJlcGFyYXRpb24gZm9yIHNlbmRpbmcgaXQgdG8gdGhlIHJlbW90ZSBj
b250ZXh0LgorICAgIGF1dG8gY2hhbm5lbHNPckV4Y2VwdGlvbiA9IE1lc3NhZ2VQb3J0OjpkaXNl
bnRhbmdsZVBvcnRzKFdURk1vdmUocG9ydHMpKTsKKyAgICBpZiAoY2hhbm5lbHNPckV4Y2VwdGlv
bi5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGNoYW5uZWxzT3JFeGNlcHRpb24ucmVs
ZWFzZUV4Y2VwdGlvbigpOworCisgICAgLy8gRklYTUU6IFN1cHBvcnQgc2VuZGluZyB0aGUgY2hh
bm5lbHMuCisgICAgYXV0byBjaGFubmVscyA9IGNoYW5uZWxzT3JFeGNlcHRpb24ucmVsZWFzZVJl
dHVyblZhbHVlKCk7CisgICAgaWYgKGNoYW5uZWxzICYmICFjaGFubmVscy0+aXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiUGFzc2luZyBNZXNzYWdlUG9ydCBvYmplY3RzIHRvIHBvc3RNZXNzYWdlIGlzIG5vdCB5ZXQg
c3VwcG9ydGVkIikgfTsKKworICAgIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0g
ZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQoKS5pZGVu
dGlmaWVyKCk7CisgICAgbV9jb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChtZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgY29udGV4dC5vcmlnaW4oKSk7CisKKyAgICByZXR1cm4geyB9OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnQuaAppbmRleCA2OWI5MWUwOGEzOS4uODYzOTRkOTg4YTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnQuaApAQCAtMzQsMTQgKzM0LDE4IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAog
bmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU1ZhbHVlOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK2NsYXNz
IFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uOworCiBjbGFzcyBTZXJ2aWNlV29ya2VyQ2xp
ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckNsaWVudD4sIHB1YmxpYyBDb250
ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6CisgICAgdXNpbmcgQ29ubmVjdGlvbiA9
IFNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uOworCiAgICAgdXNpbmcgVHlwZSA9IFNlcnZp
Y2VXb3JrZXJDbGllbnRUeXBlOwogICAgIGVudW0gY2xhc3MgRnJhbWVUeXBlIHsKICAgICAgICAg
QXV4aWxpYXJ5LApAQCAtNTAsMjEgKzU0LDI1IEBAIHB1YmxpYzoKICAgICAgICAgTm9uZQogICAg
IH07CiAKLSAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnQ+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUeXBlIHR5cGUpCisgICAgc3RhdGljIFJlZjxTZXJ2
aWNlV29ya2VyQ2xpZW50PiBjcmVhdGUoUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdWludDY0X3QgaWRlbnRpZmllciwgVHlwZSB0
eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckNs
aWVudChjb250ZXh0LCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZp
Y2VXb3JrZXJDbGllbnQoV1RGTW92ZShjb25uZWN0aW9uKSwgY29udGV4dCwgaWRlbnRpZmllciwg
dHlwZSkpOwogICAgIH0KIAorICAgIH5TZXJ2aWNlV29ya2VyQ2xpZW50KCk7CisKICAgICBTdHJp
bmcgdXJsKCkgY29uc3Q7CiAgICAgRnJhbWVUeXBlIGZyYW1lVHlwZSgpIGNvbnN0OwogICAgIFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIFN0cmluZyBpZCgpIGNvbnN0
OwogCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gcG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkpTVmFsdWUgbWVzc2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYm
IHRyYW5zZmVyKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIFZlY3RvcjxKU0M6OlN0cm9uZzxK
U0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2Zlcik7CiAKIHByb3RlY3RlZDoKLSAgICBTZXJ2aWNlV29y
a2VyQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBUeXBlKTsKKyAgICBTZXJ2aWNlV29y
a2VyQ2xpZW50KFJlZjxDb25uZWN0aW9uPiYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdWlu
dDY0X3QgaWRlbnRpZmllciwgVHlwZSk7CiAKKyAgICBSZWY8Q29ubmVjdGlvbj4gbV9jb25uZWN0
aW9uOworICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBUeXBlIG1fdHlwZTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50LmlkbAppbmRleCBmN2U0YTk4ZGUyMC4uZDhhY2FjOTk4OTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwK
QEAgLTM1LDcgKzM1LDcgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgU2VydmljZVdvcmtlckNs
aWVudFR5cGUgdHlwZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOwogCi0g
ICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVz
c2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtd
KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRp
b25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVj
dD4gdHJhbnNmZXIgPSBbXSk7CiB9OwogCiBlbnVtIEZyYW1lVHlwZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbi5jcHAKaW5kZXggMjU5MTlhYjFhMzkuLmFiZmRhY2IzNzVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uY3BwCkBAIC0yOSwyNSArMjksMTEgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRl
ICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgiCiAjaW5j
bHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKLSNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgU2VydmljZVdvcmtlckNvbnRhaW5lciog
Y29udGFpbmVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KQotewotICAgIE5hdmlnYXRvckJhc2UqIG5hdmlnYXRvciA9IG51bGxwdHI7Ci0g
ICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkgewotICAgICAgICBpZiAoYXV0byogd2luZG93
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLmRvbVdpbmRvdygpKQotICAgICAgICAgICAg
bmF2aWdhdG9yID0gd2luZG93LT5uYXZpZ2F0b3IoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbmF2
aWdhdG9yID0gJmRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5uYXZpZ2F0b3Io
KTsKLQotICAgIHJldHVybiBuYXZpZ2F0b3IgPyBuYXZpZ2F0b3ItPnNlcnZpY2VXb3JrZXIoKSA6
IG51bGxwdHI7Ci19Ci0KIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGEmJiByZWdpc3RyYXRpb25EYXRhKQogICAgIDogQWN0aXZlRE9NT2Jq
ZWN0KCZjb250ZXh0KQogICAgICwgbV9yZWdpc3RyYXRpb25EYXRhKFdURk1vdmUocmVnaXN0cmF0
aW9uRGF0YSkpCkBAIC05NCw3ICs4MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bjo6dW5yZWdpc3RlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvKiBjb250YWluZXIgPSBjb250YWluZXJGb3JTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCpjb250ZXh0KTsKKyAgICBhdXRvKiBjb250YWluZXIgPSBjb250ZXh0
LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7CiAgICAgaWYgKCFjb250YWluZXIpIHsKICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVFcnJvcikpOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKaW5kZXggNDZkMjk5MGUyOTYuLjUyZTg2
NmNiY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwCkBAIC0zMiw4ICszMiw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU2VydmljZVdvcmtlcldpbmRvd0NsaWVudDo6U2VydmljZVdv
cmtlcldpbmRvd0NsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotICAgIDog
U2VydmljZVdvcmtlckNsaWVudChjb250ZXh0LCBUeXBlOjpXaW5kb3cpCitTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50OjpTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFJlZjxDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHVpbnQ2NF90IGlk
ZW50aWZpZXIpCisgICAgOiBTZXJ2aWNlV29ya2VyQ2xpZW50KFdURk1vdmUoY29ubmVjdGlvbiks
IGNvbnRleHQsIGlkZW50aWZpZXIsIFR5cGU6OldpbmRvdykKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50LmgKaW5kZXggODNjODBlMjgwN2IuLmNiNmU3MGI3ZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50
LmgKQEAgLTM2LDkgKzM2LDkgQEAgY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogCiBjbGFzcyBTZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50IGZpbmFsIDogcHVibGljIFNlcnZpY2VXb3JrZXJDbGllbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlcldpbmRvd0NsaWVudD4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxTZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50PiBjcmVhdGUoUmVmPENvbm5lY3Rpb24+JiYgY29ubmVjdGlv
biwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgdWludDY0X3QgaWRlbnRpZmllcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJXaW5kb3dD
bGllbnQoY29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50KFdURk1vdmUoY29ubmVjdGlvbiksIGNvbnRleHQsIGlkZW50aWZpZXIp
KTsKICAgICB9CiAKICAgICBWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7
CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5hdmlnYXRlKGNvbnN0IFN0cmlu
ZyYgdXJsLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNp
dCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAg
ICBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFJlZjxDb25uZWN0aW9uPiYmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgdWludDY0X3QgaWRlbnRpZmllcik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjMyZmMyZmJkOWYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOworCitjbGFz
cyBTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbj4geworcHVibGljOgorICAgIHZpcnR1
YWwgflNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoUmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbikgPSAwOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5jcHAKaW5kZXggY2Y3OGU5MTkwMmIuLjliYWQxODlhYjQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcApAQCAtMzIsOCArMzIsMTAgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCIKICNpbmNsdWRlICJFeHRlbmRhYmxlTWVzc2FnZUV2
ZW50LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaC5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJXaW5kb3dDbGllbnQuaCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpA
QCAtOTksMTIgKzEwMSwxMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBvc3RGZXRjaFRh
c2soUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVudAogICAgIH0sIFdvcmtl
clJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6
OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoUmVmPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiBtZXNzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJy
YXk+JiYgY2hhbm5lbHMsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQordm9pZCBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxT
ZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbj4mJiBjbGllbnRDb25uZWN0aW9uLCBSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9y
dENoYW5uZWxBcnJheT4mJiBjaGFubmVscywgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayB0YXNrKFtjaGFubmVscyA9IFdURk1vdmUoY2hhbm5lbHMpLCBtZXNzYWdlID0gV1RGTW92
ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luID0gc291cmNlT3JpZ2luLmlzb2xhdGVkQ29weSgpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayB0YXNrKFtjbGllbnRDb25uZWN0aW9uID0gV1RGTW92ZShjbGll
bnRDb25uZWN0aW9uKSwgY2hhbm5lbHMgPSBXVEZNb3ZlKGNoYW5uZWxzKSwgbWVzc2FnZSA9IFdU
Rk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiA9IHNvdXJjZU9y
aWdpbi5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11
dGFibGUgewogICAgICAgICBhdXRvJiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAgICBhdXRvIHBvcnRz
ID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBX
VEZNb3ZlKGNoYW5uZWxzKSk7Ci0gICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5kaXNw
YXRjaEV2ZW50KEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwg
V1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luKSk7CisgICAgICAgIEV4dGVuZGFibGVNZXNz
YWdlRXZlbnRTb3VyY2Ugc291cmNlID0gUmVmUHRyPFNlcnZpY2VXb3JrZXJDbGllbnQ+IHsgU2Vy
dmljZVdvcmtlcldpbmRvd0NsaWVudDo6Y3JlYXRlKFdURk1vdmUoY2xpZW50Q29ubmVjdGlvbiks
IGNvbnRleHQsIHNvdXJjZUlkZW50aWZpZXIpIH07CisgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5kaXNwYXRjaEV2ZW50KEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZN
b3ZlKHBvcnRzKSwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUo
c291cmNlKSkpOwogICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29y
a2VyT2JqZWN0UHJveHkoKS5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qoc2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKICAgICB9KTsKICAgICBydW5M
b29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5k
ZXggMzM3MzEzOWMyYjUuLmIxY2U4ZTYxMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBA
IC0zOSw2ICszOSw3IEBAIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
czsKIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTsKIGNsYXNzIFdvcmtlckxvYWRlclByb3h5OworY2xhc3MgU2VydmljZVdvcmtlckNsaWVudENv
bm5lY3Rpb247CiBjbGFzcyBXb3JrZXJPYmplY3RQcm94eTsKIHN0cnVjdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE7CiAKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAgIFdvcmtlck9iamVj
dFByb3h5JiB3b3JrZXJPYmplY3RQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2VyT2JqZWN0
UHJveHk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdEZldGNoVGFzayhSZWY8U2Vy
dmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBGZXRjaE9wdGlv
bnMmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZShSZWY8U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24+JiYsIFJlZjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eT4mJiwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4pOwogCiBwcm90ZWN0ZWQ6CiAgICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3Jr
ZXJHbG9iYWxTY29wZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwg
UmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2lu
LCBQQUw6OlNlc3Npb25JRCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggOGU5
M2M1ZTA2YzkuLjNkODE5NzNjOTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0yOCw3
ICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2
ZW50LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRhaW5lci5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRh
LmgiCiAKQEAgLTEwOSw2ICsxMTIsMzUgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0
U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIodWludDY0X3Qgam9iSWRlbnRpZmllcikKICAgICBqb2ItPnN0
YXJ0U2NyaXB0RmV0Y2goKTsKIH0KIAordm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIsIFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgLy8gRklYTUU6IGNsaWVudElk
ZW50aWZpZXIgY2FuIG9ubHkgaWRlbnRpZnkgYSBEb2N1bWVudCBhdCB0aGUgbW9tZW50LgorICAg
IGF1dG8qIGRlc3RpbmF0aW9uRG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkuZ2V0
KGNsaWVudElkZW50aWZpZXIpOworICAgIGlmICghZGVzdGluYXRpb25Eb2N1bWVudCkgeworICAg
ICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBmaW5kIGNsaWVudCBkb2N1bWVudCB3aXRoIHRo
ZSBnaXZlbiBpZGVudGlmaWVyIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
KiBjb250YWluZXIgPSBkZXN0aW5hdGlvbkRvY3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVy
KCk7CisgICAgaWYgKCFjb250YWluZXIpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBu
b3QgZmluZCBzZXJ2aWNlIHdvcmtlciBjb250YWluZXIgZm9yIGNsaWVudCBkb2N1bWVudCIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IFBhc3MgaW4gcG9ydHMuCisg
ICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOworCisgICAgc3RkOjpvcHRpb25h
bDxNZXNzYWdlRXZlbnRTb3VyY2U+IHNvdXJjZTsKKyAgICBpZiAoZGVzdGluYXRpb25Eb2N1bWVu
dC0+c2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcigpID09IHNvdXJjZUlkZW50aWZpZXIp
IHsKKyAgICAgICAgQVNTRVJUKGNvbnRhaW5lci0+Y29udHJvbGxlcigpLT5pZGVudGlmaWVyKCkg
PT0gc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIHNvdXJjZSA9IE1lc3NhZ2VFdmVudFNvdXJj
ZSB7IFJlZlB0cjxTZXJ2aWNlV29ya2VyPiB7IGNvbnRhaW5lci0+Y29udHJvbGxlcigpIH0gfTsK
KyAgICB9IGVsc2UKKyAgICAgICAgc291cmNlID0gTWVzc2FnZUV2ZW50U291cmNlIHsgUmVmUHRy
PFNlcnZpY2VXb3JrZXI+IHsgU2VydmljZVdvcmtlcjo6Y3JlYXRlKCpkZXN0aW5hdGlvbkRvY3Vt
ZW50LCBzb3VyY2VJZGVudGlmaWVyKSB9IH07CisKKyAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3Vy
Y2VPcmlnaW4sIHsgfSwgV1RGTW92ZShzb3VyY2UpKTsKKyAgICBjb250YWluZXItPmRpc3BhdGNo
RXZlbnQobWVzc2FnZUV2ZW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggNTA4
YTU4YTQ5ZjIuLjhkNDdjMTU0ODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYiYpOwog
ICAgIHZvaWQgZmluaXNoZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBmYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9i
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdp
bikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzb3VyY2UpID0gMDsKIAogICAg
IHZpcnR1YWwgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgaGFzU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmln
aW4mKSBjb25zdCA9IDA7CkBAIC01OSw2ICs1OSw3IEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIodWludDY0X3Qgam9i
SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB1bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIodWludDY0X3Qg
am9iSWRlbnRpZmllciwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZp
ZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQodWludDY0X3QgY2xpZW50SWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlSm9iSW5T
ZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IGU5YmNiMzI1MzQyLi5iNDA4MjVjODEzNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTEwOCw5ICsxMDgsOSBA
QCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpYwogICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXI6OlN0YXJ0RmV0Y2goaWRlbnRpZmllcigp
LCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRp
b25zKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKQordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0gICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlcjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZShpZGVudGlmaWVyKCksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBt
ZXNzYWdlLCBzb3VyY2VPcmlnaW4pKTsKKyAgICBzZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdl
czo6U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKGlkZW50aWZpZXIoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1lc3Nh
Z2UsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbikpOwogfQogCiB2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEzOCw2ICsxMzgs
MTEgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmRpZE5vdEhhbmRsZUZldGNoKHVpbnQ2
NF90IGZldGNoSWRlbnRpZmllcikKICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRl
bnRpZmllcik7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBjbGllbnRJZGVu
dGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4gfSk7Cit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZW5kVG9D
b250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fY29udGV4dENvbm5lY3Rp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggMjkyNmU4M2U0MzEu
LmUyNWIyZDE5NGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC01
Nyw2ICs1Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWxGZXRjaCh1aW50NjRfdCBmZXRj
aElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkTm90SGFuZGxlRmV0Y2godWludDY0X3QgZmV0Y2hJ
ZGVudGlmaWVyKTsKIAorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQo
dWludDY0X3QgY2xpZW50SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNz
YWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdp
bik7CisKIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChN
ZXNzYWdlcyB0byB0aGUgY2xpZW50IFdlYlByb2Nlc3MpCiAgICAgdm9pZCByZWplY3RKb2JJbkNs
aWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRh
JikgZmluYWw7CkBAIC02Niw3ICs2OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0RmV0
Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0
Y2hPcHRpb25zJik7CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQg
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRf
dCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAKICAgICAv
LyBNZXNzYWdlcyB0byB0aGUgU1cgY29udGV4dCBXZWJQcm9jZXNzCiAgICAgdm9pZCBzdGFydFNl
cnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KaW5kZXggM2IyMDQ1YzY0NDQuLjU5ZjdlODI1NTE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI4LDcgKzI4LDcg
QEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uIHsKICAgICBGaW5pc2hGZXRjaGlu
Z1NjcmlwdEluU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQg
cmVzdWx0KQogCiAgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBpZGVudGlmaWVyLCB1aW50NjRfdCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKLSAgICBQb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKKyAgICBQ
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgdWludDY0X3Qgc291cmNl
SWRlbnRpZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
UHJvY2Vzcy5jcHAKaW5kZXggODc2NGNkMDcwMmQuLmE0MDIwZGU0NzI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtNDM1LDYgKzQz
NSwxMiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0XwogICAgICAgICBjb25uZWN0aW9uLT5kaWRG
aW5pc2hGZXRjaChmZXRjaElkZW50aWZpZXIpOwogfQogCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBjbGllbnRJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKQoreworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNv
bm5lY3Rpb25zLmdldChzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIGNvbm5l
Y3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNsaWVudElkZW50aWZpZXIs
IG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7Cit9CisKIHZvaWQgU3Rv
cmFnZVByb2Nlc3M6OnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVj
dGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlQoIW1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5j
b250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmluZGV4IGFhODY0NWI3NzFjLi44MDM2NTBkYjcw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApA
QCAtMTI1LDYgKzEyNSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hGZXRjaCh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVy
KTsKICAgICB2b2lkIGRpZEZhaWxGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZUZl
dGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIpOworCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChp
bnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjbGllbnRJZGVudGlm
aWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKICNlbmRpZgogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IDMzOTJhZjcxNWQxLi4wNzQyYzUzMzViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00
Niw1ICs0Niw2IEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKQogICAgIERpZFJlY2VpdmVGZXRjaERhdGEodWludDY0X3Qgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgSVBDOjpEYXRhUmVm
ZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiAgICAgRGlkRmluaXNoRmV0
Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRl
bnRpZmllcikKKyAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgY2xpZW50SWRlbnRpZmllciwgSVBD
OjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIFN0cmlu
ZyBzb3VyY2VPcmlnaW4pCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk3MWZiZGU3ZjM0Li5hYzU5MWUxZGQ1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
Mzc4LDYgKzEzNzgsOCBAQAogCQk4MzJFRDE4QzFFMkZFMTU3MDA2QkE2NEEgLyogUGVyQWN0aXZp
dHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODMyRUQxOEExRTJGRTEzQjAwNkJBNjRBIC8qIFBlckFjdGl2aXR5U3Rh
dGVDUFVVc2FnZVNhbXBsZXIuaCAqLzsgfTsKIAkJODM0QjI1MEYxQTgzMUE4RDAwQ0ZCMTUwIC8q
IE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzNEIyNTBFMUE4MzFBOEQwMENGQjE1MCAvKiBOZXR3b3JrQ2FjaGVG
aWxlU3lzdGVtLmggKi87IH07CiAJCTgzNEIyNTEyMUE4NDJDODcwMENGQjE1MCAvKiBOZXR3b3Jr
Q2FjaGVTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzRCMjUxMDFBODQyQzg3MDBDRkIxNTAgLyogTmV0d29ya0NhY2hlU3RhdGlzdGlj
cy5oICovOyB9OworCQk4MzU3MzFDMTFGQTBGMEY4MDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtl
ckNsaWVudENvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODM1NzMxQzAxRkEwRjBFRDAwODVGNEQzIC8qIFdlYlNlcnZpY2VXb3JrZXJD
bGllbnRDb25uZWN0aW9uLmNwcCAqLzsgfTsKKwkJODM1NzMxQzIxRkEwRjBGODAwODVGNEQzIC8q
IFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzU3MzFCRjFGQTBGMEVDMDA4NUY0RDMgLyogV2Vi
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJODM2MDM0OUYxQUNCMzRE
NjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkg
LyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLzsgfTsKIAkJODM2MDM0QTAxQUNCMzRE
NjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM2MDM0OUUxQUNCMzRENjAwNjI2NTQ5IC8q
IFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oICovOyB9OwogCQk4MzZFRUI4MDFCRTlFQzlFMDA2
QjRCODIgLyogTmV0d29ya0xvYWRNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4MzZFRUI3RjFCRTlFQzlFMDA2QjRCODIgLyogTmV0d29ya0xvYWRN
YWMubW0gKi87IH07CkBAIC0zNzY0LDYgKzM3NjYsOSBAQAogCQk4MzJFRDE4QTFFMkZFMTNCMDA2
QkE2NEEgLyogUGVyQWN0aXZpdHlTdGF0ZUNQVVVzYWdlU2FtcGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQZXJBY3Rpdml0eVN0YXRlQ1BVVXNhZ2VTYW1wbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzNEIyNTBFMUE4MzFBOEQwMENGQjE1MCAvKiBO
ZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODM0QjI1MTAxQTg0MkM4NzAwQ0ZCMTUwIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlU3RhdGlzdGljcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzU3MzFCRTFGQTBGMEVDMDA4NUY0RDMgLyog
U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFNlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5tZXNzYWdlcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM1NzMxQkYxRkEwRjBFQzAwODVGNEQzIC8qIFdlYlNlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTgzNTczMUMwMUZBMEYwRUQwMDg1RjREMyAvKiBXZWJTZXJ2aWNlV29ya2Vy
Q2xpZW50Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTgzNjAzNDlEMUFDQjM0RDYwMDYyNjU0OSAvKiBXZWJTUUxpdGVEYXRhYmFz
ZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU1FM
aXRlRGF0YWJhc2VUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM2
MDM0OUUxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM2RUVCN0YxQkU5RUM5RTAwNkI0QjgyIC8q
IE5ldHdvcmtMb2FkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTmV0d29ya0xvYWRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MjE3
LDggKzYyMjIsMTEgQEAKIAkJCQk0MTMxRjNDRjFGOTZBOTM2MDA1OTk5NUEgLyogU2VydmljZVdv
cmtlckNsaWVudEZldGNoLm1lc3NhZ2VzLmluICovLAogCQkJCTQxMzFGM0QzMUY5NkU5MzEwMDU5
OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuY3BwICovLAogCQkJCTQxMzFGM0Qy
MUY5NkU5MzAwMDU5OTk1QSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaCAqLywKKwkJ
CQk4MzU3MzFCRTFGQTBGMEVDMDA4NUY0RDMgLyogU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2Vy
Lm1lc3NhZ2VzLmluICovLAogCQkJCTQxNERFREM1MUY5RTRCRUMwMDQ3QzQwRCAvKiBTZXJ2aWNl
V29ya2VyRnJhbWVMb2FkZXJDbGllbnQuY3BwICovLAogCQkJCTQxNERFREM0MUY5RTRCRUIwMDQ3
QzQwRCAvKiBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQuaCAqLywKKwkJCQk4MzU3MzFD
MDFGQTBGMEVEMDA4NUY0RDMgLyogV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3Bw
ICovLAorCQkJCTgzNTczMUJGMUZBMEYwRUMwMDg1RjREMyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xp
ZW50Q29ubmVjdGlvbi5oICovLAogCQkJCTQxMzFGM0UwMUY5ODcxMkMwMDU5OTk1QSAvKiBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCAqLywKIAkJCQk0MTlBQ0Y5QjFGOTgxRDI2
MDA5RjFBODMgLyogV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5oICovLAogCQkJCTUx
QkVCNjI5MUYzQTVBQ0QwMDUwMjlCOSAvKiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwICov
LApAQCAtOTA3Miw2ICs5MDgwLDcgQEAKIAkJCQk0MURDNDU5RjFFM0RCREE1MDBCMTFGNTEgLyog
V2ViUlRDU29ja2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzM2MUQ3MzE5MjdGQTM2MDAzNkE1
OUQgLyogV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUQzQjk0
ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICov
LAorCQkJCTgzNTczMUMyMUZBMEYwRjgwMDg1RjREMyAvKiBXZWJTZXJ2aWNlV29ya2VyQ2xpZW50
Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCRUI2MkMxRjNBNUFENzAwNTAyOUI5
IC8qIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0ODMy
RDcxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTQ4MzJEMTFBOUJEQzJGMDA4QjRERkUgLyogV2Vic2l0ZURhdGFSZWNvcmQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTA3MjYsNiArMTA3MzUsNyBAQAogCQkJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgx
QyAvKiBXZWJSVENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0MzNjFENzIxOTI3RkEzNjAwMzZBNTlEIC8qIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUQzQjk0ODQ4MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQ
b3B1cE1lbnUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODM1NzMxQzExRkEwRjBGODAwODVGNEQz
IC8qIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQxMzFGM0UyMUY5ODgwODQwMDU5OTk1QSAvKiBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQkVCNjJCMUYzQTVBRDcwMDUwMjlCOSAv
KiBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0ODMy
RDYxQTlDREY5NjAwOEI0REZFIC8qIFdlYnNpdGVEYXRhLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNv
bnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZp
Y2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggOTRkNjM0ZDYxMmIuLjkxYTM4NDE0MWMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29y
a2VyQ29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1NlcnZpY2VXb3JrZXJDb250ZXh0TWFuYWdlci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNp
bmNsdWRlICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0
b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYlNlcnZpY2VXb3Jr
ZXJDbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlNvY2tldFByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9FZGl0b3JDbGllbnQuaD4KQEAgLTEzMiwxNCArMTMzLDE2IEBAIHZvaWQgU2VydmljZVdv
cmtlckNvbnRleHRNYW5hZ2VyOjpzdGFydEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyCiAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT50aHJlYWQoKS5wb3N0RmV0
Y2hUYXNrKFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShvcHRpb25z
KSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRleHRNYW5hZ2VyOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50
NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKICAg
ICBhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJNYXAuZ2V0KHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKICAgICBpZiAoIXNlcnZpY2VXb3JrZXIpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGF1dG8gY2xpZW50Q29ubmVjdGlvbiA9IFdlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9u
OjpjcmVhdGUobV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy5jb3B5UmVmKCksIHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLCBzb3VyY2VJZGVudGlmaWVyKTsKKwogICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgcGFzcyB2YWxpZCBNZXNzYWdlUG9ydENoYW5uZWxzLgotICAgIHNlcnZpY2VXb3Jr
ZXItPnRocmVhZCgpLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjphZG9wdChtZXNzYWdlLnZlY3RvcigpKSwgbnVsbHB0ciwgc291cmNl
T3JpZ2luKTsKKyAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5wb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlKFdURk1vdmUoY2xpZW50Q29ubmVjdGlvbiksIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0b3IoKSksIG51bGxwdHIsIHNvdXJjZUlkZW50
aWZpZXIsIHNvdXJjZU9yaWdpbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJDb250
ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdv
cmtlckNvbnRleHRNYW5hZ2VyLmgKaW5kZXggZTBkYjgyNjllNzMuLjlhNWViYmMzMDczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2aWNlV29ya2VyQ29u
dGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9TZXJ2
aWNlV29ya2VyQ29udGV4dE1hbmFnZXIuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOwogICAgIHZv
aWQgc3RhcnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmKTsKLSAgICB2
b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNv
dXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKIAogICAgIFJlZjxJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3M7CiAgICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eT4+IG1f
d29ya2VyTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLm1lc3NhZ2VzLmlu
CmluZGV4IDg2NjYzZjgxZTdjLi45Zjk2NGZjODJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvU2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1NlcnZpY2VXb3JrZXJD
b250ZXh0TWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQAogbWVzc2FnZXMgLT4g
U2VydmljZVdvcmtlckNvbnRleHRNYW5hZ2VyIHsKICAgICBTdGFydFNlcnZpY2VXb3JrZXIodWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEpCiAgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50
NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKLSAgICBQb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVm
ZXJlbmNlIG1lc3NhZ2UsIFN0cmluZyBzb3VyY2VPcmlnaW4pCisgICAgUG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBt
ZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBTdHJpbmcgc291cmNlT3JpZ2luKQog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDMwODZlYTRmYzBlLi41OTc2YmJk
MTc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5UYWJsZS5oIgog
I2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlcnZpY2VXb3JrZXJKb2JEYXRhLmg+CkBAIC02OCw5ICs3MCwxMyBAQCB2b2lkIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNl
V29ya2VyRmV0YwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Rmlu
aXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihyZXN1bHQpKTsKIH0KIAotdm9pZCBXZWJTV0NsaWVu
dENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0
X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
c2NyaXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQordm9pZCBXZWJTV0NsaWVu
dENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0
X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
c2NyaXB0VmFsdWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNvdXJjZSkKIHsKLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5j
ZSB7IHNjcmlwdFZhbHVlLT5kYXRhKCkgfSwgc291cmNlT3JpZ2luKSk7CisgICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciBwb3N0aW5nIG1lc3NhZ2VzIGZyb20gd29ya2Vycy4KKyAgICBpZiAo
IWlzPERvY3VtZW50Pihzb3VyY2UpKQorICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHNj
cmlwdFZhbHVlLT5kYXRhKCkgfSwgZG93bmNhc3Q8RG9jdW1lbnQ+KHNvdXJjZSkuaWRlbnRpZmll
cigpLCBzb3VyY2Uub3JpZ2luKCkpKTsKIH0KIAogYm9vbCBXZWJTV0NsaWVudENvbm5lY3Rpb246
Omhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBvcmlnaW4pIGNvbnN0CkBAIC05Miw2ICs5OCwxMSBAQCBSZWY8U2VydmljZVdvcmtlckNsaWVu
dEZldGNoPiBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0RmV0Y2goV2ViU2VydmljZVdvcmtl
cgogICAgIHJldHVybiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OmNyZWF0ZShwcm92aWRlciwg
V1RGTW92ZShsb2FkZXIpLCBpZGVudGlmaWVyLCBtX2Nvbm5lY3Rpb24uZ2V0KCksIFdURk1vdmUo
Y2FsbGJhY2spKTsKIH0KIAordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjbGllbnRJZGVudGlmaWVyLCBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmFkb3B0KG1lc3NhZ2UudmVjdG9yKCkpLCBzb3VyY2VJZGVudGlmaWVyLCBz
b3VyY2VPcmlnaW4pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggMWNkMjkyOTllM2YuLjVl
NzcwYWJjZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckpvYkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIo
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoUmVzdWx0JikgZmluYWw7Ci0gICAgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBzb3VyY2UpIGZpbmFsOwogCiAgICAgdm9pZCBkaXNjb25uZWN0ZWRG
cm9tV2ViUHJvY2VzcygpOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC02NCw2ICs2NCw4IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luJikgY29uc3QgZmluYWw7CiAgICAgUmVmPFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaD4gc3RhcnRGZXRjaChXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXImLCBSZWY8V2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXI+JiYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6Q2FsbGJhY2smJik7CiAKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyQ2xpZW50KHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VPcmlnaW4pOworCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVTdG9yYWdlSm9i
KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAxMTU1ZDFiYWFkOC4uODEzNDNiYTdhMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMwLDYgKzMwLDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViU1dDbGllbnRDb25uZWN0aW9uIHsKICAgICBTdGFydFNjcmlwdEZldGNoRm9yU2Vy
dmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIpCiAKICAgICBTZXRTV09yaWdpblRhYmxlU2hhcmVk
TWVtb3J5KFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlKQorICAgIFBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIsIElQQzo6
RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBTdHJpbmcg
c291cmNlT3JpZ2luKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
ckNsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5iOTU0NWQ5MzZjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJDbGllbnRDb25uZWN0
aW9uLmNwcApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorI2luY2x1ZGUgIldlYlNlcnZpY2VXb3Jr
ZXJDbGllbnRDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzTWVzc2FnZXMuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb246OldlYlNlcnZpY2VXb3Jr
ZXJDbGllbnRDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgdWlu
dDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGNsaWVudElkZW50aWZp
ZXIpCisgICAgOiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKKyAgICAsIG1fc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCisgICAg
LCBtX2NsaWVudElkZW50aWZpZXIoY2xpZW50SWRlbnRpZmllcikKK3sKK30KKworV2ViU2Vydmlj
ZVdvcmtlckNsaWVudENvbm5lY3Rpb246On5XZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlv
bigpCit7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25uZWN0aW9uID0gV1RGTW92
ZShtX2Nvbm5lY3Rpb24pXSB7IH0pOworfQorCit2b2lkIFdlYlNlcnZpY2VXb3JrZXJDbGllbnRD
b25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U3RvcmFnZVByb2Nlc3M6OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50IHsgbV9z
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgbV9jbGllbnRJZGVudGlmaWVyLCBJUEM6OkRhdGFS
ZWZlcmVuY2UgeyBtZXNzYWdlLT5kYXRhKCkgfSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3Jp
Z2luIH0sIDApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyQ2xp
ZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMjRjYjFkMjg5NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyQ2xpZW50Q29ubmVjdGlvbi5oCkBA
IC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudENv
bm5lY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisKK25hbWVzcGFjZSBJUEMgeworY2xh
c3MgQ29ubmVjdGlvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlNlcnZp
Y2VXb3JrZXJDbGllbnRDb25uZWN0aW9uIGZpbmFsOiBwdWJsaWMgV2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudENvbm5lY3Rpb24geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViU2Vydmlj
ZVdvcmtlckNsaWVudENvbm5lY3Rpb24+IGNyZWF0ZShSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24sIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBj
bGllbnRJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
U2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSwgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIpKTsKKyAgICB9CisKKyAgICB+
V2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rpb24oKTsKKworICAgIC8vIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDbGllbnRDb25uZWN0aW9uLgorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJDbGllbnQoUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNz
YWdlLCB1aW50NjRfdCBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdp
bikgZmluYWw7CisKK3ByaXZhdGU6CisgICAgV2ViU2VydmljZVdvcmtlckNsaWVudENvbm5lY3Rp
b24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IGNsaWVudElkZW50aWZpZXIpOworCisgICAgUmVmPElQQzo6Q29ubmVj
dGlvbj4gbV9jb25uZWN0aW9uOworICAgIHVpbnQ2NF90IG1fc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXI7CisgICAgdWludDY0X3QgbV9jbGllbnRJZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325077</attachid>
            <date>2017-10-26 16:25:38 -0700</date>
            <delta_ts>2017-10-26 19:03:49 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>178794_SW_Client_postMessage_wip.patch</filename>
            <type>text/plain</type>
            <size>56031</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVz
c2FnZS5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggN2QxMjIzNTQ3NWYuLmMwOTU1ZjgzNGE3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKLVBBU1M6IFN0YXR1cyBj
b2RlIGlzIDIwMAotUEFTUzogU3RhdHVzIHRleHQgaXMgV29ya2VyIHJlY2VpdmVkIHRoZSBtZXNz
YWdlIGV2ZW50LiBtZXNzYWdlRXZlbnQub3JpZ2luIHdhcyBodHRwczovLzEyNy4wLjAuMTo4NDQz
Ci1QQVNTOiBTb3VyY2UgaXMgU2VydmljZSB3b3JrZXIKK1BBU1M6IENsaWVudCByZWNlaXZlZCBt
ZXNzYWdlIGZyb20gc2VydmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MworUEFTUzogUmVjZWl2ZWQgbWVzc2FnZSAnTWVzc2FnZSAxJyBmcm9tIG9yaWdpbiAnaHR0cHM6
Ly8xMjcuMC4wLjE6ODQ0MycKK1BBU1M6IENsaWVudCByZWNlaXZlZCBtZXNzYWdlIGZyb20gc2Vy
dmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MworUEFTUzogUmVjZWl2
ZWQgbWVzc2FnZSAnTWVzc2FnZSAyJyBmcm9tIG9yaWdpbiAnaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MycKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCmluZGV4IDg0Mzk1YjJhNmQzLi45NDhjODI0
OTQ2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLXdvcmtlci5qcwpAQCAtMSwxNCArMSw0IEBACi1sZXQg
cmVzcG9uc2VUb1NlbmQgPSB7IHN0YXR1czogNDA0LCBzdGF0dXNUZXh0OiAiTm90IEZvdW5kIiB9
OwotCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKLSAgICBy
ZXNwb25zZVRvU2VuZCA9IGV2ZW50LmRhdGE7Ci0gICAgcmVzcG9uc2VUb1NlbmQuc3RhdHVzVGV4
dCArPSAiIG1lc3NhZ2VFdmVudC5vcmlnaW4gd2FzICIgKyBldmVudC5vcmlnaW47CisgICAgZXZl
bnQuc291cmNlLnBvc3RNZXNzYWdlKCJSZWNlaXZlZCBtZXNzYWdlICciICsgZXZlbnQuZGF0YSAr
ICInIGZyb20gb3JpZ2luICciICsgZXZlbnQub3JpZ2luICsgIiciKTsKIH0pOwogCi1zZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoImZldGNoIiwgKGV2ZW50KSA9PiB7Ci0gICAgaWYgKGV2ZW50LnJlcXVl
c3QudXJsLmluZGV4T2YoInRlc3QxIikgIT09IC0xKSB7Ci0gICAgICAgIGV2ZW50LnJlc3BvbmRX
aXRoKG5ldyBSZXNwb25zZShudWxsLCByZXNwb25zZVRvU2VuZCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGV2ZW50LnJlc3BvbmRXaXRoKFJlc3BvbnNlLmVycm9yKCkpOwotfSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmpzCmluZGV4IDk2YTQxY2EwODY4Li4xZjBhNjMwNDRiZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2UuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuanMK
QEAgLTEsMzcgKzEsMTQgQEAKLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGZpbmlzaFNXVGVzdCgp
OwotfQotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB0cnkgewotICAgICAgICBhd2Fp
dCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIiwgeyB9KTsKLQotICAgICAgICBuYXZpZ2F0
b3Iuc2VydmljZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKHsgc3RhdHVzOiAyMDAsIHN0
YXR1c1RleHQ6ICJXb3JrZXIgcmVjZWl2ZWQgdGhlIG1lc3NhZ2UgZXZlbnQuIiB9KTsKLQotICAg
ICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgidGVzdDEiKTsKLSAgICAgICAgaWYgKHJl
c3BvbnNlLnN0YXR1cyA9PSAyMDApCi0gICAgICAgICAgICBsb2coIlBBU1M6IFN0YXR1cyBjb2Rl
IGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2co
IkZBSUw6IFN0YXR1cyBjb2RlIGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotCi0gICAgICAgIGlm
IChyZXNwb25zZS5zdGF0dXNUZXh0LnN0YXJ0c1dpdGgoIldvcmtlciByZWNlaXZlZCB0aGUgbWVz
c2FnZSIpKQotICAgICAgICAgICAgbG9nKCJQQVNTOiBTdGF0dXMgdGV4dCBpcyAiICsgcmVzcG9u
c2Uuc3RhdHVzVGV4dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygiRkFJTDogU3Rh
dHVzIHRleHQgaXMgIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOwotCi0gICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICBsZXQgc291cmNlID0gaW50ZXJuYWxzLmZldGNo
UmVzcG9uc2VTb3VyY2UocmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKHNvdXJjZSA9PT0gIlNl
cnZpY2Ugd29ya2VyIikKLSAgICAgICAgICAgICAgICBsb2coIlBBU1M6IFNvdXJjZSBpcyAiICsg
c291cmNlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsb2coIkZBSUw6IFNv
dXJjZSBpcyAiICsgc291cmNlKTsKLSAgICAgICAgfQotICAgIH0gY2F0Y2goZSkgewotICAgICAg
ICBsb2coIkdvdCBleGNlcHRpb246ICIgKyBlKTsKLSAgICB9Ci0gICAgZmluaXNoU1dUZXN0KCk7
Ci19Ci0KLXRlc3QoKTsKK3ZhciBtZXNzYWdlTnVtYmVyID0gMTsKK25hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgeworICAg
IGxvZygiUEFTUzogQ2xpZW50IHJlY2VpdmVkIG1lc3NhZ2UgZnJvbSBzZXJ2aWNlIHdvcmtlciwg
b3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICBsb2coIlBBU1M6ICIgKyBldmVudC5kYXRh
KTsKKyAgICBpZiAobWVzc2FnZU51bWJlciA9PSAxKSB7CisgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgiTWVzc2FnZSAyIik7CisgICAgICAgIG1lc3NhZ2VOdW1iZXIrKzsKKyAgICB9
IGVsc2UKKyAgICAgICAgZmluaXNoU1dUZXN0KCk7Cit9KTsKKworbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdl
LXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBuYXZpZ2F0b3Iuc2Vydmlj
ZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKCJNZXNzYWdlIDEiKTsKK30pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY0
MDAwOGRjMmQzLi5mYzQ3OTZiMzg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTIwMCw3ICsxMjAwLDcgQEAKIAkJNDZFQkVB
MDIxQjdENEQ2NTAwQkU0OTQxIC8qIENvbGxlY3Rpb25UcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RUJFQTAxMUI3RDRENUQwMEJFNDk0
MSAvKiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZFRjE0MkExRjk3QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VX
b3JrZXJXaW5kb3dDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2RUYxNDIwMUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyV2luZG93
Q2xpZW50LmggKi87IH07CiAJCTQ2RUYxNDJDMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29y
a2VyQ2xpZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZFRjE0MjIxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRzLmggKi87
IH07Ci0JCTQ2RUYxNDJEMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVGMTQyNDFG
OTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudC5oICovOyB9OworCQk0NkVGMTQy
RDFGOTdCN0Q4MDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFRjE0MjQxRjk3QjdCQTAwQzJBNTI0
IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NkVGQUYwRTFFNUZCOUNBMDBFN0YzNEIgLyogTG93UG93ZXJN
b2RlTm90aWZpZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkVGQUYwRDFFNUZCOUMyMDBFN0YzNEIgLyogTG93UG93ZXJNb2RlTm90aWZpZXJJ
T1MubW0gKi87IH07CiAJCTQ2RUZBRjEyMUU1RkI5RjEwMEU3RjM0QiAvKiBMb3dQb3dlck1vZGVO
b3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZFRkFGMTAxRTVGQjlFMTAwRTdGMzRCIC8qIExvd1Bvd2VyTW9kZU5vdGlmaWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZGQ0I2MTgxQTcw
ODIwRTAwQzVBMjFFIC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzN0IzNzUxNUMxQTdFMTAwNkRDODk4IC8q
IERpYWdub3N0aWNMb2dnaW5nS2V5cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yMjU2LDcgKzIyNTYsNyBAQAogCQk4MzY1ODlERTFGNTRBNzY5
MDBEQzMxRjQgLyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzY1ODlEOTFGNTRBNzYyMDBEQzMxRjQg
LyogSlNGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyLmggKi87IH07CiAJCTgzNjU4OUUwMUY1NEE3
NkUwMERDMzFGNCAvKiBKU0ZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNjU4OUQ4MUY1NEE3NjIwMERDMzFG
NCAvKiBKU0ZpbGVTeXN0ZW1FbnRyaWVzQ2FsbGJhY2suaCAqLzsgfTsKIAkJODM2NzU4N0YxQzU2
RTk5QjAwOEExMDg3IC8qIEpTSFRNTERhdGFFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRCODZBODFDNTZFOTNFMDBGM0YwRTMgLyogSlNI
VE1MRGF0YUVsZW1lbnQuaCAqLzsgfTsKLQkJODM2OUZERkMxRkExMDJFMzAwQzFGRjFGIC8qIFNl
cnZpY2VXb3JrZXJDbGllbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MzY5RkRGQjFGQTEwMkNCMDBDMUZGMUYgLyogU2VydmljZVdvcmtlckNs
aWVudFR5cGUuaCAqLzsgfTsKKwkJODM2OUZERkMxRkExMDJFMzAwQzFGRjFGIC8qIFNlcnZpY2VX
b3JrZXJDbGllbnRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzY5RkRGQjFGQTEwMkNCMDBDMUZGMUYgLyogU2VydmljZVdvcmtlckNsaWVudFR5
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4
MzZBQ0VDMzFFQ0E2MkM4MDA0QkQwMTIgLyogRE9NTWF0cml4UmVhZE9ubHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNkFDRUMwMUVDQTYyQjAwMDRC
RDAxMiAvKiBET01NYXRyaXhSZWFkT25seS5oICovOyB9OwogCQk4MzZBQ0VDQTFFQ0E5NTY5MDA0
QkQwMTIgLyogRE9NTWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzZBQ0VDNTFFQ0E2NjU0MDA0QkQwMTIgLyogRE9NTWF0cml4LmggKi87IH07
CiAJCTgzNkFDRUNCMUVDQTk1NkQwMDRCRDAxMiAvKiBET01NYXRyaXhJbml0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzZBQ0VDNzFFQ0E2NjU0MDA0
QkQwMTIgLyogRE9NTWF0cml4SW5pdC5oICovOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggYTYzMWI5Y2EyODkuLmRlOWI4MmQ0ZGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTQzNCw5ICs0MzQsMTUgQEAgc3RhdGljIHZvaWQgcHJpbnROYXZpZ2F0aW9uRXJyb3JNZXNzYWdl
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiBhY3RpdmVVUkwsIGNvbnMKIAogdWludDY0X3QgRG9j
dW1lbnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24gPSAwOwogCi1IYXNoU2V0PERvY3VtZW50Kj4mIERv
Y3VtZW50OjphbGxEb2N1bWVudHMoKQorc3RhdGljIERvY3VtZW50OjpJZGVudGlmaWVyIGdlbmVy
YXRlRG9jdW1lbnRJZGVudGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxEb2N1bWVudCo+PiBkb2N1bWVudHM7CisgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZp
ZXIgPSAwOworICAgIHJldHVybiArK2lkZW50aWZpZXI7Cit9CisKK2F1dG8gRG9jdW1lbnQ6OmFs
bERvY3VtZW50cygpIC0+IEhhc2hNYXA8SWRlbnRpZmllciwgRG9jdW1lbnQqPiYKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxJZGVudGlmaWVyLCBEb2N1bWVudCo+PiBkb2N1
bWVudHM7CiAgICAgcmV0dXJuIGRvY3VtZW50czsKIH0KIApAQCAtNDk2LDggKzUwMiw5IEBAIERv
Y3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBk
b2N1bWVudENsYXNzZXMsIHVuc2lnCiAgICAgLCBtX2lzU3ludGhlc2l6ZWQoY29uc3RydWN0aW9u
RmxhZ3MgJiBTeW50aGVzaXplZCkKICAgICAsIG1faXNOb25SZW5kZXJlZFBsYWNlaG9sZGVyKGNv
bnN0cnVjdGlvbkZsYWdzICYgTm9uUmVuZGVyZWRQbGFjZWhvbGRlcikKICAgICAsIG1fb3JpZW50
YXRpb25Ob3RpZmllcihjdXJyZW50T3JpZW50YXRpb24oZnJhbWUpKQorICAgICwgbV9pZGVudGlm
aWVyKGdlbmVyYXRlRG9jdW1lbnRJZGVudGlmaWVyKCkpCiB7Ci0gICAgYWxsRG9jdW1lbnRzKCku
YWRkKHRoaXMpOworICAgIGFsbERvY3VtZW50cygpLmFkZChtX2lkZW50aWZpZXIsIHRoaXMpOwog
CiAgICAgLy8gV2UgZGVwZW5kIG9uIHRoZSB1cmwgZ2V0dGluZyBpbW1lZGlhdGVseSBzZXQgaW4g
c3ViZnJhbWVzLCBidXQgd2UKICAgICAvLyBhbHNvIGRlcGVuZCBvbiB0aGUgdXJsIE5PVCBnZXR0
aW5nIGltbWVkaWF0ZWx5IHNldCBpbiBvcGVuZWQgd2luZG93cy4KQEAgLTU0Nyw3ICs1NTQsOCBA
QCBSZWY8RG9jdW1lbnQ+IERvY3VtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGNvbnRleHREb2N1bWVu
dCkKIAogRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiB7Ci0gICAgYWxsRG9jdW1lbnRzKCkucmVtb3Zl
KHRoaXMpOworICAgIGJvb2wgd2FzUmVtb3ZlZCA9IGFsbERvY3VtZW50cygpLnJlbW92ZShtX2lk
ZW50aWZpZXIpOworICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7CiAK
ICAgICBBU1NFUlQoIXJlbmRlclZpZXcoKSk7CiAgICAgQVNTRVJUKG1fcGFnZUNhY2hlU3RhdGUg
IT0gSW5QYWdlQ2FjaGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA0ODhlMTJjNjI2Zi4uZTBi
MWNlYmIyZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zNDcsNyArMzQ3LDkgQEAgcHVibGlj
OgogCiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIEhhc2hTZXQ8RG9jdW1lbnQqPiYgYWxsRG9jdW1lbnRzKCk7CisgICAgdXNpbmcgSWRlbnRp
ZmllciA9IHVpbnQ2NF90OworICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoTWFwPElk
ZW50aWZpZXIsIERvY3VtZW50Kj4mIGFsbERvY3VtZW50cygpOwogCiAgICAgTWVkaWFRdWVyeU1h
dGNoZXImIG1lZGlhUXVlcnlNYXRjaGVyKCk7CiAKQEAgLTE4MjksNiArMTgzMSw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2dyYW50U3RvcmFnZUFjY2Vzc092ZXJyaWRlIHsgZmFsc2UgfTsKIAog
ICAgIFJlZlB0cjxEb2N1bWVudFRpbWVsaW5lPiBtX3RpbWVsaW5lOworICAgIElkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogfTsKIAogRWxlbWVudCogZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1l
bnQoRG9jdW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcAppbmRleCA5MmU5MDU5YjlhMC4uMTNiMWRiNGI1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cu
aCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2lu
Y2x1ZGUgIk5vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIlB1YmxpY1VSTE1h
bmFnZXIuaCIKICNpbmNsdWRlICJSZWplY3RlZFByb21pc2VUcmFja2VyLmgiCkBAIC00NSw2ICs0
Niw3IEBACiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9y
LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgpAQCAtNTI1LDQg
KzUyNywxOCBAQCBKU0M6OkV4ZWNTdGF0ZSogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZXhlY1N0
YXRlKCkKICAgICByZXR1cm4gZXhlY1N0YXRlRnJvbVdvcmtlckdsb2JhbFNjb3BlKHdvcmtlckds
b2JhbFNjb3BlKTsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNlcnZpY2VXb3JrZXJDb250YWlu
ZXIoKQoreworICAgIE5hdmlnYXRvckJhc2UqIG5hdmlnYXRvciA9IG51bGxwdHI7CisgICAgaWYg
KGlzPERvY3VtZW50PigqdGhpcykpIHsKKyAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IGRvd25j
YXN0PERvY3VtZW50PigqdGhpcykuZG9tV2luZG93KCkpCisgICAgICAgICAgICBuYXZpZ2F0b3Ig
PSB3aW5kb3ctPm5hdmlnYXRvcigpOworICAgIH0gZWxzZQorICAgICAgICBuYXZpZ2F0b3IgPSAm
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCp0aGlzKS5uYXZpZ2F0b3IoKTsKKworICAgIHJl
dHVybiBuYXZpZ2F0b3IgPyBuYXZpZ2F0b3ItPnNlcnZpY2VXb3JrZXIoKSA6IG51bGxwdHI7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMjY2ZjQ5YWVlYzAuLjUyMThiZTg1MjMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTY4LDYg
KzY4LDEwIEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBj
bGFzcyBVUkw7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitjbGFzcyBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOworI2VuZGlmCisKIG5hbWVzcGFjZSBJREJDbGllbnQgewogY2xhc3MgSURC
Q29ubmVjdGlvblByb3h5OwogfQpAQCAtMjM0LDYgKzIzOCw4IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdWludDY0X3Qgc2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7IH0KICAg
ICB2b2lkIHNldFNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIodWludDY0X3QgaWRlbnRp
ZmllcikgeyBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorCisgICAg
U2VydmljZVdvcmtlckNvbnRhaW5lciogc2VydmljZVdvcmtlckNvbnRhaW5lcigpOwogI2VuZGlm
CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCmluZGV4IDdh
YjA5MjQzNGJmLi4zY2IzZGRmYmEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9N
ZW1vcnlSZWxlYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2Uu
Y3BwCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VOb25jcml0aWNhbE1lbW9y
eSgpCiAKICAgICBjbGVhcldpZHRoQ2FjaGVzKCk7CiAKLSAgICBmb3IgKGF1dG8qIGRvY3VtZW50
IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKQorICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBE
b2N1bWVudDo6YWxsRG9jdW1lbnRzKCkudmFsdWVzKCkpCiAgICAgICAgIGRvY3VtZW50LT5jbGVh
clNlbGVjdG9yUXVlcnlDYWNoZSgpOwogCiAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnBy
dW5lRGVhZFJlc291cmNlc1RvU2l6ZSgwKTsKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIHZvaWQg
cmVsZWFzZUNyaXRpY2FsTWVtb3J5KFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKQogCiAgICAgQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5kcmFpbigpOwogCi0gICAgZm9yIChhdXRvJiBkb2N1bWVu
dCA6IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxEb2N1bWVudD4+KERvY3VtZW50OjphbGxEb2N1bWVu
dHMoKSkpIHsKKyAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogY29weVRvVmVjdG9yT2Y8UmVmUHRy
PERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLnZhbHVlcygpKSkgewogICAgICAg
ICBkb2N1bWVudC0+c3R5bGVTY29wZSgpLmNsZWFyUmVzb2x2ZXIoKTsKICAgICAgICAgZG9jdW1l
bnQtPmZvbnRTZWxlY3RvcigpLmVtcHR5Q2FjaGVzKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA1MDE2YTA2ZTIwNC4uODJjNGU1NzY0ZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xOTQ1LDcg
KzE5NDUsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlUmFyZURhdGEoKQogCiB2b2lkIHBy
aW50UmVuZGVyVHJlZUZvckxpdmVEb2N1bWVudHMoKQogewotICAgIGZvciAoY29uc3QgYXV0byog
ZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKKyAgICBmb3IgKGNvbnN0IGF1
dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLnZhbHVlcygpKSB7CiAgICAg
ICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBpZiAoZG9jdW1lbnQtPmZyYW1lKCkgJiYgZG9jdW1lbnQtPmZyYW1lKCktPmlzTWFp
bkZyYW1lKCkpCkBAIC0xOTU3LDcgKzE5NTcsNyBAQCB2b2lkIHByaW50UmVuZGVyVHJlZUZvckxp
dmVEb2N1bWVudHMoKQogCiB2b2lkIHByaW50TGF5ZXJUcmVlRm9yTGl2ZURvY3VtZW50cygpCiB7
Ci0gICAgZm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMo
KSkgeworICAgIGZvciAoY29uc3QgYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1l
bnRzKCkudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKCFkb2N1bWVudC0+cmVuZGVyVmlldygpKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChkb2N1bWVudC0+ZnJhbWUoKSAmJiBk
b2N1bWVudC0+ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRDb3ZlcmFnZS5jcHAKaW5kZXggYTkxNjA0NWU0
YmEuLmYwN2Q0YzFiNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dENvdmVyYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dENvdmVyYWdlLmNwcApAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRpYyB2
b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJCbG9ja0Zsb3dzKGNvbnN0IFJlbmRlck9iamVj
dCYgcmVuZGVyZXIsIEhhCiAKIHN0YXRpYyB2b2lkIGNvbGxlY3ROb25FbXB0eUxlYWZSZW5kZXJC
bG9ja0Zsb3dzRm9yQ3VycmVudFBhZ2UoSGFzaFNldDxjb25zdCBSZW5kZXJCbG9ja0Zsb3cqPiYg
bGVhZlJlbmRlcmVycykKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8qIGRvY3VtZW50IDogRG9jdW1l
bnQ6OmFsbERvY3VtZW50cygpKSB7CisgICAgZm9yIChjb25zdCBhdXRvKiBkb2N1bWVudCA6IERv
Y3VtZW50OjphbGxEb2N1bWVudHMoKS52YWx1ZXMoKSkgewogICAgICAgICBpZiAoIWRvY3VtZW50
LT5yZW5kZXJWaWV3KCkgfHwgZG9jdW1lbnQtPnBhZ2VDYWNoZVN0YXRlKCkgIT0gRG9jdW1lbnQ6
Ok5vdEluUGFnZUNhY2hlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghZG9j
dW1lbnQtPmlzSFRNTERvY3VtZW50KCkgJiYgIWRvY3VtZW50LT5pc1hIVE1MRG9jdW1lbnQoKSkK
QEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0Tm9uRW1wdHlMZWFmUmVuZGVy
QmxvY2tGbG93c0ZvckN1cnJlbnRQYWdlKEhhc2hTZXQ8Y29uc3QgUmVuZAogCiB2b2lkIHRvZ2ds
ZVNpbXBsZUxpbmVMYXlvdXQoKQogewotICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVu
dDo6YWxsRG9jdW1lbnRzKCkpIHsKKyAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6
OmFsbERvY3VtZW50cygpLnZhbHVlcygpKSB7CiAgICAgICAgIGF1dG8mIHNldHRpbmdzID0gZG9j
dW1lbnQtPm11dGFibGVTZXR0aW5ncygpOwogICAgICAgICBzZXR0aW5ncy5zZXRTaW1wbGVMaW5l
TGF5b3V0RW5hYmxlZCghc2V0dGluZ3Muc2ltcGxlTGluZUxheW91dEVuYWJsZWQoKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDVhMTE4MWU3OTIwLi4zOWFj
OGI4NWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjE1NCw3ICsy
MTU0LDcgQEAgRXhjZXB0aW9uT3I8dW5zaWduZWQ+IEludGVybmFsczo6Y291bnRGaW5kTWF0Y2hl
cyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3QKIHVuc2lnbmVkIEludGVybmFsczo6bnVt
YmVyT2ZMaXZlTm9kZXMoKSBjb25zdAogewogICAgIHVuc2lnbmVkIG5vZGVDb3VudCA9IDA7Ci0g
ICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkKKyAgICBm
b3IgKGF1dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLnZhbHVlcygpKQog
ICAgICAgICBub2RlQ291bnQgKz0gZG9jdW1lbnQtPnJlZmVyZW5jaW5nTm9kZUNvdW50KCk7CiAg
ICAgcmV0dXJuIG5vZGVDb3VudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyLmNwcAppbmRleCAxNzk2NGVhZDYwNC4uMGNmOWE4MTY0MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAK
QEAgLTY5LDcgKzY5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlcjo6cG9zdE1l
c3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlMKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVyYWwoIlBhc3NpbmcgTWVz
c2FnZVBvcnQgb2JqZWN0cyB0byBwb3N0TWVzc2FnZSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH07
CiAKICAgICBhdXRvJiBzd0Nvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmds
ZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihjb250ZXh0LnNlc3Npb25J
RCgpKTsKLSAgICBzd0Nvbm5lY3Rpb24ucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZShtX2lkZW50aWZpZXIsIG1lc3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnRleHQu
b3JpZ2luKCkpOworICAgIHN3Q29ubmVjdGlvbi5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlKG1faWRlbnRpZmllciwgbWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29u
dGV4dCk7CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCmluZGV4IGNkMzAxZDA4ODIz
Li5lMmI1YjFlMTNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmNwcApAQCAtMjgsMTQgKzI4LDI2IEBACiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnQuaCIKIAor
I2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCisjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgor
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U2VydmljZVdvcmtlckNsaWVudDo6U2VydmljZVdvcmtlckNsaWVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBUeXBlIHR5cGUpCitTZXJ2aWNlV29ya2VyQ2xpZW50OjpTZXJ2aWNl
V29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIsIFR5cGUgdHlwZSkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyKCZjb250ZXh0KQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBt
X3R5cGUodHlwZSkKIHsKIH0KIAorU2VydmljZVdvcmtlckNsaWVudDo6flNlcnZpY2VXb3JrZXJD
bGllbnQoKQoreworfQorCiBTdHJpbmcgU2VydmljZVdvcmtlckNsaWVudDo6dXJsKCkgY29uc3QK
IHsKICAgICByZXR1cm4geyB9OwpAQCAtNDYsMTYgKzU4LDQzIEBAIGF1dG8gU2VydmljZVdvcmtl
ckNsaWVudDo6ZnJhbWVUeXBlKCkgY29uc3QgLT4gRnJhbWVUeXBlCiAgICAgcmV0dXJuIEZyYW1l
VHlwZTo6Tm9uZTsKIH0KIAorU3RyaW5nIFNlcnZpY2VXb3JrZXJDbGllbnQ6OklkZW50aWZpZXI6
OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIpICsgIi0iKyBTdHJpbmc6Om51bWJlcihzY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcik7Cit9CisKIFN0cmluZyBTZXJ2aWNlV29ya2VyQ2xpZW50OjppZCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gbV9pZGVudGlmaWVyLnRvU3Ry
aW5nKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RN
ZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIFZlY3RvcjxKU0M6
OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlcikKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNl
cnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlVmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6
OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlcikKIHsKLSAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHRyYW5zZmVyKTsKLSAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3Vw
cG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiY2xpZW50LnBvc3RNZXNzYWdlKCkgaXMgbm90IHll
dCBzdXBwb3J0ZWQiKSB9OworICAgIGF1dG8qIGV4ZWNTdGF0ZSA9IGNvbnRleHQuZXhlY1N0YXRl
KCk7CisgICAgQVNTRVJUKGV4ZWNTdGF0ZSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQ
b3J0Pj4gcG9ydHM7CisgICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoKmV4ZWNTdGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKHRyYW5zZmVyKSwgcG9ydHMs
IFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSk7CisgICAgaWYgKG1lc3Nh
Z2UuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtZXNzYWdlLnJlbGVhc2VFeGNlcHRp
b24oKTsKKworICAgIC8vIERpc2VudGFuZ2xlIHRoZSBwb3J0IGluIHByZXBhcmF0aW9uIGZvciBz
ZW5kaW5nIGl0IHRvIHRoZSByZW1vdGUgY29udGV4dC4KKyAgICBhdXRvIGNoYW5uZWxzT3JFeGNl
cHRpb24gPSBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhXVEZNb3ZlKHBvcnRzKSk7Cisg
ICAgaWYgKGNoYW5uZWxzT3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biBjaGFubmVsc09yRXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIC8vIEZJWE1F
OiBTdXBwb3J0IHNlbmRpbmcgdGhlIGNoYW5uZWxzLgorICAgIGF1dG8gY2hhbm5lbHMgPSBjaGFu
bmVsc09yRXhjZXB0aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGlmIChjaGFubmVscyAm
JiAhY2hhbm5lbHMtPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1
cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVyYWwoIlBhc3NpbmcgTWVzc2FnZVBvcnQgb2JqZWN0cyB0
byBwb3N0TWVzc2FnZSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH07CisKKyAgICB1aW50NjRfdCBz
b3VyY2VJZGVudGlmaWVyID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KS50aHJlYWQoKS5pZGVudGlmaWVyKCk7CisgICAgY2FsbE9uTWFpblRocmVhZChbbWVzc2Fn
ZSA9IG1lc3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCksIGRlc3RpbmF0aW9uSWRlbnRpZmllciA9
IG1faWRlbnRpZmllciwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luID0gY29udGV4dC5v
cmlnaW4oKS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBj
b25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQor
ICAgICAgICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQo
ZGVzdGluYXRpb25JZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVy
LCBzb3VyY2VPcmlnaW4pOworICAgIH0pOworCisgICAgcmV0dXJuIHsgfTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmgKaW5kZXggNjliOTFlMDhhMzkuLjY1ZGI3MzQ3ZTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50LmgKQEAgLTM0LDE0ICszNCwyMiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNWYWx1ZTsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisK
IGNsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29y
a2VyQ2xpZW50PiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoK
KyAgICBzdHJ1Y3QgSWRlbnRpZmllciB7CisgICAgICAgIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyOworICAgICAgICB1aW50NjRfdCBzY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcjsKKworICAgICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKyAgICB9OworCiAg
ICAgdXNpbmcgVHlwZSA9IFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOwogICAgIGVudW0gY2xhc3Mg
RnJhbWVUeXBlIHsKICAgICAgICAgQXV4aWxpYXJ5LApAQCAtNTAsMjEgKzU4LDI0IEBAIHB1Ymxp
YzoKICAgICAgICAgTm9uZQogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJD
bGllbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUeXBlIHR5cGUp
CisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgVHlwZSB0
eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckNs
aWVudChjb250ZXh0LCB0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZp
Y2VXb3JrZXJDbGllbnQoY29udGV4dCwgaWRlbnRpZmllciwgdHlwZSkpOwogICAgIH0KIAorICAg
IH5TZXJ2aWNlV29ya2VyQ2xpZW50KCk7CisKICAgICBTdHJpbmcgdXJsKCkgY29uc3Q7CiAgICAg
RnJhbWVUeXBlIGZyYW1lVHlwZSgpIGNvbnN0OwogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQogICAgIFN0cmluZyBpZCgpIGNvbnN0OwogCi0gICAgRXhjZXB0aW9uT3I8
dm9pZD4gcG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwg
VmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKTsKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpK
U1ZhbHVlIG1lc3NhZ2UsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFu
c2Zlcik7CiAKIHByb3RlY3RlZDoKLSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBUeXBlKTsKKyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBjb25zdCBJZGVudGlmaWVyJiwgVHlwZSk7CiAKKyAgICBJZGVudGlmaWVy
IG1faWRlbnRpZmllcjsKICAgICBUeXBlIG1fdHlwZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAppbmRleCBm
N2U0YTk4ZGUyMC4uZDhhY2FjOTk4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwKQEAgLTM1LDcgKzM1LDcgQEAK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgU2VydmljZVdvcmtlckNsaWVudFR5cGUgdHlwZTsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOwogCi0gICAgW0NhbGxXaXRoPVNjcmlw
dFN0YXRlLCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwg
b3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3Nh
Z2UoYW55IG1lc3NhZ2UsIG9wdGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7
CiB9OwogCiBlbnVtIEZyYW1lVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggMjU5
MTlhYjFhMzkuLmFiZmRhY2IzNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0yOSwy
NSArMjksMTEgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFs
U2NvcGUuaCIKLSNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgU2VydmljZVdvcmtlckNvbnRhaW5lciogY29udGFpbmVyRm9yU2NyaXB0
RXhlY3V0aW9uQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotewotICAg
IE5hdmlnYXRvckJhc2UqIG5hdmlnYXRvciA9IG51bGxwdHI7Ci0gICAgaWYgKGlzPERvY3VtZW50
Pihjb250ZXh0KSkgewotICAgICAgICBpZiAoYXV0byogd2luZG93ID0gZG93bmNhc3Q8RG9jdW1l
bnQ+KGNvbnRleHQpLmRvbVdpbmRvdygpKQotICAgICAgICAgICAgbmF2aWdhdG9yID0gd2luZG93
LT5uYXZpZ2F0b3IoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgbmF2aWdhdG9yID0gJmRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5uYXZpZ2F0b3IoKTsKLQotICAgIHJldHVybiBu
YXZpZ2F0b3IgPyBuYXZpZ2F0b3ItPnNlcnZpY2VXb3JrZXIoKSA6IG51bGxwdHI7Ci19Ci0KIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEm
JiByZWdpc3RyYXRpb25EYXRhKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAg
ICwgbV9yZWdpc3RyYXRpb25EYXRhKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpCkBAIC05NCw3
ICs4MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dW5yZWdpc3RlcihSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvKiBjb250YWluZXIgPSBjb250YWluZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KCpj
b250ZXh0KTsKKyAgICBhdXRvKiBjb250YWluZXIgPSBjb250ZXh0LT5zZXJ2aWNlV29ya2VyQ29u
dGFpbmVyKCk7CiAgICAgaWYgKCFjb250YWluZXIpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVFcnJvcikpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudC5jcHAKaW5kZXggNDZkMjk5MGUyOTYuLmU3MTQ0M2IwMDJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJX
aW5kb3dDbGllbnQuY3BwCkBAIC0zMiw4ICszMiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotU2VydmljZVdvcmtlcldpbmRvd0NsaWVudDo6U2VydmljZVdvcmtlcldpbmRvd0NsaWVudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotICAgIDogU2VydmljZVdvcmtlckNsaWVu
dChjb250ZXh0LCBUeXBlOjpXaW5kb3cpCitTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50OjpTZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAgOiBTZXJ2aWNlV29ya2VyQ2xpZW50KGNv
bnRleHQsIGlkZW50aWZpZXIsIFR5cGU6OldpbmRvdykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50
LmgKaW5kZXggODNjODBlMjgwN2IuLjNlMmYzOTU2YTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmgK
QEAgLTM2LDkgKzM2LDkgQEAgY2xhc3MgRGVmZXJyZWRQcm9taXNlOwogCiBjbGFzcyBTZXJ2aWNl
V29ya2VyV2luZG93Q2xpZW50IGZpbmFsIDogcHVibGljIFNlcnZpY2VXb3JrZXJDbGllbnQgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlcldpbmRvd0NsaWVudD4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxTZXJ2aWNl
V29ya2VyV2luZG93Q2xpZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoY29udGV4dCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KGNvbnRleHQs
IGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICBWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0
YXRlKCkgY29uc3Q7CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5hdmlnYXRl
KGNvbnN0IFN0cmluZyYgdXJsLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKTsKKyAgICBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBjb25zdCBJZGVudGlmaWVyJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4IDY3OGI5MmI0MzYwLi5mYzFmZWM1ZTA4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTU5LDE0ICs1OSwxNCBAQCBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkqIFNXQ29udGV4dE1hbmFnZXI6OnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSh1aW50
NjRfdCBzZQogICAgIHJldHVybiBtX3dvcmtlck1hcC5nZXQoc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOwogfQogCi12b2lkIFNXQ29udGV4dE1hbmFnZXI6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
Cit2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUodWludDY0X3QgZGVzdGluYXRpb25TZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50
OjpJZGVudGlmaWVyJiBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdp
bikKIHsKLSAgICBhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJNYXAuZ2V0KHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJNYXAu
Z2V0KGRlc3RpbmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIGlmICghc2Vydmlj
ZVdvcmtlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNz
IHZhbGlkIE1lc3NhZ2VQb3J0Q2hhbm5lbHMuCi0gICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCku
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShXVEZNb3ZlKG1lc3NhZ2UpLCBu
dWxscHRyLCBzb3VyY2VPcmlnaW4pOworICAgIHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoV1RGTW92ZShtZXNzYWdlKSwgbnVsbHB0
ciwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGNkY2NhY2MxYTA3Li4yZjk4YWJkOTcxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiU2VydmljZVdv
cmtlckNsaWVudC5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTQyLDYgKzQzLDggQEAgcHVibGljOgogICAgIGNs
YXNzIENvbm5lY3Rpb24gewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlv
bigpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50OjpJZGVudGlmaWVyJiBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgdWludDY0
X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKSA9IDA7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlv
bihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJik7CkBAIC00OSw3ICs1Miw3IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyVGhyZWFk
KFJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eSogc2VydmljZVdvcmtlclRocmVhZFByb3h5KHVpbnQ2NF90
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlvblNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGll
bnQ6OklkZW50aWZpZXImIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKTsKIAogcHJpdmF0ZToKICAgICBTV0NvbnRleHRNYW5hZ2VyKCkgPSBkZWZhdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCBjZjc4ZTkxOTAyYi4uNmU1MDVmYjdmNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2guaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNpbmNsdWRl
ICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTk5
LDEyICsxMDAsMTMgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpwb3N0RmV0Y2hUYXNrKFJl
ZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiBjbGllbnQKICAgICB9LCBXb3JrZXJSdW5M
b29wOjpkZWZhdWx0TW9kZSgpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYgbWVzc2FnZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYm
IGNoYW5uZWxzLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgU2VydmljZVdvcmtl
clRocmVhZDo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShSZWY8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENo
YW5uZWxBcnJheT4mJiBjaGFubmVscywgY29uc3QgU2VydmljZVdvcmtlckNsaWVudDo6SWRlbnRp
ZmllciYgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0g
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0YXNrKFtjaGFubmVscyA9IFdURk1vdmUo
Y2hhbm5lbHMpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luID0gc291
cmNlT3JpZ2luLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgbXV0YWJsZSB7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0YXNrKFtjaGFu
bmVscyA9IFdURk1vdmUoY2hhbm5lbHMpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291
cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luID0gc291cmNlT3JpZ2luLmlzb2xhdGVkQ29weSgp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIGF1
dG8mIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50
YW5nbGVQb3J0cyhzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIFdURk1vdmUoY2hhbm5lbHMpKTsK
LSAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXh0ZW5kYWJs
ZU1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBz
b3VyY2VPcmlnaW4pKTsKKyAgICAgICAgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZSBzb3Vy
Y2UgPSBSZWZQdHI8U2VydmljZVdvcmtlckNsaWVudD4geyBTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50OjpjcmVhdGUoY29udGV4dCwgc291cmNlSWRlbnRpZmllcikgfTsKKyAgICAgICAgc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6
Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4sIHsg
fSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS50
aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgpLmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVj
dChzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogICAgIH0p
OwogICAgIHJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuaAppbmRleCAzMzczMTM5YzJiNS4uNzg3ZTJlNzA5YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
IAorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2guaCIKICNpbmNs
dWRlICJXb3JrZXJUaHJlYWQuaCIKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgogICAgIFdvcmtl
ck9iamVjdFByb3h5JiB3b3JrZXJPYmplY3RQcm94eSgpIGNvbnN0IHsgcmV0dXJuIG1fd29ya2Vy
T2JqZWN0UHJveHk7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdEZldGNoVGFzayhS
ZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBGZXRj
aE9wdGlvbnMmJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIHN0ZDo6dW5p
cXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZShSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBzdGQ6OnVuaXF1ZV9w
dHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+JiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnQ6
OklkZW50aWZpZXImIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
KTsKIAogcHJvdGVjdGVkOgogICAgIFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2Vy
R2xvYmFsU2NvcGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwg
UEFMOjpTZXNzaW9uSUQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDhlOTNj
NWUwNmM5Li5hNDYyNTRlMTNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMjgsNyAr
MjgsMTAgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVu
dC5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250YWluZXIuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyRmV0Y2hSZXN1bHQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5o
IgogCkBAIC0xMDksNiArMTEyLDM1IEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNj
cmlwdEZldGNoRm9yU2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIpCiAgICAgam9iLT5zdGFy
dFNjcmlwdEZldGNoKCk7CiB9CiAKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBkZXN0aW5hdGlvblNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2Us
IHVpbnQ2NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikKK3sKKyAgICAvLyBGSVhNRTogY2xpZW50SWRlbnRpZmllciBjYW4gb25seSBp
ZGVudGlmeSBhIERvY3VtZW50IGF0IHRoZSBtb21lbnQuCisgICAgYXV0byogZGVzdGluYXRpb25E
b2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHMoKS5nZXQoZGVzdGluYXRpb25TY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgaWYgKCFkZXN0aW5hdGlvbkRvY3VtZW50
KSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGZpbmQgY2xpZW50IGRvY3VtZW50
IHdpdGggdGhlIGdpdmVuIGlkZW50aWZpZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8qIGNvbnRhaW5lciA9IGRlc3RpbmF0aW9uRG9jdW1lbnQtPnNlcnZpY2VXb3JrZXJD
b250YWluZXIoKTsKKyAgICBpZiAoIWNvbnRhaW5lcikgeworICAgICAgICBXVEZMb2dBbHdheXMo
IkNvdWxkIG5vdCBmaW5kIHNlcnZpY2Ugd29ya2VyIGNvbnRhaW5lciBmb3IgY2xpZW50IGRvY3Vt
ZW50Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogUGFzcyBpbiBw
b3J0cy4KKyAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7CisKKyAgICBzdGQ6
Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4gc291cmNlOworICAgIGlmIChkZXN0aW5hdGlv
bkRvY3VtZW50LT5zZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgPT0gc291cmNlU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpIHsKKyAgICAgICAgQVNTRVJUKGNvbnRhaW5lci0+Y29udHJv
bGxlcigpLT5pZGVudGlmaWVyKCkgPT0gc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwor
ICAgICAgICBzb3VyY2UgPSBNZXNzYWdlRXZlbnRTb3VyY2UgeyBSZWZQdHI8U2VydmljZVdvcmtl
cj4geyBjb250YWluZXItPmNvbnRyb2xsZXIoKSB9IH07CisgICAgfSBlbHNlCisgICAgICAgIHNv
dXJjZSA9IE1lc3NhZ2VFdmVudFNvdXJjZSB7IFJlZlB0cjxTZXJ2aWNlV29ya2VyPiB7IFNlcnZp
Y2VXb3JrZXI6OmNyZWF0ZSgqZGVzdGluYXRpb25Eb2N1bWVudCwgc291cmNlU2VydmljZVdvcmtl
cklkZW50aWZpZXIpIH0gfTsKKworICAgIGF1dG8gbWVzc2FnZUV2ZW50ID0gTWVzc2FnZUV2ZW50
OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwg
eyB9LCBXVEZNb3ZlKHNvdXJjZSkpOworICAgIGNvbnRhaW5lci0+ZGlzcGF0Y2hFdmVudChtZXNz
YWdlRXZlbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCA1MDhhNThhNDlmMi4u
YzYxYTYxZTc2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaApAQCAtNDksNyArNDksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iJik7CiAgICAgdm9pZCBm
aW5pc2hlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmKTsK
ICAgICB2b2lkIGZhaWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBS
ZXNvdXJjZUVycm9yJik7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWlu
dDY0X3QgZGVzdGluYXRpb25TZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4mJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc291cmNlKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luJikgY29uc3QgPSAwOwpAQCAtNTksNiArNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKHVpbnQ2NF90IGpv
YklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKHVpbnQ2NF90
IGpvYklkZW50aWZpZXIsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcih1aW50NjRfdCBqb2JJZGVudGlm
aWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
Q2xpZW50KHVpbnQ2NF90IGRlc3RpbmF0aW9uU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNl
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKIAog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDRhZmU3ZTdlMjFjLi5iMzRlM2E2N2RkNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xOTAx
LDYgKzE5MDEsMjcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFRleHRDaGVja2luZ1JlcXVlc3REYXRh
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFRleHRDaGVja2kKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3ZvaWQgQXJndW1lbnRDb2RlcjxTZXJ2
aWNlV29ya2VyQ2xpZW50OjpJZGVudGlmaWVyPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFNlcnZpY2VXb3JrZXJDbGllbnQ6OklkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAg
ZW5jb2RlciA8PCBpZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIDw8IGlkZW50
aWZpZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI7Cit9CisKK2Jvb2wgQXJndW1l
bnRDb2RlcjxTZXJ2aWNlV29ya2VyQ2xpZW50OjpJZGVudGlmaWVyPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIFNlcnZpY2VXb3JrZXJDbGllbnQ6OklkZW50aWZpZXImIGlkZW50aWZpZXIpCit7
CisgICAgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHVpbnQ2NF90IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZGVudGlmaWVyID0geyBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgfTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiB2b2lkIEFyZ3VtZW50Q29kZXI8VGV4dENoZWNr
aW5nUmVzdWx0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRleHRDaGVja2luZ1Jl
c3VsdCYgcmVzdWx0KQogewogICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXN1bHQudHlwZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDFjMmRj
NzA3OTAzLi5lMTYwZDNlZjZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BheW1l
bnRIZWFkZXJzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWFsdGltZU1lZGlhU291cmNlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NlcnZpY2VXb3JrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3Jr
ZXJVcGRhdGVWaWFDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kuaD4KIApAQCAtNDc3LDYgKzQ3OCwxMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3REYXRhPiB7CiAgICAgc3RhdGljIGJv
b2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSYpOwog
fTsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudDo6SWRlbnRpZmllcj4geworICAg
IHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudDo6SWRlbnRpZmllciYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudDo6SWRlbnRpZmllciYpOworfTsKKyNlbmRpZgor
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jl
c3VsdD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6
VGV4dENoZWNraW5nUmVzdWx0Jik7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
VGV4dENoZWNraW5nUmVzdWx0PiBkZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBmYzFjNWYwNzViYi4uOGJmNjliMWE5NDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtl
ckpvYkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhLmg+CkBAIC0xMDgsOSArMTA5LDEwIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpz
dGFydEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljCiAgICAg
c2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpTdGFydEZldGNoKGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucykpOwogfQogCi12b2lkIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRf
dCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IGRlc3Rp
bmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
bWVzc2FnZSwgdWludDY0X3Qgc291cmNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewotICAgIHNlbmRUb0NvbnRleHRQcm9jZXNz
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbWVzc2FnZSwg
c291cmNlT3JpZ2luKSk7CisgICAgU2VydmljZVdvcmtlckNsaWVudDo6SWRlbnRpZmllciBzb3Vy
Y2VJZGVudGlmaWVyIHsgaWRlbnRpZmllcigpLCBzb3VyY2VTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllciB9OworICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSB7IGRlc3RpbmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJj
ZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiB9KTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OmRpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMzgsNiArMTQwLDExIEBAIHZv
aWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWROb3RIYW5kbGVGZXRjaCh1aW50NjRfdCBmZXRj
aElkZW50aWZpZXIpCiAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIp
OwogfQogCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQodWludDY0X3QgZGVzdGluYXRpb25TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBzb3Vy
Y2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudCB7IGRlc3RpbmF0aW9uU2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzb3VyY2VP
cmlnaW4gfSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1f
Y29udGV4dENvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5k
ZXggMjkyNmU4M2U0MzEuLjYwMzk3ZTk3YzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5oCkBAIC01Nyw2ICs1Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZhaWxGZXRj
aCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkTm90SGFuZGxlRmV0Y2go
dWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJDbGllbnQodWludDY0X3QgZGVzdGluYXRpb25TY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBz
b3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
OworCiBwcml2YXRlOgogICAgIC8vIEltcGxlbWVudCBTV1NlcnZlcjo6Q29ubmVjdGlvbiAoTWVz
c2FnZXMgdG8gdGhlIGNsaWVudCBXZWJQcm9jZXNzKQogICAgIHZvaWQgcmVqZWN0Sm9iSW5DbGll
bnQodWludDY0X3Qgam9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYp
IGZpbmFsOwpAQCAtNjYsNyArNjgsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzdGFydEZldGNo
KHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYpOwogCi0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3QgZGVzdGluYXRpb25T
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdl
LCB1aW50NjRfdCBzb3VyY2VTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VPcmlnaW4pOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGNvbnRl
eHQgV2ViUHJvY2VzcwogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDNiMjA0NWM2NDQ0
Li5kZTUxNWQ5MGJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCkBAIC0yOCw3ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVy
Q29ubmVjdGlvbiB7CiAgICAgRmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihzdHJ1Y3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckZldGNoUmVzdWx0IHJlc3VsdCkKIAogICAgIFN0YXJ0RmV0Y2go
dWludDY0X3QgaWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRp
b25zIG9wdGlvbnMpCi0gICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1
aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3Nh
Z2UsIFN0cmluZyBzb3VyY2VPcmlnaW4pCisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlvblNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJ
UEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVByb2Nlc3MuY3BwCmluZGV4IDg3NjRjZDA3MDJkLi5hODVlMzMwYzZlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKQEAgLTQz
NSw2ICs0MzUsMTIgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkRmluaXNoRmV0Y2godWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF8KICAgICAgICAgY29ubmVjdGlv
bi0+ZGlkRmluaXNoRmV0Y2goZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAordm9pZCBTdG9yYWdlUHJv
Y2Vzczo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudDo6SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoZGVzdGluYXRpb25JZGVu
dGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKK30KKwogdm9pZCBTdG9yYWdlUHJvY2Vzczo6
cmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQogewogICAgIEFTU0VSVCghbV9zd1NlcnZlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5l
Y3Rpb24uaWRlbnRpZmllcigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLmgKaW5kZXggYWE4NjQ1Yjc3MWMuLmMwNTQ1OTk4Zjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSURC
QmFja2luZ1N0b3JlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJTZXJ2ZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VuaXF1
ZUlEQkRhdGFiYXNlLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0
Zi9Dcm9zc1RocmVhZFRhc2suaD4KQEAgLTEyNSw2ICsxMjYsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkRmluaXNoRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRGYWlsRmV0Y2godWludDY0X3Qg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBkaWROb3RIYW5kbGVGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKKworICAgIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudDo6
SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0
YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAzMzky
YWY3MTVkMS4uODlhZmVmMGVmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDYsNSArNDYsNiBAQCBt
ZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkUmVjZWl2
ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IGZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkK
ICAgICBEaWRSZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhLCBp
bnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCisgICAg
UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnQ6OklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBJUEM6OkRhdGFS
ZWZlcmVuY2UgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFN0cmluZyBzb3VyY2VPcmlnaW4pCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4
IDMwODZlYTRmYzBlLi5lNTQxODhiNTUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0zNSw2
ICszNSw4IEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAi
V2ViU1dPcmlnaW5UYWJsZS5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmg+CkBAIC02OCw5ICs3
MCwxMyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJ
blNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0YwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6RmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihyZXN1bHQpKTsK
IH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYgc2NyaXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKQordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUodWludDY0X3QgZGVzdGluYXRpb25TZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzY3JpcHRWYWx1ZSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc291cmNlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29u
bmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc2NyaXB0VmFsdWUtPmRhdGEoKSB9
LCBzb3VyY2VPcmlnaW4pKTsKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHBvc3Rpbmcg
bWVzc2FnZXMgZnJvbSB3b3JrZXJzLgorICAgIGlmICghaXM8RG9jdW1lbnQ+KHNvdXJjZSkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShkZXN0aW5hdGlvblNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzY3JpcHRWYWx1ZS0+ZGF0
YSgpIH0sIGRvd25jYXN0PERvY3VtZW50Pihzb3VyY2UpLmlkZW50aWZpZXIoKSwgc291cmNlLm9y
aWdpbigpKSk7CiB9CiAKIGJvb2wgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpoYXNTZXJ2aWNlV29y
a2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25z
dApAQCAtOTIsNiArOTgsMTEgQEAgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gV2ViU1dD
bGllbnRDb25uZWN0aW9uOjpzdGFydEZldGNoKFdlYlNlcnZpY2VXb3JrZXIKICAgICByZXR1cm4g
U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpjcmVhdGUocHJvdmlkZXIsIFdURk1vdmUobG9hZGVy
KSwgaWRlbnRpZmllciwgbV9jb25uZWN0aW9uLmdldCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9
CiAKK3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudCh1aW50NjRfdCBkZXN0aW5hdGlvblNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAg
ICBTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRl
c3RpbmF0aW9uU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0b3IoKSksIHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBzb3VyY2VPcmlnaW4pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggMWNkMjky
OTllM2YuLjI3Y2RiYTJhMDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAtNTYsNyArNTYsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckpvYkRhdGEmKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0
SW5TZXJ2ZXIoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoUmVzdWx0JikgZmluYWw7
Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgZmluYWw7CisgICAgdm9pZCBwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IGRlc3RpbmF0aW9uU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
JiYsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNvdXJjZSkgZmluYWw7CiAKICAg
ICB2b2lkIGRpc2Nvbm5lY3RlZEZyb21XZWJQcm9jZXNzKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTY0LDYg
KzY0LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JP
cmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mKSBjb25zdCBmaW5hbDsKICAgICBS
ZWY8U2VydmljZVdvcmtlckNsaWVudEZldGNoPiBzdGFydEZldGNoKFdlYlNlcnZpY2VXb3JrZXJQ
cm92aWRlciYsIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcj4mJiwgdWludDY0X3QgaWRlbnRp
ZmllciwgU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpDYWxsYmFjayYmKTsKIAorICAgIHZvaWQg
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0X3QgZGVzdGluYXRpb25TY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBt
ZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VPcmlnaW4pOworCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVTdG9yYWdl
Sm9iKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAxMTU1ZDFiYWFkOC4uOTExY2YxMDJlNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMwLDYgKzMwLDcgQEAgbWVz
c2FnZXMgLT4gV2ViU1dDbGllbnRDb25uZWN0aW9uIHsKICAgICBTdGFydFNjcmlwdEZldGNoRm9y
U2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIpCiAKICAgICBTZXRTV09yaWdpblRhYmxlU2hh
cmVkTWVtb3J5KFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlKQorICAgIFBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGRlc3RpbmF0aW9uU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCB1aW50
NjRfdCBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcAppbmRleCAzZDBiMjdkOWNkYi4uM2IzMTVjMDhlMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTEzMCw5ICsxMzAsMTQgQEAgdm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmkKICAgICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPnRocmVhZCgp
LnBvc3RGZXRjaFRhc2soV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KG9wdGlvbnMpKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3QgZGVzdGluYXRpb25T
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdl
LCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50OjpJZGVudGlmaWVyJiBzb3VyY2VJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KG1lc3NhZ2UudmVj
dG9yKCkpLCBzb3VyY2VPcmlnaW4pOworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoZGVzdGluYXRpb25TZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChtZXNzYWdlLnZl
Y3RvcigpKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKK30KKwordm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgU2VydmljZVdvcmtlckNsaWVudDo6SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHVpbnQ2NF90IHNv
dXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikK
K3sKKyAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9y
YWdlUHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBtZXNzYWdlLT5kYXRhKCkgfSwgc291cmNl
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiksIDApOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCAwNDZk
MjI2M2I2NC4uNjJiNmRjY2Y0NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApA
QCAtNDEsMTkgKzQxLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZTsKIAotY2xhc3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gOiBwdWJs
aWMgV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFs
IDogcHVibGljIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgdm9pZCBwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKTsKLQogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKIAorICAgIC8vIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFn
ZXI6OkNvbm5lY3Rpb24uCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVu
dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50OjpJZGVudGlmaWVyJiBkZXN0aW5h
dGlvbklkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVz
c2FnZSwgdWludDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luKSBmaW5hbDsKKworICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lk
IHN0YXJ0U2VydmljZVdvcmtlcih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJik7CiAgICAgdm9pZCBzdGFy
dEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRj
aElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYpOworICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlvblNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2Us
IGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnQ6OklkZW50aWZpZXImIHNvdXJjZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKIAogICAgIFJlZjxJUEM6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3M7CiAgICAgdWludDY0X3QgbV9w
YWdlSUQgeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCmluZGV4IDVkNzJkMWI1ZjgzLi5jZGI0MzkzNGJhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAKIG1l
c3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIHsKICAgICBTdGFydFNlcnZp
Y2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEpCiAgICAgU3RhcnRGZXRj
aCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykK
LSAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNv
dXJjZU9yaWdpbikKKyAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVp
bnQ2NF90IGRlc3RpbmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVy
ZW5jZSBtZXNzYWdlLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudDo6SWRlbnRp
ZmllciBzb3VyY2VJZGVudGlmaWVyLCBTdHJpbmcgc291cmNlT3JpZ2luKQogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325097</attachid>
            <date>2017-10-26 19:03:49 -0700</date>
            <delta_ts>2017-10-26 19:18:04 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>178794_SW_Client_postMessage_wip.patch</filename>
            <type>text/plain</type>
            <size>56022</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVz
c2FnZS5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggN2QxMjIzNTQ3NWYuLmMwOTU1ZjgzNGE3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKLVBBU1M6IFN0YXR1cyBj
b2RlIGlzIDIwMAotUEFTUzogU3RhdHVzIHRleHQgaXMgV29ya2VyIHJlY2VpdmVkIHRoZSBtZXNz
YWdlIGV2ZW50LiBtZXNzYWdlRXZlbnQub3JpZ2luIHdhcyBodHRwczovLzEyNy4wLjAuMTo4NDQz
Ci1QQVNTOiBTb3VyY2UgaXMgU2VydmljZSB3b3JrZXIKK1BBU1M6IENsaWVudCByZWNlaXZlZCBt
ZXNzYWdlIGZyb20gc2VydmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MworUEFTUzogUmVjZWl2ZWQgbWVzc2FnZSAnTWVzc2FnZSAxJyBmcm9tIG9yaWdpbiAnaHR0cHM6
Ly8xMjcuMC4wLjE6ODQ0MycKK1BBU1M6IENsaWVudCByZWNlaXZlZCBtZXNzYWdlIGZyb20gc2Vy
dmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MworUEFTUzogUmVjZWl2
ZWQgbWVzc2FnZSAnTWVzc2FnZSAyJyBmcm9tIG9yaWdpbiAnaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MycKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCmluZGV4IDg0Mzk1YjJhNmQzLi45NDhjODI0
OTQ2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLXdvcmtlci5qcwpAQCAtMSwxNCArMSw0IEBACi1sZXQg
cmVzcG9uc2VUb1NlbmQgPSB7IHN0YXR1czogNDA0LCBzdGF0dXNUZXh0OiAiTm90IEZvdW5kIiB9
OwotCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKLSAgICBy
ZXNwb25zZVRvU2VuZCA9IGV2ZW50LmRhdGE7Ci0gICAgcmVzcG9uc2VUb1NlbmQuc3RhdHVzVGV4
dCArPSAiIG1lc3NhZ2VFdmVudC5vcmlnaW4gd2FzICIgKyBldmVudC5vcmlnaW47CisgICAgZXZl
bnQuc291cmNlLnBvc3RNZXNzYWdlKCJSZWNlaXZlZCBtZXNzYWdlICciICsgZXZlbnQuZGF0YSAr
ICInIGZyb20gb3JpZ2luICciICsgZXZlbnQub3JpZ2luICsgIiciKTsKIH0pOwogCi1zZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoImZldGNoIiwgKGV2ZW50KSA9PiB7Ci0gICAgaWYgKGV2ZW50LnJlcXVl
c3QudXJsLmluZGV4T2YoInRlc3QxIikgIT09IC0xKSB7Ci0gICAgICAgIGV2ZW50LnJlc3BvbmRX
aXRoKG5ldyBSZXNwb25zZShudWxsLCByZXNwb25zZVRvU2VuZCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGV2ZW50LnJlc3BvbmRXaXRoKFJlc3BvbnNlLmVycm9yKCkpOwotfSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmpzCmluZGV4IDk2YTQxY2EwODY4Li4xZjBhNjMwNDRiZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2UuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuanMK
QEAgLTEsMzcgKzEsMTQgQEAKLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGZpbmlzaFNXVGVzdCgp
OwotfQotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB0cnkgewotICAgICAgICBhd2Fp
dCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIiwgeyB9KTsKLQotICAgICAgICBuYXZpZ2F0
b3Iuc2VydmljZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKHsgc3RhdHVzOiAyMDAsIHN0
YXR1c1RleHQ6ICJXb3JrZXIgcmVjZWl2ZWQgdGhlIG1lc3NhZ2UgZXZlbnQuIiB9KTsKLQotICAg
ICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgidGVzdDEiKTsKLSAgICAgICAgaWYgKHJl
c3BvbnNlLnN0YXR1cyA9PSAyMDApCi0gICAgICAgICAgICBsb2coIlBBU1M6IFN0YXR1cyBjb2Rl
IGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2co
IkZBSUw6IFN0YXR1cyBjb2RlIGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotCi0gICAgICAgIGlm
IChyZXNwb25zZS5zdGF0dXNUZXh0LnN0YXJ0c1dpdGgoIldvcmtlciByZWNlaXZlZCB0aGUgbWVz
c2FnZSIpKQotICAgICAgICAgICAgbG9nKCJQQVNTOiBTdGF0dXMgdGV4dCBpcyAiICsgcmVzcG9u
c2Uuc3RhdHVzVGV4dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygiRkFJTDogU3Rh
dHVzIHRleHQgaXMgIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOwotCi0gICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICBsZXQgc291cmNlID0gaW50ZXJuYWxzLmZldGNo
UmVzcG9uc2VTb3VyY2UocmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKHNvdXJjZSA9PT0gIlNl
cnZpY2Ugd29ya2VyIikKLSAgICAgICAgICAgICAgICBsb2coIlBBU1M6IFNvdXJjZSBpcyAiICsg
c291cmNlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsb2coIkZBSUw6IFNv
dXJjZSBpcyAiICsgc291cmNlKTsKLSAgICAgICAgfQotICAgIH0gY2F0Y2goZSkgewotICAgICAg
ICBsb2coIkdvdCBleGNlcHRpb246ICIgKyBlKTsKLSAgICB9Ci0gICAgZmluaXNoU1dUZXN0KCk7
Ci19Ci0KLXRlc3QoKTsKK3ZhciBtZXNzYWdlTnVtYmVyID0gMTsKK25hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgeworICAg
IGxvZygiUEFTUzogQ2xpZW50IHJlY2VpdmVkIG1lc3NhZ2UgZnJvbSBzZXJ2aWNlIHdvcmtlciwg
b3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICBsb2coIlBBU1M6ICIgKyBldmVudC5kYXRh
KTsKKyAgICBpZiAobWVzc2FnZU51bWJlciA9PSAxKSB7CisgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgiTWVzc2FnZSAyIik7CisgICAgICAgIG1lc3NhZ2VOdW1iZXIrKzsKKyAgICB9
IGVsc2UKKyAgICAgICAgZmluaXNoU1dUZXN0KCk7Cit9KTsKKworbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdl
LXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBuYXZpZ2F0b3Iuc2Vydmlj
ZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKCJNZXNzYWdlIDEiKTsKK30pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY0
MDAwOGRjMmQzLi5lMzMwYzUzMjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjI3Niw2ICsyMjc2LDcgQEAKIAkJODM3OTY0
Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAy
MThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLzsgfTsKIAkJODM3QTgwMTMxRTFF
MTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0IGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBODAxMTFFMUUxMjczMDAwMjZCOUYg
LyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07CiAJCTgzN0I3RDIwMURDM0Y1NTAwMEQw
NTFGQyAvKiBWYWxpZGF0aW9uQnViYmxlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QjdEMUYxREMzRjU0QzAwRDA1MUZDIC8qIFZhbGlkYXRp
b25CdWJibGVJT1MubW0gKi87IH07CisJCTgzN0Q0NjI3MUZBMkE4Q0UwMDU0RTFGQSAvKiBTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODM3RDQ2MjUxRkEyQThDNTAwNTRFMUZBIC8qIFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODM3RkIzNDUxRjlFQTA2RDAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNz
YWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzN0ZCMzQwMUY5RUEwNjYwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggKi87
IH07CiAJCTgzODZBOTZEMTlGNjFCMkUwMEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzODZBOTZDMTlGNjFCMkUw
MEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuaCAqLzsgfTsKIAkJODM4ODY3MzUxRDEzQkE1RjAwMzY5
N0QwIC8qIFJlbmRlck9iamVjdEVudW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4Mzg4NjczNDFEMTNCQTU5MDAzNjk3RDAgLyogUmVuZGVyT2JqZWN0
RW51bXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtOTU5NSw2ICs5NTk2LDcgQEAKIAkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xv
Y2F0aW9uUG9zaXRpb25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlv
bi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwogCQk4MzdBODAxMjFFMUUxMjczMDAwMjZCOUYgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5nc2Rp
Y3Q7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJp
bmdzZGljdDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk4MzdCN0QxRjFEQzNGNTRD
MDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFZhbGlkYXRpb25CdWJibGVJT1MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgzN0Q0NjI1MUZBMkE4QzUwMDU0RTFGQSAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzdERkIzNDFFQkZFQTcwMDA2MDEzODUgLyogRWxlbWVudENTU0lubGluZVN0eWxlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdGQjM0MDFGOUVBMDY2MDBEMEZDMzEgLyogRXh0ZW5k
YWJsZU1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzN0ZC
MzQyMUY5RUEwNjcwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTczODgsNiArMTczOTAsNyBAQAogCQkJ
CTQ2RUYxNDIxMUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgKi8s
CiAJCQkJNDZFRjE0MjIxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRzLmgg
Ki8sCiAJCQkJNDZFRjE0MjMxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRz
LmlkbCAqLywKKwkJCQk4MzdENDYyNTFGQTJBOEM1MDA1NEUxRkEgLyogU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXIuaCAqLywKIAkJCQk4MzY5RkRGQjFGQTEwMkNCMDBDMUZGMUYgLyogU2Vy
dmljZVdvcmtlckNsaWVudFR5cGUuaCAqLywKIAkJCQk4MzY5RkRGOTFGQTEwMkNBMDBDMUZGMUYg
LyogU2VydmljZVdvcmtlckNsaWVudFR5cGUuaWRsICovLAogCQkJCTUxRjE3NTU4MUYzRUJDMEMw
MEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCAqLywKQEAgLTI2NTcyLDYgKzI2
NTc1LDcgQEAKIAkJCQlBMUVENzc4RDFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDQ0MyQjUxNDE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDQ0MyQjUxNjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODM3RDQ2MjcxRkEyQThDRTAwNTRFMUZBIC8q
IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUZC
MUE1NzEyMEE1RDA2MDBEQzAyQTAgLyogRGV2aWNlTW90aW9uQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMUVBRjk3RTEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9T
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUZCMUE1OTEyMEE1RDA2MDBEQzAyQTAgLyogRGV2aWNl
TW90aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCBhNjMxYjljYTI4OS4uMzJkZWEyOTMyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtNDM0LDEyICs0MzQsMjMgQEAgc3RhdGljIHZvaWQgcHJpbnROYXZpZ2F0aW9uRXJyb3JNZXNz
YWdlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiBhY3RpdmVVUkwsIGNvbnMKIAogdWludDY0X3Qg
RG9jdW1lbnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24gPSAwOwogCi1IYXNoU2V0PERvY3VtZW50Kj4m
IERvY3VtZW50OjphbGxEb2N1bWVudHMoKQorc3RhdGljIERvY3VtZW50OjpJZGVudGlmaWVyIGdl
bmVyYXRlRG9jdW1lbnRJZGVudGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaFNldDxEb2N1bWVudCo+PiBkb2N1bWVudHM7CisgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50
aWZpZXIgPSAwOworICAgIHJldHVybiArK2lkZW50aWZpZXI7Cit9CisKK2F1dG8gRG9jdW1lbnQ6
OmFsbERvY3VtZW50c01hcCgpIC0+IERvY3VtZW50c01hcCYKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxJZGVudGlmaWVyLCBEb2N1bWVudCo+PiBkb2N1bWVudHM7CiAgICAg
cmV0dXJuIGRvY3VtZW50czsKIH0KIAorYXV0byBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkgLT4g
RG9jdW1lbnRzTWFwOjpWYWx1ZXNJdGVyYXRvclJhbmdlCit7CisgICAgcmV0dXJuIGFsbERvY3Vt
ZW50c01hcCgpLnZhbHVlcygpOworfQorCiBzdGF0aWMgaW5saW5lIGludCBjdXJyZW50T3JpZW50
YXRpb24oRnJhbWUqIGZyYW1lKQogewogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCkBA
IC00OTYsOCArNTA3LDEwIEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0
IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMsIHVuc2lnCiAgICAgLCBtX2lzU3lu
dGhlc2l6ZWQoY29uc3RydWN0aW9uRmxhZ3MgJiBTeW50aGVzaXplZCkKICAgICAsIG1faXNOb25S
ZW5kZXJlZFBsYWNlaG9sZGVyKGNvbnN0cnVjdGlvbkZsYWdzICYgTm9uUmVuZGVyZWRQbGFjZWhv
bGRlcikKICAgICAsIG1fb3JpZW50YXRpb25Ob3RpZmllcihjdXJyZW50T3JpZW50YXRpb24oZnJh
bWUpKQorICAgICwgbV9pZGVudGlmaWVyKGdlbmVyYXRlRG9jdW1lbnRJZGVudGlmaWVyKCkpCiB7
Ci0gICAgYWxsRG9jdW1lbnRzKCkuYWRkKHRoaXMpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gYWxs
RG9jdW1lbnRzTWFwKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CisgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIC8vIFdlIGRlcGVuZCBv
biB0aGUgdXJsIGdldHRpbmcgaW1tZWRpYXRlbHkgc2V0IGluIHN1YmZyYW1lcywgYnV0IHdlCiAg
ICAgLy8gYWxzbyBkZXBlbmQgb24gdGhlIHVybCBOT1QgZ2V0dGluZyBpbW1lZGlhdGVseSBzZXQg
aW4gb3BlbmVkIHdpbmRvd3MuCkBAIC01NDcsNyArNTYwLDggQEAgUmVmPERvY3VtZW50PiBEb2N1
bWVudDo6Y3JlYXRlKERvY3VtZW50JiBjb250ZXh0RG9jdW1lbnQpCiAKIERvY3VtZW50Ojp+RG9j
dW1lbnQoKQogewotICAgIGFsbERvY3VtZW50cygpLnJlbW92ZSh0aGlzKTsKKyAgICBib29sIHdh
c1JlbW92ZWQgPSBhbGxEb2N1bWVudHNNYXAoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwogCiAgICAgQVNTRVJUKCFyZW5k
ZXJWaWV3KCkpOwogICAgIEFTU0VSVChtX3BhZ2VDYWNoZVN0YXRlICE9IEluUGFnZUNhY2hlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNDg4ZTEyYzYyNmYuLjNlYTllMDQyMmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtMzQ3LDcgKzM0NywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJl
bW92ZWRMYXN0UmVmKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxEb2N1
bWVudCo+JiBhbGxEb2N1bWVudHMoKTsKKyAgICB1c2luZyBJZGVudGlmaWVyID0gdWludDY0X3Q7
CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9CisKKyAgICB1c2luZyBEb2N1bWVudHNNYXAgPSBIYXNoTWFwPElkZW50aWZpZXIsIERvY3Vt
ZW50Kj47CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERvY3VtZW50c01hcDo6VmFsdWVzSXRl
cmF0b3JSYW5nZSBhbGxEb2N1bWVudHMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRG9j
dW1lbnRzTWFwJiBhbGxEb2N1bWVudHNNYXAoKTsKIAogICAgIE1lZGlhUXVlcnlNYXRjaGVyJiBt
ZWRpYVF1ZXJ5TWF0Y2hlcigpOwogCkBAIC0xODI5LDYgKzE4MzQsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9ncmFudFN0b3JhZ2VBY2Nlc3NPdmVycmlkZSB7IGZhbHNlIH07CiAKICAgICBSZWZQ
dHI8RG9jdW1lbnRUaW1lbGluZT4gbV90aW1lbGluZTsKKyAgICBJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKIH07CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50KERvY3Vt
ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
aW5kZXggOTJlOTA1OWI5YTAuLjEzYjFkYjRiNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJO
b0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNpbmNsdWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgpAQCAtNDUsNiArNDYsNyBAQAog
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgogI2lu
Y2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5oPgog
I2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KQEAgLTUyNSw0ICs1MjcsMTgg
QEAgSlNDOjpFeGVjU3RhdGUqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSgpCiAg
ICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29w
ZSk7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitTZXJ2aWNlV29ya2VyQ29udGFp
bmVyKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkKK3sK
KyAgICBOYXZpZ2F0b3JCYXNlKiBuYXZpZ2F0b3IgPSBudWxscHRyOworICAgIGlmIChpczxEb2N1
bWVudD4oKnRoaXMpKSB7CisgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb3duY2FzdDxEb2N1
bWVudD4oKnRoaXMpLmRvbVdpbmRvdygpKQorICAgICAgICAgICAgbmF2aWdhdG9yID0gd2luZG93
LT5uYXZpZ2F0b3IoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbmF2aWdhdG9yID0gJmRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykubmF2aWdhdG9yKCk7CisKKyAgICByZXR1cm4gbmF2
aWdhdG9yID8gbmF2aWdhdG9yLT5zZXJ2aWNlV29ya2VyKCkgOiBudWxscHRyOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCmluZGV4IDI2NmY0OWFlZWMwLi41MjE4YmU4NTIzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC02OCw2ICs2OCwxMCBA
QCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xhc3MgVVJM
OwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorY2xhc3MgU2VydmljZVdvcmtlckNvbnRh
aW5lcjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgSURCQ2xpZW50IHsKIGNsYXNzIElEQkNvbm5lY3Rp
b25Qcm94eTsKIH0KQEAgLTIzNCw2ICsyMzgsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIHVpbnQ2NF90IHNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOyB9CiAgICAgdm9pZCBz
ZXRTZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKHVpbnQ2NF90IGlkZW50aWZpZXIpIHsg
bV9zZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KKworICAgIFNlcnZpY2VX
b3JrZXJDb250YWluZXIqIHNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKICNlbmRpZgogCiBwcm90
ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ci5jcHAKaW5kZXggMTc5NjRlYWQ2MDQuLjBjZjlhODE2NDJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXI6OnBvc3RNZXNzYWdlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RT
dXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJQYXNzaW5nIE1lc3NhZ2VQb3J0IG9iamVjdHMg
dG8gcG9zdE1lc3NhZ2UgaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9OwogCiAgICAgYXV0byYgc3dD
b25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29y
a2VyQ29ubmVjdGlvbkZvclNlc3Npb24oY29udGV4dC5zZXNzaW9uSUQoKSk7Ci0gICAgc3dDb25u
ZWN0aW9uLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUobV9pZGVudGlmaWVy
LCBtZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0Lm9yaWdpbigpKTsKKyAgICBz
d0Nvbm5lY3Rpb24ucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShtX2lkZW50
aWZpZXIsIG1lc3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnRleHQpOwogCiAgICAgcmV0
dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAppbmRleCBjZDMwMWQwODgyMy4uZDM1ZWY1ZTE0Y2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudC5jcHAKQEAgLTI4LDE0ICsyOCwyNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50LmgiCiAKKyNpbmNsdWRlICJNZXNzYWdl
UG9ydC5oIgorI2luY2x1ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisj
aW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkLmgi
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2VydmljZVdvcmtlckNsaWVudDo6U2VydmljZVdv
cmtlckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUeXBlIHR5cGUpCitT
ZXJ2aWNlV29ya2VyQ2xpZW50OjpTZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIFR5cGUgdHlwZSkK
ICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZjb250ZXh0KQorICAgICwgbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKIH0KIAorU2VydmljZVdv
cmtlckNsaWVudDo6flNlcnZpY2VXb3JrZXJDbGllbnQoKQoreworfQorCiBTdHJpbmcgU2Vydmlj
ZVdvcmtlckNsaWVudDo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1cm4geyB9OwpAQCAtNDgsMTQg
KzYxLDM2IEBAIGF1dG8gU2VydmljZVdvcmtlckNsaWVudDo6ZnJhbWVUeXBlKCkgY29uc3QgLT4g
RnJhbWVUeXBlCiAKIFN0cmluZyBTZXJ2aWNlV29ya2VyQ2xpZW50OjppZCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gbV9pZGVudGlmaWVyLnRvU3RyaW5nKCk7CiB9CiAK
LUV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdlKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6
OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlcikKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJD
bGllbnQ6OnBvc3RNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6
SlNWYWx1ZSBtZXNzYWdlVmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4m
JiB0cmFuc2ZlcikKIHsKLSAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHRyYW5zZmVyKTsKLSAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiY2xpZW50LnBvc3RNZXNzYWdlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQi
KSB9OworICAgIGF1dG8qIGV4ZWNTdGF0ZSA9IGNvbnRleHQuZXhlY1N0YXRlKCk7CisgICAgQVNT
RVJUKGV4ZWNTdGF0ZSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7
CisgICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmV4ZWNT
dGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKHRyYW5zZmVyKSwgcG9ydHMsIFNlcmlhbGl6YXRp
b25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSk7CisgICAgaWYgKG1lc3NhZ2UuaGFzRXhjZXB0
aW9uKCkpCisgICAgICAgIHJldHVybiBtZXNzYWdlLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAg
IC8vIERpc2VudGFuZ2xlIHRoZSBwb3J0IGluIHByZXBhcmF0aW9uIGZvciBzZW5kaW5nIGl0IHRv
IHRoZSByZW1vdGUgY29udGV4dC4KKyAgICBhdXRvIGNoYW5uZWxzT3JFeGNlcHRpb24gPSBNZXNz
YWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhXVEZNb3ZlKHBvcnRzKSk7CisgICAgaWYgKGNoYW5u
ZWxzT3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBjaGFubmVsc09y
RXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNl
bmRpbmcgdGhlIGNoYW5uZWxzLgorICAgIGF1dG8gY2hhbm5lbHMgPSBjaGFubmVsc09yRXhjZXB0
aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGlmIChjaGFubmVscyAmJiAhY2hhbm5lbHMt
PmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9y
LCBBU0NJSUxpdGVyYWwoIlBhc3NpbmcgTWVzc2FnZVBvcnQgb2JqZWN0cyB0byBwb3N0TWVzc2Fn
ZSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH07CisKKyAgICB1aW50NjRfdCBzb3VyY2VJZGVudGlm
aWVyID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQo
KS5pZGVudGlmaWVyKCk7CisgICAgY2FsbE9uTWFpblRocmVhZChbbWVzc2FnZSA9IG1lc3NhZ2Uu
cmVsZWFzZVJldHVyblZhbHVlKCksIGRlc3RpbmF0aW9uSWRlbnRpZmllciA9IG1faWRlbnRpZmll
ciwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luID0gY29udGV4dC5vcmlnaW4oKS5pc29s
YXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0g
U1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAg
Y29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmln
aW4pOworICAgIH0pOworCisgICAgcmV0dXJuIHsgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50LmgKaW5kZXggNjliOTFlMDhhMzkuLjZkNDc5NWZmNGMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmgKQEAg
LTI5LDE5ICsyOSwyMyBAQAogCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCIKICNp
bmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNWYWx1ZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKIGNsYXNz
IFNlcnZpY2VXb3JrZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyQ2xp
ZW50PiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKKyAgICB1
c2luZyBJZGVudGlmaWVyID0gU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CisKICAgICB1
c2luZyBUeXBlID0gU2VydmljZVdvcmtlckNsaWVudFR5cGU7CiAgICAgZW51bSBjbGFzcyBGcmFt
ZVR5cGUgewogICAgICAgICBBdXhpbGlhcnksCkBAIC01MCwyMSArNTQsMjQgQEAgcHVibGljOgog
ICAgICAgICBOb25lCiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckNsaWVu
dD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFR5cGUgdHlwZSkKKyAg
ICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBUeXBlIHR5cGUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnRleHQsIHR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdv
cmtlckNsaWVudChjb250ZXh0LCBpZGVudGlmaWVyLCB0eXBlKSk7CiAgICAgfQogCisgICAgflNl
cnZpY2VXb3JrZXJDbGllbnQoKTsKKwogICAgIFN0cmluZyB1cmwoKSBjb25zdDsKICAgICBGcmFt
ZVR5cGUgZnJhbWVUeXBlKCkgY29uc3Q7CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CiAgICAgU3RyaW5nIGlkKCkgY29uc3Q7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lk
PiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBWZWN0
b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpOworICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHBvc3RNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBKU0M6OkpTVmFs
dWUgbWVzc2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVy
KTsKIAogcHJvdGVjdGVkOgotICAgIFNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFR5cGUpOworICAgIFNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IElkZW50aWZpZXImLCBUeXBlKTsKIAorICAgIElkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwogICAgIFR5cGUgbV90eXBlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCmluZGV4IGY3ZTRh
OThkZTIwLi5kOGFjYWM5OTg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbApAQCAtMzUsNyArMzUsNyBAQAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZSB0eXBlOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRp
b25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOworICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShh
bnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKIH07
CiAKIGVudW0gRnJhbWVUeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE0NjQ4NTI4ZTE3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIHsKKyAgICB1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcjsKKworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZzo6bnVtYmVyKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSArICItIiArICBTdHJp
bmc6Om51bWJlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcik7IH0KK307CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uLmNwcAppbmRleCAyNTkxOWFiMWEzOS4uYWJmZGFjYjM3NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTI5LDI1ICsyOSwxMSBAQAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgotI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250
YWluZXIuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIldvcmtl
ck5hdmlnYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyKiBjb250YWluZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgTmF2aWdhdG9yQmFzZSogbmF2aWdhdG9y
ID0gbnVsbHB0cjsKLSAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiB3aW5kb3cgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkuZG9tV2luZG93KCkp
Ci0gICAgICAgICAgICBuYXZpZ2F0b3IgPSB3aW5kb3ctPm5hdmlnYXRvcigpOwotICAgIH0gZWxz
ZQotICAgICAgICBuYXZpZ2F0b3IgPSAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRl
eHQpLm5hdmlnYXRvcigpOwotCi0gICAgcmV0dXJuIG5hdmlnYXRvciA/IG5hdmlnYXRvci0+c2Vy
dmljZVdvcmtlcigpIDogbnVsbHB0cjsKLX0KLQogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJhdGlvbkRhdGEpCiAgICAg
OiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbkRhdGEoV1RG
TW92ZShyZWdpc3RyYXRpb25EYXRhKSkKQEAgLTk0LDcgKzgwLDcgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOjp1bnJlZ2lzdGVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8qIGNvbnRhaW5lciA9IGNvbnRh
aW5lckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKmNvbnRleHQpOworICAgIGF1dG8qIGNvbnRh
aW5lciA9IGNvbnRleHQtPnNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKICAgICBpZiAoIWNvbnRh
aW5lcikgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVy
cm9yKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcAppbmRleCA0NmQy
OTkwZTI5Ni4uZTcxNDQzYjAwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKQEAgLTMyLDgg
KzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50OjpTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCi0gICAgOiBTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnRleHQsIFR5cGU6OldpbmRvdykK
K1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6OlNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikKKyAgICA6IFNlcnZpY2VXb3JrZXJDbGllbnQoY29udGV4dCwgaWRlbnRpZmllciwgVHlwZTo6
V2luZG93KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaAppbmRleCA4M2M4MGUyODA3Yi4uM2Uy
ZjM5NTZhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaApAQCAtMzYsOSArMzYsOSBAQCBjbGFzcyBE
ZWZlcnJlZFByb21pc2U7CiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQgZmluYWwg
OiBwdWJsaWMgU2VydmljZVdvcmtlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxT
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtl
cldpbmRvd0NsaWVudChjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNl
cnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoY29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAog
ICAgIFZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUoKSBjb25zdDsKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgbmF2aWdhdGUoY29uc3QgU3RyaW5nJiB1cmwsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIFNlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IElkZW50aWZpZXIm
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKaW5k
ZXggNjc4YjkyYjQzNjAuLjk0NmIzZmQ1NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAt
NTksMTQgKzU5LDE0IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSogU1dDb250ZXh0TWFuYWdl
cjo6c2VydmljZVdvcmtlclRocmVhZFByb3h5KHVpbnQ2NF90IHNlCiAgICAgcmV0dXJuIG1fd29y
a2VyTWFwLmdldChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiB9CiAKLXZvaWQgU1dDb250ZXh0
TWFuYWdlcjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgU1dDb250ZXh0TWFuYWdlcjo6
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlv
blNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1l
c3NhZ2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBzb3VyY2VJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBhdXRvKiBzZXJ2aWNlV29y
a2VyID0gbV93b3JrZXJNYXAuZ2V0KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBhdXRv
KiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJNYXAuZ2V0KGRlc3RpbmF0aW9uU2VydmljZVdvcmtl
cklkZW50aWZpZXIpOwogICAgIGlmICghc2VydmljZVdvcmtlcikKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIHZhbGlkIE1lc3NhZ2VQb3J0Q2hhbm5lbHMu
Ci0gICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZShXVEZNb3ZlKG1lc3NhZ2UpLCBudWxscHRyLCBzb3VyY2VPcmlnaW4pOworICAg
IHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUoV1RGTW92ZShtZXNzYWdlKSwgbnVsbHB0ciwgc291cmNlSWRlbnRpZmllciwgc291cmNl
T3JpZ2luKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmlu
ZGV4IGNkY2NhY2MxYTA3Li45ZDYyNDAwZDQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMzQs
NiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0
VmFsdWU7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiAKIGNsYXNzIFNX
Q29udGV4dE1hbmFnZXIgewogcHVibGljOgpAQCAtNDIsNiArNDMsOCBAQCBwdWJsaWM6CiAgICAg
Y2xhc3MgQ29ubmVjdGlvbiB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5Db25uZWN0
aW9uKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgdWludDY0
X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKSA9IDA7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlv
bihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJik7CkBAIC00OSw3ICs1Miw3IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyVGhyZWFk
KFJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eSogc2VydmljZVdvcmtlclRocmVhZFByb3h5KHVpbnQ2NF90
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlvblNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyJiBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdp
bik7CiAKIHByaXZhdGU6CiAgICAgU1dDb250ZXh0TWFuYWdlcigpID0gZGVmYXVsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggY2Y3OGU5MTkwMmIuLjZhZGViYmYyZDQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudC5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAi
V29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CkBAIC05OSwx
MiArMTAwLDEzIEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cG9zdEZldGNoVGFzayhSZWY8
U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50CiAgICAgfSwgV29ya2VyUnVuTG9v
cDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYmIG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4mJiBj
aGFubmVscywgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoUmVmPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+JiYgY2hhbm5lbHMsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
JiBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soW2NoYW5uZWxzID0gV1RGTW92ZShjaGFu
bmVscyksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4gPSBzb3VyY2VP
cmlnaW4uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBt
dXRhYmxlIHsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soW2NoYW5uZWxz
ID0gV1RGTW92ZShjaGFubmVscyksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJ
ZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4gPSBzb3VyY2VPcmlnaW4uaXNvbGF0ZWRDb3B5KCldIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYg
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KTsKICAgICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmds
ZVBvcnRzKHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShjaGFubmVscykpOwotICAg
ICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIFdURk1vdmUobWVzc2FnZSksIHNvdXJj
ZU9yaWdpbikpOworICAgICAgICBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNlIHNvdXJjZSA9
IFJlZlB0cjxTZXJ2aWNlV29ya2VyQ2xpZW50PiB7IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6
OmNyZWF0ZShjb250ZXh0LCBzb3VyY2VJZGVudGlmaWVyKSB9OworICAgICAgICBzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChFeHRlbmRhYmxlTWVzc2FnZUV2ZW50OjpjcmVh
dGUoV1RGTW92ZShwb3J0cyksIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgeyB9LCBX
VEZNb3ZlKHNvdXJjZSkpKTsKICAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVh
ZCgpLndvcmtlck9iamVjdFByb3h5KCkuY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KHNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgfSk7CiAg
ICAgcnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oCmluZGV4IDMzNzMxMzljMmI1Li4yNGYxNTI2ZjdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWw7CiBjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBXb3JrZXJMb2FkZXJQcm94eTsKIGNsYXNzIFdv
cmtlck9iamVjdFByb3h5Oworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwog
c3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIAogdXNpbmcgTWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXkgPSBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIDE+
OwpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtl
ck9iamVjdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0RmV0Y2hUYXNrKFJlZjxTZXJ2aWNlV29ya2VyRmV0
Y2g6OkNsaWVudD4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIEZldGNoT3B0aW9ucyYmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUo
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4mJiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIHNvdXJjZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKIAogcHJvdGVjdGVkOgogICAg
IFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBh
c3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0
b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0Ns
aWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDhlOTNjNWUwNmM5Li5kNjI3NWY1OGI4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVu
dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMjgsNyArMjgsMTAgQEAKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJDb250YWluZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogCkBAIC0xMDksNiArMTEyLDM1
IEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKHVp
bnQ2NF90IGpvYklkZW50aWZpZXIpCiAgICAgam9iLT5zdGFydFNjcmlwdEZldGNoKCk7CiB9CiAK
K3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVu
dCh1aW50NjRfdCBkZXN0aW5hdGlvblNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBS
ZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICAv
LyBGSVhNRTogY2xpZW50SWRlbnRpZmllciBjYW4gb25seSBpZGVudGlmeSBhIERvY3VtZW50IGF0
IHRoZSBtb21lbnQuCisgICAgYXV0byogZGVzdGluYXRpb25Eb2N1bWVudCA9IERvY3VtZW50Ojph
bGxEb2N1bWVudHNNYXAoKS5nZXQoZGVzdGluYXRpb25TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcik7CisgICAgaWYgKCFkZXN0aW5hdGlvbkRvY3VtZW50KSB7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiQ291bGQgbm90IGZpbmQgY2xpZW50IGRvY3VtZW50IHdpdGggdGhlIGdpdmVuIGlk
ZW50aWZpZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIGNvbnRhaW5l
ciA9IGRlc3RpbmF0aW9uRG9jdW1lbnQtPnNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKKyAgICBp
ZiAoIWNvbnRhaW5lcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBmaW5kIHNl
cnZpY2Ugd29ya2VyIGNvbnRhaW5lciBmb3IgY2xpZW50IGRvY3VtZW50Iik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogUGFzcyBpbiBwb3J0cy4KKyAgICBWZWN0b3I8
UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7CisKKyAgICBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VF
dmVudFNvdXJjZT4gc291cmNlOworICAgIGlmIChkZXN0aW5hdGlvbkRvY3VtZW50LT5zZWxlY3Rl
ZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgPT0gc291cmNlU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpIHsKKyAgICAgICAgQVNTRVJUKGNvbnRhaW5lci0+Y29udHJvbGxlcigpLT5pZGVudGlmaWVy
KCkgPT0gc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgICAgICBzb3VyY2UgPSBN
ZXNzYWdlRXZlbnRTb3VyY2UgeyBSZWZQdHI8U2VydmljZVdvcmtlcj4geyBjb250YWluZXItPmNv
bnRyb2xsZXIoKSB9IH07CisgICAgfSBlbHNlCisgICAgICAgIHNvdXJjZSA9IE1lc3NhZ2VFdmVu
dFNvdXJjZSB7IFJlZlB0cjxTZXJ2aWNlV29ya2VyPiB7IFNlcnZpY2VXb3JrZXI6OmNyZWF0ZSgq
ZGVzdGluYXRpb25Eb2N1bWVudCwgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIpIH0gfTsK
KworICAgIGF1dG8gbWVzc2FnZUV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShw
b3J0cyksIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgeyB9LCBXVEZNb3ZlKHNvdXJj
ZSkpOworICAgIGNvbnRhaW5lci0+ZGlzcGF0Y2hFdmVudChtZXNzYWdlRXZlbnQpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xp
ZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V0NsaWVudENvbm5lY3Rpb24uaAppbmRleCA1MDhhNThhNDlmMi4uYzYxYTYxZTc2YjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0Ns
aWVudENvbm5lY3Rpb24uaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hl
ZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iJik7CiAgICAgdm9pZCBmaW5pc2hlZEZldGNoaW5nU2Ny
aXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGZhaWxlZEZl
dGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWlu
dDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
JiYsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3QgZGVzdGluYXRpb25T
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc291cmNlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHVpbnQ2NF90
IGlkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc1NlcnZpY2VXb3Jr
ZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QgPSAwOwpA
QCAtNTksNiArNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdp
c3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5y
ZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGJv
b2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRT
Y3JpcHRGZXRjaEZvclNlcnZlcih1aW50NjRfdCBqb2JJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGRl
c3RpbmF0aW9uU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CmluZGV4IDRhZmU3ZTdlMjFjLi4zOWUwZjg5NWRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxpbmdDb25zdHJhaW50cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9U
ZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgpAQCAt
MTkwMSw2ICsxOTAyLDI3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXF1ZXN0
RGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBUZXh0Q2hlY2tpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCit2b2lkIEFyZ3VtZW50Q29kZXI8
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAg
ZW5jb2RlciA8PCBpZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIDw8IGlkZW50
aWZpZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI7Cit9CisKK2Jvb2wgQXJndW1l
bnRDb2RlcjxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAg
ICB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgdWludDY0X3Qgc2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlkZW50aWZpZXIgPSB7IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciB9OworICAgIHJl
dHVybiB0cnVlOworfQorI2VuZGlmCisKIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0
JiByZXN1bHQpCiB7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc3VsdC50eXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMWMyZGM3MDc5
MDMuLjMwOGU5MmU1YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaApAQCAtMTU3LDYgKzE1NywxMCBAQCBzdHJ1Y3QgTWVkaWFDb25zdHJhaW50czsK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIHVzaW5nIElEQktleVBhdGggPSBWYXJpYW50
PFN0cmluZywgVmVjdG9yPFN0cmluZz4+OwogI2VuZGlmCisKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CisjZW5kaWYKIH0K
IAogbmFtZXNwYWNlIElQQyB7CkBAIC00NzcsNiArNDgxLDEzIEBAIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdERhdGE+IHsKICAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3RE
YXRhJik7CiB9OwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
eworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJik7Cit9OworI2VuZGlm
CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VGV4dENoZWNraW5n
UmVzdWx0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdSZXN1bHQmKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IGZjMWM1ZjA3NWJiLi4wMDY0MzZmNjUxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VydmljZVdvcmtlckpvYkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhLmg+CkBAIC0xMDgsOSArMTA5LDEwIEBAIHZvaWQgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzdGFydEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qg
c2VydmljCiAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpTdGFydEZldGNoKGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVy
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucykpOwogfQogCi12b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVp
bnQ2NF90IGRlc3RpbmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlU2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewotICAgIHNlbmRUb0Nv
bnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgbWVzc2FnZSwgc291cmNlT3JpZ2luKSk7CisgICAgU2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXIgc291cmNlSWRlbnRpZmllciB7IGlkZW50aWZpZXIoKSwgc291cmNlU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIgfTsKKyAgICBzZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgeyBkZXN0aW5hdGlvblNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtZXNz
YWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4gfSk7CiB9CiAKIHZvaWQgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTM4LDYgKzE0
MCwxMSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkTm90SGFuZGxlRmV0Y2godWlu
dDY0X3QgZmV0Y2hJZGVudGlmaWVyKQogICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJ
ZGVudGlmaWVyKTsKIH0KIAordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGRlc3RpbmF0aW9uU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWlu
dDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6UG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBkZXN0aW5hdGlvblNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgc291cmNlT3JpZ2luIH0pOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHRDb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5oCmluZGV4IDI5MjZlODNlNDMxLi42MDM5N2U5N2MxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRGYWlsRmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZE5vdEhh
bmRsZUZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGRlc3RpbmF0aW9uU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwg
dWludDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKTsKKwogcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnQgU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24gKE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJvY2VzcykKICAgICB2b2lkIHJlamVj
dEpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEmKSBmaW5hbDsKQEAgLTY2LDcgKzY4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
c3RhcnRGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpGZXRjaE9wdGlvbnMmKTsKIAotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Cisg
ICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IGRl
c3RpbmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIHRo
ZSBTVyBjb250ZXh0IFdlYlByb2Nlc3MKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckNvbnRl
eHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAz
YjIwNDVjNjQ0NC4uZGU1MTVkOTBiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjgsNyArMjgsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJTV1NlcnZlckNvbm5lY3Rpb24gewogICAgIEZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIo
c3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCByZXN1bHQpCiAKICAgICBT
dGFydEZldGNoKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6
OkZldGNoT3B0aW9ucyBvcHRpb25zKQotICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVy
ZW5jZSBtZXNzYWdlLCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3QgZGVzdGluYXRpb25TZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTdHJpbmcgc291cmNlT3JpZ2luKQogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAppbmRleCA4NzY0Y2QwNzAyZC4uZWNkNTE3MDc4
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3Mu
Y3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNpbmNsdWRlIDxw
YWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgpAQCAtNDM1
LDYgKzQzNiwxMiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGaW5pc2hGZXRjaCh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0XwogICAgICAgICBjb25uZWN0aW9u
LT5kaWRGaW5pc2hGZXRjaChmZXRjaElkZW50aWZpZXIpOwogfQogCit2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlv
biA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoZGVzdGluYXRpb25JZGVudGlmaWVyLnNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgc291cmNlT3JpZ2luKTsKK30KKwogdm9pZCBTdG9yYWdlUHJvY2Vzczo6cmVnaXN0ZXJTV1Nl
cnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAg
IEFTU0VSVCghbV9zd1NlcnZlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRp
ZmllcigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
LmgKaW5kZXggYWE4NjQ1Yjc3MWMuLmVjNWUwOGM4NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBTV1NlcnZlcjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7
CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBzdHJ1Y3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleTsKIH0KIApAQCAtMTI1LDYgKzEyNiw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZhaWxGZXRjaCh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVy
KTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZUZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOworCisgICAgdm9pZCBwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRleGVk
RGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAz
MzkyYWY3MTVkMS4uYWIwOGZjZDEwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDYsNSArNDYsNiBA
QCBtZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkUmVj
ZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IGZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSkKICAgICBEaWRSZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
LCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZEZpbmlzaEZldGNoKHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCisg
ICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgSVBDOjpEYXRh
UmVmZXJlbmNlIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBTdHJpbmcgc291cmNlT3JpZ2luKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRl
eCAzMDg2ZWE0ZmMwZS4uZTU0MTg4YjU1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzUs
NiArMzUsOCBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IldlYlNXT3JpZ2luVGFibGUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNz
YWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoUmVzdWx0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oPgpAQCAtNjgsOSAr
NzAsMTMgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0
SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGMKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246OkZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIocmVzdWx0KSk7
CiB9CiAKLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIHNjcmlwdFZhbHVlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbikKK3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IGRlc3RpbmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc2NyaXB0VmFsdWUsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNvdXJjZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHNjcmlwdFZhbHVlLT5kYXRhKCkg
fSwgc291cmNlT3JpZ2luKSk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBwb3N0aW5n
IG1lc3NhZ2VzIGZyb20gd29ya2Vycy4KKyAgICBpZiAoIWlzPERvY3VtZW50Pihzb3VyY2UpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoZGVzdGluYXRpb25TZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc2NyaXB0VmFsdWUtPmRh
dGEoKSB9LCBkb3duY2FzdDxEb2N1bWVudD4oc291cmNlKS5pZGVudGlmaWVyKCksIHNvdXJjZS5v
cmlnaW4oKSkpOwogfQogCiBib29sIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6aGFzU2VydmljZVdv
cmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29u
c3QKQEAgLTkyLDYgKzk4LDExIEBAIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+IFdlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChXZWJTZXJ2aWNlV29ya2VyCiAgICAgcmV0dXJu
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Y3JlYXRlKHByb3ZpZGVyLCBXVEZNb3ZlKGxvYWRl
ciksIGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwog
fQogCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJDbGllbnQodWludDY0X3QgZGVzdGluYXRpb25TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7Cisg
ICAgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChk
ZXN0aW5hdGlvblNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmFkb3B0KG1lc3NhZ2UudmVjdG9yKCkpLCBzb3VyY2VTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgc291cmNlT3JpZ2luKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDFjZDI5
Mjk5ZTNmLi4yN2NkYmEyYTA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTU2LDcgKzU2LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJKb2JEYXRhJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hGZXRjaGluZ1Njcmlw
dEluU2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpIGZpbmFs
OwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRf
dCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pIGZpbmFsOworICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlvblNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYmLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzb3VyY2UpIGZpbmFsOwogCiAg
ICAgdm9pZCBkaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC02NCw2
ICs2NCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9y
T3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgY29uc3QgZmluYWw7CiAgICAg
UmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gc3RhcnRGZXRjaChXZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXImLCBSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2smJik7CiAKKyAgICB2b2lk
IHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGRlc3RpbmF0aW9uU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
bWVzc2FnZSwgdWludDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlU3RvcmFn
ZUpvYihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggMTE1NWQxYmFhZDguLjkxMWNmMTAyZTQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMCw2ICszMCw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiB7CiAgICAgU3RhcnRTY3JpcHRGZXRjaEZv
clNlcnZlcih1aW50NjRfdCBqb2JJZGVudGlmaWVyKQogCiAgICAgU2V0U1dPcmlnaW5UYWJsZVNo
YXJlZE1lbW9yeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSkKKyAgICBQb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBkZXN0aW5hdGlvblNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgdWlu
dDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4p
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggM2QwYjI3ZDljZGIuLjA3OWEyOGYwYzg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0xMzAsOSArMTMwLDE0IEBAIHZvaWQg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpCiAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT50aHJlYWQo
KS5wb3N0RmV0Y2hUYXNrKFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShvcHRpb25zKSk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IGRlc3RpbmF0aW9u
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2Fn
ZSwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIHNvdXJjZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0
b3IoKSksIHNvdXJjZU9yaWdpbik7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShkZXN0aW5hdGlvblNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KG1lc3NhZ2UudmVj
dG9yKCkpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOworfQorCit2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVu
dChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlm
aWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJj
ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sK
KyAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
UHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBtZXNzYWdlLT5kYXRhKCkgfSwgc291cmNlU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiksIDApOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCAwNDZkMjI2
M2I2NC4uMmRhMDk2YzE2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAt
NDEsMTkgKzQxLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZTsKIAotY2xhc3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gOiBwdWJsaWMg
V2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKK2NsYXNzIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgdm9pZCBwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKTsKLQogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmKTsKIAorICAgIC8vIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6
OkNvbm5lY3Rpb24uCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2Us
IHVpbnQ2NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikgZmluYWw7CisKKyAgICAvLyBJUEMgbWVzc2FnZXMuCiAgICAgdm9pZCBzdGFy
dFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOwogICAgIHZvaWQgc3RhcnRGZXRj
aCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmKTsKKyAgICB2b2lkIHBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3QgZGVzdGluYXRpb25TZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgc291cmNlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlv
bj4gbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzczsKICAgICB1aW50NjRfdCBtX3BhZ2VJRCB7
IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
aW5kZXggNWQ3MmQxYjVmODMuLjk0YjhlMDMxYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQAogbWVzc2FnZXMg
LT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gewogICAgIFN0YXJ0U2VydmljZVdvcmtl
cih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSkKICAgICBTdGFydEZldGNoKHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIs
IHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zKQotICAgIFBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCBTdHJpbmcgc291cmNlT3Jp
Z2luKQorICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qg
ZGVzdGluYXRpb25TZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1l
c3NhZ2UsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBzb3Vy
Y2VJZGVudGlmaWVyLCBTdHJpbmcgc291cmNlT3JpZ2luKQogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325099</attachid>
            <date>2017-10-26 19:18:06 -0700</date>
            <delta_ts>2017-10-27 09:19:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178794-20171026191805.patch</filename>
            <type>text/plain</type>
            <size>64136</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQ0ZGEwNzNiNjk2Nzk5
MTc1Y2QxNzg3MmE0YTRhZTkxM2JiNTM1NS4uODgxODhhMDBlZWMyNjY5OGYwNDcyMWY0YzlkM2Jk
YWRlZTAzMTE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTEwLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGluaXRpYWwgc3VwcG9y
dCBmb3Igc2VydmljZVdvcmtlckNsaWVudC5wb3N0TWVzc2FnZSgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg3OTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaW5pdGlhbCBzdXBwb3J0IGZvciBz
ZXJ2aWNlV29ya2VyQ2xpZW50LnBvc3RNZXNzYWdlKCk6CisgICAgICAgIC0gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2NsaWVudC1wb3N0bWVzc2FnZQorCisgICAgICAgIEl0
IGlzIG5vdyBwb3NzaWJsZSB0byBkbyBiaS1kaXJlY3Rpb25hbCBjb21tdW5pY2F0aW9uIHdpdGgg
YSBzZXJ2aWNlIHdvcmtlcgorICAgICAgICB2aWEgcG9zdE1lc3NhZ2UoKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIHVwZGF0ZWQgZXhpc3RpbmcgdGVzdC4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVEb2N1bWVudElkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6YWxsRG9jdW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Om1faWRlbnRpZmllcik6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppZGVudGlmaWVyIGNvbnN0
KToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXJ2aWNlV29ya2VyQ29udGFpbmVyKToK
KyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXI6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50OjpT
ZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnQ6On5TZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnQ6OmlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnQ6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudDo6Y3JlYXRl
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGw6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50LmlkbC4KKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbjo6dW5yZWdpc3Rlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
cldpbmRvd0NsaWVudDo6U2VydmljZVdvcmtlcldpbmRvd0NsaWVudCk6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXQ29udGV4dE1hbmFnZXI6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
aDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVu
dENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oOgorCiAyMDE3LTEw
LTI2ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IEZyYW1lVmlldzo6c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyBhbmQgRG9jdW1lbnQ6OnNlcnZp
Y2VTY3JpcHRlZEFuaW1hdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYmRlZjVkNzZhNDNmZjllNGZmOTU2NjE5
YzcwMDk4NjRkYmU2NDUzZS4uZDcxMjQwYzFlYmMxZjU2ZDMwZWFlYTA2MmY5MTA3NGQzN2Q3ODIw
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxNy0xMC0yNiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIHNlcnZp
Y2VXb3JrZXJDbGllbnQucG9zdE1lc3NhZ2UoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4Nzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3Igc2VydmljZVdvcmtl
ckNsaWVudC5wb3N0TWVzc2FnZSgpOgorICAgICAgICAtIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9T
ZXJ2aWNlV29ya2VyLyNjbGllbnQtcG9zdG1lc3NhZ2UKKworICAgICAgICBJdCBpcyBub3cgcG9z
c2libGUgdG8gZG8gYmktZGlyZWN0aW9uYWwgY29tbXVuaWNhdGlvbiB3aXRoIGEgc2VydmljZSB3
b3JrZXIKKyAgICAgICAgdmlhIHBvc3RNZXNzYWdlKCkuCisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+OjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46
CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQp
OgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmg6CisgICAgICAgICog
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW46CisKIDIwMTctMTAtMjYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIFtQYXltZW50IFJlcXVlc3RdIEVuYWJsZSBQYXltZW50IFJlcXVlc3Qgd2hlbmV2
ZXIgQXBwbGUgUGF5IGlzIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NDAwMDhkYzJkM2ZkNmQ4NmUwZDk4ZGQ4NzFj
MDU5MzliZDY3YWE2Li4wNjEwY2FhN2U1OGZjOGVmMGYwOTZkZmMyMmQzYTczNmY3OTY2MjY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMjc2LDYgKzIyNzYsNyBAQAogCQk4Mzc5NjRDRjFGOERCNjlEMDAyMThFQTAgLyogR2Vv
bG9jYXRpb25Qb3NpdGlvbklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0
aW9uSU9TLm1tICovOyB9OwogCQk4MzdBODAxMzFFMUUxMjczMDAwMjZCOUYgLyogTG9jYWxpemFi
bGUuc3RyaW5nc2RpY3QgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzN0E4MDExMUUxRTEyNzMwMDAyNkI5RiAvKiBMb2NhbGl6YWJsZS5zdHJpbmdzZGlj
dCAqLzsgfTsKIAkJODM3QjdEMjAxREMzRjU1MDAwRDA1MUZDIC8qIFZhbGlkYXRpb25CdWJibGVJ
T1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdC
N0QxRjFEQzNGNTRDMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSAqLzsgfTsKKwkJ
ODM3RDQ2MjcxRkEyQThDRTAwNTRFMUZBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdENDYy
NTFGQTJBOEM1MDA1NEUxRkEgLyogU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzdGQjM0NTFG
OUVBMDZEMDBEMEZDMzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIzNDAxRjlFQTA2NjAwRDBGQzMx
IC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJODM4NkE5NkQxOUY2MUIyRTAw
RTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM4NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5o
ICovOyB9OwogCQk4Mzg4NjczNTFEMTNCQTVGMDAzNjk3RDAgLyogUmVuZGVyT2JqZWN0RW51bXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzODg2NzM0
MUQxM0JBNTkwMDM2OTdEMCAvKiBSZW5kZXJPYmplY3RFbnVtcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05NTk1LDYgKzk1OTYsNyBAQAogCQk4
Mzc5NjRDRTFGOERCNjlBMDAyMThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlb2xvY2F0aW9uUG9zaXRpb25J
T1MubW07IHBhdGggPSBNb2R1bGVzL2dlb2xvY2F0aW9uL2lvcy9HZW9sb2NhdGlvblBvc2l0aW9u
SU9TLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTgzN0E4MDEyMUUxRTEyNzMw
MDAyNkI5RiAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzZGljdDsgbmFtZSA9IEVuZ2xpc2g7IHBhdGgg
PSBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3NkaWN0OyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CiAJCTgzN0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnVi
YmxlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVmFsaWRh
dGlvbkJ1YmJsZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODM3RDQ2MjUx
RkEyQThDNTAwNTRFMUZBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzN0RGQjM0MUVCRkVBNzAwMDYwMTM4
NSAvKiBFbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVs
ZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
N0ZCMzQwMUY5RUEwNjYwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3RkIzNDIxRjlFQTA2NzAwRDBGQzMxIC8qIEV4
dGVuZGFibGVNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNzM4NSw2ICsxNzM4Nyw3IEBACiAJCQkJNDZFRjE0MjcxRjk3QjdCQTAwQzJBNTI0
IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQuY3BwICovLAogCQkJCTQ2RUYxNDI0MUY5N0I3QkEwMEMy
QTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50LmggKi8sCiAJCQkJNDZFRjE0MjgxRjk3QjdCQTAw
QzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQuaWRsICovLAorCQkJCTgzN0Q0NjI1MUZBMkE4
QzUwMDU0RTFGQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oICovLAogCQkJCTQ2
RUYxNDIxMUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgKi8sCiAJ
CQkJNDZFRjE0MjIxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRzLmggKi8s
CiAJCQkJNDZFRjE0MjMxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRzLmlk
bCAqLywKQEAgLTI4OTUyLDYgKzI4OTU1LDcgQEAKIAkJCQkyRDkzQUVFMzE5REY1NjQxMDAyQTg2
QzMgLyogU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFG
MTc1NUQxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ2RUYxNDJEMUY5N0I3RDgwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk4MzdENDYyNzFGQTJBOENFMDA1NEUxRkEgLyogU2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2RUYxNDJDMUY5N0I3RDgw
MEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM2
OUZERkMxRkExMDJFMzAwQzFGRjFGIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MUYxNzU1RjFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckNv
bnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBhNjMx
YjljYTI4OWMxM2JjMGYwYzFmM2MzZjEwMTIyYWU1OWQ4YTliLi4zMmRlYTI5MzIwNzFhMTEyODAw
MjAyYTg4YWZlYzg3MjNiZDAxYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTQzNCwx
MiArNDM0LDIzIEBAIHN0YXRpYyB2b2lkIHByaW50TmF2aWdhdGlvbkVycm9yTWVzc2FnZShGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgYWN0aXZlVVJMLCBjb25zCiAKIHVpbnQ2NF90IERvY3VtZW50
OjpzX2dsb2JhbFRyZWVWZXJzaW9uID0gMDsKIAotSGFzaFNldDxEb2N1bWVudCo+JiBEb2N1bWVu
dDo6YWxsRG9jdW1lbnRzKCkKK3N0YXRpYyBEb2N1bWVudDo6SWRlbnRpZmllciBnZW5lcmF0ZURv
Y3VtZW50SWRlbnRpZmllcigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8
RG9jdW1lbnQqPj4gZG9jdW1lbnRzOworICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVyID0g
MDsKKyAgICByZXR1cm4gKytpZGVudGlmaWVyOworfQorCithdXRvIERvY3VtZW50OjphbGxEb2N1
bWVudHNNYXAoKSAtPiBEb2N1bWVudHNNYXAmCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hNYXA8SWRlbnRpZmllciwgRG9jdW1lbnQqPj4gZG9jdW1lbnRzOwogICAgIHJldHVybiBk
b2N1bWVudHM7CiB9CiAKK2F1dG8gRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpIC0+IERvY3VtZW50
c01hcDo6VmFsdWVzSXRlcmF0b3JSYW5nZQoreworICAgIHJldHVybiBhbGxEb2N1bWVudHNNYXAo
KS52YWx1ZXMoKTsKK30KKwogc3RhdGljIGlubGluZSBpbnQgY3VycmVudE9yaWVudGF0aW9uKEZy
YW1lKiBmcmFtZSkKIHsKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQpAQCAtNDk2LDgg
KzUwNywxMCBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVy
bCwgdW5zaWduZWQgZG9jdW1lbnRDbGFzc2VzLCB1bnNpZwogICAgICwgbV9pc1N5bnRoZXNpemVk
KGNvbnN0cnVjdGlvbkZsYWdzICYgU3ludGhlc2l6ZWQpCiAgICAgLCBtX2lzTm9uUmVuZGVyZWRQ
bGFjZWhvbGRlcihjb25zdHJ1Y3Rpb25GbGFncyAmIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIpCiAg
ICAgLCBtX29yaWVudGF0aW9uTm90aWZpZXIoY3VycmVudE9yaWVudGF0aW9uKGZyYW1lKSkKKyAg
ICAsIG1faWRlbnRpZmllcihnZW5lcmF0ZURvY3VtZW50SWRlbnRpZmllcigpKQogewotICAgIGFs
bERvY3VtZW50cygpLmFkZCh0aGlzKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IGFsbERvY3VtZW50
c01hcCgpLmFkZChtX2lkZW50aWZpZXIsIHRoaXMpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAKICAgICAvLyBXZSBkZXBlbmQgb24gdGhlIHVy
bCBnZXR0aW5nIGltbWVkaWF0ZWx5IHNldCBpbiBzdWJmcmFtZXMsIGJ1dCB3ZQogICAgIC8vIGFs
c28gZGVwZW5kIG9uIHRoZSB1cmwgTk9UIGdldHRpbmcgaW1tZWRpYXRlbHkgc2V0IGluIG9wZW5l
ZCB3aW5kb3dzLgpAQCAtNTQ3LDcgKzU2MCw4IEBAIFJlZjxEb2N1bWVudD4gRG9jdW1lbnQ6OmNy
ZWF0ZShEb2N1bWVudCYgY29udGV4dERvY3VtZW50KQogCiBEb2N1bWVudDo6fkRvY3VtZW50KCkK
IHsKLSAgICBhbGxEb2N1bWVudHMoKS5yZW1vdmUodGhpcyk7CisgICAgYm9vbCB3YXNSZW1vdmVk
ID0gYWxsRG9jdW1lbnRzTWFwKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CisgICAgQVNTRVJUX1VO
VVNFRCh3YXNSZW1vdmVkLCB3YXNSZW1vdmVkKTsKIAogICAgIEFTU0VSVCghcmVuZGVyVmlldygp
KTsKICAgICBBU1NFUlQobV9wYWdlQ2FjaGVTdGF0ZSAhPSBJblBhZ2VDYWNoZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCmluZGV4IDQ4OGUxMmM2MjZmOWIzMTA1ZDJiMmY4NjQxODViNzg0ZTkzMTAxYjEu
LjNlYTllMDQyMmIxMTgwYWNjODVlNTU4ZGI4ZWQ2NWVkNWZmZWY0MmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCkBAIC0zNDcsNyArMzQ3LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlZExh
c3RSZWYoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNoU2V0PERvY3VtZW50Kj4m
IGFsbERvY3VtZW50cygpOworICAgIHVzaW5nIElkZW50aWZpZXIgPSB1aW50NjRfdDsKKyAgICBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwor
ICAgIHVzaW5nIERvY3VtZW50c01hcCA9IEhhc2hNYXA8SWRlbnRpZmllciwgRG9jdW1lbnQqPjsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRG9jdW1lbnRzTWFwOjpWYWx1ZXNJdGVyYXRvclJh
bmdlIGFsbERvY3VtZW50cygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEb2N1bWVudHNN
YXAmIGFsbERvY3VtZW50c01hcCgpOwogCiAgICAgTWVkaWFRdWVyeU1hdGNoZXImIG1lZGlhUXVl
cnlNYXRjaGVyKCk7CiAKQEAgLTE4MjksNiArMTgzNCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2dyYW50U3RvcmFnZUFjY2Vzc092ZXJyaWRlIHsgZmFsc2UgfTsKIAogICAgIFJlZlB0cjxEb2N1
bWVudFRpbWVsaW5lPiBtX3RpbWVsaW5lOworICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwog
fTsKIAogRWxlbWVudCogZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA5
MmU5MDU5YjlhMDNiMjllY2EyZjA0NTRmZmI5MDBkNDRmNDA1ODVhLi4xM2IxZGI0YjU1ZjdmY2Q0
ZTNlYzcwY2Y3ZjIwZTc5ZmMwOWNiZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiSlNET01F
eGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJOb0V2ZW50
RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNpbmNsdWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgpAQCAtNDUsNiArNDYsNyBAQAogI2luY2x1
ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXb3Jr
ZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgogI2luY2x1ZGUg
IldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1
ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KQEAgLTUyNSw0ICs1MjcsMTggQEAgSlND
OjpFeGVjU3RhdGUqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSgpCiAgICAgcmV0
dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29wZSk7CiB9
CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitTZXJ2aWNlV29ya2VyQ29udGFpbmVyKiBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkKK3sKKyAgICBO
YXZpZ2F0b3JCYXNlKiBuYXZpZ2F0b3IgPSBudWxscHRyOworICAgIGlmIChpczxEb2N1bWVudD4o
KnRoaXMpKSB7CisgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb3duY2FzdDxEb2N1bWVudD4o
KnRoaXMpLmRvbVdpbmRvdygpKQorICAgICAgICAgICAgbmF2aWdhdG9yID0gd2luZG93LT5uYXZp
Z2F0b3IoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbmF2aWdhdG9yID0gJmRvd25jYXN0PFdvcmtl
ckdsb2JhbFNjb3BlPigqdGhpcykubmF2aWdhdG9yKCk7CisKKyAgICByZXR1cm4gbmF2aWdhdG9y
ID8gbmF2aWdhdG9yLT5zZXJ2aWNlV29ya2VyKCkgOiBudWxscHRyOworfQorI2VuZGlmCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oCmluZGV4IDI2NmY0OWFlZWMwNjNmYzQ0YjBmOGM3OGQ3ZTkzMDEyMzE0ZWRiN2Eu
LjUyMThiZTg1MjMyOWU4MWJmMzljNjA3NDQyNzM1ZjA4MDUxZDJjZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNjgsNiArNjgsMTAgQEAgY2xh
c3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKIGNsYXNzIFVSTDsKIAor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK2NsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXI7
CisjZW5kaWYKKwogbmFtZXNwYWNlIElEQkNsaWVudCB7CiBjbGFzcyBJREJDb25uZWN0aW9uUHJv
eHk7CiB9CkBAIC0yMzQsNiArMjM4LDggQEAgcHVibGljOgogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICB1aW50NjRfdCBzZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgfQogICAgIHZvaWQgc2V0U2Vs
ZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKSB7IG1fc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisKKyAgICBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyKiBzZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7CiAjZW5kaWYKIAogcHJvdGVjdGVk
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3Bw
CmluZGV4IDE3OTY0ZWFkNjA0YzljNDMwYjU5MzlhZWFkNmQ0Y2UyMDE5NTZlZjIuLjBjZjlhODE2
NDJlMmUzZWEwY2YyYzZjNjkxMDVhMWE4Nzg2YzBkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlcjo6cG9zdE1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgSlMKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBv
cnRlZEVycm9yLCBBU0NJSUxpdGVyYWwoIlBhc3NpbmcgTWVzc2FnZVBvcnQgb2JqZWN0cyB0byBw
b3N0TWVzc2FnZSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH07CiAKICAgICBhdXRvJiBzd0Nvbm5l
Y3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJD
b25uZWN0aW9uRm9yU2Vzc2lvbihjb250ZXh0LnNlc3Npb25JRCgpKTsKLSAgICBzd0Nvbm5lY3Rp
b24ucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShtX2lkZW50aWZpZXIsIG1l
c3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnRleHQub3JpZ2luKCkpOworICAgIHN3Q29u
bmVjdGlvbi5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKG1faWRlbnRpZmll
ciwgbWVzc2FnZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCk7CiAKICAgICByZXR1cm4g
eyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnQuY3BwCmluZGV4IGNkMzAxZDA4ODIzZDk0YmUxMTNlMDE0OWI5MmExYzM2
MjUyNDI2ZjMuLjY3ZGUzMGNkZjFmMTg1ODdlODAxNDVjM2EwNThhMjQzNzg2NTgwNTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudC5jcHAKQEAgLTI4LDE0ICsyOCwyNiBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50LmgiCiAKKyNpbmNsdWRlICJNZXNzYWdlUG9y
dC5oIgorI2luY2x1ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5j
bHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtl
clRocmVhZC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VXb3JrZXJDbGllbnQ6
OlNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVHlw
ZSB0eXBlKQorU2VydmljZVdvcmtlckNsaWVudDo6U2VydmljZVdvcmtlckNsaWVudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBU
eXBlIHR5cGUpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcigmY29udGV4dCkKKyAg
ICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV90eXBlKHR5cGUpCiB7CiB9CiAK
K1NlcnZpY2VXb3JrZXJDbGllbnQ6On5TZXJ2aWNlV29ya2VyQ2xpZW50KCkKK3sKK30KKwogU3Ry
aW5nIFNlcnZpY2VXb3JrZXJDbGllbnQ6OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsgfTsK
QEAgLTQ4LDE0ICs2MCwzNiBAQCBhdXRvIFNlcnZpY2VXb3JrZXJDbGllbnQ6OmZyYW1lVHlwZSgp
IGNvbnN0IC0+IEZyYW1lVHlwZQogCiBTdHJpbmcgU2VydmljZVdvcmtlckNsaWVudDo6aWQoKSBj
b25zdAogewotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIG1faWRlbnRpZmllci50b1N0cmlu
ZygpOwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBTZXJ2aWNlV29ya2VyQ2xpZW50Ojpwb3N0TWVz
c2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBWZWN0b3I8SlNDOjpT
dHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpCitFeGNlcHRpb25Pcjx2b2lkPiBTZXJ2
aWNlV29ya2VyQ2xpZW50Ojpwb3N0TWVzc2FnZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBKU0M6OkpTVmFsdWUgbWVzc2FnZVZhbHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpK
U09iamVjdD4+JiYgdHJhbnNmZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1lc3NhZ2UpOwotICAg
IFVOVVNFRF9QQVJBTSh0cmFuc2Zlcik7Ci0gICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBv
cnRlZEVycm9yLCBBU0NJSUxpdGVyYWwoImNsaWVudC5wb3N0TWVzc2FnZSgpIGlzIG5vdCB5ZXQg
c3VwcG9ydGVkIikgfTsKKyAgICBhdXRvKiBleGVjU3RhdGUgPSBjb250ZXh0LmV4ZWNTdGF0ZSgp
OworICAgIEFTU0VSVChleGVjU3RhdGUpOworCisgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+IHBvcnRzOworICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKCpleGVjU3RhdGUsIG1lc3NhZ2VWYWx1ZSwgV1RGTW92ZSh0cmFuc2ZlciksIHBvcnRzLCBT
ZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UpOworICAgIGlmIChtZXNzYWdl
Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbWVzc2FnZS5yZWxlYXNlRXhjZXB0aW9u
KCk7CisKKyAgICAvLyBEaXNlbnRhbmdsZSB0aGUgcG9ydCBpbiBwcmVwYXJhdGlvbiBmb3Igc2Vu
ZGluZyBpdCB0byB0aGUgcmVtb3RlIGNvbnRleHQuCisgICAgYXV0byBjaGFubmVsc09yRXhjZXB0
aW9uID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMoV1RGTW92ZShwb3J0cykpOworICAg
IGlmIChjaGFubmVsc09yRXhjZXB0aW9uLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
Y2hhbm5lbHNPckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICAvLyBGSVhNRTog
U3VwcG9ydCBzZW5kaW5nIHRoZSBjaGFubmVscy4KKyAgICBhdXRvIGNoYW5uZWxzID0gY2hhbm5l
bHNPckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBpZiAoY2hhbm5lbHMgJiYg
IWNoYW5uZWxzLT5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBw
b3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJQYXNzaW5nIE1lc3NhZ2VQb3J0IG9iamVjdHMgdG8g
cG9zdE1lc3NhZ2UgaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9OworCisgICAgdWludDY0X3Qgc291
cmNlSWRlbnRpZmllciA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4
dCkudGhyZWFkKCkuaWRlbnRpZmllcigpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW21lc3NhZ2Ug
PSBtZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBkZXN0aW5hdGlvbklkZW50aWZpZXIgPSBt
X2lkZW50aWZpZXIsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiA9IGNvbnRleHQub3Jp
Z2luKCkuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgeworICAgICAgICBpZiAoYXV0byogY29u
bmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAg
ICAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRl
c3RpbmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwg
c291cmNlT3JpZ2luKTsKKyAgICB9KTsKKworICAgIHJldHVybiB7IH07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5oCmluZGV4IDY5YjkxZTA4YTM5NmI4Yjk1ZjJhOTc0ODkxYjAw
NmI3OGZjNzlkZjUuLjUzOGMwYjJmNmNiMzg2MDg2YTc4MTBhOWE5NDQwMzQ5N2JhNjJhNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnQuaApAQCAtMjksMTIgKzI5LDEyIEBACiAKICNpbmNsdWRlICJDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50
VHlwZS5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KIAogbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU1ZhbHVl
OwogfQogCkBAIC00Miw2ICs0Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2Vy
dmljZVdvcmtlckNsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnQ+
LCBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgorICAgIHVzaW5n
IElkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjsKKwogICAgIHVzaW5n
IFR5cGUgPSBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTsKICAgICBlbnVtIGNsYXNzIEZyYW1lVHlw
ZSB7CiAgICAgICAgIEF1eGlsaWFyeSwKQEAgLTUwLDIxICs1MiwyNCBAQCBwdWJsaWM6CiAgICAg
ICAgIE5vbmUKICAgICB9OwogCi0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50PiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgVHlwZSB0eXBlKQorICAgIHN0
YXRpYyBSZWY8U2VydmljZVdvcmtlckNsaWVudD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIFR5cGUgdHlwZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJDbGllbnQoY29u
dGV4dCwgdHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2Vy
Q2xpZW50KGNvbnRleHQsIGlkZW50aWZpZXIsIHR5cGUpKTsKICAgICB9CiAKKyAgICB+U2Vydmlj
ZVdvcmtlckNsaWVudCgpOworCiAgICAgU3RyaW5nIHVybCgpIGNvbnN0OwogICAgIEZyYW1lVHlw
ZSBmcmFtZVR5cGUoKSBjb25zdDsKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KICAgICBTdHJpbmcgaWQoKSBjb25zdDsKIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBv
c3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIFZlY3RvcjxK
U0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2Zlcik7CisgICAgRXhjZXB0aW9uT3I8
dm9pZD4gcG9zdE1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6SlNWYWx1ZSBt
ZXNzYWdlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgU2VydmljZVdvcmtlckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgVHlwZSk7CisgICAgU2VydmljZVdvcmtlckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgY29uc3QgSWRlbnRpZmllciYsIFR5cGUpOwogCisgICAgSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CiAgICAgVHlwZSBtX3R5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5pZGwKaW5kZXggZjdlNGE5OGRl
MjBkMGMxZmZiM2MzM2VkYTM1M2U0ZWQ3ZDlkYzAzNC4uZDhhY2FjOTk4OTFhNjdkN2ZmZWI1OTE2
MmU4YWEwZWZkN2FhNmM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbApAQCAtMzUsNyArMzUsNyBAQAogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZSB0eXBlOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUs
IE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRpb25h
bCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOworICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShhbnkg
bWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKIH07CiAK
IGVudW0gRnJhbWVUeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTQ2NDg1MjhlMTc4OWZlZWZmMGU5ZGIwMDk5ZTcxMmQ3MzgwNWI3YQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciB7CisgICAgdWludDY0X3Qgc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgdWludDY0X3Qgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXI7CisKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBT
dHJpbmc6Om51bWJlcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikgKyAiLSIgKyAgU3RyaW5n
OjpudW1iZXIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpOyB9Cit9OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggMjU5MTlhYjFhMzk5NjlhYzU0ZWJjZmI4ODQ5NjBm
MDNlNzAwOWZjMS4uYWJmZGFjYjM3NWViMzIxZTFhMTQxNjY4N2RiNDczMjIwYThhMjg1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uLmNwcApAQCAtMjksMjUgKzI5LDExIEBACiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCi0jaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRh
aW5lci5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiV29ya2Vy
TmF2aWdhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXIqIGNvbnRhaW5lckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBOYXZpZ2F0b3JCYXNlKiBuYXZpZ2F0b3Ig
PSBudWxscHRyOwotICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpIHsKLSAgICAgICAgaWYg
KGF1dG8qIHdpbmRvdyA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5kb21XaW5kb3coKSkK
LSAgICAgICAgICAgIG5hdmlnYXRvciA9IHdpbmRvdy0+bmF2aWdhdG9yKCk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIG5hdmlnYXRvciA9ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4
dCkubmF2aWdhdG9yKCk7Ci0KLSAgICByZXR1cm4gbmF2aWdhdG9yID8gbmF2aWdhdG9yLT5zZXJ2
aWNlV29ya2VyKCkgOiBudWxscHRyOwotfQotCiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSkKICAgICA6
IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fcmVnaXN0cmF0aW9uRGF0YShXVEZN
b3ZlKHJlZ2lzdHJhdGlvbkRhdGEpKQpAQCAtOTQsNyArODAsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb246OnVucmVnaXN0ZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byogY29udGFpbmVyID0gY29udGFp
bmVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgqY29udGV4dCk7CisgICAgYXV0byogY29udGFp
bmVyID0gY29udGV4dC0+c2VydmljZVdvcmtlckNvbnRhaW5lcigpOwogICAgIGlmICghY29udGFp
bmVyKSB7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJy
b3IpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwCmluZGV4IDQ2ZDI5
OTBlMjk2ZTA4ZmY3YzRhZjRjOTFlZDg2ODkyMzVhYzkyNTguLmU3MTQ0M2IwMDJlMjFiMDJlM2Vl
OGMwM2FiNGViYjBmZWY0MWI0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKQEAgLTMyLDgg
KzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50OjpTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCi0gICAgOiBTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnRleHQsIFR5cGU6OldpbmRvdykK
K1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6OlNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikKKyAgICA6IFNlcnZpY2VXb3JrZXJDbGllbnQoY29udGV4dCwgaWRlbnRpZmllciwgVHlwZTo6
V2luZG93KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaAppbmRleCA4M2M4MGUyODA3YjM0MTJh
ZmQzODZhODAyZDVkYjVhMDM0MDU2NjAzLi4zZTJmMzk1NmE3ZDgyZDdmYzRhYjAyYjE2ODg1ZWJk
MTJiZjZhNjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlcldpbmRvd0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmgKQEAgLTM2LDkgKzM2LDkgQEAgY2xhc3Mg
RGVmZXJyZWRQcm9taXNlOwogCiBjbGFzcyBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50IGZpbmFs
IDogcHVibGljIFNlcnZpY2VXb3JrZXJDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
U2VydmljZVdvcmtlcldpbmRvd0NsaWVudD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50PiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQoY29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KGNvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAK
ICAgICBWaXNpYmlsaXR5U3RhdGUgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7CkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5hdmlnYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBTZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBJZGVudGlmaWVy
Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCmlu
ZGV4IDY3OGI5MmI0MzYwMWQ3NGI0ZjZjZjJmZDFlY2U5ZTQ1MWM0MmFiZGMuLjk0NmIzZmQ1Njkx
ZjI0ZWMzMTBkZDZkOWE4MjRlMzExMzJlYzFjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCkBA
IC01OSwxNCArNTksMTQgQEAgU2VydmljZVdvcmtlclRocmVhZFByb3h5KiBTV0NvbnRleHRNYW5h
Z2VyOjpzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkodWludDY0X3Qgc2UKICAgICByZXR1cm4gbV93
b3JrZXJNYXAuZ2V0KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBTV0NvbnRl
eHRNYW5hZ2VyOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQordm9pZCBTV0NvbnRleHRNYW5hZ2Vy
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IGRlc3RpbmF0
aW9uU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
bWVzc2FnZSwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIHNvdXJjZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewotICAgIGF1dG8qIHNlcnZpY2VX
b3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIGF1
dG8qIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoZGVzdGluYXRpb25TZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgdmFsaWQgTWVzc2FnZVBvcnRDaGFubmVs
cy4KLSAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKFdURk1vdmUobWVzc2FnZSksIG51bGxwdHIsIHNvdXJjZU9yaWdpbik7Cisg
ICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZShXVEZNb3ZlKG1lc3NhZ2UpLCBudWxscHRyLCBzb3VyY2VJZGVudGlmaWVyLCBzb3Vy
Y2VPcmlnaW4pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgK
aW5kZXggY2RjY2FjYzFhMDdlNWNjODVhM2YwNWJkMWRkODQ1Mzg5ZjQwN2E1Yy4uOWQ2MjQwMGQ0
NjQ2OTBlMDI2M2IwZGZiZDFlYzQyNGUxM2VhZTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAt
MzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiAKIGNsYXNz
IFNXQ29udGV4dE1hbmFnZXIgewogcHVibGljOgpAQCAtNDIsNiArNDMsOCBAQCBwdWJsaWM6CiAg
ICAgY2xhc3MgQ29ubmVjdGlvbiB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5Db25u
ZWN0aW9uKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5h
dGlvbklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgdWlu
dDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKSA9IDA7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29ubmVj
dGlvbihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJik7CkBAIC00OSw3ICs1Miw3IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyVGhy
ZWFkKFJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSogc2VydmljZVdvcmtlclRocmVhZFByb3h5KHVpbnQ2
NF90KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmln
aW4pOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlvblNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBS
ZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyJiBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbik7CiAKIHByaXZhdGU6CiAgICAgU1dDb250ZXh0TWFuYWdlcigpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggY2Y3OGU5MTkwMmJjMGU0OGY5OTViMDNiOTg5
NzdjYjM5Yzg3YTc1NS4uNmFkZWJiZjJkNDBlZGE2MGE5NjAzZWU2YTE3MjIxMmZlNTA2NGM1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaC5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQuaCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2luY2x1
ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAt
OTksMTIgKzEwMCwxMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBvc3RGZXRjaFRhc2so
UmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNsaWVudAogICAgIH0sIFdvcmtlclJ1
bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoUmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiBtZXNzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+
JiYgY2hhbm5lbHMsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQordm9pZCBTZXJ2aWNlV29y
a2VyVGhyZWFkOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiYmIGNoYW5uZWxzLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciYgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0g
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0YXNrKFtjaGFubmVscyA9IFdURk1vdmUo
Y2hhbm5lbHMpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luID0gc291
cmNlT3JpZ2luLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgbXV0YWJsZSB7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0YXNrKFtjaGFu
bmVscyA9IFdURk1vdmUoY2hhbm5lbHMpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291
cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luID0gc291cmNlT3JpZ2luLmlzb2xhdGVkQ29weSgp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIGF1
dG8mIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50
YW5nbGVQb3J0cyhzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIFdURk1vdmUoY2hhbm5lbHMpKTsK
LSAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXh0ZW5kYWJs
ZU1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBz
b3VyY2VPcmlnaW4pKTsKKyAgICAgICAgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZSBzb3Vy
Y2UgPSBSZWZQdHI8U2VydmljZVdvcmtlckNsaWVudD4geyBTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50OjpjcmVhdGUoY29udGV4dCwgc291cmNlSWRlbnRpZmllcikgfTsKKyAgICAgICAgc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudDo6
Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4sIHsg
fSwgV1RGTW92ZShzb3VyY2UpKSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS50
aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgpLmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVj
dChzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogICAgIH0p
OwogICAgIHJ1bkxvb3AoKS5wb3N0VGFzayhXVEZNb3ZlKHRhc2spKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuaAppbmRleCAzMzczMTM5YzJiNTc0ODYxY2UxMDQ5YmQ0ZDdhNjkyOTYyNjFmMDM3Li4y
NGYxNTI2ZjdiNTUyOGMyYTllZGIxYWMwMGY2NmQ5ZTE1ZDU4Mjk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZC5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbDsKIGNs
YXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFdvcmtlckxvYWRlclByb3h5OwogY2xh
c3MgV29ya2VyT2JqZWN0UHJveHk7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogCiB1c2luZyBNZXNzYWdlUG9y
dENoYW5uZWxBcnJheSA9IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVs
PiwgMT47CkBAIC01NSw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBXb3JrZXJPYmplY3RQcm94eSYg
d29ya2VyT2JqZWN0UHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtlck9iamVjdFByb3h5OyB9
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RGZXRjaFRhc2soUmVmPFNlcnZpY2VXb3Jr
ZXJGZXRjaDo6Q2xpZW50PiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgRmV0Y2hPcHRpb25zJiYpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZShSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXk+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUo
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiYmLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgc291
cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwogCiBwcm90ZWN0ZWQ6
CiAgICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3Vs
ZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5T3JpZ2lu
PiYmIHRvcE9yaWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBQQUw6OlNlc3Npb25JRCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggOGU5M2M1ZTA2Yzk0YTViYTkzZWUz
MzU0ZWEzYTBhZWJhYzM3ZDA2OC4uYTkyNjhjODY5NWU4NmRjMzRiMDVlN2QyMjU1Y2JmMmRkNThi
NzNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMjgsNyArMjgsMTAgQEAKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJDb250YWluZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hS
ZXN1bHQuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogCkBAIC0xMDksNiAr
MTEyLDI5IEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNoRm9yU2Vy
dmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIpCiAgICAgam9iLT5zdGFydFNjcmlwdEZldGNoKCk7
CiB9CiAKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudCh1aW50NjRfdCBkZXN0aW5hdGlvblNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJj
ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sK
KyAgICAvLyBGSVhNRTogZGVzdGluYXRpb25TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciBjYW4gb25seSBpZGVudGlmeSBhIERvY3VtZW50IGF0IHRoZSBtb21lbnQuCisgICAgYXV0byog
ZGVzdGluYXRpb25Eb2N1bWVudCA9IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQoZGVz
dGluYXRpb25TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcik7CisgICAgaWYgKCFkZXN0
aW5hdGlvbkRvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjb250YWluZXIg
PSBkZXN0aW5hdGlvbkRvY3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7CisgICAgaWYg
KCFjb250YWluZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHN0ZDo6b3B0aW9uYWw8TWVzc2Fn
ZUV2ZW50U291cmNlPiBzb3VyY2U7CisgICAgaWYgKGRlc3RpbmF0aW9uRG9jdW1lbnQtPnNlbGVj
dGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIoKSA9PSBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikgeworICAgICAgICBBU1NFUlQoY29udGFpbmVyLT5jb250cm9sbGVyKCktPmlkZW50aWZp
ZXIoKSA9PSBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgICAgIHNvdXJjZSA9
IE1lc3NhZ2VFdmVudFNvdXJjZSB7IFJlZlB0cjxTZXJ2aWNlV29ya2VyPiB7IGNvbnRhaW5lci0+
Y29udHJvbGxlcigpIH0gfTsKKyAgICB9IGVsc2UKKyAgICAgICAgc291cmNlID0gTWVzc2FnZUV2
ZW50U291cmNlIHsgUmVmUHRyPFNlcnZpY2VXb3JrZXI+IHsgU2VydmljZVdvcmtlcjo6Y3JlYXRl
KCpkZXN0aW5hdGlvbkRvY3VtZW50LCBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgfSB9
OworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIGluIHBvcnRzLgorICAgIGF1dG8gbWVz
c2FnZUV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoeyB9LCBXVEZNb3ZlKG1lc3NhZ2UpLCBz
b3VyY2VPcmlnaW4sIHsgfSwgV1RGTW92ZShzb3VyY2UpKTsKKyAgICBjb250YWluZXItPmRpc3Bh
dGNoRXZlbnQobWVzc2FnZUV2ZW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXgg
NTA4YTU4YTQ5ZjI3YmRhZDYyOTA1MmI1ZjM1MzQ2NDk5YmU0MDE1Yi4uYzYxYTYxZTc2YjFjODUw
NmZhODBkMjM4MDgwYzA2M2YwNTQxMzNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC00OSw3
ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2Im
KTsKICAgICB2b2lkIGZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtl
ckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlvblNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBS
ZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzb3Vy
Y2UpID0gMDsKIAogICAgIHZpcnR1YWwgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29u
c3QgU2VjdXJpdHlPcmlnaW4mKSBjb25zdCA9IDA7CkBAIC01OSw2ICs1OSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2
ZXIodWludDY0X3Qgam9iSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEm
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5T
ZXJ2ZXIodWludDY0X3Qgam9iSWRlbnRpZmllciwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKHVpbnQ2
NF90IGpvYklkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0X3QgZGVzdGluYXRpb25TY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCB1
aW50NjRfdCBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VPcmlnaW4pOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUpvYkluU2Vy
dmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNGFmZTdlN2UyMWMyMGZlMDEy
ZWU0ZGQ3ZTAzZjk2NjdjOTBmZTM0YS4uMzllMGY4OTVkYmU0NTFlOWFlZjE5MTZjMGQ3OTZhNDI2
NGRiOGU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdDb25z
dHJhaW50cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVj
a2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgpAQCAtMTkwMSw2ICsxOTAyLDI3IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YT46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBUZXh0Q2hlY2tpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCit2b2lkIEFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyLnNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIDw8IGlkZW50aWZpZXIuc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXI7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllcj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdWludDY0X3Qgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlkZW50aWZpZXIgPSB7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciB9OworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisK
IHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bHQpCiB7CiAgICAgZW5jb2Rl
ci5lbmNvZGVFbnVtKHJlc3VsdC50eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMWMyZGM3MDc5MDNhYzk3YzU0N2M1NWMxNGM3YTgwOTE3
NmY1ZWEwMi4uMzA4ZTkyZTVjNGZjMmUyZjYyMzZkYjlmMDZkNThkNzIyODVhZjZlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTE1Nyw2ICsx
NTcsMTAgQEAgc3RydWN0IE1lZGlhQ29uc3RyYWludHM7CiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiB1c2luZyBJREJLZXlQYXRoID0gVmFyaWFudDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+
PjsKICNlbmRpZgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorc3RydWN0IFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyOworI2VuZGlmCiB9CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAt
NDc3LDYgKzQ4MSwxMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlRleHRDaGVja2luZ1JlcXVlc3REYXRhPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29k
ZXImLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0RGF0YSYpOwogfTsKIAorI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllciYpOworfTsKKyNlbmRpZgorCiB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4gewogICAgIHN0YXRpYyB2
b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0Jik7
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiBk
ZWNvZGUoRGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApp
bmRleCBmYzFjNWYwNzViYmMzNWIwNDZkY2ViZDk0MzU3NGI0OWEyMGFlMmVjLi4wMDY0MzZmNjUx
ZDJkM2NhOWUxMTFjMjYwMzBmMTAwZTBhNDJkYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRXhj
ZXB0aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtl
ckNvbnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaD4KQEAg
LTEwOCw5ICsxMDksMTAgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2go
dWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWMKICAgICBzZW5kVG9Db250
ZXh0UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN0YXJ0
RmV0Y2goaWRlbnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCByZXF1ZXN0LCBvcHRpb25zKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKQordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3QgZGVzdGluYXRpb25TZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1
aW50NjRfdCBzb3VyY2VTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0gICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VPcmln
aW4pKTsKKyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVy
IHsgaWRlbnRpZmllcigpLCBzb3VyY2VTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciB9
OworICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSB7IGRlc3Rp
bmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIs
IHNvdXJjZU9yaWdpbiB9KTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmRpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMzgsNiArMTQwLDExIEBAIHZvaWQgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpkaWROb3RIYW5kbGVGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIp
CiAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNs
aWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogfQogCit2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQo
dWludDY0X3QgZGVzdGluYXRpb25TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudCB7IGRlc3RpbmF0aW9uU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIG1l
c3NhZ2UsIHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4gfSk7Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZW5k
VG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1fY29udGV4dENvbm5l
Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggMjkyNmU4M2U0
MzE3YjU3MTVkZGM4MTAxNTVlYjczYzMxNzkwMmI5Zi4uNjAzOTdlOTdjMTQ1OTQyZjZhNjVhZTlm
MTk0NTc3YTY5MmE2ZDc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApA
QCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsRmV0Y2godWludDY0X3Qg
ZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZUZldGNoKHVpbnQ2NF90IGZl
dGNoSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KHVpbnQ2NF90IGRlc3RpbmF0aW9uU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKwogcHJpdmF0
ZToKICAgICAvLyBJbXBsZW1lbnQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb24gKE1lc3NhZ2VzIHRvIHRo
ZSBjbGllbnQgV2ViUHJvY2VzcykKICAgICB2b2lkIHJlamVjdEpvYkluQ2xpZW50KHVpbnQ2NF90
IGpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGEmKSBmaW5hbDsKQEAg
LTY2LDcgKzY4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc3RhcnRGZXRjaCh1aW50NjRfdCBm
ZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmKTsK
IAotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRf
dCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IGRlc3RpbmF0aW9uU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0X3Qg
c291cmNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBjb250ZXh0IFdlYlByb2Nl
c3MKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAzYjIwNDVjNjQ0NGFkY2QxOGRiNGNm
ZWNjNTFlZmMzOTRiMjEyZDU5Li5kZTUxNWQ5MGJlYzdiYzNiYTU3ODYzMjU1NGE2OTZhNDNkY2Uz
MDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KQEAgLTI4LDcgKzI4LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
IHsKICAgICBGaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyRmV0Y2hSZXN1bHQgcmVzdWx0KQogCiAgICAgU3RhcnRGZXRjaCh1aW50NjRfdCBp
ZGVudGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9u
cykKLSAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5n
IHNvdXJjZU9yaWdpbikKKyAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
KHVpbnQ2NF90IGRlc3RpbmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZpZXIsIElQQzo6RGF0YVJl
ZmVyZW5jZSBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5jcHAKaW5kZXggODc2NGNkMDcwMmQ0OTg4MDc5YTNjNTUxMzA3MWQxMzVlZGRlMjllMS4u
ZWNkNTE3MDc4MzA4MDliZTM1MjIzNzViMTEyNGE5YTg0ZTM0MzQzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKQEAgLTM4LDYgKzM4LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNp
bmNsdWRlIDx3dGYvQ3Jvc3NUaHJlYWRUYXNrLmg+CkBAIC00MzUsNiArNDM2LDEyIEBAIHZvaWQg
U3RvcmFnZVByb2Nlc3M6OmRpZEZpbmlzaEZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfCiAgICAgICAgIGNvbm5lY3Rpb24tPmRpZEZpbmlzaEZldGNoKGZl
dGNoSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OnBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwg
dWludDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKQoreworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gbV9zd1NlcnZlckNvbm5l
Y3Rpb25zLmdldChkZXN0aW5hdGlvbklkZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIpKQorICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVu
dChkZXN0aW5hdGlvbklkZW50aWZpZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIs
IG1lc3NhZ2UsIHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOwor
fQorCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpyZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJT
V1NlcnZlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CiAgICAgQVNTRVJUKCFtX3N3U2VydmVy
Q29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaCBiL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAppbmRleCBhYTg2NDViNzcx
Y2FkYzg2YWFlZTE5MjQwOTdhYTZhODEzNzI5NDM3Li5lYzVlMDhjODc5ZmQzZjYzY2U5MGE2NjM5
YTI5OTY0MWUyOTdmMzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5oCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBTV1NlcnZlcjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CitzdHJ1Y3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXI7CiBzdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eTsKIH0KIApAQCAtMTI1LDYgKzEyNiw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hG
ZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZhaWxGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZE5v
dEhhbmRsZUZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIpOworCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVz
dGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVp
bnQ2NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZU9yaWdpbik7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNv
bnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAzMzkyYWY3MTVkMTI3MGM3YWZk
NGY3ZmViZTZmMzI2NTFiMGNjZjQ5Li5hYjA4ZmNkMTBiN2U4OWI4NmFjY2Y1N2E5NjVmODFjMTg5
ZDNmYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTQ2LDUgKzQ2LDYgQEAgbWVzc2FnZXMgLT4gU3Rv
cmFnZVByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZFJlY2VpdmVGZXRjaFJlc3BvbnNl
KHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAgRGlkUmVjZWl2
ZUZldGNoRGF0YSh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
ZmV0Y2hJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSwgaW50NjRfdCBlbmNvZGVk
RGF0YUxlbmd0aCkKICAgICBEaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQorICAgIFBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyQ2xpZW50KHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdl
LCB1aW50NjRfdCBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU3RyaW5nIHNvdXJjZU9y
aWdpbikKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggMzA4NmVhNGZjMGViZjFi
OGQ0NmM0NTlhNGYxM2ZlOTI2MzVhOTVhMy4uN2I4Nzc4YWQzMDBkYmJhMDBmYTRiODZjOTM0NzY3
M2MwMWVjOTk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5UYWJs
ZS5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmg+CkBAIC02OCw5ICs2OSwx
MyBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNl
cnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0YwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6RmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihyZXN1bHQpKTsKIH0K
IAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYgc2NyaXB0VmFsdWUsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
KQordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUodWludDY0X3QgZGVzdGluYXRpb25TZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzY3JpcHRWYWx1ZSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgc291cmNlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc2NyaXB0VmFsdWUtPmRhdGEoKSB9LCBz
b3VyY2VPcmlnaW4pKTsKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHBvc3RpbmcgbWVz
c2FnZXMgZnJvbSB3b3JrZXJzLgorICAgIGlmICghaXM8RG9jdW1lbnQ+KHNvdXJjZSkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6
UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShkZXN0aW5hdGlvblNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzY3JpcHRWYWx1ZS0+ZGF0YSgp
IH0sIGRvd25jYXN0PERvY3VtZW50Pihzb3VyY2UpLmlkZW50aWZpZXIoKSwgc291cmNlLm9yaWdp
bigpKSk7CiB9CiAKIGJvb2wgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpoYXNTZXJ2aWNlV29ya2Vy
UmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKSBjb25zdApA
QCAtOTIsNiArOTcsMTEgQEAgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gV2ViU1dDbGll
bnRDb25uZWN0aW9uOjpzdGFydEZldGNoKFdlYlNlcnZpY2VXb3JrZXIKICAgICByZXR1cm4gU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpjcmVhdGUocHJvdmlkZXIsIFdURk1vdmUobG9hZGVyKSwg
aWRlbnRpZmllciwgbV9jb25uZWN0aW9uLmdldCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
K3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudCh1aW50NjRfdCBkZXN0aW5hdGlvblNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBT
V0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3Rp
bmF0aW9uU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0b3IoKSksIHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBzb3VyY2VPcmlnaW4pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggMWNkMjkyOTll
M2ZkM2MyZmM5Mjg4ZTE4NjBhZDU0MDMxMGNlNTQ4ZC4uMjdjZGJhMmEwOTQ0YzA4Y2RiMGQwYjM3
ZTAxMzk0ZmYyODdkYjY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2JEYXRhJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdElu
U2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpIGZpbmFsOwot
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pIGZpbmFsOworICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlvblNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYm
LCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzb3VyY2UpIGZpbmFsOwogCiAgICAg
dm9pZCBkaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC02NCw2ICs2
NCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3Jp
Z2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgY29uc3QgZmluYWw7CiAgICAgUmVm
PFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gc3RhcnRGZXRjaChXZWJTZXJ2aWNlV29ya2VyUHJv
dmlkZXImLCBSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYsIHVpbnQ2NF90IGlkZW50aWZp
ZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2smJik7CiAKKyAgICB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGRlc3RpbmF0aW9uU2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVz
c2FnZSwgdWludDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlU3RvcmFnZUpv
Yihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggMTE1NWQxYmFhZDg5NTU4NjMxZjAzODEzMjlkYjZm
Y2YwNjhmNjY5My4uOTExY2YxMDJlNDA5YTU5MjI3NmUyMjc4ZmU1MjQ5ZDM5NTMwYTEwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzAsNiArMzAsNyBAQCBtZXNz
YWdlcyAtPiBXZWJTV0NsaWVudENvbm5lY3Rpb24gewogICAgIFN0YXJ0U2NyaXB0RmV0Y2hGb3JT
ZXJ2ZXIodWludDY0X3Qgam9iSWRlbnRpZmllcikKIAogICAgIFNldFNXT3JpZ2luVGFibGVTaGFy
ZWRNZW1vcnkoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUpCisgICAgUG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0X3QgZGVzdGluYXRpb25TY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIHVpbnQ2
NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTdHJpbmcgc291cmNlT3JpZ2luKQog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwCmluZGV4IDNkMGIyN2Q5Y2RiZWU4MjBlOWIzZmM5NGJiNzg1NjkyMTYx
MTg2NmQuLjA3OWEyOGYwYzg0MmExMmZmNWM2NWNlMTUzODFhYWE2NTJjMzgyZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTEzMCw5ICsxMzAsMTQgQEAgdm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRfdCBzZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmkKICAgICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPnRocmVhZCgp
LnBvc3RGZXRjaFRhc2soV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KG9wdGlvbnMpKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3QgZGVzdGluYXRpb25T
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdl
LCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgc291cmNlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChtZXNzYWdlLnZlY3Rv
cigpKSwgc291cmNlT3JpZ2luKTsKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5w
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKGRlc3RpbmF0aW9uU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0
b3IoKSksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7Cit9CisKK3ZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZp
ZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNl
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQorewor
ICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VQ
cm9jZXNzOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50
aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSB7IG1lc3NhZ2UtPmRhdGEoKSB9LCBzb3VyY2VTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgc291cmNlT3JpZ2luKSwgMCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDA0NmQyMjYz
YjY0OWI2ZDI1ZTg2MTIxZjZhNDIyZDcyYWRlYWNlZTUuLjJkYTA5NmMxNjZjZGUzNDE3ZjhhMTI5
YTM4NzYxYmEyMDVmYTYyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAt
NDEsMTkgKzQxLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZTsKIAotY2xhc3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gOiBwdWJsaWMg
V2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKK2NsYXNzIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgdm9pZCBwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKTsKLQogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmKTsKIAorICAgIC8vIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6
OkNvbm5lY3Rpb24uCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2Us
IHVpbnQ2NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikgZmluYWw7CisKKyAgICAvLyBJUEMgbWVzc2FnZXMuCiAgICAgdm9pZCBzdGFy
dFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOwogICAgIHZvaWQgc3RhcnRGZXRj
aCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmKTsKKyAgICB2b2lkIHBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3QgZGVzdGluYXRpb25TZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgc291cmNlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlv
bj4gbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzczsKICAgICB1aW50NjRfdCBtX3BhZ2VJRCB7
IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
aW5kZXggNWQ3MmQxYjVmODNmNjFhYzVmYzA0MjdkODk2NGMxNGMxZTk2NDcxOC4uOTRiOGUwMzFi
MTFiN2IzY2UzOGMzMzNiMTUzNGY4M2JlNmY4ZjUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAKIG1lc3NhZ2Vz
IC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIHsKICAgICBTdGFydFNlcnZpY2VXb3Jr
ZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEpCiAgICAgU3RhcnRGZXRjaCh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVy
LCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucykKLSAgICBQ
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgU3RyaW5nIHNvdXJjZU9y
aWdpbikKKyAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90
IGRlc3RpbmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBt
ZXNzYWdlLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgc291
cmNlSWRlbnRpZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NWI3M2ZlMTE1MDM0ZjI5Mzc1MDIzOTI5NzY4YjliMzc4YzMyYjRmNi4uYjZkZDliMjdhNTVlZWZm
ZjEzMGYyNGU1Njg2NDg0MWFmOWNiZGNlZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTEw
LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGluaXRp
YWwgc3VwcG9ydCBmb3Igc2VydmljZVdvcmtlckNsaWVudC5wb3N0TWVzc2FnZSgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg3OTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3Qg
Y292ZXJhZ2UuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtU2VydmljZVdvcmtlci1w
b3N0TWVzc2FnZS13b3JrZXIuanM6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuanM6CisgICAgICAg
ICh0aGVuKToKKwogMjAxNy0xMC0yNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZS13b3JrZXItY2Fj
aGUtYXBpLmh0dHBzLmh0bWwgaXMgZmxha3kKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuaHR0
cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
YmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS5odHRwcy1leHBlY3RlZC50eHQKaW5kZXgg
N2QxMjIzNTQ3NWYxZWViNTkzMjNkZWJlMGRmMTVlNjgyNTBlYTY3Yy4uZjdjMzdlNjRjNzMzNDk0
MzFjMDU0OGJmMGQzODk2YzAwZGYyMWZjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS5odHRw
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS5odHRwcy1leHBlY3RlZC50eHQKQEAg
LTEsNCArMSw1IEBACi1QQVNTOiBTdGF0dXMgY29kZSBpcyAyMDAKLVBBU1M6IFN0YXR1cyB0ZXh0
IGlzIFdvcmtlciByZWNlaXZlZCB0aGUgbWVzc2FnZSBldmVudC4gbWVzc2FnZUV2ZW50Lm9yaWdp
biB3YXMgaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MwotUEFTUzogU291cmNlIGlzIFNlcnZpY2Ugd29y
a2VyCitQQVNTOiBDbGllbnQgcmVjZWl2ZWQgbWVzc2FnZSBmcm9tIHNlcnZpY2Ugd29ya2VyLCBv
cmlnaW46IGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMKK1BBU1M6IFNlcnZpY2Ugd29ya2VyIHJlY2Vp
dmVkIG1lc3NhZ2UgJ01lc3NhZ2UgMScgZnJvbSBvcmlnaW4gJ2h0dHBzOi8vMTI3LjAuMC4xOjg0
NDMnCitQQVNTOiBDbGllbnQgcmVjZWl2ZWQgbWVzc2FnZSBmcm9tIHNlcnZpY2Ugd29ya2VyLCBv
cmlnaW46IGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMKK1BBU1M6IFNlcnZpY2Ugd29ya2VyIHJlY2Vp
dmVkIG1lc3NhZ2UgJ01lc3NhZ2UgMicgZnJvbSBvcmlnaW4gJ2h0dHBzOi8vMTI3LjAuMC4xOjg0
NDMnCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLXdvcmtlci5qcyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1TZXJ2
aWNlV29ya2VyLXBvc3RNZXNzYWdlLXdvcmtlci5qcwppbmRleCA4NDM5NWIyYTZkM2Q2ZjVhNjcz
NDlmY2I3MDZkOGFiNDc1NjZiYWI1Li5iNDlkYWQ3MTM3MmU5OWQ3ZDQ5N2YyZGU0MGNlMTFkNzk0
Y2EzZTc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9yZXNvdXJjZXMvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS13b3JrZXIuanMKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2lj
LVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCkBAIC0xLDE0ICsxLDQgQEAKLWxl
dCByZXNwb25zZVRvU2VuZCA9IHsgc3RhdHVzOiA0MDQsIHN0YXR1c1RleHQ6ICJOb3QgRm91bmQi
IH07Ci0KIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4gewotICAg
IHJlc3BvbnNlVG9TZW5kID0gZXZlbnQuZGF0YTsKLSAgICByZXNwb25zZVRvU2VuZC5zdGF0dXNU
ZXh0ICs9ICIgbWVzc2FnZUV2ZW50Lm9yaWdpbiB3YXMgIiArIGV2ZW50Lm9yaWdpbjsKKyAgICBl
dmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2Ugd29ya2VyIHJlY2VpdmVkIG1lc3NhZ2Ug
JyIgKyBldmVudC5kYXRhICsgIicgZnJvbSBvcmlnaW4gJyIgKyBldmVudC5vcmlnaW4gKyAiJyIp
OwogfSk7CiAKLXNlbGYuYWRkRXZlbnRMaXN0ZW5lcigiZmV0Y2giLCAoZXZlbnQpID0+IHsKLSAg
ICBpZiAoZXZlbnQucmVxdWVzdC51cmwuaW5kZXhPZigidGVzdDEiKSAhPT0gLTEpIHsKLSAgICAg
ICAgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG51bGwsIHJlc3BvbnNlVG9TZW5kKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZXZlbnQucmVzcG9uZFdpdGgoUmVzcG9uc2Uu
ZXJyb3IoKSk7Ci19KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNl
cnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuanMKaW5kZXggOTZhNDFjYTA4Njg4YjQ4M2FlODI0YjIz
NjU1MzE3MDdjZDA4ZTdjYy4uMWYwYTYzMDQ0YmU1MGFlMTViN2I3ZTJlNDQ3Y2QzMjJhN2RkZDdm
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVz
b3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuanMKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3Jr
ZXItcG9zdE1lc3NhZ2UuanMKQEAgLTEsMzcgKzEsMTQgQEAKLWZ1bmN0aW9uIGRvbmUoKQotewot
ICAgIGZpbmlzaFNXVGVzdCgpOwotfQotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB0
cnkgewotICAgICAgICBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVz
b3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIiwgeyB9KTsK
LQotICAgICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdl
KHsgc3RhdHVzOiAyMDAsIHN0YXR1c1RleHQ6ICJXb3JrZXIgcmVjZWl2ZWQgdGhlIG1lc3NhZ2Ug
ZXZlbnQuIiB9KTsKLQotICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgidGVzdDEi
KTsKLSAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAyMDApCi0gICAgICAgICAgICBsb2co
IlBBU1M6IFN0YXR1cyBjb2RlIGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBsb2coIkZBSUw6IFN0YXR1cyBjb2RlIGlzICIgKyByZXNwb25zZS5zdGF0
dXMpOwotCi0gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNUZXh0LnN0YXJ0c1dpdGgoIldvcmtl
ciByZWNlaXZlZCB0aGUgbWVzc2FnZSIpKQotICAgICAgICAgICAgbG9nKCJQQVNTOiBTdGF0dXMg
dGV4dCBpcyAiICsgcmVzcG9uc2Uuc3RhdHVzVGV4dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGxvZygiRkFJTDogU3RhdHVzIHRleHQgaXMgIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOwot
Ci0gICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICBsZXQgc291cmNl
ID0gaW50ZXJuYWxzLmZldGNoUmVzcG9uc2VTb3VyY2UocmVzcG9uc2UpOwotICAgICAgICAgICAg
aWYgKHNvdXJjZSA9PT0gIlNlcnZpY2Ugd29ya2VyIikKLSAgICAgICAgICAgICAgICBsb2coIlBB
U1M6IFNvdXJjZSBpcyAiICsgc291cmNlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBsb2coIkZBSUw6IFNvdXJjZSBpcyAiICsgc291cmNlKTsKLSAgICAgICAgfQotICAgIH0g
Y2F0Y2goZSkgewotICAgICAgICBsb2coIkdvdCBleGNlcHRpb246ICIgKyBlKTsKLSAgICB9Ci0g
ICAgZmluaXNoU1dUZXN0KCk7Ci19Ci0KLXRlc3QoKTsKK3ZhciBtZXNzYWdlTnVtYmVyID0gMTsK
K25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5j
dGlvbihldmVudCkgeworICAgIGxvZygiUEFTUzogQ2xpZW50IHJlY2VpdmVkIG1lc3NhZ2UgZnJv
bSBzZXJ2aWNlIHdvcmtlciwgb3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICBsb2coIlBB
U1M6ICIgKyBldmVudC5kYXRhKTsKKyAgICBpZiAobWVzc2FnZU51bWJlciA9PSAxKSB7CisgICAg
ICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiTWVzc2FnZSAyIik7CisgICAgICAgIG1lc3Nh
Z2VOdW1iZXIrKzsKKyAgICB9IGVsc2UKKyAgICAgICAgZmluaXNoU1dUZXN0KCk7Cit9KTsKKwor
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9iYXNpYy1TZXJ2aWNl
V29ya2VyLXBvc3RNZXNzYWdlLXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbigpIHsKKyAg
ICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKCJNZXNzYWdl
IDEiKTsKK30pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325166</attachid>
            <date>2017-10-27 09:19:54 -0700</date>
            <delta_ts>2017-10-27 09:35:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178794-20171027091953.patch</filename>
            <type>text/plain</type>
            <size>64044</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGYwMzFmYzBmM2RlNWU1
MTg0YjA4MTFmYzA5MTcwZjhjMDRmYTRlZS4uODk3YmI1ODlmMWM4MWE2OThhMTRkODNkN2I0MGRh
MzFkNDEwMGViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTEwLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGluaXRpYWwgc3VwcG9y
dCBmb3Igc2VydmljZVdvcmtlckNsaWVudC5wb3N0TWVzc2FnZSgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg3OTQKKworICAgICAgICBSZXZpZXdl
ZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIHNl
cnZpY2VXb3JrZXJDbGllbnQucG9zdE1lc3NhZ2UoKToKKyAgICAgICAgLSBodHRwczovL3czYy5n
aXRodWIuaW8vU2VydmljZVdvcmtlci8jY2xpZW50LXBvc3RtZXNzYWdlCisKKyAgICAgICAgSXQg
aXMgbm93IHBvc3NpYmxlIHRvIGRvIGJpLWRpcmVjdGlvbmFsIGNvbW11bmljYXRpb24gd2l0aCBh
IHNlcnZpY2Ugd29ya2VyCisgICAgICAgIHZpYSBwb3N0TWVzc2FnZSgpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgdXBkYXRlZCBleGlzdGluZyB0ZXN0LgorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZURvY3VtZW50SWRlbnRpZmllcik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjphbGxEb2N1bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6bV9pZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmlkZW50aWZpZXIgY29uc3Qp
OgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNlcnZpY2VXb3JrZXJDb250YWluZXIpOgor
ICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlcjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnQ6OlNl
cnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dDo6flNlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudDo6aWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dDo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50OjpjcmVhdGUp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbDoKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnQuaWRsLgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uOjp1bnJlZ2lzdGVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
V2luZG93Q2xpZW50OjpTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1dDb250ZXh0TWFuYWdlcjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5o
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6cG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmg6CisKIDIwMTctMTAt
MjcgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVzZSBhdXRv
IGZvciBzb21lIHZhcmlhYmxlcyBpbiBSZW5kZXJMYXllckNvbXBvc2l0b3IvQmFja2luZwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAyNjgxZTJjMTc2YzhkZmU2MjRkNmRjYTgxNjg1ODA2OTc3YWQ0MDVkLi4yNDdiMDE2
ZDY1NWVlMTBjZTk0MDExYmNhYzNkNWQ5OGJhZjU5YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQw
IEBACisyMDE3LTEwLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3Igc2VydmljZVdvcmtlckNsaWVudC5wb3N0TWVzc2Fn
ZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzg3
OTQKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgIEFkZCBp
bml0aWFsIHN1cHBvcnQgZm9yIHNlcnZpY2VXb3JrZXJDbGllbnQucG9zdE1lc3NhZ2UoKToKKyAg
ICAgICAgLSBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jY2xpZW50LXBvc3Rt
ZXNzYWdlCisKKyAgICAgICAgSXQgaXMgbm93IHBvc3NpYmxlIHRvIGRvIGJpLWRpcmVjdGlvbmFs
IGNvbW11bmljYXRpb24gd2l0aCBhIHNlcnZpY2Ugd29ya2VyCisgICAgICAgIHZpYSBwb3N0TWVz
c2FnZSgpLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmg6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNz
L1N0b3JhZ2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVByb2Nlc3M6OnBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9j
ZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246
OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckNsaWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorCiAyMDE3LTEwLTI3ICBE
YXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjIyNDA3Nyk6IERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0QVZLaXRFbmFibGVkKCkgbm90
IHByb3RlY3RlZCBieSBIQVZFKEFWS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU5YzgxNDM1ZGZmN2I4ODA2NDU4ZTlhNWJh
ZDRhOGEzMGE2N2M2ZTMuLjlmMWNmNjBkZmYwYzYwNDEwNzM3YTFhZGQyOWQzYzZjN2MxZmNmZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIyNDMsNiArMjI0Myw3IEBACiAJCTgzNzk2NENGMUY4REI2OUQwMDIxOEVBMCAvKiBH
ZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9z
aXRpb25JT1MubW0gKi87IH07CiAJCTgzN0E4MDEzMUUxRTEyNzMwMDAyNkI5RiAvKiBMb2NhbGl6
YWJsZS5zdHJpbmdzZGljdCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODM3QTgwMTExRTFFMTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3Nk
aWN0ICovOyB9OwogCQk4MzdCN0QyMDFEQzNGNTUwMDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJs
ZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
N0I3RDFGMURDM0Y1NEMwMEQwNTFGQyAvKiBWYWxpZGF0aW9uQnViYmxlSU9TLm1tICovOyB9Owor
CQk4MzdENDYyNzFGQTJBOENFMDA1NEUxRkEgLyogU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzN0Q0
NjI1MUZBMkE4QzUwMDU0RTFGQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzN0ZCMzQ1
MUY5RUEwNkQwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdGQjM0MDFGOUVBMDY2MDBEMEZD
MzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oICovOyB9OwogCQk4Mzg2QTk2RDE5RjYxQjJF
MDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4Mzg2QTk2QzE5RjYxQjJFMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVy
LmggKi87IH07CiAJCTgzODg2NzM1MUQxM0JBNUYwMDM2OTdEMCAvKiBSZW5kZXJPYmplY3RFbnVt
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM4ODY3
MzQxRDEzQkE1OTAwMzY5N0QwIC8qIFJlbmRlck9iamVjdEVudW1zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk1MjEsNiArOTUyMiw3IEBACiAJ
CTgzNzk2NENFMUY4REI2OUEwMDIxOEVBMCAvKiBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gR2VvbG9jYXRpb25Qb3NpdGlv
bklPUy5tbTsgcGF0aCA9IE1vZHVsZXMvZ2VvbG9jYXRpb24vaW9zL0dlb2xvY2F0aW9uUG9zaXRp
b25JT1MubW07IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJODM3QTgwMTIxRTFFMTI3
MzAwMDI2QjlGIC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3NkaWN0OyBuYW1lID0gRW5nbGlzaDsgcGF0
aCA9IEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5nc2RpY3Q7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKIAkJODM3QjdEMUYxREMzRjU0QzAwRDA1MUZDIC8qIFZhbGlkYXRpb25C
dWJibGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWYWxp
ZGF0aW9uQnViYmxlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzdENDYy
NTFGQTJBOEM1MDA1NEUxRkEgLyogU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM3REZCMzQxRUJGRUE3MDAwNjAx
Mzg1IC8qIEVsZW1lbnRDU1NJbmxpbmVTdHlsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
RWxlbWVudENTU0lubGluZVN0eWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODM3RkIzNDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdGQjM0MjFGOUVBMDY3MDBEMEZDMzEgLyog
RXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE3MzEzLDYgKzE3MzE1LDcgQEAKIAkJCQk0NkVGMTQyNzFGOTdCN0JBMDBDMkE1
MjQgLyogU2VydmljZVdvcmtlckNsaWVudC5jcHAgKi8sCiAJCQkJNDZFRjE0MjQxRjk3QjdCQTAw
QzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQuaCAqLywKIAkJCQk0NkVGMTQyODFGOTdCN0JB
MDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudC5pZGwgKi8sCisJCQkJODM3RDQ2MjUxRkEy
QThDNTAwNTRFMUZBIC8qIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmggKi8sCiAJCQkJ
NDZFRjE0MjExRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRzLmNwcCAqLywK
IAkJCQk0NkVGMTQyMjFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMuaCAq
LywKIAkJCQk0NkVGMTQyMzFGOTdCN0JBMDBDMkE1MjQgLyogU2VydmljZVdvcmtlckNsaWVudHMu
aWRsICovLApAQCAtMjg4ODAsNiArMjg4ODMsNyBAQAogCQkJCTJEOTNBRUUzMTlERjU2NDEwMDJB
ODZDMyAvKiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUYxNzU1RDFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDZFRjE0MkQxRjk3QjdEODAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTgzN0Q0NjI3MUZBMkE4Q0UwMDU0RTFGQSAvKiBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZFRjE0MkMxRjk3QjdE
ODAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
MzY5RkRGQzFGQTEwMkUzMDBDMUZGMUYgLyogU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxRjE3NTVGMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQ0
MGY5OWM1MGQzNjBkOTVmYmYyMzc4YjE3MjhjMzk5NzAxOTRmMWMuLmVlMTJhMDRlN2Q5OTM2NmI1
MGQ1ZmE4NDY5ZTRlZTU1NzZmZDVlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDM0
LDEyICs0MzQsMjMgQEAgc3RhdGljIHZvaWQgcHJpbnROYXZpZ2F0aW9uRXJyb3JNZXNzYWdlKEZy
YW1lKiBmcmFtZSwgY29uc3QgVVJMJiBhY3RpdmVVUkwsIGNvbnMKIAogdWludDY0X3QgRG9jdW1l
bnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24gPSAwOwogCi1IYXNoU2V0PERvY3VtZW50Kj4mIERvY3Vt
ZW50OjphbGxEb2N1bWVudHMoKQorc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlRG9jdW1lbnRJZGVu
dGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxEb2N1bWVudCo+
PiBkb2N1bWVudHM7CisgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIgPSAwOworICAgIHJl
dHVybiArK2lkZW50aWZpZXI7Cit9CisKK2F1dG8gRG9jdW1lbnQ6OmFsbERvY3VtZW50c01hcCgp
IC0+IERvY3VtZW50c01hcCYKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RG9jdW1lbnRz
TWFwPiBkb2N1bWVudHM7CiAgICAgcmV0dXJuIGRvY3VtZW50czsKIH0KIAorYXV0byBEb2N1bWVu
dDo6YWxsRG9jdW1lbnRzKCkgLT4gRG9jdW1lbnRzTWFwOjpWYWx1ZXNJdGVyYXRvclJhbmdlCit7
CisgICAgcmV0dXJuIGFsbERvY3VtZW50c01hcCgpLnZhbHVlcygpOworfQorCiBzdGF0aWMgaW5s
aW5lIGludCBjdXJyZW50T3JpZW50YXRpb24oRnJhbWUqIGZyYW1lKQogewogI2lmIEVOQUJMRShP
UklFTlRBVElPTl9FVkVOVFMpCkBAIC00OTYsOCArNTA3LDEwIEBAIERvY3VtZW50OjpEb2N1bWVu
dChGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMs
IHVuc2lnCiAgICAgLCBtX2lzU3ludGhlc2l6ZWQoY29uc3RydWN0aW9uRmxhZ3MgJiBTeW50aGVz
aXplZCkKICAgICAsIG1faXNOb25SZW5kZXJlZFBsYWNlaG9sZGVyKGNvbnN0cnVjdGlvbkZsYWdz
ICYgTm9uUmVuZGVyZWRQbGFjZWhvbGRlcikKICAgICAsIG1fb3JpZW50YXRpb25Ob3RpZmllcihj
dXJyZW50T3JpZW50YXRpb24oZnJhbWUpKQorICAgICwgbV9pZGVudGlmaWVyKGdlbmVyYXRlRG9j
dW1lbnRJZGVudGlmaWVyKCkpCiB7Ci0gICAgYWxsRG9jdW1lbnRzKCkuYWRkKHRoaXMpOworICAg
IGF1dG8gYWRkUmVzdWx0ID0gYWxsRG9jdW1lbnRzTWFwKCkuYWRkKG1faWRlbnRpZmllciwgdGhp
cyk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsK
IAogICAgIC8vIFdlIGRlcGVuZCBvbiB0aGUgdXJsIGdldHRpbmcgaW1tZWRpYXRlbHkgc2V0IGlu
IHN1YmZyYW1lcywgYnV0IHdlCiAgICAgLy8gYWxzbyBkZXBlbmQgb24gdGhlIHVybCBOT1QgZ2V0
dGluZyBpbW1lZGlhdGVseSBzZXQgaW4gb3BlbmVkIHdpbmRvd3MuCkBAIC01NDcsNyArNTYwLDgg
QEAgUmVmPERvY3VtZW50PiBEb2N1bWVudDo6Y3JlYXRlKERvY3VtZW50JiBjb250ZXh0RG9jdW1l
bnQpCiAKIERvY3VtZW50Ojp+RG9jdW1lbnQoKQogewotICAgIGFsbERvY3VtZW50cygpLnJlbW92
ZSh0aGlzKTsKKyAgICBib29sIHdhc1JlbW92ZWQgPSBhbGxEb2N1bWVudHNNYXAoKS5yZW1vdmUo
bV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQp
OwogCiAgICAgQVNTRVJUKCFyZW5kZXJWaWV3KCkpOwogICAgIEFTU0VSVChtX3BhZ2VDYWNoZVN0
YXRlICE9IEluUGFnZUNhY2hlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMTlkOGI5NzdmYTUw
NWQ0OGRkNWZhYzY0Y2U0ZmJhODFlYzQ0YmEyYS4uM2U5YzgwMjZhODlhNDM1NmI4NDNiYWNlNWQ2
YWRmMWU3M2U0YTMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM0Nyw3ICszNDcsMTEgQEAg
cHVibGljOgogCiAgICAgdm9pZCByZW1vdmVkTGFzdFJlZigpOwogCi0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIEhhc2hTZXQ8RG9jdW1lbnQqPiYgYWxsRG9jdW1lbnRzKCk7CisgICAgdWludDY0
X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgdXNp
bmcgRG9jdW1lbnRzTWFwID0gSGFzaE1hcDx1aW50NjRfdCwgRG9jdW1lbnQqPjsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgRG9jdW1lbnRzTWFwOjpWYWx1ZXNJdGVyYXRvclJhbmdlIGFsbERv
Y3VtZW50cygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEb2N1bWVudHNNYXAmIGFsbERv
Y3VtZW50c01hcCgpOwogCiAgICAgTWVkaWFRdWVyeU1hdGNoZXImIG1lZGlhUXVlcnlNYXRjaGVy
KCk7CiAKQEAgLTE4MzUsNiArMTgzOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2dyYW50U3Rv
cmFnZUFjY2Vzc092ZXJyaWRlIHsgZmFsc2UgfTsKIAogICAgIFJlZlB0cjxEb2N1bWVudFRpbWVs
aW5lPiBtX3RpbWVsaW5lOworICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKIH07CiAKIEVsZW1l
bnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50KERvY3VtZW50Kik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggOTJlOTA1OWI5YTAz
YjI5ZWNhMmYwNDU0ZmZiOTAwZDQ0ZjQwNTg1YS4uMTNiMWRiNGI1NWY3ZmNkNGUzZWM3MGNmN2Yy
MGU3OWZjMDljYmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFu
ZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0
LmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNz
ZXJ0aW9uLmgiCiAjaW5jbHVkZSAiUHVibGljVVJMTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlamVj
dGVkUHJvbWlzZVRyYWNrZXIuaCIKQEAgLTQ1LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJTY3JpcHRT
dGF0ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGUuaCIKKyNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJl
YWQuaCIKICNpbmNsdWRlIDxoZWFwL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0
b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CkBAIC01MjUsNCArNTI3LDE4IEBAIEpTQzo6RXhlY1N0YXRl
KiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpleGVjU3RhdGUoKQogICAgIHJldHVybiBleGVjU3Rh
dGVGcm9tV29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpOwogfQogCisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorU2VydmljZVdvcmtlckNvbnRhaW5lciogU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6c2VydmljZVdvcmtlckNvbnRhaW5lcigpCit7CisgICAgTmF2aWdhdG9yQmFz
ZSogbmF2aWdhdG9yID0gbnVsbHB0cjsKKyAgICBpZiAoaXM8RG9jdW1lbnQ+KCp0aGlzKSkgewor
ICAgICAgICBpZiAoYXV0byogd2luZG93ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCp0aGlzKS5kb21X
aW5kb3coKSkKKyAgICAgICAgICAgIG5hdmlnYXRvciA9IHdpbmRvdy0+bmF2aWdhdG9yKCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIG5hdmlnYXRvciA9ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29w
ZT4oKnRoaXMpLm5hdmlnYXRvcigpOworCisgICAgcmV0dXJuIG5hdmlnYXRvciA/IG5hdmlnYXRv
ci0+c2VydmljZVdvcmtlcigpIDogbnVsbHB0cjsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApp
bmRleCAyNjZmNDlhZWVjMDYzZmM0NGIwZjhjNzhkN2U5MzAxMjMxNGVkYjdhLi41MjE4YmU4NTIz
MjllODFiZjM5YzYwNzQ0MjczNWYwODA1MWQyY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTY4LDYgKzY4LDEwIEBAIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBVUkw7CiAKKyNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCitjbGFzcyBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOworI2VuZGlmCisK
IG5hbWVzcGFjZSBJREJDbGllbnQgewogY2xhc3MgSURCQ29ubmVjdGlvblByb3h5OwogfQpAQCAt
MjM0LDYgKzIzOCw4IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
dWludDY0X3Qgc2VsZWN0ZWRTZXJ2aWNlV29ya2VySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fc2VydmljZVdvcmtlcklkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldFNlbGVjdGVkU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIodWludDY0X3QgaWRlbnRpZmllcikgeyBtX3NlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorCisgICAgU2VydmljZVdvcmtlckNvbnRhaW5lciog
c2VydmljZVdvcmtlckNvbnRhaW5lcigpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcAppbmRleCAxNzk2
NGVhZDYwNGM5YzQzMGI1OTM5YWVhZDZkNGNlMjAxOTU2ZWYyLi4wY2Y5YTgxNjQyZTJlM2VhMGNm
MmM2YzY5MTA1YTFhODc4NmMwZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IFNlcnZpY2VXb3JrZXI6OnBvc3RNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIEpTCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwg
QVNDSUlMaXRlcmFsKCJQYXNzaW5nIE1lc3NhZ2VQb3J0IG9iamVjdHMgdG8gcG9zdE1lc3NhZ2Ug
aXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9OwogCiAgICAgYXV0byYgc3dDb25uZWN0aW9uID0gU2Vy
dmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZv
clNlc3Npb24oY29udGV4dC5zZXNzaW9uSUQoKSk7Ci0gICAgc3dDb25uZWN0aW9uLnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUobV9pZGVudGlmaWVyLCBtZXNzYWdlLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0Lm9yaWdpbigpKTsKKyAgICBzd0Nvbm5lY3Rpb24ucG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShtX2lkZW50aWZpZXIsIG1lc3NhZ2Uu
cmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnRleHQpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50LmNwcAppbmRleCBjZDMwMWQwODgyM2Q5NGJlMTEzZTAxNDliOTJhMWMzNjI1MjQyNmYzLi42
N2RlMzBjZGYxZjE4NTg3ZTgwMTQ1YzNhMDU4YTI0Mzc4NjU4MDU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCkBA
IC0yOCwxNCArMjgsMjYgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckNsaWVudC5oIgogCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNs
dWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZXJ2aWNlV29ya2VyQ2xpZW50OjpTZXJ2aWNlV29y
a2VyQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFR5cGUgdHlwZSkKK1Nl
cnZpY2VXb3JrZXJDbGllbnQ6OlNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgVHlwZSB0eXBlKQog
ICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoJmNvbnRleHQpCisgICAgLCBtX2lkZW50
aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fdHlwZSh0eXBlKQogewogfQogCitTZXJ2aWNlV29y
a2VyQ2xpZW50Ojp+U2VydmljZVdvcmtlckNsaWVudCgpCit7Cit9CisKIFN0cmluZyBTZXJ2aWNl
V29ya2VyQ2xpZW50Ojp1cmwoKSBjb25zdAogewogICAgIHJldHVybiB7IH07CkBAIC00OCwxNCAr
NjAsMzYgQEAgYXV0byBTZXJ2aWNlV29ya2VyQ2xpZW50OjpmcmFtZVR5cGUoKSBjb25zdCAtPiBG
cmFtZVR5cGUKIAogU3RyaW5nIFNlcnZpY2VXb3JrZXJDbGllbnQ6OmlkKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4geyB9OworICAgIHJldHVybiBtX2lkZW50aWZpZXIudG9TdHJpbmcoKTsKIH0KIAot
RXhjZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlckNsaWVudDo6cG9zdE1lc3NhZ2UoSlNDOjpF
eGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6
SlNPYmplY3Q+PiYmIHRyYW5zZmVyKQorRXhjZXB0aW9uT3I8dm9pZD4gU2VydmljZVdvcmtlckNs
aWVudDo6cG9zdE1lc3NhZ2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNDOjpK
U1ZhbHVlIG1lc3NhZ2VWYWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYm
IHRyYW5zZmVyKQogewotICAgIFVOVVNFRF9QQVJBTShtZXNzYWdlKTsKLSAgICBVTlVTRURfUEFS
QU0odHJhbnNmZXIpOwotICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwg
QVNDSUlMaXRlcmFsKCJjbGllbnQucG9zdE1lc3NhZ2UoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIp
IH07CisgICAgYXV0byogZXhlY1N0YXRlID0gY29udGV4dC5leGVjU3RhdGUoKTsKKyAgICBBU1NF
UlQoZXhlY1N0YXRlKTsKKworICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsK
KyAgICBhdXRvIG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgqZXhlY1N0
YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUodHJhbnNmZXIpLCBwb3J0cywgU2VyaWFsaXphdGlv
bkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlKTsKKyAgICBpZiAobWVzc2FnZS5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2UucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAg
Ly8gRGlzZW50YW5nbGUgdGhlIHBvcnQgaW4gcHJlcGFyYXRpb24gZm9yIHNlbmRpbmcgaXQgdG8g
dGhlIHJlbW90ZSBjb250ZXh0LgorICAgIGF1dG8gY2hhbm5lbHNPckV4Y2VwdGlvbiA9IE1lc3Nh
Z2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKFdURk1vdmUocG9ydHMpKTsKKyAgICBpZiAoY2hhbm5l
bHNPckV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGNoYW5uZWxzT3JF
eGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgLy8gRklYTUU6IFN1cHBvcnQgc2Vu
ZGluZyB0aGUgY2hhbm5lbHMuCisgICAgYXV0byBjaGFubmVscyA9IGNoYW5uZWxzT3JFeGNlcHRp
b24ucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgaWYgKGNoYW5uZWxzICYmICFjaGFubmVscy0+
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiUGFzc2luZyBNZXNzYWdlUG9ydCBvYmplY3RzIHRvIHBvc3RNZXNzYWdl
IGlzIG5vdCB5ZXQgc3VwcG9ydGVkIikgfTsKKworICAgIHVpbnQ2NF90IHNvdXJjZUlkZW50aWZp
ZXIgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRocmVhZCgp
LmlkZW50aWZpZXIoKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFttZXNzYWdlID0gbWVzc2FnZS5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgZGVzdGluYXRpb25JZGVudGlmaWVyID0gbV9pZGVudGlmaWVy
LCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4gPSBjb250ZXh0Lm9yaWdpbigpLmlzb2xh
dGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgICAgICBj
b25uZWN0aW9uLT5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklk
ZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdp
bik7CisgICAgfSk7CisKKyAgICByZXR1cm4geyB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnQuaAppbmRleCA2OWI5MWUwOGEzOTZiOGI5NWYyYTk3NDg5MWIwMDZiNzhmYzc5ZGY1
Li41MzhjMGIyZjZjYjM4NjA4NmE3ODEwYTlhOTQ0MDM0OTdiYTYyYTczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmgKQEAg
LTI5LDEyICsyOSwxMiBAQAogCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCIKICNp
bmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNWYWx1ZTsKIH0KIApAQCAt
NDIsNiArNDIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJD
bGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyQ2xpZW50PiwgcHVibGljIENv
bnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKKyAgICB1c2luZyBJZGVudGlmaWVy
ID0gU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CisKICAgICB1c2luZyBUeXBlID0gU2Vy
dmljZVdvcmtlckNsaWVudFR5cGU7CiAgICAgZW51bSBjbGFzcyBGcmFtZVR5cGUgewogICAgICAg
ICBBdXhpbGlhcnksCkBAIC01MCwyMSArNTIsMjQgQEAgcHVibGljOgogICAgICAgICBOb25lCiAg
ICAgfTsKIAotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckNsaWVudD4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFR5cGUgdHlwZSkKKyAgICBzdGF0aWMgUmVmPFNl
cnZpY2VXb3JrZXJDbGllbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBUeXBlIHR5cGUpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnRleHQsIHR5cGUp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckNsaWVudChjb250
ZXh0LCBpZGVudGlmaWVyLCB0eXBlKSk7CiAgICAgfQogCisgICAgflNlcnZpY2VXb3JrZXJDbGll
bnQoKTsKKwogICAgIFN0cmluZyB1cmwoKSBjb25zdDsKICAgICBGcmFtZVR5cGUgZnJhbWVUeXBl
KCkgY29uc3Q7CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAg
U3RyaW5nIGlkKCkgY29uc3Q7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBwb3N0TWVzc2FnZShK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBWZWN0b3I8SlNDOjpTdHJvbmc8
SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBvc3RN
ZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBKU0M6OkpTVmFsdWUgbWVzc2FnZSwgVmVj
dG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyKTsKIAogcHJvdGVjdGVk
OgotICAgIFNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFR5cGUp
OworICAgIFNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0
IElkZW50aWZpZXImLCBUeXBlKTsKIAorICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAg
IFR5cGUgbV90eXBlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCmluZGV4IGY3ZTRhOThkZTIwZDBjMWZmYjNj
MzNlZGEzNTNlNGVkN2Q5ZGMwMzQuLmQ4YWNhYzk5ODkxYTY3ZDdmZmViNTkxNjJlOGFhMGVmZDdh
YTZjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudC5pZGwKQEAgLTM1LDcgKzM1LDcgQEAKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgU2VydmljZVdvcmtlckNsaWVudFR5cGUgdHlwZTsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGlkOwogCi0gICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShhbnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8
b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcG9zdE1lc3NhZ2UoYW55IG1lc3NhZ2UsIG9w
dGlvbmFsIHNlcXVlbmNlPG9iamVjdD4gdHJhbnNmZXIgPSBbXSk7CiB9OwogCiBlbnVtIEZyYW1l
VHlwZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE0NjQ4NTI4ZTE3
ODlmZWVmZjBlOWRiMDA5OWU3MTJkNzM4MDViN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgeworICAgIHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyOworICAgIHVpbnQ2NF90IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyOworCisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nOjpudW1i
ZXIoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpICsgIi0iICsgIFN0cmluZzo6bnVtYmVyKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyKTsgfQorfTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uY3BwCmluZGV4IDI1OTE5YWIxYTM5OTY5YWM1NGViY2ZiODg0OTYwZjAzZTcwMDlmYzEu
LmFiZmRhY2IzNzVlYjMyMWUxYTE0MTY2ODdkYjQ3MzIyMGE4YTI4NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbi5jcHAKQEAgLTI5LDI1ICsyOSwxMSBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1
ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250YWluZXIuaCIKICNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
KiBjb250YWluZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpCi17Ci0gICAgTmF2aWdhdG9yQmFzZSogbmF2aWdhdG9yID0gbnVsbHB0cjsK
LSAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiB3aW5k
b3cgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkuZG9tV2luZG93KCkpCi0gICAgICAgICAg
ICBuYXZpZ2F0b3IgPSB3aW5kb3ctPm5hdmlnYXRvcigpOwotICAgIH0gZWxzZQotICAgICAgICBu
YXZpZ2F0b3IgPSAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLm5hdmlnYXRv
cigpOwotCi0gICAgcmV0dXJuIG5hdmlnYXRvciA/IG5hdmlnYXRvci0+c2VydmljZVdvcmtlcigp
IDogbnVsbHB0cjsKLX0KLQogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJhdGlvbkRhdGEpCiAgICAgOiBBY3RpdmVET01P
YmplY3QoJmNvbnRleHQpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbkRhdGEoV1RGTW92ZShyZWdpc3Ry
YXRpb25EYXRhKSkKQEAgLTk0LDcgKzgwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uOjp1bnJlZ2lzdGVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8qIGNvbnRhaW5lciA9IGNvbnRhaW5lckZvclNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKmNvbnRleHQpOworICAgIGF1dG8qIGNvbnRhaW5lciA9IGNvbnRl
eHQtPnNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKICAgICBpZiAoIWNvbnRhaW5lcikgewogICAg
ICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKSk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcAppbmRleCA0NmQyOTkwZTI5NmUwOGZm
N2M0YWY0YzkxZWQ4Njg5MjM1YWM5MjU4Li5lNzE0NDNiMDAyZTIxYjAyZTNlZThjMDNhYjRlYmIw
ZmVmNDFiNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuY3BwCkBAIC0zMiw4ICszMiw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2VydmljZVdvcmtlcldpbmRvd0NsaWVudDo6U2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotICAg
IDogU2VydmljZVdvcmtlckNsaWVudChjb250ZXh0LCBUeXBlOjpXaW5kb3cpCitTZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50OjpTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCisgICAgOiBT
ZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnRleHQsIGlkZW50aWZpZXIsIFR5cGU6OldpbmRvdykKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJXaW5kb3dDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmgKaW5kZXggODNjODBlMjgwN2IzNDEyYWZkMzg2YTgwMmQ1
ZGI1YTAzNDA1NjYwMy4uM2UyZjM5NTZhN2Q4MmQ3ZmM0YWIwMmIxNjg4NWViZDEyYmY2YTY1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJX
aW5kb3dDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5oCkBAIC0zNiw5ICszNiw5IEBAIGNsYXNzIERlZmVycmVkUHJv
bWlzZTsKIAogY2xhc3MgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudCBmaW5hbCA6IHB1YmxpYyBT
ZXJ2aWNlV29ya2VyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQor
ICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlcldpbmRvd0NsaWVudD4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50KGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtl
cldpbmRvd0NsaWVudChjb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgVmlzaWJp
bGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSgpIGNvbnN0OwpAQCAtNDgsNyArNDgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBuYXZpZ2F0ZShjb25zdCBTdHJpbmcmIHVybCwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgU2VydmljZVdvcmtlcldpbmRvd0Ns
aWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgSWRlbnRpZmllciYpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCA2NzhiOTJi
NDM2MDFkNzRiNGY2Y2YyZmQxZWNlOWU0NTFjNDJhYmRjLi45NDZiM2ZkNTY5MWYyNGVjMzEwZGQ2
ZDlhODI0ZTMxMTMyZWMxYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtNTksMTQgKzU5
LDE0IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSogU1dDb250ZXh0TWFuYWdlcjo6c2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5KHVpbnQ2NF90IHNlCiAgICAgcmV0dXJuIG1fd29ya2VyTWFwLmdl
dChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiB9CiAKLXZvaWQgU1dDb250ZXh0TWFuYWdlcjo6
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgU1dDb250ZXh0TWFuYWdlcjo6cG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlvblNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIGNv
bnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBzb3VyY2VJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93
b3JrZXJNYXAuZ2V0KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzZXJ2aWNl
V29ya2VyID0gbV93b3JrZXJNYXAuZ2V0KGRlc3RpbmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOwogICAgIGlmICghc2VydmljZVdvcmtlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBwYXNzIHZhbGlkIE1lc3NhZ2VQb3J0Q2hhbm5lbHMuCi0gICAgc2Vy
dmljZVdvcmtlci0+dGhyZWFkKCkucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZShXVEZNb3ZlKG1lc3NhZ2UpLCBudWxscHRyLCBzb3VyY2VPcmlnaW4pOworICAgIHNlcnZpY2VX
b3JrZXItPnRocmVhZCgpLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoV1RG
TW92ZShtZXNzYWdlKSwgbnVsbHB0ciwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGNkY2Nh
Y2MxYTA3ZTVjYzg1YTNmMDViZDFkZDg0NTM4OWY0MDdhNWMuLjlkNjI0MDBkNDY0NjkwZTAyNjNi
MGRmYmQxZWM0MjRlMTNlYWU1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTM0LDYgKzM0LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwor
c3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwogCiBjbGFzcyBTV0NvbnRleHRN
YW5hZ2VyIHsKIHB1YmxpYzoKQEAgLTQyLDYgKzQzLDggQEAgcHVibGljOgogICAgIGNsYXNzIENv
bm5lY3Rpb24gewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpIHsg
fQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVu
dChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlm
aWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJj
ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgPSAw
OwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb24oc3RkOjp1
bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYpOwpAQCAtNDksNyArNTIsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlclRocmVhZChSZWY8U2Vy
dmljZVdvcmtlclRocmVhZFByb3h5PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkqIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSh1aW50NjRfdCkgY29uc3Q7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUo
dWludDY0X3QgZGVzdGluYXRpb25TZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciYgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwogCiBw
cml2YXRlOgogICAgIFNXQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwCmluZGV4IGNmNzhlOTE5MDJiYzBlNDhmOTk1YjAzYjk4OTc3Y2IzOWM4N2E3
NTUuLjZhZGViYmYyZDQwZWRhNjBhOTYwM2VlNmExNzIyMTJmZTUwNjRjNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2guaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKICNpbmNsdWRlICJXb3JrZXJP
YmplY3RQcm94eS5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTk5LDEyICsxMDAs
MTMgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpwb3N0RmV0Y2hUYXNrKFJlZjxTZXJ2aWNl
V29ya2VyRmV0Y2g6OkNsaWVudD4mJiBjbGllbnQKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVz
c2FnZSwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiYmIGNoYW5uZWxz
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShSZWY8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiYmIG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eT4mJiBjaGFubmVscywgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIHNvdXJj
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewotICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgdGFzayhbY2hhbm5lbHMgPSBXVEZNb3ZlKGNoYW5uZWxzKSwg
bWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiA9IHNvdXJjZU9yaWdpbi5p
c29sYXRlZENvcHkoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUg
eworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgdGFzayhbY2hhbm5lbHMgPSBXVEZN
b3ZlKGNoYW5uZWxzKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZp
ZXIsIHNvdXJjZU9yaWdpbiA9IHNvdXJjZU9yaWdpbi5pc29sYXRlZENvcHkoKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBhdXRvJiBzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpOwogICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMo
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlLCBXVEZNb3ZlKGNoYW5uZWxzKSk7Ci0gICAgICAgIHNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KEV4dGVuZGFibGVNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2lu
KSk7CisgICAgICAgIEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3VyY2Ugc291cmNlID0gUmVmUHRy
PFNlcnZpY2VXb3JrZXJDbGllbnQ+IHsgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudDo6Y3JlYXRl
KGNvbnRleHQsIHNvdXJjZUlkZW50aWZpZXIpIH07CisgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5kaXNwYXRjaEV2ZW50KEV4dGVuZGFibGVNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZN
b3ZlKHBvcnRzKSwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUo
c291cmNlKSkpOwogICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkud29y
a2VyT2JqZWN0UHJveHkoKS5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3Qoc2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKICAgICB9KTsKICAgICBydW5M
b29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5k
ZXggMzM3MzEzOWMyYjU3NDg2MWNlMTA0OWJkNGQ3YTY5Mjk2MjYxZjAzNy4uMjRmMTUyNmY3YjU1
MjhjMmE5ZWRiMWFjMDBmNjZkOWUxNWQ1ODI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApA
QCAtNDAsNiArNDAsNyBAQCBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWw7CiBjbGFzcyBTZXJpYWxp
emVkU2NyaXB0VmFsdWU7CiBjbGFzcyBXb3JrZXJMb2FkZXJQcm94eTsKIGNsYXNzIFdvcmtlck9i
amVjdFByb3h5Oworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwogc3RydWN0
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIAogdXNpbmcgTWVzc2FnZVBvcnRDaGFubmVsQXJy
YXkgPSBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIDE+OwpAQCAt
NTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtlck9iamVj
dFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogCiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBwb3N0RmV0Y2hUYXNrKFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNs
aWVudD4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIEZldGNoT3B0aW9ucyYmKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoUmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5PiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eT4mJiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIHNvdXJjZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKIAogcHJvdGVjdGVkOgogICAgIFJlZjxX
b3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWlu
V29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BPcmln
aW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0Ns
aWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDhlOTNjNWUwNmM5NGE1YmE5M2VlMzM1NGVhM2EwYWVi
YWMzN2QwNjguLmE5MjY4Yzg2OTVlODZkYzM0YjA1ZTdkMjI1NWNiZjJkZDU4YjczYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
Q2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTI4LDcgKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkRhdGEuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGEuaCIKIApAQCAtMTA5LDYgKzExMiwyOSBAQCB2
b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcih1aW50NjRf
dCBqb2JJZGVudGlmaWVyKQogICAgIGpvYi0+c3RhcnRTY3JpcHRGZXRjaCgpOwogfQogCit2b2lk
IFNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWlu
dDY0X3QgZGVzdGluYXRpb25TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgUmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgLy8gRklY
TUU6IGRlc3RpbmF0aW9uU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2FuIG9ubHkg
aWRlbnRpZnkgYSBEb2N1bWVudCBhdCB0aGUgbW9tZW50LgorICAgIGF1dG8qIGRlc3RpbmF0aW9u
RG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGRlc3RpbmF0aW9uU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIpOworICAgIGlmICghZGVzdGluYXRpb25Eb2N1
bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogY29udGFpbmVyID0gZGVzdGluYXRp
b25Eb2N1bWVudC0+c2VydmljZVdvcmtlckNvbnRhaW5lcigpOworICAgIGlmICghY29udGFpbmVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJj
ZT4gc291cmNlOworICAgIGlmIChkZXN0aW5hdGlvbkRvY3VtZW50LT5zZWxlY3RlZFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKCkgPT0gc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIpIHsKKyAg
ICAgICAgQVNTRVJUKGNvbnRhaW5lci0+Y29udHJvbGxlcigpLT5pZGVudGlmaWVyKCkgPT0gc291
cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgICAgICBzb3VyY2UgPSBNZXNzYWdlRXZl
bnRTb3VyY2UgeyBSZWZQdHI8U2VydmljZVdvcmtlcj4geyBjb250YWluZXItPmNvbnRyb2xsZXIo
KSB9IH07CisgICAgfSBlbHNlCisgICAgICAgIHNvdXJjZSA9IE1lc3NhZ2VFdmVudFNvdXJjZSB7
IFJlZlB0cjxTZXJ2aWNlV29ya2VyPiB7IFNlcnZpY2VXb3JrZXI6OmNyZWF0ZSgqZGVzdGluYXRp
b25Eb2N1bWVudCwgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIpIH0gfTsKKworICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgcGFzcyBpbiBwb3J0cy4KKyAgICBhdXRvIG1lc3NhZ2VFdmVudCA9
IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHsgfSwgV1RGTW92ZShtZXNzYWdlKSwgc291cmNlT3JpZ2lu
LCB7IH0sIFdURk1vdmUoc291cmNlKSk7CisgICAgY29udGFpbmVyLT5kaXNwYXRjaEV2ZW50KG1l
c3NhZ2VFdmVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDUwOGE1OGE0OWYy
N2JkYWQ2MjkwNTJiNWYzNTM0NjQ5OWJlNDAxNWIuLmM2MWE2MWU3NmIxYzg1MDZmYTgwZDIzODA4
MGMwNjNmMDU0MTMzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaApAQCAtNDksNyArNDksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iJik7CiAgICAgdm9p
ZCBmaW5pc2hlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIGZhaWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25z
dCBSZXNvdXJjZUVycm9yJik7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUo
dWludDY0X3QgZGVzdGluYXRpb25TZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc291cmNlKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5
T3JpZ2luJikgY29uc3QgPSAwOwpAQCAtNTksNiArNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKHVpbnQ2NF90
IGpvYklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKHVpbnQ2
NF90IGpvYklkZW50aWZpZXIsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcih1aW50NjRfdCBqb2JJZGVu
dGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KHVpbnQ2NF90IGRlc3RpbmF0aW9uU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgdWludDY0X3Qgc291
cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsK
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDRhZmU3ZTdlMjFjMjBmZTAxMmVlNGRkN2UwM2Y5
NjY3YzkwZmUzNGEuLjM5ZTBmODk1ZGJlNDUxZTlhZWYxOTE2YzBkNzk2YTQyNjRkYjhlNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
NjUsNiArNjUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nQ29uc3RyYWludHMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWFyY2hQb3B1cE1lbnUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VGltaW5nRnVuY3Rpb24uaD4KQEAgLTE5MDEsNiArMTkwMiwyNyBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8VGV4dENoZWNraW5nUmVxdWVzdERhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgVGV4
dENoZWNraQogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQordm9pZCBBcmd1bWVudENvZGVyPFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQoreworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllci5zZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciA8PCBpZGVudGlmaWVyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXImIGlkZW50aWZpZXIpCit7CisgICAgdWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXI7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVpbnQ2NF90IHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZGVudGlm
aWVyID0geyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIgfTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8VGV4dENoZWNraW5nUmVzdWx0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0KQogewogICAgIGVuY29kZXIuZW5jb2RlRW51
bShyZXN1bHQudHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCmluZGV4IDFjMmRjNzA3OTAzYWM5N2M1NDdjNTVjMTRjN2E4MDkxNzZmNWVhMDIuLjMw
OGU5MmU1YzRmYzJlMmY2MjM2ZGI5ZjA2ZDU4ZDcyMjg1YWY2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xNTcsNiArMTU3LDEwIEBAIHN0
cnVjdCBNZWRpYUNvbnN0cmFpbnRzOwogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogdXNp
bmcgSURCS2V5UGF0aCA9IFZhcmlhbnQ8U3RyaW5nLCBWZWN0b3I8U3RyaW5nPj47CiAjZW5kaWYK
KworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllcjsKKyNlbmRpZgogfQogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTQ3Nyw2ICs0ODEs
MTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdSZXF1ZXN0RGF0YT4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29y
ZTo6VGV4dENoZWNraW5nUmVxdWVzdERhdGEmKTsKIH07CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYpOworICAgIHN0
YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXImKTsKK307CisjZW5kaWYKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCYpOwogICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4gZGVjb2RlKERlY29k
ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggZmMxYzVm
MDc1YmJjMzViMDQ2ZGNlYmQ5NDM1NzRiNDlhMjBhZTJlYy4uMDA2NDM2ZjY1MWQyZDNjYTllMTEx
YzI2MDMwZjEwMGUwYTQyZGM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkRhdGEu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckpvYkRhdGEuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmg+CkBAIC0xMDgsOSArMTA5
LDEwIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKHVpbnQ2NF90IGZl
dGNoSWRlbnRpZmllciwgdWludDY0X3Qgc2VydmljCiAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3Mo
TWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTdGFydEZldGNoKGlkZW50
aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVz
dCwgb3B0aW9ucykpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IGRlc3RpbmF0aW9uU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0X3Qgc291
cmNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKQogewotICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlT3JpZ2luKSk7CisgICAg
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciB7IGlkZW50aWZp
ZXIoKSwgc291cmNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgfTsKKyAgICBzZW5k
VG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgeyBkZXN0aW5hdGlvblNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmln
aW4gfSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hS
ZXNwb25zZSh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQpAQCAtMTM4LDYgKzE0MCwxMSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlv
bjo6ZGlkTm90SGFuZGxlRmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKQogICAgIG1fY29u
dGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAordm9pZCBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGRl
c3RpbmF0aW9uU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQoreworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ2xpZW50Q29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBk
ZXN0aW5hdGlvblNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3Vy
Y2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc291cmNlT3JpZ2luIH0pOworfQorCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBib29sIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFBy
b2Nlc3MoVSYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtX2NvbnRleHRDb25uZWN0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDI5MjZlODNlNDMxN2I1NzE1ZGRj
ODEwMTU1ZWI3M2MzMTc5MDJiOWYuLjYwMzk3ZTk3YzE0NTk0MmY2YTY1YWU5ZjE5NDU3N2E2OTJh
NmQ3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTU3LDYgKzU3
LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmFpbEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBkaWROb3RIYW5kbGVGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZp
ZXIpOwogCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRf
dCBkZXN0aW5hdGlvblNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisKIHByaXZhdGU6CiAgICAgLy8g
SW1wbGVtZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUgY2xpZW50IFdl
YlByb2Nlc3MpCiAgICAgdm9pZCByZWplY3RKb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmluYWw7CkBAIC02Niw3ICs2OCw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJik7CiAKLSAgICB2b2lk
IHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VPcmlnaW4pOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlvblNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7
CiAKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgY29udGV4dCBXZWJQcm9jZXNzCiAgICAgdm9p
ZCBzdGFydFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggM2IyMDQ1YzY0NDRhZGNkMThkYjRjZmVjYzUxZWZjMzk0
YjIxMmQ1OS4uZGU1MTVkOTBiZWM3YmMzYmE1Nzg2MzI1NTRhNjk2YTQzZGNlMzAxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0y
OCw3ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyQ29ubmVjdGlvbiB7CiAgICAgRmlu
aXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckZl
dGNoUmVzdWx0IHJlc3VsdCkKIAogICAgIFN0YXJ0RmV0Y2godWludDY0X3QgaWRlbnRpZmllciwg
dWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9wdGlvbnMpCi0gICAgUG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIFN0cmluZyBzb3VyY2VPcmln
aW4pCisgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBk
ZXN0aW5hdGlvblNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVz
c2FnZSwgdWludDY0X3Qgc291cmNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFN0
cmluZyBzb3VyY2VPcmlnaW4pCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCmlu
ZGV4IDg3NjRjZDA3MDJkNDk4ODA3OWEzYzU1MTMwNzFkMTM1ZWRkZTI5ZTEuLmVjZDUxNzA3ODMw
ODA5YmUzNTIyMzc1YjExMjRhOWE4NGUzNDM0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9U
ZXh0RW5jb2RpbmcuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3Rm
L0Nyb3NzVGhyZWFkVGFzay5oPgpAQCAtNDM1LDYgKzQzNiwxMiBAQCB2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpkaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
dWludDY0XwogICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hGZXRjaChmZXRjaElkZW50aWZp
ZXIpOwogfQogCit2b2lkIFN0b3JhZ2VQcm9jZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNv
dXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikK
K3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQo
ZGVzdGluYXRpb25JZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAg
ICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRp
b25JZGVudGlmaWVyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBtZXNzYWdlLCBz
b3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKK30KKwogdm9pZCBT
dG9yYWdlUHJvY2Vzczo6cmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAgIEFTU0VSVCghbV9zd1NlcnZlckNvbm5lY3Rpb25z
LmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKaW5kZXggYWE4NjQ1Yjc3MWNhZGM4NmFhZWUx
OTI0MDk3YWE2YTgxMzcyOTQzNy4uZWM1ZTA4Yzg3OWZkM2Y2M2NlOTBhNjYzOWEyOTk2NDFlMjk3
ZjMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3Mu
aApAQCAtMzcsNiArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU1dTZXJ2ZXI7
CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyOwogc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk7CiB9CiAKQEAg
LTEyNSw2ICsxMjYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoRmV0Y2godWludDY0
X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7
CiAgICAgdm9pZCBkaWRGYWlsRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWROb3RIYW5kbGVGZXRj
aCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyKTsKKworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRl
bnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBzb3Vy
Y2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwog
I2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgVmVjdG9yPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4gaW5kZXhlZERhdGFiYXNlT3JpZ2lucyhjb25zdCBTdHJpbmcm
IHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFn
ZVByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMzM5MmFmNzE1ZDEyNzBjN2FmZDRmN2ZlYmU2ZjMy
NjUxYjBjY2Y0OS4uYWIwOGZjZDEwYjdlODliODZhY2NmNTdhOTY1ZjgxYzE4OWQzZmIyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC00Niw1ICs0Niw2IEBAIG1lc3NhZ2VzIC0+IFN0b3JhZ2VQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogICAgIERpZFJlY2VpdmVGZXRjaERhdGEo
dWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRp
ZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgp
CiAgICAgRGlkRmluaXNoRmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcikKKyAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckNsaWVudChzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVz
dGluYXRpb25JZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgdWludDY0X3Qg
c291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiAjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDMwODZlYTRmYzBlYmYxYjhkNDZjNDU5YTRm
MTNmZTkyNjM1YTk1YTMuLjdiODc3OGFkMzAwZGJiYTAwZmE0Yjg2YzkzNDc2NzNjMDFlYzk5OTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlNXT3JpZ2luVGFibGUuaCIKICNpbmNs
dWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
RG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoUmVzdWx0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oPgpAQCAtNjgsOSArNjksMTMgQEAgdm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3Qg
U2VydmljZVdvcmtlckZldGMKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OkZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIocmVzdWx0KSk7CiB9CiAKLXZvaWQgV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
KHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmIHNjcmlwdFZhbHVlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgV2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
KHVpbnQ2NF90IGRlc3RpbmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYgc2NyaXB0VmFsdWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNv
dXJjZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IElQQzo6RGF0YVJlZmVyZW5jZSB7IHNjcmlwdFZhbHVlLT5kYXRhKCkgfSwgc291cmNlT3JpZ2lu
KSk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBwb3N0aW5nIG1lc3NhZ2VzIGZyb20g
d29ya2Vycy4KKyAgICBpZiAoIWlzPERvY3VtZW50Pihzb3VyY2UpKQorICAgICAgICByZXR1cm47
CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OlBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoZGVzdGluYXRpb25TZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc2NyaXB0VmFsdWUtPmRhdGEoKSB9LCBkb3duY2Fz
dDxEb2N1bWVudD4oc291cmNlKS5pZGVudGlmaWVyKCksIHNvdXJjZS5vcmlnaW4oKSkpOwogfQog
CiBib29sIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6aGFzU2VydmljZVdvcmtlclJlZ2lzdGVyZWRG
b3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29uc3QKQEAgLTkyLDYgKzk3
LDExIEBAIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+IFdlYlNXQ2xpZW50Q29ubmVjdGlv
bjo6c3RhcnRGZXRjaChXZWJTZXJ2aWNlV29ya2VyCiAgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6Y3JlYXRlKHByb3ZpZGVyLCBXVEZNb3ZlKGxvYWRlciksIGlkZW50aWZpZXIs
IG1fY29ubmVjdGlvbi5nZXQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCit2b2lkIFdlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQodWludDY0
X3QgZGVzdGluYXRpb25TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7CisgICAgU1dDbGllbnRDb25u
ZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvblNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0
KG1lc3NhZ2UudmVjdG9yKCkpLCBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc291cmNl
T3JpZ2luKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDFjZDI5Mjk5ZTNmZDNjMmZjOTI4
OGUxODYwYWQ1NDAzMTBjZTU0OGQuLjI3Y2RiYTJhMDk0NGMwOGNkYjBkMGIzN2UwMTM5NGZmMjg3
ZGI2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9i
RGF0YSYpIGZpbmFsOwogICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKLSAgICB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0
IFN0cmluZyYgc291cmNlT3JpZ2luKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3QgZGVzdGluYXRpb25TZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc291cmNlKSBmaW5hbDsKIAogICAgIHZvaWQgZGlzY29u
bmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpAQCAtNjQsNiArNjQsOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYpIGNvbnN0IGZpbmFsOwogICAgIFJlZjxTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2g+IHN0YXJ0RmV0Y2goV2ViU2VydmljZVdvcmtlclByb3ZpZGVyJiwgUmVm
PFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiYmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OkNhbGxiYWNrJiYpOwogCisgICAgdm9pZCBwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBkZXN0aW5hdGlvblNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2
NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVN0b3JhZ2VKb2IoY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1l
c3NhZ2VzLmluCmluZGV4IDExNTVkMWJhYWQ4OTU1ODYzMWYwMzgxMzI5ZGI2ZmNmMDY4ZjY2OTMu
LjkxMWNmMTAyZTQwOWE1OTIyNzZlMjI3OGZlNTI0OWQzOTUzMGExMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMwLDYgKzMwLDcgQEAgbWVzc2FnZXMgLT4gV2Vi
U1dDbGllbnRDb25uZWN0aW9uIHsKICAgICBTdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKHVpbnQ2
NF90IGpvYklkZW50aWZpZXIpCiAKICAgICBTZXRTV09yaWdpblRhYmxlU2hhcmVkTWVtb3J5KFdl
YktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlKQorICAgIFBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGRlc3RpbmF0aW9uU2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU3RyaW5nIHNvdXJjZU9yaWdpbikKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAppbmRleCAzZDBiMjdkOWNkYmVlODIwZTliM2ZjOTRiYjc4NTY5MjE2MTE4NjZkLi4wNzlh
MjhmMGM4NDJhMTJmZjVjNjVjZTE1MzgxYWFhNjUyYzM4MmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCkBAIC0xMzAsOSArMTMwLDE0IEBAIHZvaWQgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpCiAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT50aHJlYWQoKS5wb3N0RmV0Y2hU
YXNrKFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShvcHRpb25zKSk7
CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VP
cmlnaW4pCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IGRlc3RpbmF0aW9uU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlT3JpZ2luKQogewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0b3IoKSksIHNvdXJj
ZU9yaWdpbik7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShkZXN0aW5hdGlvblNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KG1lc3NhZ2UudmVjdG9yKCkpLCBzb3Vy
Y2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOworfQorCit2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBtX2Nvbm5l
Y3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vzczo6UG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLCBJUEM6
OkRhdGFSZWZlcmVuY2UgeyBtZXNzYWdlLT5kYXRhKCkgfSwgc291cmNlU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIHNvdXJjZU9yaWdpbiksIDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCAwNDZkMjI2M2I2NDliNmQyNWU4
NjEyMWY2YTQyMmQ3MmFkZWFjZWU1Li4yZGEwOTZjMTY2Y2RlMzQxN2Y4YTEyOWEzODc2MWJhMjA1
ZmE2MjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTQxLDE5ICs0MSwy
MiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiAK
LWNsYXNzIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIDogcHVibGljIFdlYkNvcmU6OlNX
Q29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CitjbGFzcyBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJD
b3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgewogcHVibGljOgogICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKIAotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Ci0K
IHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJik7CiAKKyAgICAvLyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9u
LgorICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwg
UmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCB1aW50NjRfdCBz
b3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
IGZpbmFsOworCisgICAgLy8gSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29y
a2VyKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKICAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0X3Qg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWlu
dDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJik7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IGRlc3RpbmF0aW9uU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVj
dGlvblRvU3RvcmFnZVByb2Nlc3M7CiAgICAgdWludDY0X3QgbV9wYWdlSUQgeyAwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDVkNzJk
MWI1ZjgzZjYxYWM1ZmMwNDI3ZDg5NjRjMTRjMWU5NjQ3MTguLjk0YjhlMDMxYjExYjdiM2NlMzhj
MzMzYjE1MzRmODNiZTZmOGY1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBACiBtZXNzYWdlcyAtPiBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbiB7CiAgICAgU3RhcnRTZXJ2aWNlV29ya2VyKHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRleHREYXRhIGNvbnRleHREYXRhKQogICAgIFN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9wdGlvbnMpCi0gICAgUG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIFN0cmluZyBzb3VyY2VPcmlnaW4pCisgICAg
UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlv
blNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZp
ZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4pCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc1YTE0NGE5MTE1
NTRkZTZiOGU1NjQ2NjYwOWQ1MDRmNWU1ZDJiOWQuLjc4ZjE4OTExMzE0MTcyNzZmMGI5ZmY2YjU4
OGMxYWVkOTM5NjExOWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNy0xMC0yNiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBpbml0aWFsIHN1cHBvcnQg
Zm9yIHNlcnZpY2VXb3JrZXJDbGllbnQucG9zdE1lc3NhZ2UoKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4Nzk0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1TZXJ2aWNlV29ya2Vy
LXBvc3RNZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS13
b3JrZXIuanM6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2Vz
L2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuanM6CisgICAgICAgICh0aGVuKToKKwog
MjAxNy0xMC0yNyAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dTdHJlYW1lcl1bTVNFXSBUcmltIHNwYWNlIGJldHdlZW4gY29kZWNzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1TZXJ2aWNl
V29ya2VyLXBvc3RNZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuaHR0
cHMtZXhwZWN0ZWQudHh0CmluZGV4IDdkMTIyMzU0NzVmMWVlYjU5MzIzZGViZTBkZjE1ZTY4MjUw
ZWE2N2MuLmY3YzM3ZTY0YzczMzQ5NDMxYzA1NDhiZjBkMzg5NmMwMGRmMjFmY2YgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLVNlcnZpY2VX
b3JrZXItcG9zdE1lc3NhZ2UuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Uu
aHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNSBAQAotUEFTUzogU3RhdHVzIGNvZGUgaXMg
MjAwCi1QQVNTOiBTdGF0dXMgdGV4dCBpcyBXb3JrZXIgcmVjZWl2ZWQgdGhlIG1lc3NhZ2UgZXZl
bnQuIG1lc3NhZ2VFdmVudC5vcmlnaW4gd2FzIGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMKLVBBU1M6
IFNvdXJjZSBpcyBTZXJ2aWNlIHdvcmtlcgorUEFTUzogQ2xpZW50IHJlY2VpdmVkIG1lc3NhZ2Ug
ZnJvbSBzZXJ2aWNlIHdvcmtlciwgb3JpZ2luOiBodHRwczovLzEyNy4wLjAuMTo4NDQzCitQQVNT
OiBTZXJ2aWNlIHdvcmtlciByZWNlaXZlZCBtZXNzYWdlICdNZXNzYWdlIDEnIGZyb20gb3JpZ2lu
ICdodHRwczovLzEyNy4wLjAuMTo4NDQzJworUEFTUzogQ2xpZW50IHJlY2VpdmVkIG1lc3NhZ2Ug
ZnJvbSBzZXJ2aWNlIHdvcmtlciwgb3JpZ2luOiBodHRwczovLzEyNy4wLjAuMTo4NDQzCitQQVNT
OiBTZXJ2aWNlIHdvcmtlciByZWNlaXZlZCBtZXNzYWdlICdNZXNzYWdlIDInIGZyb20gb3JpZ2lu
ICdodHRwczovLzEyNy4wLjAuMTo4NDQzJwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0
TWVzc2FnZS13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9yZXNvdXJjZXMvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS13b3JrZXIuanMKaW5k
ZXggODQzOTViMmE2ZDNkNmY1YTY3MzQ5ZmNiNzA2ZDhhYjQ3NTY2YmFiNS4uYjQ5ZGFkNzEzNzJl
OTlkN2Q0OTdmMmRlNDBjZTExZDc5NGNhM2U3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9z
dE1lc3NhZ2Utd29ya2VyLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLXdvcmtlci5q
cwpAQCAtMSwxNCArMSw0IEBACi1sZXQgcmVzcG9uc2VUb1NlbmQgPSB7IHN0YXR1czogNDA0LCBz
dGF0dXNUZXh0OiAiTm90IEZvdW5kIiB9OwotCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCAoZXZlbnQpID0+IHsKLSAgICByZXNwb25zZVRvU2VuZCA9IGV2ZW50LmRhdGE7Ci0gICAg
cmVzcG9uc2VUb1NlbmQuc3RhdHVzVGV4dCArPSAiIG1lc3NhZ2VFdmVudC5vcmlnaW4gd2FzICIg
KyBldmVudC5vcmlnaW47CisgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlIHdv
cmtlciByZWNlaXZlZCBtZXNzYWdlICciICsgZXZlbnQuZGF0YSArICInIGZyb20gb3JpZ2luICci
ICsgZXZlbnQub3JpZ2luICsgIiciKTsKIH0pOwogCi1zZWxmLmFkZEV2ZW50TGlzdGVuZXIoImZl
dGNoIiwgKGV2ZW50KSA9PiB7Ci0gICAgaWYgKGV2ZW50LnJlcXVlc3QudXJsLmluZGV4T2YoInRl
c3QxIikgIT09IC0xKSB7Ci0gICAgICAgIGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShu
dWxsLCByZXNwb25zZVRvU2VuZCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGV2ZW50
LnJlc3BvbmRXaXRoKFJlc3BvbnNlLmVycm9yKCkpOwotfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvYmFzaWMtU2VydmljZVdv
cmtlci1wb3N0TWVzc2FnZS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLmpzCmluZGV4IDk2
YTQxY2EwODY4OGI0ODNhZTgyNGIyMzY1NTMxNzA3Y2QwOGU3Y2MuLjFmMGE2MzA0NGJlNTBhZTE1
YjdiN2UyZTQ0N2NkMzIyYTdkZGQ3ZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNz
YWdlLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLmpzCkBAIC0xLDM3ICsxLDE0IEBA
Ci1mdW5jdGlvbiBkb25lKCkKLXsKLSAgICBmaW5pc2hTV1Rlc3QoKTsKLX0KLQotYXN5bmMgZnVu
Y3Rpb24gdGVzdCgpCi17Ci0gICAgdHJ5IHsKLSAgICAgICAgYXdhaXQgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNz
YWdlLXdvcmtlci5qcyIsIHsgfSk7Ci0KLSAgICAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
Y29udHJvbGxlci5wb3N0TWVzc2FnZSh7IHN0YXR1czogMjAwLCBzdGF0dXNUZXh0OiAiV29ya2Vy
IHJlY2VpdmVkIHRoZSBtZXNzYWdlIGV2ZW50LiIgfSk7Ci0KLSAgICAgICAgbGV0IHJlc3BvbnNl
ID0gYXdhaXQgZmV0Y2goInRlc3QxIik7Ci0gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0g
MjAwKQotICAgICAgICAgICAgbG9nKCJQQVNTOiBTdGF0dXMgY29kZSBpcyAiICsgcmVzcG9uc2Uu
c3RhdHVzKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9nKCJGQUlMOiBTdGF0dXMgY29k
ZSBpcyAiICsgcmVzcG9uc2Uuc3RhdHVzKTsKLQotICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVz
VGV4dC5zdGFydHNXaXRoKCJXb3JrZXIgcmVjZWl2ZWQgdGhlIG1lc3NhZ2UiKSkKLSAgICAgICAg
ICAgIGxvZygiUEFTUzogU3RhdHVzIHRleHQgaXMgIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2coIkZBSUw6IFN0YXR1cyB0ZXh0IGlzICIgKyBy
ZXNwb25zZS5zdGF0dXNUZXh0KTsKLQotICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewot
ICAgICAgICAgICAgbGV0IHNvdXJjZSA9IGludGVybmFscy5mZXRjaFJlc3BvbnNlU291cmNlKHJl
c3BvbnNlKTsKLSAgICAgICAgICAgIGlmIChzb3VyY2UgPT09ICJTZXJ2aWNlIHdvcmtlciIpCi0g
ICAgICAgICAgICAgICAgbG9nKCJQQVNTOiBTb3VyY2UgaXMgIiArIHNvdXJjZSk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBTb3VyY2UgaXMgIiArIHNvdXJj
ZSk7Ci0gICAgICAgIH0KLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgbG9nKCJHb3QgZXhjZXB0
aW9uOiAiICsgZSk7Ci0gICAgfQotICAgIGZpbmlzaFNXVGVzdCgpOwotfQotCi10ZXN0KCk7Cit2
YXIgbWVzc2FnZU51bWJlciA9IDE7CituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExp
c3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBsb2coIlBBU1M6IENsaWVu
dCByZWNlaXZlZCBtZXNzYWdlIGZyb20gc2VydmljZSB3b3JrZXIsIG9yaWdpbjogIiArIGV2ZW50
Lm9yaWdpbik7CisgICAgbG9nKCJQQVNTOiAiICsgZXZlbnQuZGF0YSk7CisgICAgaWYgKG1lc3Nh
Z2VOdW1iZXIgPT0gMSkgeworICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIk1lc3Nh
Z2UgMiIpOworICAgICAgICBtZXNzYWdlTnVtYmVyKys7CisgICAgfSBlbHNlCisgICAgICAgIGZp
bmlzaFNXVGVzdCgpOworfSk7CisKK25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJy
ZXNvdXJjZXMvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS13b3JrZXIuanMiLCB7IH0p
LnRoZW4oZnVuY3Rpb24oKSB7CisgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuY29udHJvbGxl
ci5wb3N0TWVzc2FnZSgiTWVzc2FnZSAxIik7Cit9KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>