<?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>180477</bug_id>
          
          <creation_ts>2017-12-06 08:58:57 -0800</creation_ts>
          <short_desc>We should be able to recover after a Service Worker process crash</short_desc>
          <delta_ts>2017-12-11 10:12:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit 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=180659</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>180496</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1378621</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-06 08:58:57 -0800</bug_when>
    <thetext>We should be able to recover after a Service Worker process crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378936</commentid>
    <comment_count>1</comment_count>
      <attachid>328654</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-06 17:01:48 -0800</bug_when>
    <thetext>Created attachment 328654
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378938</commentid>
    <comment_count>2</comment_count>
      <attachid>328656</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-06 17:04:02 -0800</bug_when>
    <thetext>Created attachment 328656
WIP Patch

Will clean up tonight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378940</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-06 17:04:12 -0800</bug_when>
    <thetext>*** Bug 180496 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378999</commentid>
    <comment_count>4</comment_count>
      <attachid>328675</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-06 20:04:54 -0800</bug_when>
    <thetext>Created attachment 328675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379014</commentid>
    <comment_count>5</comment_count>
      <attachid>328675</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-12-06 21:27:31 -0800</bug_when>
    <thetext>Comment on attachment 328675
Patch

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

&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h:98
&gt; +    template&lt;typename U&gt; static void sendToContextProcess(U&amp;&amp; message);

Why static?

In a future world of multiple context processes, how can this possibly be static?

If it&apos;s a convenience because of the lambda captures... can we capture the connection, or a way of looking the connection up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379019</commentid>
    <comment_count>6</comment_count>
      <attachid>328675</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-06 21:43:21 -0800</bug_when>
    <thetext>Comment on attachment 328675
Patch

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

&gt;&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h:98
&gt;&gt; +    template&lt;typename U&gt; static void sendToContextProcess(U&amp;&amp; message);
&gt; 
&gt; Why static?
&gt; 
&gt; In a future world of multiple context processes, how can this possibly be static?
&gt; 
&gt; If it&apos;s a convenience because of the lambda captures... can we capture the connection, or a way of looking the connection up?

Yes, it is because of the lambda captures. It would be unsafe to capture |this| was I have no way to make sure the connection is still alive when the lambda is called. I&apos;ll try and find another way without making this static.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379020</commentid>
    <comment_count>7</comment_count>
      <attachid>328675</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-06 21:48:24 -0800</bug_when>
    <thetext>Comment on attachment 328675
Patch

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

&gt;&gt;&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h:98
&gt;&gt;&gt; +    template&lt;typename U&gt; static void sendToContextProcess(U&amp;&amp; message);
&gt;&gt; 
&gt;&gt; Why static?
&gt;&gt; 
&gt;&gt; In a future world of multiple context processes, how can this possibly be static?
&gt;&gt; 
&gt;&gt; If it&apos;s a convenience because of the lambda captures... can we capture the connection, or a way of looking the connection up?
&gt; 
&gt; Yes, it is because of the lambda captures. It would be unsafe to capture |this| was I have no way to make sure the connection is still alive when the lambda is called. I&apos;ll try and find another way without making this static.

WebSWServerConnection is not refcounted so I cannot protect it when I capture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379021</commentid>
    <comment_count>8</comment_count>
      <attachid>328675</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-06 21:51:58 -0800</bug_when>
    <thetext>Comment on attachment 328675
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        Once the connection is the context is established, process &quot;run service worker&quot;

s/is/in

&gt; Source/WebCore/ChangeLog:17
&gt; +        if processed. We used to assert that we had a connection to the context process.

s/if/is

&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.cpp:123
&gt; +        server().runServiceWorkerIfNecessary(*serviceWorkerIdentifier, [connectionIdentifier = identifier(), fetchIdentifier, serviceWorkerIdentifier, request, options, formData](bool success) {

We should probably have WebSWServerConnection::startFetch take rvalue references for request, options and formData to take benefit of these here.
Space between ] ( although I am not a fan either.

Ditto in below WebSWServerConnection::XX methods.

&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.cpp:125
&gt; +                sendToContextProcess(Messages::WebSWContextManagerConnection::StartFetch { connectionIdentifier, fetchIdentifier, serviceWorkerIdentifier, request, options, formData });

In case success is false, we need to return a DidNotHandle message on the web content process.

&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h:55
&gt; +    IPC::Connection&amp; ipcConnection() const { return m_contentConnection.get(); }

Not sure ipcConnection is a great name since there is also a service worker process connection.
Should it be something like contentConnection() or webContentConnection() instead?

&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h:101
&gt;      Ref&lt;IPC::Connection&gt; m_contentConnection;

Hum, m_contextConnection is never used so we could remove it, or start using it.
Probably better to just remove it for now. We are probably not ready to split service workers into separate processes based on origins.

&gt; Source/WebKit/StorageProcess/StorageProcess.cpp:112
&gt; +    // Relaunch the context process if necessary.

Is this comment needed?

&gt; Source/WebKit/StorageProcess/StorageProcess.cpp:124
&gt; +    if (m_swServerConnections.size() == 1 &amp;&amp; m_serverToContextConnection &amp;&amp; &amp;m_swServerConnections.begin()-&gt;value-&gt;ipcConnection() == m_serverToContextConnection-&gt;ipcConnection())

Instead, should we have WebSWServerConnection has a bool isServiceWorkerProcessConnection()?

&gt; LayoutTests/http/tests/workers/service/resources/postmessage-after-sw-process-crash.js:19
&gt; +        }, 0);

Are we sure 0 is sufficient to ensure it will crash before the messages?
Should we not try to make the test a little bit more robust with something like:
- a first message to the SW to set a value inside the worker, the SW having a default value.
- a second message to get from the SW the stored value, which should be the default value if the worker process was crashed and the service worker rerun.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379022</commentid>
    <comment_count>9</comment_count>
      <attachid>328675</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-06 21:58:56 -0800</bug_when>
    <thetext>Comment on attachment 328675
Patch

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

&gt;&gt; LayoutTests/http/tests/workers/service/resources/postmessage-after-sw-process-crash.js:19
&gt;&gt; +        }, 0);
&gt; 
&gt; Are we sure 0 is sufficient to ensure it will crash before the messages?
&gt; Should we not try to make the test a little bit more robust with something like:
&gt; - a first message to the SW to set a value inside the worker, the SW having a default value.
&gt; - a second message to get from the SW the stored value, which should be the default value if the worker process was crashed and the service worker rerun.

I am sure. See https://bugs.webkit.org/show_bug.cgi?id=180496 where the test was failing before I implemented recovery.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379023</commentid>
    <comment_count>10</comment_count>
      <attachid>328675</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-06 22:06:04 -0800</bug_when>
    <thetext>Comment on attachment 328675
Patch

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

&gt;&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h:55
&gt;&gt; +    IPC::Connection&amp; ipcConnection() const { return m_contentConnection.get(); }
&gt; 
&gt; Not sure ipcConnection is a great name since there is also a service worker process connection.
&gt; Should it be something like contentConnection() or webContentConnection() instead?

Just trying to be consistent with Brady here who used WebSWServerToContextConnection::ipcConnection().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379028</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-12-06 22:19:30 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; Comment on attachment 328675 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=328675&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h:55
&gt; &gt;&gt; +    IPC::Connection&amp; ipcConnection() const { return m_contentConnection.get(); }
&gt; &gt; 
&gt; &gt; Not sure ipcConnection is a great name since there is also a service worker process connection.
&gt; &gt; Should it be something like contentConnection() or webContentConnection() instead?
&gt; 
&gt; Just trying to be consistent with Brady here who used
&gt; WebSWServerToContextConnection::ipcConnection().

Meh - Use something more sensical if such a thing exists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379031</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-06 22:23:22 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #11)
&gt; (In reply to Chris Dumez from comment #10)
&gt; &gt; Comment on attachment 328675 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=328675&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebKit/StorageProcess/ServiceWorker/WebSWServerConnection.h:55
&gt; &gt; &gt;&gt; +    IPC::Connection&amp; ipcConnection() const { return m_contentConnection.get(); }
&gt; &gt; &gt; 
&gt; &gt; &gt; Not sure ipcConnection is a great name since there is also a service worker process connection.
&gt; &gt; &gt; Should it be something like contentConnection() or webContentConnection() instead?
&gt; &gt; 
&gt; &gt; Just trying to be consistent with Brady here who used
&gt; &gt; WebSWServerToContextConnection::ipcConnection().
&gt; 
&gt; Meh - Use something more sensical if such a thing exists.

We have so many &quot;connections&quot;, I am personally fine with ipcConnection() as it makes it clear it is the underlying IPC::Connection. contentConnection() or webContentConnection() are super vague and I would have no idea what they return from their name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379032</commentid>
    <comment_count>13</comment_count>
      <attachid>328679</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-06 22:24:53 -0800</bug_when>
    <thetext>Created attachment 328679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379035</commentid>
    <comment_count>14</comment_count>
      <attachid>328679</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-06 22:27:45 -0800</bug_when>
    <thetext>Comment on attachment 328679
Patch

Rejecting attachment 328679 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 328679, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/5525882</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379037</commentid>
    <comment_count>15</comment_count>
      <attachid>328680</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-06 22:31:45 -0800</bug_when>
    <thetext>Created attachment 328680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379043</commentid>
    <comment_count>16</comment_count>
      <attachid>328680</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-06 22:53:35 -0800</bug_when>
    <thetext>Comment on attachment 328680
Patch

Rejecting attachment 328680 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
unsigned long long, std::optional&lt;WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerIdentifierType&gt; &gt;, WebCore::ResourceRequest&amp;&amp;, WebCore::FetchOptions&amp;&amp;, IPC::FormDataReference&amp;&amp;) in WebSWServerConnection.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

** BUILD FAILED **


The following build commands failed:
	Ld /Volumes/Data/EWS/WebKit/WebKitBuild/Release/WebKit.framework/Versions/A/WebKit normal x86_64
(1 failure)

Full output: http://webkit-queues.webkit.org/results/5526070</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379045</commentid>
    <comment_count>17</comment_count>
      <attachid>328681</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-06 22:59:08 -0800</bug_when>
    <thetext>Created attachment 328681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379049</commentid>
    <comment_count>18</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-06 23:08:03 -0800</bug_when>
    <thetext>But do we really need this ipcConnection() if it is only used to know which server connection we are talking to, in which case a bool getter would be better?
Also ipcConnection may return a const ref if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379050</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-06 23:10:16 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #18)
&gt; But do we really need this ipcConnection() if it is only used to know which
&gt; server connection we are talking to, in which case a bool getter would be
&gt; better?
&gt; Also ipcConnection may return a const ref if possible.

We do not have this information at the moment so adding the bool getter was not trivial. I can look into this in a follow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379054</commentid>
    <comment_count>20</comment_count>
      <attachid>328681</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-06 23:37:53 -0800</bug_when>
    <thetext>Comment on attachment 328681
Patch

Clearing flags on attachment: 328681

Committed r225622: &lt;https://trac.webkit.org/changeset/225622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379055</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-06 23:37:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379056</commentid>
    <comment_count>22</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-06 23:38:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/35902914&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328654</attachid>
            <date>2017-12-06 17:01:48 -0800</date>
            <delta_ts>2017-12-06 17:04:02 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>180477_sw_process_termination_wip.patch</filename>
            <type>text/plain</type>
            <size>33531</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MjIzZDAzZGQ5MC4uMTNhZjVhY2UyNTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAxNy0xMi0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCB0ZXN0UnVubmVyIEFQSSB0byB0ZXJtaW5hdGUgdGhlIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDQ5Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlv
dXQgdGVzdCB1c2luZyB0aGUgbmV3IHRlc3RSdW5uZXIgQVBJIHRvIHRlcm1pbmF0ZSB0aGUgc2Vy
dmljZSB3b3JrZXIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIHRlc3QgaXMgY3VycmVudGx5IGZhaWxp
bmcgYmVjYXVzZSB3ZSBkbyBub3QgcmVjb3ZlciBuaWNlbHkgYWZ0ZXIgdGhlIHNlcnZpY2UKKyAg
ICAgICAgd29ya2VyIGlzIHRlcm1pbmF0ZWQgeWV0LgorCisgICAgICAgICogaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5odHRwcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdl
LWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guanM6IEFkZGVkLgorCiAyMDE3LTEyLTA1ICBGdWppaSBI
aXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtHVEtdIExheW91
dCB0ZXN0IG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtZHVwbGljYXRlLXRyYWNrcy13aGVuLXNv
dXJjZS1jaGFuZ2VzLmh0bWwgY3Jhc2hlcyBhbmQgdGltZXMgb3V0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9wb3N0bWVzc2FnZS1hZnRlci1zdy1w
cm9jZXNzLWNyYXNoLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lM2Ez
NGE4NDQ0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorKiBTZW5kaW5nICdNZXNzYWdlIDEnIHRvIFNlcnZpY2Ug
V29ya2VyCitQQVNTOiBDbGllbnQgcmVjZWl2ZWQgbWVzc2FnZSBmcm9tIHNlcnZpY2Ugd29ya2Vy
LCBvcmlnaW46IGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMKK1BBU1M6IFNlcnZpY2Ugd29ya2VyIHJl
Y2VpdmVkIG1lc3NhZ2UgJ01lc3NhZ2UgMScgZnJvbSBvcmlnaW4gJ2h0dHBzOi8vMTI3LjAuMC4x
Ojg0NDMnCisqIFNpbXVsYXRpbmcgU2VydmljZSBXb3JrZXIgcHJvY2VzcyBjcmFzaAorKiBTZW5k
aW5nICdNZXNzYWdlIDInIHRvIFNlcnZpY2UgV29ya2VyCitGQUlMOiBEaWQgbm90IHJlY2VpdmUg
bWVzc2FnZSBmcm9tIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgYWZ0ZXIgdGhlIGNyYXNoCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Bvc3RtZXNz
YWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2gu
aHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmU2MDcz
ZGMwMWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmh0dHBzLmh0bWwKQEAg
LTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zdy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJl
c291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNo
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bv
c3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLmJiYjUxZTI3NWVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFm
dGVyLXN3LXByb2Nlc3MtY3Jhc2guanMKQEAgLTAsMCArMSwzMSBAQAordmFyIG1lc3NhZ2VOdW1i
ZXIgPSAxOworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2Fn
ZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgbG9nKCJQQVNTOiBDbGllbnQgcmVjZWl2ZWQgbWVz
c2FnZSBmcm9tIHNlcnZpY2Ugd29ya2VyLCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOworICAg
IGxvZyhldmVudC5kYXRhKTsKKyAgICBpZiAobWVzc2FnZU51bWJlciA9PSAxKSB7CisgICAgICAg
IGxvZygiKiBTaW11bGF0aW5nIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgY3Jhc2giKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci50ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpOworICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbG9nKCIqIFNlbmRpbmcgJ01lc3Nh
Z2UgMicgdG8gU2VydmljZSBXb3JrZXIiKTsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0
TWVzc2FnZSgiTWVzc2FnZSAyIik7CisgICAgICAgICAgICBtZXNzYWdlTnVtYmVyKys7CisgICAg
ICAgICAgICBsb2coIiogU2VuZGluZyAnTWVzc2FnZSAzJyB0byBTZXJ2aWNlIFdvcmtlciIpOwor
ICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJNZXNzYWdlIDMiKTsKKyAgICAg
ICAgICAgIG1lc3NhZ2VOdW1iZXIrKzsKKyAgICAgICAgICAgIGhhbmRsZSA9IHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IHJlY2VpdmUg
bWVzc2FnZSBmcm9tIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgYWZ0ZXIgdGhlIGNyYXNoIik7Cisg
ICAgICAgICAgICAgICAgZmluaXNoU1dUZXN0KCk7CisgICAgICAgICAgICB9LCAxMDAwKTsKKyAg
ICAgICAgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1lc3NhZ2VOdW1i
ZXIgPT0gMykgeworICAgICAgICBjbGVhclRpbWVvdXQoaGFuZGxlKTsKKyAgICAgICAgZmluaXNo
U1dUZXN0KCk7CisgICAgfQorfSk7CisKK25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVy
KCJyZXNvdXJjZXMvcG9zdG1lc3NhZ2UtZWNoby13b3JrZXIuanMiLCB7IH0pLnRoZW4oZnVuY3Rp
b24ocmVnaXN0cmF0aW9uKSB7CisgICAgbG9nKCIqIFNlbmRpbmcgJ01lc3NhZ2UgMScgdG8gU2Vy
dmljZSBXb3JrZXIiKTsKKyAgICByZWdpc3RyYXRpb24uaW5zdGFsbGluZy5wb3N0TWVzc2FnZSgi
TWVzc2FnZSAxIik7Cit9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMWJjZjk3OWUwMmUuLjc1OTIyNjBjMzc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cApAQCAtNDE4LDExICs0MTgsMjIgQEAgdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKENvbm5l
Y3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGoKIAogdm9pZCBT
V1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKQogewotICAgIEFTU0VS
VChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKSk7Ci0gICAgZm9yIChhdXRvJiBkYXRhIDogbV9wZW5kaW5nQ29udGV4dERhdGFzKQor
ICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2Jh
bFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKyAgICBBU1NFUlQoY29ubmVjdGlvbik7CisK
KyAgICBhdXRvIHBlbmRpbmdDb250ZXh0RGF0YXMgPSBXVEZNb3ZlKG1fcGVuZGluZ0NvbnRleHRE
YXRhcyk7CisgICAgZm9yIChhdXRvJiBkYXRhIDogcGVuZGluZ0NvbnRleHREYXRhcykKICAgICAg
ICAgaW5zdGFsbENvbnRleHREYXRhKGRhdGEpOwotICAgIAotICAgIG1fcGVuZGluZ0NvbnRleHRE
YXRhcy5jbGVhcigpOworCisgICAgYXV0byBzZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMgPSBXVEZN
b3ZlKG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBz
ZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMpIHsKKyAgICAgICAgYXV0byogd29ya2VyID0gd29ya2Vy
QnlJRChpdGVtLmtleSk7CisgICAgICAgIEFTU0VSVCh3b3JrZXIpOworICAgICAgICBydW5TZXJ2
aWNlV29ya2VyKCp3b3JrZXIpOworCisgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpdGVt
LnZhbHVlKQorICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CisgICAgfQogfQogCiB2b2lkIFNX
U2VydmVyOjppbnN0YWxsQ29udGV4dERhdGEoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiBkYXRhKQpAQCAtNDQxLDExICs0NTIsMTMgQEAgdm9pZCBTV1NlcnZlcjo6aW5zdGFsbENvbnRl
eHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKICAgICBjb25uZWN0
aW9uLT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoZGF0YSk7CiB9CiAKLWJvb2wgU1dTZXJ2
ZXI6Omludm9rZVJ1blNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3ZvaWQgU1dTZXJ2ZXI6Omludm9rZVJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGF1dG8qIHdvcmtlciA9IG1fcnVubmluZ09yVGVy
bWluYXRpbmdXb3JrZXJzLmdldChpZGVudGlmaWVyKSkgewotICAgICAgICBpZiAod29ya2VyLT5p
c1J1bm5pbmcoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAod29ya2Vy
LT5pc1J1bm5pbmcoKSkgeworICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBOb2JvZHkgc2hvdWxkIGhhdmUg
YSBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBmb3IgYSBTV1NlcnZlcldvcmtlciB0aGF0IGRvZXNu
J3QgZXhpc3QuCkBAIC00NTQsMTcgKzQ2NywzMyBAQCBib29sIFNXU2VydmVyOjppbnZva2VSdW5T
ZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAKICAgICAv
LyBJZiB0aGUgcmVnaXN0cmF0aW9uIGZvciBhIHdvcmtpbmcgaGFzIGJlZW4gcmVtb3ZlZCB0aGVu
IHRoZSByZXF1ZXN0IHRvIHJ1bgogICAgIC8vIHRoZSB3b3JrZXIgaXMgbW9vdC4KLSAgICBpZiAo
IWdldFJlZ2lzdHJhdGlvbih3b3JrZXItPnJlZ2lzdHJhdGlvbktleSgpKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghZ2V0UmVnaXN0cmF0aW9uKHdvcmtlci0+cmVnaXN0cmF0aW9u
S2V5KCkpKSB7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIAotICAgIG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmFkZChpZGVudGlmaWVyLCAq
d29ya2VyKTsKLSAgICB3b3JrZXItPnNldFN0YXRlKFNXU2VydmVyV29ya2VyOjpTdGF0ZTo6UnVu
bmluZyk7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworICAgIGlmICghY29ubmVjdGlv
bikgeworICAgICAgICBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cy5lbnN1cmUoaWRlbnRpZmll
ciwgWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBWZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lkKGJv
b2wpPj4geyB9OworICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKFdURk1vdmUoY2Fs
bGJhY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJ1blNlcnZpY2VXb3JrZXIo
Kndvcmtlcik7CisgICAgY2FsbGJhY2sodHJ1ZSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXI6OnJ1blNl
cnZpY2VXb3JrZXIoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKK3sKKyAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmFkZCh3b3JrZXIuaWRlbnRpZmllcigp
LCB3b3JrZXIpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdF
bnRyeSk7CisKKyAgICB3b3JrZXIuc2V0U3RhdGUoU1dTZXJ2ZXJXb3JrZXI6OlN0YXRlOjpSdW5u
aW5nKTsKIAogICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKICAgICBBU1NFUlQoY29ubmVj
dGlvbik7Ci0gICAgY29ubmVjdGlvbi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KHdvcmtl
ci0+Y29udGV4dERhdGEoKSk7Ci0gICAgCi0gICAgcmV0dXJuIHRydWU7CisgICAgY29ubmVjdGlv
bi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KHdvcmtlci5jb250ZXh0RGF0YSgpKTsKIH0K
IAogdm9pZCBTV1NlcnZlcjo6dGVybWluYXRlV29ya2VyKFNXU2VydmVyV29ya2VyJiB3b3JrZXIp
CkBAIC01MDAsMTAgKzUyOSwxNCBAQCB2b2lkIFNXU2VydmVyOjp0ZXJtaW5hdGVXb3JrZXJJbnRl
cm5hbChTV1NlcnZlcldvcmtlciYgd29ya2VyLCBUZXJtaW5hdGlvbk1vZGUgbQogICAgIH07CiB9
CiAKLXZvaWQgU1dTZXJ2ZXI6OndvcmtlckNvbnRleHRUZXJtaW5hdGVkKFNXU2VydmVyV29ya2Vy
JiB3b3JrZXIpCit2b2lkIFNXU2VydmVyOjptYXJrQWxsV29ya2Vyc0FzVGVybWluYXRlZCgpCiB7
Ci0gICAgQVNTRVJUKHdvcmtlci5pc1Rlcm1pbmF0aW5nKCkpOworICAgIHdoaWxlICghbV9ydW5u
aW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMuaXNFbXB0eSgpKQorICAgICAgICB3b3JrZXJDb250ZXh0
VGVybWluYXRlZChtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5iZWdpbigpLT52YWx1ZSk7
Cit9CiAKK3ZvaWQgU1dTZXJ2ZXI6OndvcmtlckNvbnRleHRUZXJtaW5hdGVkKFNXU2VydmVyV29y
a2VyJiB3b3JrZXIpCit7CiAgICAgd29ya2VyLnNldFN0YXRlKFNXU2VydmVyV29ya2VyOjpTdGF0
ZTo6Tm90UnVubmluZyk7CiAKICAgICAvLyBBdCB0aGlzIHBvaW50IGlmIG5vIHJlZ2lzdHJhdGlv
bnMgYXJlIHJlZmVyZW5jaW5nIHRoZSB3b3JrZXIgdGhlbiBpdCB3aWxsIGJlIGRlc3Ryb3llZCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApp
bmRleCAzMTk5YTYwNDU5MC4uZWY3ODE2ZmY0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJEb2N1bWVudElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgiCisjaW5jbHVkZSAiU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGEuaCIKQEAgLTEzOSw2ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBm
aXJlSW5zdGFsbEV2ZW50KFNXU2VydmVyV29ya2VyJik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVF
dmVudChTV1NlcnZlcldvcmtlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyV29ya2Vy
KiB3b3JrZXJCeUlEKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgbWFya0FsbFdvcmtlcnNBc1Rlcm1pbmF0ZWQoKTsKICAgICAKICAgICBD
b25uZWN0aW9uKiBnZXRDb25uZWN0aW9uKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllcikgeyByZXR1cm4gbV9jb25uZWN0aW9ucy5nZXQoaWRlbnRpZmllcik7IH0KICAgICBT
V09yaWdpblN0b3JlJiBvcmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0KQEAg
LTE1OSw3ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2luJiYsIFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiYgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudChjb25zdCBDbGllbnRPcmlnaW4mLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcik7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGludm9rZVJ1blNlcnZpY2VXb3JrZXIoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52b2tlUnVuU2Vy
dmljZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOwogCiAgICAgdm9pZCBzZXRDbGllbnRBY3RpdmVX
b3JrZXIoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKICAgICB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzKFNXU2VydmVy
UmVnaXN0cmF0aW9uJik7CkBAIC0xNzksNiArMTgyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
bW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYsIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2Vy
dmVyUmVnaXN0cmF0aW9uKiBkb1JlZ2lzdHJhdGlvbk1hdGNoaW5nKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCk7CisgICAgdm9pZCBydW5T
ZXJ2aWNlV29ya2VyKFNXU2VydmVyV29ya2VyJik7CiAKICAgICB2b2lkIGluc3RhbGxDb250ZXh0
RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmKTsKIApAQCAtMjE0LDYgKzIxOCw4
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX21haW5UaHJlYWRSZXBseVNjaGVkdWxlZCB7IGZhbHNl
IH07CiAgICAgVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+IG1fb3JpZ2luU3RvcmU7CiAgICAgRGVx
dWU8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBtX3BlbmRpbmdDb250ZXh0RGF0YXM7CisKKyAg
ICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBWZWN0b3I8V1RGOjpGdW5jdGlvbjx2
b2lkKGJvb2wpPj4+IG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiYzlhMjJhYWM5ZC4uMmI0MDE5ZmYwOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTctMTItMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgdGVzdFJ1bm5lciBBUEkgdG8gdGVybWluYXRlIHRoZSBT
ZXJ2aWNlIFdvcmtlciBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODA0OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6aXBj
Q29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIEFkZCBnZXR0ZXIgZm9yIHRoZSB1bmRlcmx5aW5n
IElQQyBjb25uZWN0aW9uLgorCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6ZGlkQ2xvc2UpOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NX
YXNDbG9zZWQpOgorICAgICAgICBNb3ZlIHNvbWUgY29kZSB0byBjb25uZWN0aW9uVG9Db250ZXh0
UHJvY2Vzc1dhc0Nsb3NlZCgpIHRvIGF2b2lkIGR1cGxpY2F0aW9uLgorICAgICAgICBBbHNvLCBy
ZWxhdW5jaCB0aGUgU2VydmljZSBXb3JrZXIgcHJvY2VzcyBpZiBpdCBoYXMgZXhpdGVkIGJ1dCB3
ZSBzdGlsbAorICAgICAgICBoYXZlIFNXU2VydmVyIGNvbm5lY3Rpb25zIHRvIHJlZ3VsYXIgV2Vi
IFByb2Nlc3Nlcy4KKworICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgVXRpbGl0eSBmdW5jdGlvbiB0
byBkZXRlcm1pbmUgaWYgd2Ugc3RpbGwgbmVlZCB0aGUgc2VydmljZSB3b3JrZXIgcHJvY2Vzcy4K
KyAgICAgICAgVGhlIGN1cnJlbnQgcnVsZSBpcyB0aGF0IHdlIG5lZWQgdGhlIHNlcnZpY2Ugd29y
a2VyIChha2EgImNvbnRleHQiKSBwcm9jZXNzCisgICAgICAgIGlmIHdlIHN0aWxsIGhhdmUgU1dT
ZXJ2ZXIgY29ubmVjdGlvbnMgdG8gcmVndWxhciBXZWIgUHJvY2Vzc2VzLgorCisgICAgICAgICog
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaDoKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZSk6CisgICAgICAgIElmIGRpZENs
b3NlKCkgaXMgY2FsbGVkIGZvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmljZSB3b3JrZXIg
Y29udGV4dCwKKyAgICAgICAgbGV0IHRoZSBTdG9yYWdlUHJvY2VzcyBrbm93IHNvIHRoYXQgaXQg
Y2FuIGNsZWFyIGl0cyBzdGF0ZSBhbmQgcmVsYXVuY2gKKyAgICAgICAgdGhlIHByb2Nlc3MgaWYg
bmVjZXNzYXJ5LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXS0NvbnRleHRUZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wg
X3Rlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICBBZGQgU1BJIHRvIHRlcm1p
bmF0ZSB0aGUgc2VydmljZSB3b3JrZXIgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICBN
YWtlIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk+KCkgd29yay4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2Vy
dmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvblRpbWVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAgICBXZSB1c2VkIHRvIHNodXRkb3duIHRoZSBT
ZXJ2aWNlV29ya2VyIHByb2Nlc3MgcmlnaHQgYXdheSBhcyBzb29uIGFzIHRoZSBsYXN0IHJlZ3Vs
YXIKKyAgICAgICAgV2ViUHJvY2VzcyB3YXMgZ29uZS4gV2Ugbm93IGdpdmUgaXQgYSBncmFjZSBw
ZXJpb2Qgb2YgNSBzZWNvbmRzIGluIGNhc2UgYSBuZXcKKyAgICAgICAgV2ViUHJvY2VzcyBnZXRz
IGxhdW5jaGVkIHNob3J0bHkgYWZ0ZXIuCisKIDIwMTctMTItMDYgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDb29yZEdyYXBoaWNzXSBJbnRyb2R1Y2Ug
Tmljb3NpYTo6UGFpbnRpbmdDb250ZXh0LCBhZGQgQ2Fpcm8gaW1wbGVtZW50YXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNDM0MGI3Yjc1NGEuLmM2OTlh
NGZmYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTE5
LDggKzExOSwxMyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3Rh
dGVJbkNsaWVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciB3bwogdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMs
IGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmIGZvcm1EYXRhKQogewogICAgIC8vIEl0J3Mg
cG9zc2libGUgdGhpcyBzcGVjaWZpYyB3b3JrZXIgY2Fubm90IGJlIHJlLXJ1biAoZS5nLiBpdHMg
cmVnaXN0cmF0aW9uIGhhcyBiZWVuIHJlbW92ZWQpCi0gICAgaWYgKHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyICYmICFzZXJ2ZXIoKS5pbnZva2VSdW5TZXJ2aWNlV29ya2VyKCpzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikpCisgICAgaWYgKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSB7CisgICAgICAg
IHNlcnZlcigpLmludm9rZVJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeSgqc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFt0aGlzLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCByZXF1ZXN0LCBvcHRpb25zLCBmb3JtRGF0YV0oYm9vbCBzdWNjZXNzKSB7CisgICAgICAg
ICAgICBpZiAoc3VjY2VzcykKKyAgICAgICAgICAgICAgICBzZW5kVG9Db250ZXh0UHJvY2VzcyhN
ZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2ggeyBpZGVu
dGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVl
c3QsIG9wdGlvbnMsIGZvcm1EYXRhIH0pOworICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwor
ICAgIH0KIAogICAgIC8vIEZJWE1FOiBJZiB3ZSBkb24ndCBoYXZlIGEgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaGVyZSB0aGVuIHdlIG5lZWQgdG8gY3JlYXRlIGFuZCBydW4gdGhlIGFwcHJvcHJp
YXRlIFNlcnZpY2UgV29ya2VyLAogICAgIC8vIGJ1dCBpdCdzIHVuY2xlYXIgdGhhdCB3ZSBoYXZl
IGVub3VnaCBpbmZvcm1hdGlvbiBoZXJlIHRvIGRvIHRoYXQuCkBAIC0xMzEsMjMgKzEzNiwyNSBA
QCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8Uwogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyRnJvbUNsaWVudChTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2Fn
ZSwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKQogewogICAgIC8vIEl0J3MgcG9zc2libGUg
dGhpcyBzcGVjaWZpYyB3b3JrZXIgY2Fubm90IGJlIHJlLXJ1biAoZS5nLiBpdHMgcmVnaXN0cmF0
aW9uIGhhcyBiZWVuIHJlbW92ZWQpCi0gICAgaWYgKCFzZXJ2ZXIoKS5pbnZva2VSdW5TZXJ2aWNl
V29ya2VyKGRlc3RpbmF0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNl
bmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJGcm9tQ2xpZW50IHsgZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKHNvdXJjZURhdGEpIH0p
OworICAgIHNlcnZlcigpLmludm9rZVJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShkZXN0aW5h
dGlvbklkZW50aWZpZXIsIFt0aGlzLCBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UsIHNv
dXJjZUlkZW50aWZpZXIsIHNvdXJjZURhdGEgPSBXVEZNb3ZlKHNvdXJjZURhdGEpXShib29sIHN1
Y2Nlc3MpIG11dGFibGUgeworICAgICAgICBpZiAoc3VjY2VzcykKKyAgICAgICAgICAgIHNlbmRU
b0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJGcm9tQ2xpZW50IHsgZGVzdGluYXRpb25JZGVudGlm
aWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKHNvdXJjZURhdGEpIH0pOwor
ICAgIH0pOwogfQogCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJGcm9tU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0
aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllcikKIHsKICAgICAvLyBJdCdzIHBv
c3NpYmxlIHRoaXMgc3BlY2lmaWMgd29ya2VyIGNhbm5vdCBiZSByZS1ydW4gKGUuZy4gaXRzIHJl
Z2lzdHJhdGlvbiBoYXMgYmVlbiByZW1vdmVkKQotICAgIGlmICghc2VydmVyKCkuaW52b2tlUnVu
U2VydmljZVdvcmtlcihkZXN0aW5hdGlvbklkZW50aWZpZXIpKQotICAgICAgICByZXR1cm47Cisg
ICAgc2VydmVyKCkuaW52b2tlUnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KGRlc3RpbmF0aW9u
SWRlbnRpZmllciwgW3RoaXMsIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNl
SWRlbnRpZmllcl0oYm9vbCBzdWNjZXNzKSB7CisgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8qIHNvdXJjZVdvcmtlciA9IHNlcnZlcigpLndvcmtl
ckJ5SUQoc291cmNlSWRlbnRpZmllcik7Ci0gICAgaWYgKCFzb3VyY2VXb3JrZXIpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgYXV0byogc291cmNlV29ya2VyID0gc2VydmVyKCkud29ya2VyQnlJ
RChzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFzb3VyY2VXb3JrZXIpCisgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICBzZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyRnJvbVNl
cnZpY2VXb3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZVdvcmtl
ci0+ZGF0YSgpIH0pOworICAgICAgICBzZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyRnJv
bVNlcnZpY2VXb3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZVdv
cmtlci0+ZGF0YSgpIH0pOworICAgIH0pOwogfQogCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlv
bjo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaAppbmRleCBiNjUwODUzYzU1Ni4uN2MyYzc5NDVkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogICAgIFdlYlNX
U2VydmVyQ29ubmVjdGlvbihjb25zdCBXZWJTV1NlcnZlckNvbm5lY3Rpb24mKSA9IGRlbGV0ZTsK
ICAgICB+V2ViU1dTZXJ2ZXJDb25uZWN0aW9uKCkgZmluYWw7CiAKKyAgICBJUEM6OkNvbm5lY3Rp
b24mIGlwY0Nvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLmdl
dCgpOyB9CisKICAgICB2b2lkIGRpc2Nvbm5lY3RlZEZyb21XZWJQcm9jZXNzKCk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAppbmRleCAyZjdhNTAxNTUy
ZC4uNTE0MTVlOGY5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MuY3BwCkBAIC04Niw4ICs4Niw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRp
ZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgaWYgKG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiAmJiBtX3NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24tPmlwY0Nvbm5lY3Rpb24oKSA9PSAmY29ubmVjdGlvbikgewot
ICAgICAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25DbG9zZWQoKTsK
LSAgICAgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAg
Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbHNlCkBAIC05Niw2ICs5NSwzOSBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgc3RvcFJ1bkxvb3AoKTsKIH0K
IAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3ZvaWQgU3RvcmFnZVByb2Nlc3M6OmNvbm5l
Y3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKCkKK3sKKyAgICBpZiAoIW1fc2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBzaG91bGRSZWxh
dW5jaCA9IG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworCisgICAgbV9zZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7CisgICAgbV9zZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byYgc3dTZXJ2ZXIgOiBt
X3N3U2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAgc3dTZXJ2ZXItPm1hcmtBbGxXb3JrZXJzQXNU
ZXJtaW5hdGVkKCk7CisKKyAgICAvLyBSZWxhdW5jaCB0aGUgY29udGV4dCBwcm9jZXNzIGlmIG5l
Y2Vzc2FyeS4KKyAgICBpZiAoc2hvdWxkUmVsYXVuY2gpCisgICAgICAgIGNyZWF0ZVNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24oKTsKK30KKworLy8gVGhlIHJ1bGUgaXMgdGhhdCB3ZSBuZWVkIGEg
Y29udGV4dCBwcm9jZXNzIChhbmQgYSBjb25uZWN0aW9uIHRvIGl0KSBhcyBsb25nIGFzIHdlIGhh
dmUgU1dTZXJ2ZXJDb25uZWN0aW9ucyB0byByZWd1bGFyIFdlYlByb2Nlc3Nlcy4KK2Jvb2wgU3Rv
cmFnZVByb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpIGNvbnN0Cit7Cisg
ICAgaWYgKG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIElmIHRoZSBsYXN0IFNXU2VydmVyQ29ubmVjdGlvbiBpcyB0byB0aGUg
Y29udGV4dCBwcm9jZXNzLCB0aGVuIHdlIG5vIGxvbmdlciBuZWVkIHRoZSBjb250ZXh0IGNvbm5l
Y3Rpb24uCisgICAgaWYgKG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5zaXplKCkgPT0gMSAmJiBtX3Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24gJiYgJm1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5iZWdpbigp
LT52YWx1ZS0+aXBjQ29ubmVjdGlvbigpID09IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+
aXBjQ29ubmVjdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKyNlbmRpZgorCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAg
ICBpZiAobWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRl
Y29kZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5o
CmluZGV4IDE3MWM3YTZlN2IwLi4zNDgyZTc0ZmFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtOTgsNiArOTgsMTAgQEAgcHVibGljOgog
CiAgICAgdm9pZCBkaWRSZWNlaXZlU3RvcmFnZVByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZv
aWQgY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQoKTsKKyNlbmRpZgorCiBwcml2
YXRlOgogICAgIFN0b3JhZ2VQcm9jZXNzKCk7CiAKQEAgLTEzMyw2ICsxMzcsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVy
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
KTsKICAgICBXZWJTV09yaWdpblN0b3JlJiBzd09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNl
c3Npb25JRCk7CisgICAgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKSBjb25z
dDsKICNlbmRpZgogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIFZlY3RvcjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNzU0ODE5MjUxMWQu
LjMyODJhMzQzMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMTIwLDggKzEy
MCwxNyBAQCB2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi12b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6
OkNvbm5lY3Rpb24mKQordm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xv
c2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogeworICAgIFVOVVNFRF9QQVJBTShjb25u
ZWN0aW9uKTsKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAoU3RvcmFnZVBy
b2Nlc3M6OnNpbmdsZXRvbigpLmdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKSAmJiBT
dG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bigpLT5pcGNDb25uZWN0aW9uKCkgPT0gJmNvbm5lY3Rpb24pIHsKKyAgICAgICAgLy8gU2Vydmlj
ZSBXb3JrZXIgcHJvY2VzcyBleGl0ZWQuCisgICAgICAgIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0
b24oKS5jb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3NlZCgpOworICAgIH0KKyNlbmRp
ZgorCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAgICAgYXV0byBpZGJDb25uZWN0aW9u
cyA9IG1fd2ViSURCQ29ubmVjdGlvbnM7CiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogaWRi
Q29ubmVjdGlvbnMudmFsdWVzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcAppbmRleCA1ZjIwZDEyNTUwNy4uYWY4NGJmMjZhMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtNjE0LDYgKzYxNCwxMSBAQCB2
b2lkIFdLQ29udGV4dFRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKFdLQ29udGV4dFJlZiBjb250ZXh0
KQogICAgIHRvSW1wbChjb250ZXh0KS0+dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKIH0KIAor
dm9pZCBXS0NvbnRleHRUZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyhXS0NvbnRleHRSZWYg
Y29udGV4dCkKK3sKKyAgICB0b0ltcGwoY29udGV4dCktPnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzKCk7Cit9CisKIFByb2Nlc3NJRCBXS0NvbnRleHRHZXROZXR3b3JrUHJvY2Vzc0lkZW50
aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7CiAgICAgcmV0dXJuIHRvSW1wbChjb250
ZXh0UmVmKS0+bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKaW5kZXggMmRlMTFkZWVjNTIuLmEw
ZmMxYzIzZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0UHJpdmF0ZS5oCkBAIC04OSw2ICs4OSw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFdh
cm1Jbml0aWFsUHJvY2VzcyhXS0NvbnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBX
S0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0UmVmLCBib29sKTsKIAogV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0VGVybWluYXRlTmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0UmVm
KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
KFdLQ29udGV4dFJlZik7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEFsbG93c0FueVNT
TENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZyhXS0NvbnRleHRSZWYsIGJvb2wpOwogV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNl
V29ya2VyVGVzdGluZyhXS0NvbnRleHRSZWYsIGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCAwY2M5ODgwMzQxZC4u
N2M5NDdiMDQzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCkBAIC00MTIsNiArNDEyLDExIEBAIHN0YXRpYyBOU0RpY3Rpb25h
cnkgKnBvbGljaWVzSGFzaE1hcFRvRGljdGlvbmFyeShjb25zdCBIYXNoTWFwPFN0cmluZywgSGFz
aE1hcDxTCiAgICAgX3Byb2Nlc3NQb29sLT50ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwogfQog
CistICh2b2lkKV90ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcworeworICAgIF9wcm9jZXNz
UG9vbC0+dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKTsKK30KKwogLSAocGlkX3QpX25l
dHdvcmtQcm9jZXNzSWRlbnRpZmllcgogewogICAgIHJldHVybiBfcHJvY2Vzc1Bvb2wtPm5ldHdv
cmtQcm9jZXNzSWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCAwZGMxMjg2OGNiNy4u
YWRkZTdjMWI4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC03NCw2ICs3NCw3IEBACiAvLyBUZXN0
IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgb25seSB3aGlsZSBubyB3ZWIgY29udGVudCBwcm9jZXNz
ZXMgYXJlIHJ1bm5pbmcuCiAtICh2b2lkKV90ZXJtaW5hdGVTdG9yYWdlUHJvY2VzczsKIC0gKHZv
aWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzOworLSAodm9pZClfdGVybWluYXRlU2VydmljZVdv
cmtlclByb2Nlc3M7CiAKIC8vIFRlc3Qgb25seS4KIC0gKHBpZF90KV9uZXR3b3JrUHJvY2Vzc0lk
ZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5o
CmluZGV4IDFhYzQ1NTYyYTczLi43NmM1ZTcyMmNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaApAQCAtNTIsMyArNTIsNyBA
QCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK1NQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfQkVHSU4oV2ViS2l0OjpTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KQorICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJLaXQ6OldlYlByb2Nlc3NQcm94eSYgcHJveHkpIHsg
cmV0dXJuIHByb3h5LmlzU2VydmljZVdvcmtlclByb2Nlc3MoKTsgfQorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CmluZGV4IGFjN2NiYmNmMWRmLi4yMDk5OWNiMzc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTE1LDYgKzExNSw4IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50
ZXIsIHByb2Nlc3NQb29sQ291bnRlciwgKCJXZWJQcm9jZXNzUG9vbCIpKTsKIAorc3RhdGljIGNv
bnN0IFNlY29uZHMgc2VydmljZVdvcmtlclRlcm1pbmF0aW9uRGVsYXkgeyA1X3MgfTsKKwogc3Rh
dGljIHVpbnQ2NF90IGdlbmVyYXRlTGlzdGVuZXJJZGVudGlmaWVyKCkKIHsKICAgICBzdGF0aWMg
dWludDY0X3QgbmV4dElkZW50aWZpZXIgPSAxOwpAQCAtMjQ0LDYgKzI0Niw3IEBAIFdlYlByb2Nl
c3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbikKICAgICAsIG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRGb3JQYWdlQ291
bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0
YXRlKCk7IH0pCiAgICAgLCBtX2hpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50
ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyBtX2hpZGRlblBhZ2VUaHJvdHRsaW5nVGltZXIu
c3RhcnRPbmVTaG90KDBfcyk7IH0pCiAgICAgLCBtX2hpZGRlblBhZ2VUaHJvdHRsaW5nVGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZUhpZGRlblBhZ2VU
aHJvdHRsaW5nQXV0b0luY3JlYXNlTGltaXQpCisgICAgLCBtX3NlcnZpY2VXb3JrZXJQcm9jZXNz
VGVybWluYXRpb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQcm9jZXNzUG9vbDo6
dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MpCiB7CiAgICAgaWYgKG1fY29uZmlndXJhdGlv
bi0+c2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSgpKQogICAgICAgICBtX3dlYnNpdGVEYXRhU3Rv
cmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShsZWdhY3lXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKTsKQEAgLTY5Nyw2ICs3MDAsMTAg
QEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcyhX
ZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGEKICAgICBhdXRvJiBwcm9jZXNzID0gcHJvY2Vzc1By
b3h5LmdldCgpOwogICAgIGluaXRpYWxpemVOZXdXZWJQcm9jZXNzKHByb2Nlc3MsIHdlYnNpdGVE
YXRhU3RvcmUpOwogICAgIG1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKHByb2Nlc3NQcm94eSkp
OworCisgICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvblRpbWVyLmlzQWN0
aXZlKCkpCisgICAgICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvblRpbWVyLnN0
b3AoKTsKKwogICAgIHJldHVybiBwcm9jZXNzOwogfQogCkBAIC05NDMsOCArOTUwLDggQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gYmV0dGVyIHRoYW4gdGhpcy4gRm9yIG5v
dywgd2UganVzdCBkZXN0cm95IHRoZSBTZXJ2aWNlV29ya2VyIHByb2Nlc3MKICAgICAvLyB3aGVu
ZXZlciB0aGVyZSBpcyBubyByZWd1bGFyIFdlYkNvbnRlbnQgcHJvY2VzcyByZW1haW5pbmcuCiAg
ICAgaWYgKG1fcHJvY2Vzc2VzLnNpemUoKSA9PSAxICYmIG1fcHJvY2Vzc2VzWzBdID09IG1fc2Vy
dmljZVdvcmtlclByb2Nlc3MpIHsKLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2VzcyA9IG51
bGxwdHI7Ci0gICAgICAgIG1fcHJvY2Vzc2VzLmNsZWFyKCk7CisgICAgICAgIGlmICghbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAg
IG1fc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChzZXJ2
aWNlV29ya2VyVGVybWluYXRpb25EZWxheSk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0xNDA4LDYg
KzE0MTUsMTggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlTmV0d29ya1Byb2Nlc3Mo
KQogICAgIG1fZGlkTmV0d29ya1Byb2Nlc3NDcmFzaCA9IHRydWU7CiB9CiAKK3ZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkKK3sKKyNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCisgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzLT5yZXF1ZXN0VGVybWluYXRp
b24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudCk7CisgICAgQVNT
RVJUKCFtX3Byb2Nlc3Nlcy5jb250YWlucyhtX3NlcnZpY2VXb3JrZXJQcm9jZXNzKSk7CisgICAg
QVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpzeW5jTmV0d29ya1Byb2Nlc3NDb29raWVzKCkKIHsKICAgICBzZW5kU3luY1Rv
TmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTeW5jQWxsQ29va2ll
cygpLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlN5bmNBbGxDb29raWVzOjpSZXBseSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDVmMTQ1MDE2NTI0
Li5iY2QzMTY1NDU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
CkBAIC0yNjIsNiArMjYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJDYWNoZWRDcmVkZW50
aWFscygpOwogICAgIHZvaWQgdGVybWluYXRlU3RvcmFnZVByb2Nlc3MoKTsKICAgICB2b2lkIHRl
cm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2Vy
UHJvY2VzcygpOwogCiAgICAgdm9pZCBzeW5jTmV0d29ya1Byb2Nlc3NDb29raWVzKCk7CiAKQEAg
LTYzMyw2ICs2MzQsNyBAQCBwcml2YXRlOgogICAgIFBhdGhzIG1fcmVzb2x2ZWRQYXRoczsKIAog
ICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8V2ViUGFnZVByb3h5Kj4+IG1fc2Vz
c2lvblRvUGFnZXNNYXA7CisgICAgUnVuTG9vcDo6VGltZXI8V2ViUHJvY2Vzc1Bvb2w+IG1fc2Vy
dmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvblRpbWVyOwogfTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCAwYzM4YWI4N2IzYi4uNjQ4YmRlMDQ2MzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0xMi0wNiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0ZXN0UnVubmVyIEFQSSB0
byB0ZXJtaW5hdGUgdGhlIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDQ5NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0UnVubmVyIEFQSSB0byB0ZXJt
aW5hdGUgdGhlIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RSdW5uZXI6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKToKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMTctMTItMDUgIFN0
ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnkuY29tPgogCiAgICAgICAgIFN3aXRjaCB3
aW5kb3dzIGJ1aWxkIHRvIFZpc3VhbCBTdHVkaW8gMjAxNwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGwKaW5kZXggMzMyZmUyNjFjNmUuLjY0YjJlMmJiNzE0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKQEAgLTMwNCw2ICszMDQsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9p
ZCBzZXRXZWJSVENMZWdhY3lBUElFbmFibGVkKGJvb2xlYW4gdmFsdWUpOwogCiAgICAgdm9pZCB0
ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOworICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdvcmtl
clByb2Nlc3MoKTsKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKG9iamVj
dCBjYWxsYmFjayk7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggY2I1NjcwYmU5MWQuLjMxMTIyMDlkZjc0IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKQEAgLTExMzcsNiArMTEzNywxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnRlcm1pbmF0
ZU5ldHdvcmtQcm9jZXNzKCkKICAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxs
cHRyKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
cygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lKEFkb3B0V0ss
IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJUZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJv
Y2VzcyIpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyKTsKK30K
Kwogc3RhdGljIHVuc2lnbmVkIG5leHRVSVNjcmlwdENhbGxiYWNrSUQoKQogewogICAgIHN0YXRp
YyB1bnNpZ25lZCBjYWxsYmFja0lEID0gRmlyc3RVSVNjcmlwdENhbGxiYWNrSUQ7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4
IGQzNjkxMGQwMzFlLi5iZDIyMjZhMjQ2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQwMiw2ICs0MDIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlcyhKU1ZhbHVlUmVmKTsKIAogICAgIHZvaWQg
dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKCk7CiAKICAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyhKU1Zh
bHVlUmVmKTsKICAgICB2b2lkIGNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxs
YmFjaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAy
NzAwMDQ1MzM5Yi4uMzRiYWUyNjM0MDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCkBAIC0yMjc0LDYgKzIyNzQsMTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKQogICAgIFdLQ29udGV4dFRlcm1pbmF0ZU5ldHdvcmtQ
cm9jZXNzKHBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6dGVy
bWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKQoreworICAgIFdLQ29udGV4dFRlcm1pbmF0ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzKHBsYXRmb3JtQ29udGV4dCgpKTsKK30KKwogI2lmICFQTEFURk9S
TShDT0NPQSkKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtV2lsbFJ1blRlc3QoY29uc3Qg
VGVzdEludm9jYXRpb24mKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CmluZGV4IGIxYWM0ZjcyNTBhLi5hZDVkYjZiZmU2YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaApAQCAtMTg4LDYgKzE4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dE9wZW5QYW5lbEZpbGVVUkxzKFdLQXJyYXlSZWYgZmlsZVVSTHMpIHsgbV9vcGVuUGFuZWxGaWxl
VVJMcyA9IGZpbGVVUkxzOyB9CiAKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7
CisgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpOwogCiAgICAgdm9pZCBy
ZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAppbmRleCAyY2E3ZTUyM2NjMi4uMzgxYWMwYTY0ZGEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC03NDQsNiArNzQ0LDEyIEBA
IHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlRlcm1pbmF0ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzIikpIHsKKyAgICAgICAgQVNTRVJUKCFtZXNzYWdlQm9keSk7Cisg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vy
UHJvY2VzcygpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJSdW5VSVByb2Nlc3NTY3JpcHQiKSkgewog
ICAgICAgICBXS0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nh
c3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CiAgICAgICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBzY3JpcHRLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIlNjcmlwdCIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328656</attachid>
            <date>2017-12-06 17:04:02 -0800</date>
            <delta_ts>2017-12-06 20:04:52 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>180477_sw_process_termination_wip.patch</filename>
            <type>text/plain</type>
            <size>33668</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MjIzZDAzZGQ5MC4uMTNhZjVhY2UyNTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAxNy0xMi0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCB0ZXN0UnVubmVyIEFQSSB0byB0ZXJtaW5hdGUgdGhlIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDQ5Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlv
dXQgdGVzdCB1c2luZyB0aGUgbmV3IHRlc3RSdW5uZXIgQVBJIHRvIHRlcm1pbmF0ZSB0aGUgc2Vy
dmljZSB3b3JrZXIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIHRlc3QgaXMgY3VycmVudGx5IGZhaWxp
bmcgYmVjYXVzZSB3ZSBkbyBub3QgcmVjb3ZlciBuaWNlbHkgYWZ0ZXIgdGhlIHNlcnZpY2UKKyAg
ICAgICAgd29ya2VyIGlzIHRlcm1pbmF0ZWQgeWV0LgorCisgICAgICAgICogaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5odHRwcy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdl
LWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guanM6IEFkZGVkLgorCiAyMDE3LTEyLTA1ICBGdWppaSBI
aXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtHVEtdIExheW91
dCB0ZXN0IG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtZHVwbGljYXRlLXRyYWNrcy13aGVuLXNv
dXJjZS1jaGFuZ2VzLmh0bWwgY3Jhc2hlcyBhbmQgdGltZXMgb3V0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9wb3N0bWVzc2FnZS1hZnRlci1zdy1w
cm9jZXNzLWNyYXNoLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40NDcz
NTI0NzQ1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorKiBTZW5kaW5nICdNZXNzYWdlIDEnIHRvIFNlcnZpY2Ug
V29ya2VyCitQQVNTOiBDbGllbnQgcmVjZWl2ZWQgbWVzc2FnZSBmcm9tIHNlcnZpY2Ugd29ya2Vy
LCBvcmlnaW46IGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMKK1BBU1M6IFNlcnZpY2Ugd29ya2VyIHJl
Y2VpdmVkIG1lc3NhZ2UgJ01lc3NhZ2UgMScgZnJvbSBvcmlnaW4gJ2h0dHBzOi8vMTI3LjAuMC4x
Ojg0NDMnCisqIFNpbXVsYXRpbmcgU2VydmljZSBXb3JrZXIgcHJvY2VzcyBjcmFzaAorKiBTZW5k
aW5nICdNZXNzYWdlIDInIHRvIFNlcnZpY2UgV29ya2VyCisqIFNlbmRpbmcgJ01lc3NhZ2UgMycg
dG8gU2VydmljZSBXb3JrZXIKK1BBU1M6IENsaWVudCByZWNlaXZlZCBtZXNzYWdlIGZyb20gc2Vy
dmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MworUEFTUzogU2Vydmlj
ZSB3b3JrZXIgcmVjZWl2ZWQgbWVzc2FnZSAnTWVzc2FnZSAyJyBmcm9tIG9yaWdpbiAnaHR0cHM6
Ly8xMjcuMC4wLjE6ODQ0MycKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcG9zdG1lc3NhZ2Ut
YWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi5iZTYwNzNkYzAxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nl
c3MtY3Jhc2guaHR0cHMuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3N3LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nl
c3MtY3Jhc2guanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdl
LWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYmJiNTFlMjc1ZWUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9y
ZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5qcwpAQCAtMCwwICsx
LDMxIEBACit2YXIgbWVzc2FnZU51bWJlciA9IDE7CituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5h
ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBsb2coIlBB
U1M6IENsaWVudCByZWNlaXZlZCBtZXNzYWdlIGZyb20gc2VydmljZSB3b3JrZXIsIG9yaWdpbjog
IiArIGV2ZW50Lm9yaWdpbik7CisgICAgbG9nKGV2ZW50LmRhdGEpOworICAgIGlmIChtZXNzYWdl
TnVtYmVyID09IDEpIHsKKyAgICAgICAgbG9nKCIqIFNpbXVsYXRpbmcgU2VydmljZSBXb3JrZXIg
cHJvY2VzcyBjcmFzaCIpOworICAgICAgICB0ZXN0UnVubmVyLnRlcm1pbmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKCk7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBsb2coIiogU2VuZGluZyAnTWVzc2FnZSAyJyB0byBTZXJ2aWNlIFdvcmtlciIpOworICAgICAg
ICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJNZXNzYWdlIDIiKTsKKyAgICAgICAgICAg
IG1lc3NhZ2VOdW1iZXIrKzsKKyAgICAgICAgICAgIGxvZygiKiBTZW5kaW5nICdNZXNzYWdlIDMn
IHRvIFNlcnZpY2UgV29ya2VyIik7CisgICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3Nh
Z2UoIk1lc3NhZ2UgMyIpOworICAgICAgICAgICAgbWVzc2FnZU51bWJlcisrOworICAgICAgICAg
ICAgaGFuZGxlID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBsb2co
IkZBSUw6IERpZCBub3QgcmVjZWl2ZSBtZXNzYWdlIGZyb20gc2VydmljZSB3b3JrZXIgcHJvY2Vz
cyBhZnRlciB0aGUgY3Jhc2giKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hTV1Rlc3QoKTsKKyAg
ICAgICAgICAgIH0sIDEwMDApOworICAgICAgICB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAobWVzc2FnZU51bWJlciA9PSAzKSB7CisgICAgICAgIGNsZWFyVGltZW91dCho
YW5kbGUpOworICAgICAgICBmaW5pc2hTV1Rlc3QoKTsKKyAgICB9Cit9KTsKKworbmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9wb3N0bWVzc2FnZS1lY2hvLXdvcmtl
ci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsKKyAgICBsb2coIiogU2Vu
ZGluZyAnTWVzc2FnZSAxJyB0byBTZXJ2aWNlIFdvcmtlciIpOworICAgIHJlZ2lzdHJhdGlvbi5p
bnN0YWxsaW5nLnBvc3RNZXNzYWdlKCJNZXNzYWdlIDEiKTsKK30pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAxYmNmOTc5
ZTAyZS4uNzU5MjI2MGMzNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC00MTgsMTEgKzQxOCwyMiBAQCB2b2lkIFNXU2Vy
dmVyOjp1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllciYgagogCiB2b2lkIFNXU2VydmVyOjpzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Q3JlYXRlZCgpCiB7Ci0gICAgQVNTRVJUKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xv
YmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpKTsKLSAgICBmb3IgKGF1dG8mIGRhdGEgOiBt
X3BlbmRpbmdDb250ZXh0RGF0YXMpCisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworICAg
IEFTU0VSVChjb25uZWN0aW9uKTsKKworICAgIGF1dG8gcGVuZGluZ0NvbnRleHREYXRhcyA9IFdU
Rk1vdmUobV9wZW5kaW5nQ29udGV4dERhdGFzKTsKKyAgICBmb3IgKGF1dG8mIGRhdGEgOiBwZW5k
aW5nQ29udGV4dERhdGFzKQogICAgICAgICBpbnN0YWxsQ29udGV4dERhdGEoZGF0YSk7Ci0gICAg
Ci0gICAgbV9wZW5kaW5nQ29udGV4dERhdGFzLmNsZWFyKCk7CisKKyAgICBhdXRvIHNlcnZpY2VX
b3JrZXJSdW5SZXF1ZXN0cyA9IFdURk1vdmUobV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMpOwor
ICAgIGZvciAoYXV0byYgaXRlbSA6IHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cykgeworICAgICAg
ICBhdXRvKiB3b3JrZXIgPSB3b3JrZXJCeUlEKGl0ZW0ua2V5KTsKKyAgICAgICAgQVNTRVJUKHdv
cmtlcik7CisgICAgICAgIHJ1blNlcnZpY2VXb3JrZXIoKndvcmtlcik7CisKKyAgICAgICAgZm9y
IChhdXRvJiBjYWxsYmFjayA6IGl0ZW0udmFsdWUpCisgICAgICAgICAgICBjYWxsYmFjayh0cnVl
KTsKKyAgICB9CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0RGF0YShjb25zdCBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCkBAIC00NDEsMTEgKzQ1MiwxMyBAQCB2b2lk
IFNXU2VydmVyOjppbnN0YWxsQ29udGV4dERhdGEoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiBkYXRhKQogICAgIGNvbm5lY3Rpb24tPmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChk
YXRhKTsKIH0KIAotYm9vbCBTV1NlcnZlcjo6aW52b2tlUnVuU2VydmljZVdvcmtlcihTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBTV1NlcnZlcjo6aW52b2tlUnVuU2Vy
dmljZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoYXV0byog
d29ya2VyID0gbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMuZ2V0KGlkZW50aWZpZXIpKSB7
Ci0gICAgICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpKSB7CisgICAgICAgICAgICBjYWxs
YmFjayh0cnVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IC8vIE5vYm9keSBzaG91bGQgaGF2ZSBhIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGZvciBhIFNX
U2VydmVyV29ya2VyIHRoYXQgZG9lc24ndCBleGlzdC4KQEAgLTQ1NCwxNyArNDY3LDMzIEBAIGJv
b2wgU1dTZXJ2ZXI6Omludm9rZVJ1blNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKIAogICAgIC8vIElmIHRoZSByZWdpc3RyYXRpb24gZm9yIGEgd29ya2lu
ZyBoYXMgYmVlbiByZW1vdmVkIHRoZW4gdGhlIHJlcXVlc3QgdG8gcnVuCiAgICAgLy8gdGhlIHdv
cmtlciBpcyBtb290LgotICAgIGlmICghZ2V0UmVnaXN0cmF0aW9uKHdvcmtlci0+cmVnaXN0cmF0
aW9uS2V5KCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFnZXRSZWdpc3RyYXRp
b24od29ya2VyLT5yZWdpc3RyYXRpb25LZXkoKSkpIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2Up
OworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dv
cmtlcnMuYWRkKGlkZW50aWZpZXIsICp3b3JrZXIpOwotICAgIHdvcmtlci0+c2V0U3RhdGUoU1dT
ZXJ2ZXJXb3JrZXI6OlN0YXRlOjpSdW5uaW5nKTsKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KCk7CisgICAgaWYgKCFjb25uZWN0aW9uKSB7CisgICAgICAgIG1fc2VydmljZVdvcmtlclJ1blJl
cXVlc3RzLmVuc3VyZShpZGVudGlmaWVyLCBbJl0geworICAgICAgICAgICAgcmV0dXJuIFZlY3Rv
cjxXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+PiB7IH07CisgICAgICAgIH0pLml0ZXJhdG9yLT52
YWx1ZS5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgcnVuU2VydmljZVdvcmtlcigqd29ya2VyKTsKKyAgICBjYWxsYmFjayh0cnVlKTsKK30K
Kwordm9pZCBTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcihTV1NlcnZlcldvcmtlciYgd29ya2Vy
KQoreworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMu
YWRkKHdvcmtlci5pZGVudGlmaWVyKCksIHdvcmtlcik7CisgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgIHdvcmtlci5zZXRTdGF0ZShTV1Nl
cnZlcldvcmtlcjo6U3RhdGU6OlJ1bm5pbmcpOwogCiAgICAgYXV0byogY29ubmVjdGlvbiA9IFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bigpOwogICAgIEFTU0VSVChjb25uZWN0aW9uKTsKLSAgICBjb25uZWN0aW9uLT5pbnN0YWxsU2Vy
dmljZVdvcmtlckNvbnRleHQod29ya2VyLT5jb250ZXh0RGF0YSgpKTsKLSAgICAKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICBjb25uZWN0aW9uLT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQod29y
a2VyLmNvbnRleHREYXRhKCkpOwogfQogCiB2b2lkIFNXU2VydmVyOjp0ZXJtaW5hdGVXb3JrZXIo
U1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKQEAgLTUwMCwxMCArNTI5LDE0IEBAIHZvaWQgU1dTZXJ2
ZXI6OnRlcm1pbmF0ZVdvcmtlckludGVybmFsKFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIFRlcm1p
bmF0aW9uTW9kZSBtCiAgICAgfTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6d29ya2VyQ29udGV4dFRl
cm1pbmF0ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKK3ZvaWQgU1dTZXJ2ZXI6Om1hcmtBbGxX
b3JrZXJzQXNUZXJtaW5hdGVkKCkKIHsKLSAgICBBU1NFUlQod29ya2VyLmlzVGVybWluYXRpbmco
KSk7CisgICAgd2hpbGUgKCFtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5pc0VtcHR5KCkp
CisgICAgICAgIHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKG1fcnVubmluZ09yVGVybWluYXRpbmdX
b3JrZXJzLmJlZ2luKCktPnZhbHVlKTsKK30KIAordm9pZCBTV1NlcnZlcjo6d29ya2VyQ29udGV4
dFRlcm1pbmF0ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKK3sKICAgICB3b3JrZXIuc2V0U3Rh
dGUoU1dTZXJ2ZXJXb3JrZXI6OlN0YXRlOjpOb3RSdW5uaW5nKTsKIAogICAgIC8vIEF0IHRoaXMg
cG9pbnQgaWYgbm8gcmVnaXN0cmF0aW9ucyBhcmUgcmVmZXJlbmNpbmcgdGhlIHdvcmtlciB0aGVu
IGl0IHdpbGwgYmUgZGVzdHJveWVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDMxOTlhNjA0NTkwLi5lZjc4MTZmZjQwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50SWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIlNXU2VydmVyV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudERhdGEu
aCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2IuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgpAQCAtMTM5LDYgKzE0MCw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsK
ICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNXU2VydmVyV29ya2VyJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgU1dTZXJ2ZXJXb3JrZXIqIHdvcmtlckJ5SUQoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXJrQWxsV29ya2Vyc0FzVGVy
bWluYXRlZCgpOwogICAgIAogICAgIENvbm5lY3Rpb24qIGdldENvbm5lY3Rpb24oU1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdl
dChpZGVudGlmaWVyKTsgfQogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0b3JlKCkgeyByZXR1
cm4gbV9vcmlnaW5TdG9yZTsgfQpAQCAtMTU5LDcgKzE2Miw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmlnaW4m
JiwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
JiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+JiBjb250cm9s
bGluZ1NlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVu
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYsIFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaW52b2tl
UnVuU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBpbnZva2VSdW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJiBjYWxsYmFjayk7CiAKICAg
ICB2b2lkIHNldENsaWVudEFjdGl2ZVdvcmtlcihTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlv
blJlYWR5UmVxdWVzdHMoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKQEAgLTE3OSw2ICsxODIsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bihDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIGRvUmVnaXN0cmF0aW9uTWF0
Y2hpbmcoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xp
ZW50VVJMKTsKKyAgICB2b2lkIHJ1blNlcnZpY2VXb3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsKIAog
ICAgIHZvaWQgaW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSYpOwogCkBAIC0yMTQsNiArMjE4LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fbWFpblRocmVh
ZFJlcGx5U2NoZWR1bGVkIHsgZmFsc2UgfTsKICAgICBVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4g
bV9vcmlnaW5TdG9yZTsKICAgICBEZXF1ZTxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IG1fcGVu
ZGluZ0NvbnRleHREYXRhczsKKworICAgIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+Pj4gbV9zZXJ2aWNlV29ya2VyUnVuUmVx
dWVzdHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJjOWEyMmFh
YzlkLi4yYjQwMTlmZjA5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAxNy0xMi0wNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCB0ZXN0UnVubmVy
IEFQSSB0byB0ZXJtaW5hdGUgdGhlIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDQ5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjppcGNDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgQWRkIGdl
dHRlciBmb3IgdGhlIHVuZGVybHlpbmcgSVBDIGNvbm5lY3Rpb24uCisKKyAgICAgICAgKiBTdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQ
cm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpjb25u
ZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3NlZCk6CisgICAgICAgIE1vdmUgc29tZSBjb2Rl
IHRvIGNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKCkgdG8gYXZvaWQgZHVwbGlj
YXRpb24uCisgICAgICAgIEFsc28sIHJlbGF1bmNoIHRoZSBTZXJ2aWNlIFdvcmtlciBwcm9jZXNz
IGlmIGl0IGhhcyBleGl0ZWQgYnV0IHdlIHN0aWxsCisgICAgICAgIGhhdmUgU1dTZXJ2ZXIgY29u
bmVjdGlvbnMgdG8gcmVndWxhciBXZWIgUHJvY2Vzc2VzLgorCisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VQcm9jZXNzOjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gY29uc3QpOgorICAg
ICAgICBVdGlsaXR5IGZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiB3ZSBzdGlsbCBuZWVkIHRoZSBz
ZXJ2aWNlIHdvcmtlciBwcm9jZXNzLgorICAgICAgICBUaGUgY3VycmVudCBydWxlIGlzIHRoYXQg
d2UgbmVlZCB0aGUgc2VydmljZSB3b3JrZXIgKGFrYSAiY29udGV4dCIpIHByb2Nlc3MKKyAgICAg
ICAgaWYgd2Ugc3RpbGwgaGF2ZSBTV1NlcnZlciBjb25uZWN0aW9ucyB0byByZWd1bGFyIFdlYiBQ
cm9jZXNzZXMuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oOgor
ICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENs
b3NlKToKKyAgICAgICAgSWYgZGlkQ2xvc2UoKSBpcyBjYWxsZWQgZm9yIHRoZSBjb25uZWN0aW9u
IHRvIHRoZSBzZXJ2aWNlIHdvcmtlciBjb250ZXh0LAorICAgICAgICBsZXQgdGhlIFN0b3JhZ2VQ
cm9jZXNzIGtub3cgc28gdGhhdCBpdCBjYW4gY2xlYXIgaXRzIHN0YXRlIGFuZCByZWxhdW5jaAor
ICAgICAgICB0aGUgcHJvY2VzcyBpZiBuZWNlc3NhcnkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFRlcm1pbmF0ZVNlcnZpY2VX
b3JrZXJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAg
ICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3NdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6Cisg
ICAgICAgIEFkZCBTUEkgdG8gdGVybWluYXRlIHRoZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzLgor
CisgICAgICAgICogVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKGlzVHlwZSk6CisgICAgICAgIE1ha2UgZG93bmNhc3Q8U2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eT4oKSB3b3JrLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6bV9zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uVGltZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgIFdl
IHVzZWQgdG8gc2h1dGRvd24gdGhlIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyByaWdodCBhd2F5IGFz
IHNvb24gYXMgdGhlIGxhc3QgcmVndWxhcgorICAgICAgICBXZWJQcm9jZXNzIHdhcyBnb25lLiBX
ZSBub3cgZ2l2ZSBpdCBhIGdyYWNlIHBlcmlvZCBvZiA1IHNlY29uZHMgaW4gY2FzZSBhIG5ldwor
ICAgICAgICBXZWJQcm9jZXNzIGdldHMgbGF1bmNoZWQgc2hvcnRseSBhZnRlci4KKwogMjAxNy0x
Mi0wNiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0Nv
b3JkR3JhcGhpY3NdIEludHJvZHVjZSBOaWNvc2lhOjpQYWludGluZ0NvbnRleHQsIGFkZCBDYWly
byBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApp
bmRleCA0MzQwYjdiNzU0YS4uYzY5OWE0ZmZhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwCkBAIC0xMTksOCArMTE5LDEzIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjp1cGRhdGVXb3JrZXJTdGF0ZUluQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHdvCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRfdCBmZXRj
aElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+IHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZm9y
bURhdGEpCiB7CiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmljIHdvcmtlciBjYW5u
b3QgYmUgcmUtcnVuIChlLmcuIGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4gcmVtb3ZlZCkKLSAg
ICBpZiAoc2VydmljZVdvcmtlcklkZW50aWZpZXIgJiYgIXNlcnZlcigpLmludm9rZVJ1blNlcnZp
Y2VXb3JrZXIoKnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKKyAgICBpZiAoc2VydmljZVdvcmtl
cklkZW50aWZpZXIpIHsKKyAgICAgICAgc2VydmVyKCkuaW52b2tlUnVuU2VydmljZVdvcmtlcklm
TmVjZXNzYXJ5KCpzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3RoaXMsIGZldGNoSWRlbnRpZmll
ciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGZvcm1EYXRhXShi
b29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzKQorICAgICAgICAgICAgICAg
IHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6U3RhcnRGZXRjaCB7IGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9ybURhdGEgfSk7CisgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8gRklYTUU6IElmIHdlIGRvbid0
IGhhdmUgYSBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBoZXJlIHRoZW4gd2UgbmVlZCB0byBjcmVh
dGUgYW5kIHJ1biB0aGUgYXBwcm9wcmlhdGUgU2VydmljZSBXb3JrZXIsCiAgICAgLy8gYnV0IGl0
J3MgdW5jbGVhciB0aGF0IHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGhlcmUgdG8gZG8gdGhh
dC4KQEAgLTEzMSwyMyArMTM2LDI1IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFy
dEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxTCiB2b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJGcm9tQ2xpZW50
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBz
b3VyY2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmIHNvdXJjZURhdGEpCiB7
CiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmljIHdvcmtlciBjYW5ub3QgYmUgcmUt
cnVuIChlLmcuIGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4gcmVtb3ZlZCkKLSAgICBpZiAoIXNl
cnZlcigpLmludm9rZVJ1blNlcnZpY2VXb3JrZXIoZGVzdGluYXRpb25JZGVudGlmaWVyKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21D
bGllbnQgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIs
IFdURk1vdmUoc291cmNlRGF0YSkgfSk7CisgICAgc2VydmVyKCkuaW52b2tlUnVuU2VydmljZVdv
cmtlcklmTmVjZXNzYXJ5KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgW3RoaXMsIGRlc3RpbmF0aW9u
SWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlSWRlbnRpZmllciwgc291cmNlRGF0YSA9IFdURk1v
dmUoc291cmNlRGF0YSldKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAgICAgIGlmIChzdWNj
ZXNzKQorICAgICAgICAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21DbGll
bnQgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIFdU
Rk1vdmUoc291cmNlRGF0YSkgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21TZXJ2aWNlV29ya2VyKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlm
aWVyKQogewogICAgIC8vIEl0J3MgcG9zc2libGUgdGhpcyBzcGVjaWZpYyB3b3JrZXIgY2Fubm90
IGJlIHJlLXJ1biAoZS5nLiBpdHMgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIHJlbW92ZWQpCi0gICAg
aWYgKCFzZXJ2ZXIoKS5pbnZva2VSdW5TZXJ2aWNlV29ya2VyKGRlc3RpbmF0aW9uSWRlbnRpZmll
cikpCi0gICAgICAgIHJldHVybjsKKyAgICBzZXJ2ZXIoKS5pbnZva2VSdW5TZXJ2aWNlV29ya2Vy
SWZOZWNlc3NhcnkoZGVzdGluYXRpb25JZGVudGlmaWVyLCBbdGhpcywgZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyXShib29sIHN1Y2Nlc3MpIHsKKyAgICAg
ICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogc291cmNl
V29ya2VyID0gc2VydmVyKCkud29ya2VyQnlJRChzb3VyY2VJZGVudGlmaWVyKTsKLSAgICBpZiAo
IXNvdXJjZVdvcmtlcikKLSAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRvKiBzb3VyY2VXb3Jr
ZXIgPSBzZXJ2ZXIoKS53b3JrZXJCeUlEKHNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBpZiAo
IXNvdXJjZVdvcmtlcikKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmRUb0NvbnRleHRQ
cm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJGcm9tU2VydmljZVdvcmtlciB7IGRlc3RpbmF0aW9uSWRlbnRpZmll
ciwgbWVzc2FnZSwgc291cmNlV29ya2VyLT5kYXRhKCkgfSk7CisgICAgICAgIHNlbmRUb0NvbnRl
eHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJGcm9tU2VydmljZVdvcmtlciB7IGRlc3RpbmF0aW9uSWRlbnRp
ZmllciwgbWVzc2FnZSwgc291cmNlV29ya2VyLT5kYXRhKCkgfSk7CisgICAgfSk7CiB9CiAKIHZv
aWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRf
dCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IGI2NTA4NTNjNTU2Li43YzJjNzk0
NWQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNTIsNiArNTIs
OCBAQCBwdWJsaWM6CiAgICAgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uKGNvbnN0IFdlYlNXU2VydmVy
Q29ubmVjdGlvbiYpID0gZGVsZXRlOwogICAgIH5XZWJTV1NlcnZlckNvbm5lY3Rpb24oKSBmaW5h
bDsKIAorICAgIElQQzo6Q29ubmVjdGlvbiYgaXBjQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudENvbm5lY3Rpb24uZ2V0KCk7IH0KKwogICAgIHZvaWQgZGlzY29ubmVjdGVkRnJv
bVdlYlByb2Nlc3MoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MuY3BwCmluZGV4IDJmN2E1MDE1NTJkLi41MTQxNWU4ZjkxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKQEAgLTg2LDggKzg2LDcgQEAg
dm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAobV9zZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uICYmIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+aXBjQ29ubmVjdGlv
bigpID09ICZjb25uZWN0aW9uKSB7Ci0gICAgICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi0+Y29ubmVjdGlvbkNsb3NlZCgpOwotICAgICAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24gPSBudWxscHRyOworICAgICAgICBjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3Nl
ZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vsc2UKQEAgLTk2LDYgKzk1LDM5IEBAIHZv
aWQgU3RvcmFnZVByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikK
ICAgICBzdG9wUnVuTG9vcCgpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9p
ZCBTdG9yYWdlUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQoKQor
eworICAgIGlmICghbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBib29sIHNob3VsZFJlbGF1bmNoID0gbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKCk7CisKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25DbG9z
ZWQoKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworCisgICAg
Zm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQorICAgICAgICBzd1Nl
cnZlci0+bWFya0FsbFdvcmtlcnNBc1Rlcm1pbmF0ZWQoKTsKKworICAgIC8vIFJlbGF1bmNoIHRo
ZSBjb250ZXh0IHByb2Nlc3MgaWYgbmVjZXNzYXJ5LgorICAgIGlmIChzaG91bGRSZWxhdW5jaCkK
KyAgICAgICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworfQorCisvLyBUaGUg
cnVsZSBpcyB0aGF0IHdlIG5lZWQgYSBjb250ZXh0IHByb2Nlc3MgKGFuZCBhIGNvbm5lY3Rpb24g
dG8gaXQpIGFzIGxvbmcgYXMgd2UgaGF2ZSBTV1NlcnZlckNvbm5lY3Rpb25zIHRvIHJlZ3VsYXIg
V2ViUHJvY2Vzc2VzLgorYm9vbCBTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAobV9zd1NlcnZlckNvbm5lY3Rpb25zLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSWYgdGhlIGxhc3QgU1dTZXJ2
ZXJDb25uZWN0aW9uIGlzIHRvIHRoZSBjb250ZXh0IHByb2Nlc3MsIHRoZW4gd2Ugbm8gbG9uZ2Vy
IG5lZWQgdGhlIGNvbnRleHQgY29ubmVjdGlvbi4KKyAgICBpZiAobV9zd1NlcnZlckNvbm5lY3Rp
b25zLnNpemUoKSA9PSAxICYmIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiAmJiAmbV9zd1Nl
cnZlckNvbm5lY3Rpb25zLmJlZ2luKCktPnZhbHVlLT5pcGNDb25uZWN0aW9uKCkgPT0gbV9zZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5pcGNDb25uZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKIHZvaWQgU3RvcmFnZVByb2Nl
c3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGlmIChtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRj
aE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKaW5kZXggMTcxYzdhNmU3YjAuLjM0ODJlNzRmYWYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC05
OCw2ICs5OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVTdG9yYWdlUHJvY2Vz
c01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKKyNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Ns
b3NlZCgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgU3RvcmFnZVByb2Nlc3MoKTsKIApAQCAt
MTMzLDYgKzEzNyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
JiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2Fn
ZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwogICAgIFdlYlNXT3JpZ2luU3RvcmUmIHN3T3JpZ2lu
U3RvcmVGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKKyAgICBib29sIG5lZWRzU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbigpIGNvbnN0OwogI2VuZGlmCiAjaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gaW5kZXhlZERh
dGFiYXNlT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcAppbmRleCA3NTQ4MTkyNTExZC4uMzI4MmEzNDMwZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCkBAIC0xMjAsOCArMTIwLDE3IEBAIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCit2b2lkIFN0b3JhZ2VUb1dlYlBy
b2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7
CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQorICAgIGlmIChTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuZ2xvYmFsU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbigpICYmIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5nbG9iYWxT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCktPmlwY0Nvbm5lY3Rpb24oKSA9PSAmY29ubmVjdGlv
bikgeworICAgICAgICAvLyBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIGV4aXRlZC4KKyAgICAgICAg
U3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2Fz
Q2xvc2VkKCk7CisgICAgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ICAgICBhdXRvIGlkYkNvbm5lY3Rpb25zID0gbV93ZWJJREJDb25uZWN0aW9uczsKICAgICBmb3Ig
KGF1dG8mIGNvbm5lY3Rpb24gOiBpZGJDb25uZWN0aW9ucy52YWx1ZXMoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IDVmMjBkMTI1NTA3Li5hZjg0
YmYyNmEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
CkBAIC02MTQsNiArNjE0LDExIEBAIHZvaWQgV0tDb250ZXh0VGVybWluYXRlTmV0d29ya1Byb2Nl
c3MoV0tDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgdG9JbXBsKGNvbnRleHQpLT50ZXJtaW5hdGVO
ZXR3b3JrUHJvY2VzcygpOwogfQogCit2b2lkIFdLQ29udGV4dFRlcm1pbmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKFdLQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIHRvSW1wbChjb250ZXh0KS0+
dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKTsKK30KKwogUHJvY2Vzc0lEIFdLQ29udGV4
dEdldE5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsK
ICAgICByZXR1cm4gdG9JbXBsKGNvbnRleHRSZWYpLT5uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUu
aAppbmRleCAyZGUxMWRlZWM1Mi4uYTBmYzFjMjNkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKQEAgLTg5LDYgKzg5LDcgQEAgV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0V2FybUluaXRpYWxQcm9jZXNzKFdLQ29udGV4dFJlZiBjb250
ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldFVzZXNOZXR3b3JrUHJvY2VzcyhXS0Nv
bnRleHRSZWYsIGJvb2wpOwogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRUZXJtaW5hdGVOZXR3
b3JrUHJvY2VzcyhXS0NvbnRleHRSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0VGVybWlu
YXRlU2VydmljZVdvcmtlclByb2Nlc3MoV0tDb250ZXh0UmVmKTsKIAogV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXRUZXN0aW5nKFdL
Q29udGV4dFJlZiwgYm9vbCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRBbGxvd3NBbnlT
U0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXJUZXN0aW5nKFdLQ29udGV4dFJlZiwgYm9vbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tCmluZGV4IDBjYzk4ODAzNDFkLi43Yzk0N2IwNDNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTQxMiw2ICs0MTIs
MTEgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqcG9saWNpZXNIYXNoTWFwVG9EaWN0aW9uYXJ5KGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFMKICAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0
ZU5ldHdvcmtQcm9jZXNzKCk7CiB9CiAKKy0gKHZvaWQpX3Rlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzCit7CisgICAgX3Byb2Nlc3NQb29sLT50ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
cygpOworfQorCiAtIChwaWRfdClfbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyCiB7CiAgICAgcmV0
dXJuIF9wcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oCmluZGV4IDBkYzEyODY4Y2I3Li5hZGRlN2MxYjg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAg
LTc0LDYgKzc0LDcgQEAKIC8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxlZCBvbmx5IHdoaWxl
IG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmluZy4KIC0gKHZvaWQpX3Rlcm1pbmF0
ZVN0b3JhZ2VQcm9jZXNzOwogLSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3M7CistICh2
b2lkKV90ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzczsKIAogLy8gVGVzdCBvbmx5LgogLSAo
cGlkX3QpX25ldHdvcmtQcm9jZXNzSWRlbnRpZmllciBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgx
MC4xMyksIGlvcygxMS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKaW5kZXggMWFjNDU1NjJhNzMuLjc2YzVlNzIyY2E0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS5oCkBAIC01MiwzICs1Miw3IEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5JiBwcm94eSkgeyByZXR1cm4gcHJveHkuaXNTZXJ2aWNlV29ya2VyUHJvY2Vz
cygpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYWM3Y2JiY2YxZGYuLjIwOTk5Y2IzNzcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMTUsNiAr
MTE1LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChX
VEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgcHJvY2Vzc1Bvb2xDb3VudGVyLCAoIldlYlByb2Nl
c3NQb29sIikpOwogCitzdGF0aWMgY29uc3QgU2Vjb25kcyBzZXJ2aWNlV29ya2VyVGVybWluYXRp
b25EZWxheSB7IDVfcyB9OworCiBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVMaXN0ZW5lcklkZW50
aWZpZXIoKQogewogICAgIHN0YXRpYyB1aW50NjRfdCBuZXh0SWRlbnRpZmllciA9IDE7CkBAIC0y
NDQsNiArMjQ2LDcgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgICwgbV9wcm9jZXNzU3VwcHJl
c3Npb25EaXNhYmxlZEZvclBhZ2VDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgdXBk
YXRlUHJvY2Vzc1N1cHByZXNzaW9uU3RhdGUoKTsgfSkKICAgICAsIG1faGlkZGVuUGFnZVRocm90
dGxpbmdBdXRvSW5jcmVhc2VzQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IG1faGlk
ZGVuUGFnZVRocm90dGxpbmdUaW1lci5zdGFydE9uZVNob3QoMF9zKTsgfSkKICAgICAsIG1faGlk
ZGVuUGFnZVRocm90dGxpbmdUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQcm9jZXNz
UG9vbDo6dXBkYXRlSGlkZGVuUGFnZVRocm90dGxpbmdBdXRvSW5jcmVhc2VMaW1pdCkKKyAgICAs
IG1fc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvblRpbWVyKFJ1bkxvb3A6Om1haW4oKSwg
dGhpcywgJldlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcykKIHsK
ICAgICBpZiAobV9jb25maWd1cmF0aW9uLT5zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlKCkpCiAg
ICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRl
TGVnYWN5KGxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKG1fY29uZmlndXJhdGlv
bikpOwpAQCAtNjk3LDYgKzcwMCwxMCBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29s
OjpjcmVhdGVOZXdXZWJQcm9jZXNzKFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYQogICAgIGF1
dG8mIHByb2Nlc3MgPSBwcm9jZXNzUHJveHkuZ2V0KCk7CiAgICAgaW5pdGlhbGl6ZU5ld1dlYlBy
b2Nlc3MocHJvY2Vzcywgd2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgbV9wcm9jZXNzZXMuYXBwZW5k
KFdURk1vdmUocHJvY2Vzc1Byb3h5KSk7CisKKyAgICBpZiAobV9zZXJ2aWNlV29ya2VyUHJvY2Vz
c1Rlcm1pbmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Rlcm1pbmF0aW9uVGltZXIuc3RvcCgpOworCiAgICAgcmV0dXJuIHByb2Nlc3M7CiB9CiAK
QEAgLTk0Myw4ICs5NTAsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MpCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyBi
ZXR0ZXIgdGhhbiB0aGlzLiBGb3Igbm93LCB3ZSBqdXN0IGRlc3Ryb3kgdGhlIFNlcnZpY2VXb3Jr
ZXIgcHJvY2VzcwogICAgIC8vIHdoZW5ldmVyIHRoZXJlIGlzIG5vIHJlZ3VsYXIgV2ViQ29udGVu
dCBwcm9jZXNzIHJlbWFpbmluZy4KICAgICBpZiAobV9wcm9jZXNzZXMuc2l6ZSgpID09IDEgJiYg
bV9wcm9jZXNzZXNbMF0gPT0gbV9zZXJ2aWNlV29ya2VyUHJvY2VzcykgewotICAgICAgICBtX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzID0gbnVsbHB0cjsKLSAgICAgICAgbV9wcm9jZXNzZXMuY2xlYXIo
KTsKKyAgICAgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25UaW1lci5p
c0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
VGltZXIuc3RhcnRPbmVTaG90KHNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvbkRlbGF5KTsKICAgICB9
CiAjZW5kaWYKIH0KQEAgLTE0MDgsNiArMTQxNSwxOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp0
ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpCiAgICAgbV9kaWROZXR3b3JrUHJvY2Vzc0NyYXNoID0g
dHJ1ZTsKIH0KIAordm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlclBy
b2Nlc3MoKQoreworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBpZiAoIW1fc2Vydmlj
ZVdvcmtlclByb2Nlc3MpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2VydmljZVdvcmtlclBy
b2Nlc3MtPnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb246OlJlcXVl
c3RlZEJ5Q2xpZW50KTsKKyAgICBBU1NFUlQoIW1fcHJvY2Vzc2VzLmNvbnRhaW5zKG1fc2Vydmlj
ZVdvcmtlclByb2Nlc3MpKTsKKyAgICBBU1NFUlQoIW1fc2VydmljZVdvcmtlclByb2Nlc3MpOwor
I2VuZGlmCit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnN5bmNOZXR3b3JrUHJvY2Vzc0Nvb2tp
ZXMoKQogewogICAgIHNlbmRTeW5jVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlN5bmNBbGxDb29raWVzKCksIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U3lu
Y0FsbENvb2tpZXM6OlJlcGx5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKaW5kZXggNWYxNDUwMTY1MjQuLmJjZDMxNjU0NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTI2Miw2ICsyNjIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbGVhckNhY2hlZENyZWRlbnRpYWxzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVTdG9yYWdl
UHJvY2VzcygpOwogICAgIHZvaWQgdGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICB2b2lk
IHRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCk7CiAKICAgICB2b2lkIHN5bmNOZXR3b3Jr
UHJvY2Vzc0Nvb2tpZXMoKTsKIApAQCAtNjMzLDYgKzYzNCw3IEBAIHByaXZhdGU6CiAgICAgUGF0
aHMgbV9yZXNvbHZlZFBhdGhzOwogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNl
dDxXZWJQYWdlUHJveHkqPj4gbV9zZXNzaW9uVG9QYWdlc01hcDsKKyAgICBSdW5Mb29wOjpUaW1l
cjxXZWJQcm9jZXNzUG9vbD4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uVGltZXI7
CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBjMzhhYjg3YjNiLi42NDhiZGUwNDYzMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDE3LTEyLTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIHRlc3RSdW5uZXIgQVBJIHRvIHRlcm1pbmF0ZSB0aGUgU2VydmljZSBXb3JrZXIgcHJv
Y2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgw
NDk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IHRlc3RSdW5uZXIgQVBJIHRvIHRlcm1pbmF0ZSB0aGUgU2VydmljZSBXb3JrZXIgcHJvY2Vzcy4K
KworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6dGVybWluYXRlU2Vydmlj
ZVdvcmtlclByb2Nlc3MpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6dGVybWluYXRlU2VydmljZVdv
cmtlclByb2Nlc3MpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKToKKwogMjAxNy0xMi0wNSAgU3RlcGhhbiBTemFibyAgPHN0ZXBoYW4uc3phYm9Ac29ueS5j
b20+CiAKICAgICAgICAgU3dpdGNoIHdpbmRvd3MgYnVpbGQgdG8gVmlzdWFsIFN0dWRpbyAyMDE3
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCAzMzJmZTI2MWM2ZS4uNjRiMmUyYmI3MTQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzA0LDYgKzMwNCw3IEBAIGludGVyZmFj
ZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHNldFdlYlJUQ0xlZ2FjeUFQSUVuYWJsZWQoYm9vbGVh
biB2YWx1ZSk7CiAKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgdm9p
ZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpOwogCiAgICAgdm9pZCByZW1vdmVBbGxT
ZXNzaW9uQ3JlZGVudGlhbHMob2JqZWN0IGNhbGxiYWNrKTsKIH07CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBjYjU2
NzBiZTkxZC4uMzExMjIwOWRmNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtMTEzNyw2ICsxMTM3LDEyIEBAIHZv
aWQgVGVzdFJ1bm5lcjo6dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKQogICAgIFdLQnVuZGxlUGFn
ZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnRlcm1p
bmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRl
cm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzIikpOworICAgIFdLQnVuZGxlUGFnZVBvc3RNZXNz
YWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5h
bWUuZ2V0KCksIG51bGxwdHIpOworfQorCiBzdGF0aWMgdW5zaWduZWQgbmV4dFVJU2NyaXB0Q2Fs
bGJhY2tJRCgpCiB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBGaXJzdFVJU2Ny
aXB0Q2FsbGJhY2tJRDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggZDM2OTEwZDAzMWUuLmJkMjIyNmEyNDZkIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApA
QCAtNDAyLDYgKzQwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzKEpT
VmFsdWVSZWYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOworICAgIHZv
aWQgdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKTsKIAogICAgIHZvaWQgcmVtb3ZlQWxs
U2Vzc2lvbkNyZWRlbnRpYWxzKEpTVmFsdWVSZWYpOwogICAgIHZvaWQgY2FsbERpZFJlbW92ZUFs
bFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IDI3MDAwNDUzMzliLi4zNGJhZTI2MzQwNyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTIyNzQsNiArMjI3NCwxMSBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjp0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpCiAgICAgV0tD
b250ZXh0VGVybWluYXRlTmV0d29ya1Byb2Nlc3MocGxhdGZvcm1Db250ZXh0KCkpOwogfQogCit2
b2lkIFRlc3RDb250cm9sbGVyOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpCit7Cisg
ICAgV0tDb250ZXh0VGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MocGxhdGZvcm1Db250ZXh0
KCkpOworfQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1XaWxsUnVuVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYpCiB7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYjFhYzRmNzI1MGEuLmFkNWRiNmJmZTZhIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0xODgsNiArMTg4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0T3BlblBhbmVsRmlsZVVSTHMoV0tBcnJheVJlZiBmaWxl
VVJMcykgeyBtX29wZW5QYW5lbEZpbGVVUkxzID0gZmlsZVVSTHM7IH0KIAogICAgIHZvaWQgdGVy
bWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzKCk7CiAKICAgICB2b2lkIHJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDJjYTdlNTIzY2My
Li4zODFhYzBhNjRkYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKQEAgLTc0NCw2ICs3NDQsMTIgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiVGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MiKSkgeworICAgICAgICBB
U1NFUlQoIW1lc3NhZ2VCb2R5KTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJ1
blVJUHJvY2Vzc1NjcmlwdCIpKSB7CiAgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9k
eURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsK
ICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNjcmlwdEtleShBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2NyaXB0IikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328675</attachid>
            <date>2017-12-06 20:04:54 -0800</date>
            <delta_ts>2017-12-06 22:24:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180477-20171206200453.patch</filename>
            <type>text/plain</type>
            <size>36090</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY3MjBiOTU0MWFkMzhj
N2E5ODQ2NzY5MDEzNmMyMGM3NzZjODM0MC4uZDUxYTY3YmI5N2Q1YWYwMmExMjVhODM2NWJkNTk0
ZTI3MGQ3Y2U1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTEyLTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc2hvdWxkIGJlIGFibGUg
dG8gcmVjb3ZlciBhZnRlciBhIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgY3Jhc2gKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDQ3NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMu
aHRtbAorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0
ZWQpOgorICAgICAgICBPbmNlIHRoZSBjb25uZWN0aW9uIGlzIHRoZSBjb250ZXh0IGlzIGVzdGFi
bGlzaGVkLCBwcm9jZXNzICJydW4gc2VydmljZSB3b3JrZXIiCisgICAgICAgIHJlcXVlc3RzIHRo
YXQgb2N1cnJlZCB3aGlsZSBlc3RhYmxpc2hpbmcgdGhlIGNvbm5lY3Rpb24uCisKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkpOgorICAgICAg
ICBUYWtlIGluIGEgbGFtYmRhIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgYWZ0ZXIgdGhlICJy
dW4gc2VydmljZSB3b3JrZXIiIHJlcXVlc3QKKyAgICAgICAgaWYgcHJvY2Vzc2VkLiBXZSB1c2Vk
IHRvIGFzc2VydCB0aGF0IHdlIGhhZCBhIGNvbm5lY3Rpb24gdG8gdGhlIGNvbnRleHQgcHJvY2Vz
cy4KKyAgICAgICAgV2Ugbm93IHdhaXQgZm9yIHRoZSBjb25uZWN0aW9uIHRvIGJlIGVzdGFibGlz
aGVkIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QsIHRodXMKKyAgICAgICAgbWFraW5nIHRoZSBvcGVy
YXRpb24gYXN5bmNocm9ub3VzLgorCisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cnVuU2Vy
dmljZVdvcmtlcik6CisgICAgICAgIFNwbGl0IHNvbWUgbG9naWMgb3V0IG9mIHJ1blNlcnZpY2VX
b3JrZXJJZk5lY2Vzc2FyeSgpIHRvIHJldXNlIGluIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25D
cmVhdGVkKCkuCisKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjptYXJrQWxsV29ya2Vyc0Fz
VGVybWluYXRlZCk6CisgICAgICAgIEFkZCBtZXRob2QgdG8gbWFyayBhbGwgc2VydmljZSB3b3Jr
ZXJzIGFzIHRlcm1pbmF0ZWQuIFRoaXMgaXMgY2FsbGVkIHdoZW4gdGhlIFNlcnZpY2UKKyAgICAg
ICAgV29ya2VyIHByb2Nlc3MgY3Jhc2hlcy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaDoKKwogMjAxNy0xMi0wNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBub2RlcyBmcm9tIEFYT2JqZWN0Q2FjaGUgd2hlbiB0
aGUgYXNzb2NpYXRlZCBzdWJmcmFtZSBkb2N1bWVudCBpcyBnZXR0aW5nIGRlc3Ryb3llZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggNDhkZjM5MzhmN2VjNjRjOTFjMTI1OGViMDUzOWQ2MDkxODBhNDk3Yy4uYzkyYTYy
ZDg2YjQ0ZDFkOWZlMTlkMGY3OTQxZDQ4YWI4MDMxY2Y0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
OSBAQAorMjAxNy0xMi0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIHJlY292ZXIgYWZ0ZXIgYSBTZXJ2aWNlIFdvcmtlciBw
cm9jZXNzIGNyYXNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODA0NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNo
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckZyb21DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyRnJvbVNlcnZpY2VXb3JrZXIpOgor
ICAgICAgICBVcGRhdGUgY2FsbHMgdG8gU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vz
c2FyeSgpIHRoYXQgdGhhdCBpdCBpcyBhc3luY2hyb25vdXMKKyAgICAgICAgYW5kIHRha2VzIGlu
IGEgbGFtYmRhLgorCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjppcGNDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAgQWRkIGdldHRlciBmb3IgdGhlIHVu
ZGVybHlpbmcgSVBDIGNvbm5lY3Rpb24uCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRDbG9z
ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0
UHJvY2Vzc1dhc0Nsb3NlZCk6CisgICAgICAgIE1vdmUgc29tZSBjb2RlIHRvIGNvbm5lY3Rpb25U
b0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKCkgdG8gYXZvaWQgZHVwbGljYXRpb24uCisgICAgICAg
IEFsc28sIHJlbGF1bmNoIHRoZSBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIGlmIGl0IGhhcyBleGl0
ZWQgYnV0IHdlIHN0aWxsCisgICAgICAgIGhhdmUgU1dTZXJ2ZXIgY29ubmVjdGlvbnMgdG8gcmVn
dWxhciBXZWIgUHJvY2Vzc2VzLgorCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpu
ZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICBVdGlsaXR5IGZ1
bmN0aW9uIHRvIGRldGVybWluZSBpZiB3ZSBzdGlsbCBuZWVkIHRoZSBzZXJ2aWNlIHdvcmtlciBw
cm9jZXNzLgorICAgICAgICBUaGUgY3VycmVudCBydWxlIGlzIHRoYXQgd2UgbmVlZCB0aGUgc2Vy
dmljZSB3b3JrZXIgKGFrYSAiY29udGV4dCIpIHByb2Nlc3MKKyAgICAgICAgaWYgd2Ugc3RpbGwg
aGF2ZSBTV1NlcnZlciBjb25uZWN0aW9ucyB0byByZWd1bGFyIFdlYiBQcm9jZXNzZXMuCisKKyAg
ICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oOgorCisgICAgICAgICogU3Rv
cmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UpOgorICAgICAg
ICBJZiBkaWRDbG9zZSgpIGlzIGNhbGxlZCBmb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZp
Y2Ugd29ya2VyIGNvbnRleHQsCisgICAgICAgIGxldCB0aGUgU3RvcmFnZVByb2Nlc3Mga25vdyBz
byB0aGF0IGl0IGNhbiBjbGVhciBpdHMgc3RhdGUgYW5kIHJlbGF1bmNoCisgICAgICAgIHRoZSBw
cm9jZXNzIGlmIG5lY2Vzc2FyeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0VGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3Mp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1By
b2Nlc3NQb29sIF90ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc10pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgQWRkIFNQ
SSB0byB0ZXJtaW5hdGUgdGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3NlcnZpY2VX
b3JrZXJQcm9jZXNzVGVybWluYXRpb25UaW1lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgV2UgdXNlZCB0byBzaHV0ZG93biB0aGUgU2Vydmlj
ZVdvcmtlciBwcm9jZXNzIHJpZ2h0IGF3YXkgYXMgc29vbiBhcyB0aGUgbGFzdCByZWd1bGFyCisg
ICAgICAgIFdlYlByb2Nlc3Mgd2FzIGdvbmUuIFdlIG5vdyBnaXZlIGl0IGEgZ3JhY2UgcGVyaW9k
IG9mIDUgc2Vjb25kcyBpbiBjYXNlIGEgbmV3CisgICAgICAgIFdlYlByb2Nlc3MgZ2V0cyBsYXVu
Y2hlZCBzaG9ydGx5IGFmdGVyLgorCiAyMDE3LTEyLTA2ICBKZWZmIE1pbGxlciAgPGplZmZtQGFw
cGxlLmNvbT4KIAogICAgICAgICAtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gY29weVdpdGhab25l
XSBkb2Vzbid0IGNvcHkgX2dyb3VwSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBiYWZjNjRjNDgzZTkwM2Rj
ZTZhN2JmNDdkN2E1NmRlMjMxY2RhN2FkLi5jODM4MTM2MDRlMzM5NDNmNGE2YjQ4Y2YxMzMwMzNj
MjljNmNiMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcApAQCAtNDIyLDEwICs0MjIsMTcgQEAgdm9pZCBTV1NlcnZlcjo6dXBk
YXRlV29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXImIGoKIHZvaWQgU1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCkK
IHsKICAgICBBU1NFUlQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKCkpOwotICAgIGZvciAoYXV0byYgZGF0YSA6IG1fcGVuZGluZ0Nv
bnRleHREYXRhcykKKworICAgIGF1dG8gcGVuZGluZ0NvbnRleHREYXRhcyA9IFdURk1vdmUobV9w
ZW5kaW5nQ29udGV4dERhdGFzKTsKKyAgICBmb3IgKGF1dG8mIGRhdGEgOiBwZW5kaW5nQ29udGV4
dERhdGFzKQogICAgICAgICBpbnN0YWxsQ29udGV4dERhdGEoZGF0YSk7Ci0gICAgCi0gICAgbV9w
ZW5kaW5nQ29udGV4dERhdGFzLmNsZWFyKCk7CisKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJSdW5S
ZXF1ZXN0cyA9IFdURk1vdmUobV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMpOworICAgIGZvciAo
YXV0byYgaXRlbSA6IHNlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cykgeworICAgICAgICBib29sIHN1
Y2Nlc3MgPSBydW5TZXJ2aWNlV29ya2VyKGl0ZW0ua2V5KTsKKyAgICAgICAgZm9yIChhdXRvJiBj
YWxsYmFjayA6IGl0ZW0udmFsdWUpCisgICAgICAgICAgICBjYWxsYmFjayhzdWNjZXNzKTsKKyAg
ICB9CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmIGRhdGEpCkBAIC00NDYsMjkgKzQ1Myw0NiBAQCB2b2lkIFNXU2Vy
dmVyOjppbnN0YWxsQ29udGV4dERhdGEoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBk
YXRhKQogICAgIGNvbm5lY3Rpb24tPmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChkYXRhKTsK
IH0KIAotYm9vbCBTV1NlcnZlcjo6aW52b2tlUnVuU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcklm
TmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdURjo6RnVuY3Rp
b248dm9pZChib29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAoYXV0byogd29ya2VyID0gbV9y
dW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMuZ2V0KGlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGlm
ICh3b3JrZXItPmlzUnVubmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IGlmICh3b3JrZXItPmlzUnVubmluZygpKSB7CisgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8qIGNvbm5l
Y3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24oKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pIHsKKyAgICAgICAgbV9zZXJ2aWNl
V29ya2VyUnVuUmVxdWVzdHMuZW5zdXJlKGlkZW50aWZpZXIsIFsmXSB7CisgICAgICAgICAgICBy
ZXR1cm4gVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZChib29sKT4+IHsgfTsKKyAgICAgICAgfSku
aXRlcmF0b3ItPnZhbHVlLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICAvLyBOb2JvZHkgc2hvdWxkIGhhdmUgYSBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBmb3IgYSBTV1NlcnZlcldvcmtlciB0aGF0IGRvZXNuJ3QgZXhpc3QuCisgICAgY2Fs
bGJhY2socnVuU2VydmljZVdvcmtlcihpZGVudGlmaWVyKSk7Cit9CisKK2Jvb2wgU1dTZXJ2ZXI6
OnJ1blNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sK
ICAgICBhdXRvKiB3b3JrZXIgPSB3b3JrZXJCeUlEKGlkZW50aWZpZXIpOwotICAgIEFTU0VSVCh3
b3JrZXIpOworICAgIGlmICghd29ya2VyKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAv
LyBJZiB0aGUgcmVnaXN0cmF0aW9uIGZvciBhIHdvcmtpbmcgaGFzIGJlZW4gcmVtb3ZlZCB0aGVu
IHRoZSByZXF1ZXN0IHRvIHJ1bgogICAgIC8vIHRoZSB3b3JrZXIgaXMgbW9vdC4KICAgICBpZiAo
IWdldFJlZ2lzdHJhdGlvbih3b3JrZXItPnJlZ2lzdHJhdGlvbktleSgpKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMuYWRkKGlkZW50
aWZpZXIsICp3b3JrZXIpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9ydW5uaW5nT3JUZXJtaW5h
dGluZ1dvcmtlcnMuYWRkKGlkZW50aWZpZXIsICp3b3JrZXIpOworICAgIEFTU0VSVF9VTlVTRUQo
YWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisKICAgICB3b3JrZXItPnNldFN0YXRl
KFNXU2VydmVyV29ya2VyOjpTdGF0ZTo6UnVubmluZyk7CiAKICAgICBhdXRvKiBjb25uZWN0aW9u
ID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKCk7CiAgICAgQVNTRVJUKGNvbm5lY3Rpb24pOwogICAgIGNvbm5lY3Rpb24tPmluc3Rh
bGxTZXJ2aWNlV29ya2VyQ29udGV4dCh3b3JrZXItPmNvbnRleHREYXRhKCkpOwotICAgIAorCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNSwxMCArNTI5LDE0IEBAIHZvaWQgU1dTZXJ2ZXI6
OnRlcm1pbmF0ZVdvcmtlckludGVybmFsKFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIFRlcm1pbmF0
aW9uTW9kZSBtCiAgICAgfTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6d29ya2VyQ29udGV4dFRlcm1p
bmF0ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKK3ZvaWQgU1dTZXJ2ZXI6Om1hcmtBbGxXb3Jr
ZXJzQXNUZXJtaW5hdGVkKCkKIHsKLSAgICBBU1NFUlQod29ya2VyLmlzVGVybWluYXRpbmcoKSk7
CisgICAgd2hpbGUgKCFtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5pc0VtcHR5KCkpCisg
ICAgICAgIHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKG1fcnVubmluZ09yVGVybWluYXRpbmdXb3Jr
ZXJzLmJlZ2luKCktPnZhbHVlKTsKK30KIAordm9pZCBTV1NlcnZlcjo6d29ya2VyQ29udGV4dFRl
cm1pbmF0ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKK3sKICAgICB3b3JrZXIuc2V0U3RhdGUo
U1dTZXJ2ZXJXb3JrZXI6OlN0YXRlOjpOb3RSdW5uaW5nKTsKIAogICAgIC8vIEF0IHRoaXMgcG9p
bnQgaWYgbm8gcmVnaXN0cmF0aW9ucyBhcmUgcmVmZXJlbmNpbmcgdGhlIHdvcmtlciB0aGVuIGl0
IHdpbGwgYmUgZGVzdHJveWVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGQ3YmUzMTA0MDVjYTgyOTA0MDllNTg5MTRhNDlhODI2
OTIxNWQ4OTEuLmM5ZTMyNDE0YzBiOGVmNTY1Yzk0YzEwZDBlYzFhYzUwOWFhMTg2M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAg
LTE0MCw2ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNXU2Vy
dmVyV29ya2VyJik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTV1NlcnZlcldvcmtlciYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyV29ya2VyKiB3b3JrZXJCeUlEKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWFya0Fs
bFdvcmtlcnNBc1Rlcm1pbmF0ZWQoKTsKICAgICAKICAgICBDb25uZWN0aW9uKiBnZXRDb25uZWN0
aW9uKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gbV9j
b25uZWN0aW9ucy5nZXQoaWRlbnRpZmllcik7IH0KICAgICBTV09yaWdpblN0b3JlJiBvcmlnaW5T
dG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0KQEAgLTE2MCw3ICsxNjIsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
Q2xpZW50T3JpZ2luJiYsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSYmLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyPiYgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmln
aW4mLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcik7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGludm9rZVJ1blNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2sp
OwogCiAgICAgdm9pZCBzZXRDbGllbnRBY3RpdmVXb3JrZXIoU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlc29sdmVSZWdp
c3RyYXRpb25SZWFkeVJlcXVlc3RzKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CkBAIC0xODAsNiAr
MTgyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24oQ29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyUmVnaXN0cmF0aW9uKiBkb1JlZ2lzdHJh
dGlvbk1hdGNoaW5nKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBV
UkwmIGNsaWVudFVSTCk7CisgICAgYm9vbCBydW5TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKTsKIAogICAgIHZvaWQgaW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYpOwogCkBAIC0yMTYsNiArMjE5LDcgQEAgcHJpdmF0ZToKICAgICBV
bmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4gbV9vcmlnaW5TdG9yZTsKICAgICBSZWdpc3RyYXRpb25T
dG9yZSBtX3JlZ2lzdHJhdGlvblN0b3JlOwogICAgIERlcXVlPFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YT4gbV9wZW5kaW5nQ29udGV4dERhdGFzOworICAgIEhhc2hNYXA8U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+Pj4gbV9zZXJ2aWNlV29y
a2VyUnVuUmVxdWVzdHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDQzNDBiN2I3NTRhOWJjNzYzZjU2M2Yz
ODNjZGQwY2U1OGZiMTZjZTAuLjFmNjk4Y2Q1ZGEzMGU2OTc0NjAzYTkwNmQ4ZDQ1YmE5ZTAxMWZm
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xMTksOCAr
MTE5LDEzIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjp1cGRhdGVXb3JrZXJTdGF0ZUlu
Q2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHdvCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6c3RhcnRGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlcklkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucywgY29u
c3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZm9ybURhdGEpCiB7CiAgICAgLy8gSXQncyBwb3Nz
aWJsZSB0aGlzIHNwZWNpZmljIHdvcmtlciBjYW5ub3QgYmUgcmUtcnVuIChlLmcuIGl0cyByZWdp
c3RyYXRpb24gaGFzIGJlZW4gcmVtb3ZlZCkKLSAgICBpZiAoc2VydmljZVdvcmtlcklkZW50aWZp
ZXIgJiYgIXNlcnZlcigpLmludm9rZVJ1blNlcnZpY2VXb3JrZXIoKnNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSkKKyAgICBpZiAoc2VydmljZVdvcmtlcklkZW50aWZpZXIpIHsKKyAgICAgICAgc2Vy
dmVyKCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KCpzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgW2Nvbm5lY3Rpb25JZGVudGlmaWVyID0gaWRlbnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIs
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBmb3JtRGF0YV0oYm9v
bCBzdWNjZXNzKSB7CisgICAgICAgICAgICBpZiAoc3VjY2VzcykKKyAgICAgICAgICAgICAgICBz
ZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlN0YXJ0RmV0Y2ggeyBjb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9ybURhdGEgfSk7Cisg
ICAgICAgIH0pOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8gRklYTUU6IElmIHdl
IGRvbid0IGhhdmUgYSBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBoZXJlIHRoZW4gd2UgbmVlZCB0
byBjcmVhdGUgYW5kIHJ1biB0aGUgYXBwcm9wcmlhdGUgU2VydmljZSBXb3JrZXIsCiAgICAgLy8g
YnV0IGl0J3MgdW5jbGVhciB0aGF0IHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGhlcmUgdG8g
ZG8gdGhhdC4KQEAgLTEzMSwyMyArMTM2LDI1IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpzdGFydEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxTCiB2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJGcm9t
Q2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciBzb3VyY2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmIHNvdXJjZURh
dGEpCiB7CiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmljIHdvcmtlciBjYW5ub3Qg
YmUgcmUtcnVuIChlLmcuIGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4gcmVtb3ZlZCkKLSAgICBp
ZiAoIXNlcnZlcigpLmludm9rZVJ1blNlcnZpY2VXb3JrZXIoZGVzdGluYXRpb25JZGVudGlmaWVy
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckZyb21DbGllbnQgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50
aWZpZXIsIFdURk1vdmUoc291cmNlRGF0YSkgfSk7CisgICAgc2VydmVyKCkucnVuU2VydmljZVdv
cmtlcklmTmVjZXNzYXJ5KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgW2Rlc3RpbmF0aW9uSWRlbnRp
ZmllciwgbWVzc2FnZSwgc291cmNlSWRlbnRpZmllciwgc291cmNlRGF0YSA9IFdURk1vdmUoc291
cmNlRGF0YSldKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAgICAgIGlmIChzdWNjZXNzKQor
ICAgICAgICAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21DbGllbnQgeyBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUo
c291cmNlRGF0YSkgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyKQog
ewotICAgIC8vIEl0J3MgcG9zc2libGUgdGhpcyBzcGVjaWZpYyB3b3JrZXIgY2Fubm90IGJlIHJl
LXJ1biAoZS5nLiBpdHMgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIHJlbW92ZWQpCi0gICAgaWYgKCFz
ZXJ2ZXIoKS5pbnZva2VSdW5TZXJ2aWNlV29ya2VyKGRlc3RpbmF0aW9uSWRlbnRpZmllcikpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIGF1dG8qIHNvdXJjZVdvcmtlciA9IHNlcnZlcigpLndvcmtl
ckJ5SUQoc291cmNlSWRlbnRpZmllcik7CiAgICAgaWYgKCFzb3VyY2VXb3JrZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJGcm9tU2Vydmlj
ZVdvcmtlciB7IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlV29ya2VyLT5k
YXRhKCkgfSk7CisgICAgLy8gSXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmljIHdvcmtlciBjYW5u
b3QgYmUgcmUtcnVuIChlLmcuIGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4gcmVtb3ZlZCkKKyAg
ICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoZGVzdGluYXRpb25JZGVudGlm
aWVyLCBbZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBz
b3VyY2VEYXRhID0gc291cmNlV29ya2VyLT5kYXRhKCldKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7
CisgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBz
ZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyRnJvbVNlcnZpY2VXb3JrZXIgeyBkZXN0aW5h
dGlvbklkZW50aWZpZXIsIG1lc3NhZ2UsIFdURk1vdmUoc291cmNlRGF0YSkgfSk7CisgICAgfSk7
CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hSZXNwb25z
ZSh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IGI2NTA4NTNjNTU2
ZWY5MzZjMmJjOWI4YTUzYWRhNDdjNjBlMDEzZDkuLmEyZWVlNWVlOGM2YTljNjY2YjczYmY0NTY1
YjEwYWE5MGJlNTk5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAg
LTUyLDYgKzUyLDggQEAgcHVibGljOgogICAgIFdlYlNXU2VydmVyQ29ubmVjdGlvbihjb25zdCBX
ZWJTV1NlcnZlckNvbm5lY3Rpb24mKSA9IGRlbGV0ZTsKICAgICB+V2ViU1dTZXJ2ZXJDb25uZWN0
aW9uKCkgZmluYWw7CiAKKyAgICBJUEM6OkNvbm5lY3Rpb24mIGlwY0Nvbm5lY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnRDb25uZWN0aW9uLmdldCgpOyB9CisKICAgICB2b2lkIGRpc2Nv
bm5lY3RlZEZyb21XZWJQcm9jZXNzKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpOwpAQCAtOTMsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIElQQzo6
Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBmaW5hbCB7IHJldHVybiBtX2Nv
bnRlbnRDb25uZWN0aW9uLnB0cigpOyB9CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBmaW5hbCB7IHJldHVybiBpZGVudGlmaWVyKCkudG9VSW50NjQoKTsgfQogICAg
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgc2VuZFRvQ29udGV4dFByb2Nlc3MoVSYm
IG1lc3NhZ2UpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHN0YXRpYyB2b2lkIHNlbmRUb0Nv
bnRleHRQcm9jZXNzKFUmJiBtZXNzYWdlKTsKIAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29udGVudENvbm5lY3Rpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCmluZGV4IDJm
N2E1MDE1NTJkMTJmOTc5NjRkYTk5NzU2ZDhiMGM1NDA4ZjhhZWIuLjUxNDE1ZThmOTE1MTYyNmJm
ZGRiYmIwMTk2MmQ4YTFjZmY2ZDgzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCkBAIC04Niw4ICs4Niw3IEBAIHZvaWQgU3RvcmFnZVBy
b2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiAm
JiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPmlwY0Nvbm5lY3Rpb24oKSA9PSAmY29ubmVj
dGlvbikgewotICAgICAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25D
bG9zZWQoKTsKLSAgICAgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsK
KyAgICAgICAgY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbHNlCkBAIC05Niw2ICs5NSwzOSBAQCB2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgc3RvcFJ1bkxv
b3AoKTsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3ZvaWQgU3RvcmFnZVByb2Nl
c3M6OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKCkKK3sKKyAgICBpZiAoIW1f
c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBz
aG91bGRSZWxhdW5jaCA9IG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworCisgICAg
bV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xvc2VkKCk7CisgICAgbV9z
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byYgc3dT
ZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAgc3dTZXJ2ZXItPm1hcmtBbGxX
b3JrZXJzQXNUZXJtaW5hdGVkKCk7CisKKyAgICAvLyBSZWxhdW5jaCB0aGUgY29udGV4dCBwcm9j
ZXNzIGlmIG5lY2Vzc2FyeS4KKyAgICBpZiAoc2hvdWxkUmVsYXVuY2gpCisgICAgICAgIGNyZWF0
ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKK30KKworLy8gVGhlIHJ1bGUgaXMgdGhhdCB3
ZSBuZWVkIGEgY29udGV4dCBwcm9jZXNzIChhbmQgYSBjb25uZWN0aW9uIHRvIGl0KSBhcyBsb25n
IGFzIHdlIGhhdmUgU1dTZXJ2ZXJDb25uZWN0aW9ucyB0byByZWd1bGFyIFdlYlByb2Nlc3Nlcy4K
K2Jvb2wgU3RvcmFnZVByb2Nlc3M6Om5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpIGNv
bnN0Cit7CisgICAgaWYgKG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vIElmIHRoZSBsYXN0IFNXU2VydmVyQ29ubmVjdGlvbiBp
cyB0byB0aGUgY29udGV4dCBwcm9jZXNzLCB0aGVuIHdlIG5vIGxvbmdlciBuZWVkIHRoZSBjb250
ZXh0IGNvbm5lY3Rpb24uCisgICAgaWYgKG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5zaXplKCkgPT0g
MSAmJiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gJiYgJm1fc3dTZXJ2ZXJDb25uZWN0aW9u
cy5iZWdpbigpLT52YWx1ZS0+aXBjQ29ubmVjdGlvbigpID09IG1fc2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi0+aXBjQ29ubmVjdGlvbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVjb2Rl
cikKIHsKICAgICBpZiAobWVzc2FnZVJlY2VpdmVyTWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5l
Y3Rpb24sIGRlY29kZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
UHJvY2Vzcy5oCmluZGV4IDE3MWM3YTZlN2IwY2VkMDM0OGI0NGI0MzM1ZGMxYWE4NzNiZGU0YjEu
LjM0ODJlNzRmYWYzNzVkNjVhMjc4Nzk2NDk3NWRlNzBmY2JhYWZlNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKQEAgLTk4LDYgKzk4LDEwIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVN0b3JhZ2VQcm9jZXNzTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKyAgICB2b2lkIGNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKCk7CisjZW5k
aWYKKwogcHJpdmF0ZToKICAgICBTdG9yYWdlUHJvY2VzcygpOwogCkBAIC0xMzMsNiArMTM3LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQo
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9u
SWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbik7CiAgICAgV2ViU1dPcmlnaW5TdG9yZSYgc3dPcmlnaW5TdG9yZUZvclNlc3Np
b24oUEFMOjpTZXNzaW9uSUQpOworICAgIGJvb2wgbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKCkgY29uc3Q7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBW
ZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRleGVkRGF0YWJhc2VPcmlnaW5z
KGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDc1
NDgxOTI1MTFkZDA5NmU3MTRjMGY4YzJjMTcxYmNhODUxYTAzYTYuLjMyODJhMzQzMGZjNGNkMzNh
NDVjNjE4ZDZlYmNhYThiMDk3Zjk5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBA
IC0xMjAsOCArMTIwLDE3IEBAIHZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRp
ZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCit2b2lkIFN0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0
aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CisgICAgVU5VU0VE
X1BBUkFNKGNvbm5lY3Rpb24pOworCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlm
IChTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbigpICYmIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5nbG9iYWxTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uKCktPmlwY0Nvbm5lY3Rpb24oKSA9PSAmY29ubmVjdGlvbikgeworICAgICAg
ICAvLyBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIGV4aXRlZC4KKyAgICAgICAgU3RvcmFnZVByb2Nl
c3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKCk7Cisg
ICAgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAgICBhdXRvIGlk
YkNvbm5lY3Rpb25zID0gbV93ZWJJREJDb25uZWN0aW9uczsKICAgICBmb3IgKGF1dG8mIGNvbm5l
Y3Rpb24gOiBpZGJDb25uZWN0aW9ucy52YWx1ZXMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IDVmMjBkMTI1NTA3MzNiMGZkZjAyZDJiNTFlMzU3
ZTYwNjI1MDA5M2QuLmFmODRiZjI2YTBkM2Q4YjVmZGNkNjk5ZGZjNDJkNjRlNmJhZmE5MTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtNjE0LDYg
KzYxNCwxMSBAQCB2b2lkIFdLQ29udGV4dFRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKFdLQ29udGV4
dFJlZiBjb250ZXh0KQogICAgIHRvSW1wbChjb250ZXh0KS0+dGVybWluYXRlTmV0d29ya1Byb2Nl
c3MoKTsKIH0KIAordm9pZCBXS0NvbnRleHRUZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyhX
S0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICB0b0ltcGwoY29udGV4dCktPnRlcm1pbmF0ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzKCk7Cit9CisKIFByb2Nlc3NJRCBXS0NvbnRleHRHZXROZXR3b3Jr
UHJvY2Vzc0lkZW50aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7CiAgICAgcmV0dXJu
IHRvSW1wbChjb250ZXh0UmVmKS0+bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKaW5kZXggMmRl
MTFkZWVjNTJkN2UzYWVmNzJkOTEyNGY0YjYzNjFjNTVhMmY1Zi4uYTBmYzFjMjNkYjgyY2QzNDY3
ZjMxZWY4ZTZlZDg4Zjk3ZjVkYzZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaApAQCAtODksNiArODksNyBAQCBXS19FWFBPUlQgdm9p
ZCBXS0NvbnRleHRXYXJtSW5pdGlhbFByb2Nlc3MoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0VXNlc05ldHdvcmtQcm9jZXNzKFdLQ29udGV4dFJlZiwg
Ym9vbCk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNz
KFdLQ29udGV4dFJlZik7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRUZXJtaW5hdGVTZXJ2aWNl
V29ya2VyUHJvY2VzcyhXS0NvbnRleHRSZWYpOwogCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRT
ZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldFRlc3RpbmcoV0tDb250ZXh0UmVm
LCBib29sKTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEFsbG93c0FueVNTTENlcnRpZmlj
YXRlRm9yU2VydmljZVdvcmtlclRlc3RpbmcoV0tDb250ZXh0UmVmLCBib29sKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXgg
MGNjOTg4MDM0MWRjZDUyMTQ5MWI3YzFjZWNhNGYwODlhOTBhYzEyZC4uN2M5NDdiMDQzZWYxYzIx
ZWY4YzkwZTNjY2M3ZjBhN2VmODNhOWRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTQxMiw2ICs0MTIsMTEgQEAgLSAo
dm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3MKICAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0
ZU5ldHdvcmtQcm9jZXNzKCk7CiB9CiAKKy0gKHZvaWQpX3Rlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzCit7CisgICAgX3Byb2Nlc3NQb29sLT50ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
cygpOworfQorCiAtIChwaWRfdClfbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyCiB7CiAgICAgcmV0
dXJuIF9wcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3NJZGVudGlmaWVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oCmluZGV4IDBkYzEyODY4Y2I3ZTUzMDRiYWU1YjZhYTg1NzA2N2Q0ZTdiODBiOTUuLmFkZGU3
YzFiODY3YmM1NzgyNGFlMGQ5Mjk1ZWViNDEzNWVlMzg0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBA
IC03NCw2ICs3NCw3IEBACiAvLyBUZXN0IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgb25seSB3aGls
ZSBubyB3ZWIgY29udGVudCBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcuCiAtICh2b2lkKV90ZXJtaW5h
dGVTdG9yYWdlUHJvY2VzczsKIC0gKHZvaWQpX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzOworLSAo
dm9pZClfdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3M7CiAKIC8vIFRlc3Qgb25seS4KIC0g
KHBpZF90KV9uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
MTAuMTMpLCBpb3MoMTEuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCmluZGV4IGFjN2NiYmNmMWRmMjRmYzNlMWUzNDY3NDY5YmNlMWEzMmRjYjk2OWUuLjIw
OTk5Y2IzNzcxNjZiOWExZWYzYzkwZjFlMjg3ZGZkZDY2NTE3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTExNSw2ICsxMTUsOCBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExl
YWtDb3VudGVyLCBwcm9jZXNzUG9vbENvdW50ZXIsICgiV2ViUHJvY2Vzc1Bvb2wiKSk7CiAKK3N0
YXRpYyBjb25zdCBTZWNvbmRzIHNlcnZpY2VXb3JrZXJUZXJtaW5hdGlvbkRlbGF5IHsgNV9zIH07
CisKIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUxpc3RlbmVySWRlbnRpZmllcigpCiB7CiAgICAg
c3RhdGljIHVpbnQ2NF90IG5leHRJZGVudGlmaWVyID0gMTsKQEAgLTI0NCw2ICsyNDYsNyBAQCBX
ZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkRm9y
UGFnZUNvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyB1cGRhdGVQcm9jZXNzU3VwcHJl
c3Npb25TdGF0ZSgpOyB9KQogICAgICwgbV9oaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFz
ZXNDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsgbV9oaWRkZW5QYWdlVGhyb3R0bGlu
Z1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOyB9KQogICAgICwgbV9oaWRkZW5QYWdlVGhyb3R0bGlu
Z1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlByb2Nlc3NQb29sOjp1cGRhdGVIaWRk
ZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZUxpbWl0KQorICAgICwgbV9zZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Rlcm1pbmF0aW9uVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUHJvY2Vz
c1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKQogewogICAgIGlmIChtX2NvbmZp
Z3VyYXRpb24tPnNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUoKSkKICAgICAgICAgbV93ZWJzaXRl
RGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdhY3kobGVnYWN5V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25maWd1cmF0aW9uKSk7CkBAIC02OTcsNiAr
NzAwLDEwIEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlBy
b2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhCiAgICAgYXV0byYgcHJvY2VzcyA9IHBy
b2Nlc3NQcm94eS5nZXQoKTsKICAgICBpbml0aWFsaXplTmV3V2ViUHJvY2Vzcyhwcm9jZXNzLCB3
ZWJzaXRlRGF0YVN0b3JlKTsKICAgICBtX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShwcm9jZXNz
UHJveHkpKTsKKworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25UaW1l
ci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25U
aW1lci5zdG9wKCk7CisKICAgICByZXR1cm4gcHJvY2VzczsKIH0KIApAQCAtOTQzLDggKzk1MCw4
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlByb2Nlc3NQcm94
eSogcHJvY2VzcykKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIGJldHRlciB0aGFuIHRoaXMu
IEZvciBub3csIHdlIGp1c3QgZGVzdHJveSB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzCiAgICAg
Ly8gd2hlbmV2ZXIgdGhlcmUgaXMgbm8gcmVndWxhciBXZWJDb250ZW50IHByb2Nlc3MgcmVtYWlu
aW5nLgogICAgIGlmIChtX3Byb2Nlc3Nlcy5zaXplKCkgPT0gMSAmJiBtX3Byb2Nlc3Nlc1swXSA9
PSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzKSB7Ci0gICAgICAgIG1fc2VydmljZVdvcmtlclByb2Nl
c3MgPSBudWxscHRyOwotICAgICAgICBtX3Byb2Nlc3Nlcy5jbGVhcigpOworICAgICAgICBpZiAo
IW1fc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAg
ICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25UaW1lci5zdGFydE9uZVNo
b3Qoc2VydmljZVdvcmtlclRlcm1pbmF0aW9uRGVsYXkpOwogICAgIH0KICNlbmRpZgogfQpAQCAt
MTQwOCw2ICsxNDE1LDE4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZU5ldHdvcmtQ
cm9jZXNzKCkKICAgICBtX2RpZE5ldHdvcmtQcm9jZXNzQ3Jhc2ggPSB0cnVlOwogfQogCit2b2lk
IFdlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpCit7CisjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJvY2VzcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzcy0+cmVxdWVzdFRl
cm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6UmVxdWVzdGVkQnlDbGllbnQpOwor
ICAgIEFTU0VSVCghbV9wcm9jZXNzZXMuY29udGFpbnMobV9zZXJ2aWNlV29ya2VyUHJvY2Vzcykp
OworICAgIEFTU0VSVCghbV9zZXJ2aWNlV29ya2VyUHJvY2Vzcyk7CisjZW5kaWYKK30KKwogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6c3luY05ldHdvcmtQcm9jZXNzQ29va2llcygpCiB7CiAgICAgc2Vu
ZFN5bmNUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U3luY0Fs
bENvb2tpZXMoKSwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTeW5jQWxsQ29va2llczo6UmVw
bHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA1ZjE0
NTAxNjUyNDgxMWM2NTIyYTQxYjI3Nzc0ZWQzMmNlOTAyNjMzLi5iY2QzMTY1NDU3NjE1ODZkYTA5
ZDJlYWJkMzE2MjhhOTE1MWE0YTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKQEAgLTI2Miw2ICsyNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckNhY2hl
ZENyZWRlbnRpYWxzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVTdG9yYWdlUHJvY2VzcygpOwogICAg
IHZvaWQgdGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKKyAgICB2b2lkIHRlcm1pbmF0ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzKCk7CiAKICAgICB2b2lkIHN5bmNOZXR3b3JrUHJvY2Vzc0Nvb2tpZXMo
KTsKIApAQCAtNjMzLDYgKzYzNCw3IEBAIHByaXZhdGU6CiAgICAgUGF0aHMgbV9yZXNvbHZlZFBh
dGhzOwogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJQYWdlUHJveHkq
Pj4gbV9zZXNzaW9uVG9QYWdlc01hcDsKKyAgICBSdW5Mb29wOjpUaW1lcjxXZWJQcm9jZXNzUG9v
bD4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uVGltZXI7CiB9OwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDBiNmM1MmNiZDA2Y2NjOGE2OTVjNzlmNWJlMTRmODY5NTU0ODhiMzYuLmZmZTA5
ZGE5ZmMzZjBhNzg4N2I3YTIyNWI2NTRiNDI2YTNiYWZhZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0xMi0w
NiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBi
ZSBhYmxlIHRvIHJlY292ZXIgYWZ0ZXIgYSBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIGNyYXNoCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA0NzcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdFJ1
bm5lciBBUEkgdG8gdGVybWluYXRlIHRoZSBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzLgorCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2Vy
UHJvY2Vzcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJv
Y2Vzcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RS
OjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgor
CiAyMDE3LTEyLTA2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAg
ICAgIEV4Y2x1ZGUgYW5vdGhlciBsZWFrIGNhbGxzdGFjay4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCmluZGV4IGE4YmM3Y2JmMjMwYWMzOTJkYzk5YzEyYjVmYzE2MjFhNDIzZTA1MDkuLjRiYmRl
YzE5NTkyNmQxNWFiOGYwODQxOGJiMzQ2ZTJmNTlhMjhmYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbApAQCAtMzA0LDYgKzMwNCw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2
b2lkIHNldFdlYlJUQ0xlZ2FjeUFQSUVuYWJsZWQoYm9vbGVhbiB2YWx1ZSk7CiAKICAgICB2b2lk
IHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29y
a2VyUHJvY2VzcygpOwogCiAgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMob2Jq
ZWN0IGNhbGxiYWNrKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYWE5OGQwY2M1ZGYxZDFhM2ZmYmViZDdiZTE5
ODUzNmZlMWEwNWRiMS4uNmEzNTUwMWNhZGMzNDM4ZTRiMWZmMWMxY2M2MGY0ZGY1NGY5MzQyNCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCkBAIC0xMTM4LDYgKzExMzgsMTIgQEAgdm9pZCBUZXN0UnVubmVyOjp0ZXJtaW5h
dGVOZXR3b3JrUHJvY2VzcygpCiAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRC
dW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVs
bHB0cik7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nl
c3MoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVGVybWluYXRlU2VydmljZVdvcmtlclBy
b2Nlc3MiKSk7CisgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNp
bmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7Cit9
CisKIHN0YXRpYyB1bnNpZ25lZCBuZXh0VUlTY3JpcHRDYWxsYmFja0lEKCkKIHsKICAgICBzdGF0
aWMgdW5zaWduZWQgY2FsbGJhY2tJRCA9IEZpcnN0VUlTY3JpcHRDYWxsYmFja0lEOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRl
eCBkNjQ0OTQzMTdjYTBlYTMxYjk0MjRkZWFkMGI2NDA0YjE1NmU1MmYxLi42MDQwYTFiYmFjMTBl
NzdhMGMwNjY3NzkwYTA5YTNmNTJmYWY3ZDQ1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDAyLDYgKzQwMiw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzKEpTVmFsdWVSZWYpOwogCiAgICAgdm9p
ZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOworICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdv
cmtlclByb2Nlc3MoKTsKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKEpT
VmFsdWVSZWYpOwogICAgIHZvaWQgY2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0Nh
bGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4
IDI3MDAwNDUzMzliZWJkMTE1YmZjMDFhZThkOTZlMDg3MzRhMmIxMzcuLjM0YmFlMjYzNDA3NDli
Yzg1MzIzY2JjZjkwYTU1MGEzNjljYmEyMGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCkBAIC0yMjc0LDYgKzIyNzQsMTEgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKQogICAgIFdLQ29udGV4dFRlcm1pbmF0ZU5ldHdv
cmtQcm9jZXNzKHBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6
dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKQoreworICAgIFdLQ29udGV4dFRlcm1pbmF0
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHBsYXRmb3JtQ29udGV4dCgpKTsKK30KKwogI2lmICFQTEFU
Rk9STShDT0NPQSkKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtV2lsbFJ1blRlc3QoY29u
c3QgVGVzdEludm9jYXRpb24mKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oCmluZGV4IGIxYWM0ZjcyNTBhOGYwMWNlODFhZjA1YTcwMGU2OTBjNWFiZTkzYzkuLmFkNWRi
NmJmZTZhNzk5NGQ3Yzk2ZjhjOGMzMzIxNmUxYTE0ZDc2NzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTE4OCw2ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRPcGVuUGFuZWxGaWxlVVJMcyhXS0FycmF5UmVmIGZpbGVVUkxzKSB7IG1fb3BlblBhbmVs
RmlsZVVSTHMgPSBmaWxlVVJMczsgfQogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2Vz
cygpOworICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKTsKIAogICAgIHZv
aWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggNzUzNzJlN2JmZDgxYWQ3OTYzZDc1MzExNzgxY2Uz
OWVmMjJmYjMxOC4uZjU0NjZkOGRiY2Q2YWIzNTE5NWFhYzY1NTczZTA4ZGIzMGFlYjlkNiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTc0NCw2ICs3NDQs
MTIgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiVGVybWlu
YXRlU2VydmljZVdvcmtlclByb2Nlc3MiKSkgeworICAgICAgICBBU1NFUlQoIW1lc3NhZ2VCb2R5
KTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVNlcnZpY2VX
b3JrZXJQcm9jZXNzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJ1blVJUHJvY2Vzc1NjcmlwdCIp
KSB7CiAgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0
aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKICAgICAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHNjcmlwdEtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygiU2NyaXB0IikpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg4ODhjMDQ4YTEwMzllMjFhYjU0YjhiOGEwN2Q5
NjY0MGMyYmQ5OTQuLjhjZDNlYTIwOTE3YjJkOGQ3MTk4NzkwOWNjZTNlOTEyYWJkZDM0OGQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0xMi0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIHJlY292ZXIgYWZ0ZXIgYSBT
ZXJ2aWNlIFdvcmtlciBwcm9jZXNzIGNyYXNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODA0NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNz
LWNyYXNoLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5odHRwcy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5qczogQWRkZWQuCisKIDIwMTct
MTItMDYgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGp1c3Rl
ZCBleHBlY3RhdGlvbnMgZm9yIGluc3BlY3Rvci93b3JrZXIvcmVzb3VyY2VzLWluLXdvcmtlci5o
dG1sLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5odHRwcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9wb3N0bWVzc2FnZS1hZnRlci1z
dy1wcm9jZXNzLWNyYXNoLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDczNTI0NzQ1
NWI2M2Y3ZDliOWM3OGY1NGUzNTAxZDZmNDQxNzljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJv
Y2Vzcy1jcmFzaC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACisqIFNlbmRpbmcg
J01lc3NhZ2UgMScgdG8gU2VydmljZSBXb3JrZXIKK1BBU1M6IENsaWVudCByZWNlaXZlZCBtZXNz
YWdlIGZyb20gc2VydmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0Mwor
UEFTUzogU2VydmljZSB3b3JrZXIgcmVjZWl2ZWQgbWVzc2FnZSAnTWVzc2FnZSAxJyBmcm9tIG9y
aWdpbiAnaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MycKKyogU2ltdWxhdGluZyBTZXJ2aWNlIFdvcmtl
ciBwcm9jZXNzIGNyYXNoCisqIFNlbmRpbmcgJ01lc3NhZ2UgMicgdG8gU2VydmljZSBXb3JrZXIK
KyogU2VuZGluZyAnTWVzc2FnZSAzJyB0byBTZXJ2aWNlIFdvcmtlcgorUEFTUzogQ2xpZW50IHJl
Y2VpdmVkIG1lc3NhZ2UgZnJvbSBzZXJ2aWNlIHdvcmtlciwgb3JpZ2luOiBodHRwczovLzEyNy4w
LjAuMTo4NDQzCitQQVNTOiBTZXJ2aWNlIHdvcmtlciByZWNlaXZlZCBtZXNzYWdlICdNZXNzYWdl
IDInIGZyb20gb3JpZ2luICdodHRwczovLzEyNy4wLjAuMTo4NDQzJworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9wb3N0bWVzc2FnZS1hZnRlci1z
dy1wcm9jZXNzLWNyYXNoLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmh0dHBzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmU2MDczZGMwMWMxMzFhMWE4YzM5MmJhYzJmMzI2N2U3YTEwMGFjMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Bv
c3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMuaHRtbApAQCAtMCwwICsxLDkg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3N3LXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Bv
c3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2Ut
YWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYmI1MWUyNzVlZTAyYTc5ZDk3
NWY5ZTA2MTY1NTQ2YjkxNWQ5MzI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXBy
b2Nlc3MtY3Jhc2guanMKQEAgLTAsMCArMSwzMSBAQAordmFyIG1lc3NhZ2VOdW1iZXIgPSAxOwor
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgbG9nKCJQQVNTOiBDbGllbnQgcmVjZWl2ZWQgbWVzc2FnZSBmcm9t
IHNlcnZpY2Ugd29ya2VyLCBvcmlnaW46ICIgKyBldmVudC5vcmlnaW4pOworICAgIGxvZyhldmVu
dC5kYXRhKTsKKyAgICBpZiAobWVzc2FnZU51bWJlciA9PSAxKSB7CisgICAgICAgIGxvZygiKiBT
aW11bGF0aW5nIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgY3Jhc2giKTsKKyAgICAgICAgdGVzdFJ1
bm5lci50ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpOworICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbG9nKCIqIFNlbmRpbmcgJ01lc3NhZ2UgMicgdG8g
U2VydmljZSBXb3JrZXIiKTsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgi
TWVzc2FnZSAyIik7CisgICAgICAgICAgICBtZXNzYWdlTnVtYmVyKys7CisgICAgICAgICAgICBs
b2coIiogU2VuZGluZyAnTWVzc2FnZSAzJyB0byBTZXJ2aWNlIFdvcmtlciIpOworICAgICAgICAg
ICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJNZXNzYWdlIDMiKTsKKyAgICAgICAgICAgIG1l
c3NhZ2VOdW1iZXIrKzsKKyAgICAgICAgICAgIGhhbmRsZSA9IHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IHJlY2VpdmUgbWVzc2FnZSBm
cm9tIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgYWZ0ZXIgdGhlIGNyYXNoIik7CisgICAgICAgICAg
ICAgICAgZmluaXNoU1dUZXN0KCk7CisgICAgICAgICAgICB9LCAxMDAwKTsKKyAgICAgICAgfSwg
MCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1lc3NhZ2VOdW1iZXIgPT0gMykg
eworICAgICAgICBjbGVhclRpbWVvdXQoaGFuZGxlKTsKKyAgICAgICAgZmluaXNoU1dUZXN0KCk7
CisgICAgfQorfSk7CisKK25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJj
ZXMvcG9zdG1lc3NhZ2UtZWNoby13b3JrZXIuanMiLCB7IH0pLnRoZW4oZnVuY3Rpb24ocmVnaXN0
cmF0aW9uKSB7CisgICAgbG9nKCIqIFNlbmRpbmcgJ01lc3NhZ2UgMScgdG8gU2VydmljZSBXb3Jr
ZXIiKTsKKyAgICByZWdpc3RyYXRpb24uaW5zdGFsbGluZy5wb3N0TWVzc2FnZSgiTWVzc2FnZSAx
Iik7Cit9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328679</attachid>
            <date>2017-12-06 22:24:53 -0800</date>
            <delta_ts>2017-12-06 22:31:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180477-20171206222452.patch</filename>
            <type>text/plain</type>
            <size>39746</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY3MjBiOTU0MWFkMzhj
N2E5ODQ2NzY5MDEzNmMyMGM3NzZjODM0MC4uZTUwMGEzMzhkOTczMzFiNTdlMTI0MmRiOGI1MmU3
NzU1OTg3YjFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTEyLTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc2hvdWxkIGJlIGFibGUg
dG8gcmVjb3ZlciBhZnRlciBhIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgY3Jhc2gKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDQ3NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMu
aHRtbAorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0
ZWQpOgorICAgICAgICBPbmNlIHRoZSBjb25uZWN0aW9uIHdpdGggdGhlIGNvbnRleHQgcHJvY2Vz
cyBpcyBlc3RhYmxpc2hlZCwgcHJvY2VzcyAicnVuIHNlcnZpY2Ugd29ya2VyIgorICAgICAgICBy
ZXF1ZXN0cyB0aGF0IG9jdXJyZWQgd2hpbGUgZXN0YWJsaXNoaW5nIHRoZSBjb25uZWN0aW9uLgor
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5
KToKKyAgICAgICAgVGFrZSBpbiBhIGxhbWJkYSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGFm
dGVyIHRoZSAicnVuIHNlcnZpY2Ugd29ya2VyIiByZXF1ZXN0CisgICAgICAgIGlzIHByb2Nlc3Nl
ZC4gV2UgdXNlZCB0byBhc3NlcnQgdGhhdCB3ZSBoYWQgYSBjb25uZWN0aW9uIHRvIHRoZSBjb250
ZXh0IHByb2Nlc3MuCisgICAgICAgIFdlIG5vdyB3YWl0IGZvciB0aGUgY29ubmVjdGlvbiB0byBi
ZSBlc3RhYmxpc2hlZCB0byBwcm9jZXNzIHRoZSByZXF1ZXN0LCB0aHVzCisgICAgICAgIG1ha2lu
ZyB0aGUgb3BlcmF0aW9uIGFzeW5jaHJvbm91cy4KKworICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXI6OnJ1blNlcnZpY2VXb3JrZXIpOgorICAgICAgICBTcGxpdCBzb21lIGxvZ2ljIG91dCBvZiBy
dW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoKSB0byByZXVzZSBpbiBzZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uQ3JlYXRlZCgpLgorCisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6bWFya0Fs
bFdvcmtlcnNBc1Rlcm1pbmF0ZWQpOgorICAgICAgICBBZGQgbWV0aG9kIHRvIG1hcmsgYWxsIHNl
cnZpY2Ugd29ya2VycyBhcyB0ZXJtaW5hdGVkLiBUaGlzIGlzIGNhbGxlZCB3aGVuIHRoZSBTZXJ2
aWNlCisgICAgICAgIFdvcmtlciBwcm9jZXNzIGNyYXNoZXMuCisKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisKIDIwMTctMTItMDYgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgbm9kZXMgZnJvbSBBWE9iamVjdENh
Y2hlIHdoZW4gdGhlIGFzc29jaWF0ZWQgc3ViZnJhbWUgZG9jdW1lbnQgaXMgZ2V0dGluZyBkZXN0
cm95ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDQ4ZGYzOTM4ZjdlYzY0YzkxYzEyNThlYjA1MzlkNjA5MTgwYTQ5
N2MuLmM5MmE2MmQ4NmI0NGQxZDlmZTE5ZDBmNzk0MWQ0OGFiODAzMWNmNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMTctMTItMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBXZSBzaG91bGQgYmUgYWJsZSB0byByZWNvdmVyIGFmdGVyIGEgU2Vydmlj
ZSBXb3JrZXIgcHJvY2VzcyBjcmFzaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgwNDc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6
c3RhcnRGZXRjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJGcm9tQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21TZXJ2aWNl
V29ya2VyKToKKyAgICAgICAgVXBkYXRlIGNhbGxzIHRvIFNXU2VydmVyOjpydW5TZXJ2aWNlV29y
a2VySWZOZWNlc3NhcnkoKSB0aGF0IHRoYXQgaXQgaXMgYXN5bmNocm9ub3VzCisgICAgICAgIGFu
ZCB0YWtlcyBpbiBhIGxhbWJkYS4KKworICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6aXBjQ29ubmVjdGlvbiBjb25zdCk6CisgICAgICAgIEFkZCBnZXR0ZXIg
Zm9yIHRoZSB1bmRlcmx5aW5nIElQQyBjb25uZWN0aW9uLgorCisgICAgICAgICogU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vz
czo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6Y29ubmVjdGlv
blRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQpOgorICAgICAgICBNb3ZlIHNvbWUgY29kZSB0byBj
b25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3NlZCgpIHRvIGF2b2lkIGR1cGxpY2F0aW9u
LgorICAgICAgICBBbHNvLCByZWxhdW5jaCB0aGUgU2VydmljZSBXb3JrZXIgcHJvY2VzcyBpZiBp
dCBoYXMgZXhpdGVkIGJ1dCB3ZSBzdGlsbAorICAgICAgICBoYXZlIFNXU2VydmVyIGNvbm5lY3Rp
b25zIHRvIHJlZ3VsYXIgV2ViIFByb2Nlc3Nlcy4KKworICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
UHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIGNvbnN0KToKKyAgICAgICAg
VXRpbGl0eSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgd2Ugc3RpbGwgbmVlZCB0aGUgc2Vydmlj
ZSB3b3JrZXIgcHJvY2Vzcy4KKyAgICAgICAgVGhlIGN1cnJlbnQgcnVsZSBpcyB0aGF0IHdlIG5l
ZWQgdGhlIHNlcnZpY2Ugd29ya2VyIChha2EgImNvbnRleHQiKSBwcm9jZXNzCisgICAgICAgIGlm
IHdlIHN0aWxsIGhhdmUgU1dTZXJ2ZXIgY29ubmVjdGlvbnMgdG8gcmVndWxhciBXZWIgUHJvY2Vz
c2VzLgorCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaDoKKworICAg
ICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3Nl
KToKKyAgICAgICAgSWYgZGlkQ2xvc2UoKSBpcyBjYWxsZWQgZm9yIHRoZSBjb25uZWN0aW9uIHRv
IHRoZSBzZXJ2aWNlIHdvcmtlciBjb250ZXh0LAorICAgICAgICBsZXQgdGhlIFN0b3JhZ2VQcm9j
ZXNzIGtub3cgc28gdGhhdCBpdCBjYW4gY2xlYXIgaXRzIHN0YXRlIGFuZCByZWxhdW5jaAorICAg
ICAgICB0aGUgcHJvY2VzcyBpZiBuZWNlc3NhcnkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0LmNwcDoKKyAgICAgICAgKFdLQ29udGV4dFRlcm1pbmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAg
ICAgKC1bV0tQcm9jZXNzUG9vbCBfdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3NdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAg
ICAgIEFkZCBTUEkgdG8gdGVybWluYXRlIHRoZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
bV9zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uVGltZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgIFdlIHVzZWQgdG8gc2h1dGRvd24g
dGhlIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyByaWdodCBhd2F5IGFzIHNvb24gYXMgdGhlIGxhc3Qg
cmVndWxhcgorICAgICAgICBXZWJQcm9jZXNzIHdhcyBnb25lLiBXZSBub3cgZ2l2ZSBpdCBhIGdy
YWNlIHBlcmlvZCBvZiA1IHNlY29uZHMgaW4gY2FzZSBhIG5ldworICAgICAgICBXZWJQcm9jZXNz
IGdldHMgbGF1bmNoZWQgc2hvcnRseSBhZnRlci4KKwogMjAxNy0xMi0wNiAgSmVmZiBNaWxsZXIg
IDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAgICAgLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGNv
cHlXaXRoWm9uZV0gZG9lc24ndCBjb3B5IF9ncm91cElkZW50aWZpZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggYmFmYzY0
YzQ4M2U5MDNkY2U2YTdiZjQ3ZDdhNTZkZTIzMWNkYTdhZC4uYTFlYzAyN2VkM2IwZTRjYTgxNGE3
ZDAxZDFkNjkyZGJkMTRiZDA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTQyMSwxMSArNDIxLDE5IEBAIHZvaWQgU1dT
ZXJ2ZXI6OnVwZGF0ZVdvcmtlcihDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyJiBqCiAKIHZvaWQgU1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25DcmVhdGVkKCkKIHsKLSAgICBBU1NFUlQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpn
bG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkpOwotICAgIGZvciAoYXV0byYgZGF0YSA6
IG1fcGVuZGluZ0NvbnRleHREYXRhcykKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7Cisg
ICAgQVNTRVJUKGNvbm5lY3Rpb24pOworCisgICAgYXV0byBwZW5kaW5nQ29udGV4dERhdGFzID0g
V1RGTW92ZShtX3BlbmRpbmdDb250ZXh0RGF0YXMpOworICAgIGZvciAoYXV0byYgZGF0YSA6IHBl
bmRpbmdDb250ZXh0RGF0YXMpCiAgICAgICAgIGluc3RhbGxDb250ZXh0RGF0YShkYXRhKTsKLSAg
ICAKLSAgICBtX3BlbmRpbmdDb250ZXh0RGF0YXMuY2xlYXIoKTsKKworICAgIGF1dG8gc2Vydmlj
ZVdvcmtlclJ1blJlcXVlc3RzID0gV1RGTW92ZShtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0cyk7
CisgICAgZm9yIChhdXRvJiBpdGVtIDogc2VydmljZVdvcmtlclJ1blJlcXVlc3RzKSB7CisgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IHJ1blNlcnZpY2VXb3JrZXIoaXRlbS5rZXkpOworICAgICAgICBm
b3IgKGF1dG8mIGNhbGxiYWNrIDogaXRlbS52YWx1ZSkKKyAgICAgICAgICAgIGNhbGxiYWNrKHN1
Y2Nlc3MsICpjb25uZWN0aW9uKTsKKyAgICB9CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6Omluc3RhbGxD
b250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCkBAIC00NDYs
MjkgKzQ1NCw0NyBAQCB2b2lkIFNXU2VydmVyOjppbnN0YWxsQ29udGV4dERhdGEoY29uc3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQogICAgIGNvbm5lY3Rpb24tPmluc3RhbGxTZXJ2
aWNlV29ya2VyQ29udGV4dChkYXRhKTsKIH0KIAotYm9vbCBTV1NlcnZlcjo6aW52b2tlUnVuU2Vy
dmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQordm9pZCBTV1Nl
cnZlcjo6cnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjayYmIGNhbGxiYWNrKQogeworICAg
IGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKICAgICBpZiAoYXV0byogd29ya2VyID0gbV9ydW5u
aW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMuZ2V0KGlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGlmICh3
b3JrZXItPmlzUnVubmluZygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlm
ICh3b3JrZXItPmlzUnVubmluZygpKSB7CisgICAgICAgICAgICBBU1NFUlQoY29ubmVjdGlvbik7
CisgICAgICAgICAgICBjYWxsYmFjayh0cnVlLCAqY29ubmVjdGlvbik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWNvbm5lY3Rpb24pIHsKKyAgICAg
ICAgbV9zZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMuZW5zdXJlKGlkZW50aWZpZXIsIFsmXSB7Cisg
ICAgICAgICAgICByZXR1cm4gVmVjdG9yPFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjaz4geyB9Owor
ICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIE5vYm9keSBzaG91bGQgaGF2ZSBhIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGZvciBhIFNXU2VydmVyV29ya2VyIHRoYXQgZG9lc24ndCBleGlz
dC4KKyAgICBjYWxsYmFjayhydW5TZXJ2aWNlV29ya2VyKGlkZW50aWZpZXIpLCAqY29ubmVjdGlv
bik7Cit9CisKK2Jvb2wgU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKK3sKICAgICBhdXRvKiB3b3JrZXIgPSB3b3JrZXJCeUlEKGlk
ZW50aWZpZXIpOwotICAgIEFTU0VSVCh3b3JrZXIpOworICAgIGlmICghd29ya2VyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBJZiB0aGUgcmVnaXN0cmF0aW9uIGZvciBhIHdvcmtp
bmcgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIHRoZSByZXF1ZXN0IHRvIHJ1bgogICAgIC8vIHRoZSB3
b3JrZXIgaXMgbW9vdC4KICAgICBpZiAoIWdldFJlZ2lzdHJhdGlvbih3b3JrZXItPnJlZ2lzdHJh
dGlvbktleSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9ydW5uaW5nT3JUZXJt
aW5hdGluZ1dvcmtlcnMuYWRkKGlkZW50aWZpZXIsICp3b3JrZXIpOworICAgIGF1dG8gYWRkUmVz
dWx0ID0gbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMuYWRkKGlkZW50aWZpZXIsICp3b3Jr
ZXIpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7
CisKICAgICB3b3JrZXItPnNldFN0YXRlKFNXU2VydmVyV29ya2VyOjpTdGF0ZTo6UnVubmluZyk7
CiAKICAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpn
bG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CiAgICAgQVNTRVJUKGNvbm5lY3Rpb24p
OwogICAgIGNvbm5lY3Rpb24tPmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dCh3b3JrZXItPmNv
bnRleHREYXRhKCkpOwotICAgIAorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUwNSwxMCAr
NTMxLDE0IEBAIHZvaWQgU1dTZXJ2ZXI6OnRlcm1pbmF0ZVdvcmtlckludGVybmFsKFNXU2VydmVy
V29ya2VyJiB3b3JrZXIsIFRlcm1pbmF0aW9uTW9kZSBtCiAgICAgfTsKIH0KIAotdm9pZCBTV1Nl
cnZlcjo6d29ya2VyQ29udGV4dFRlcm1pbmF0ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKK3Zv
aWQgU1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzQXNUZXJtaW5hdGVkKCkKIHsKLSAgICBBU1NFUlQo
d29ya2VyLmlzVGVybWluYXRpbmcoKSk7CisgICAgd2hpbGUgKCFtX3J1bm5pbmdPclRlcm1pbmF0
aW5nV29ya2Vycy5pc0VtcHR5KCkpCisgICAgICAgIHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKG1f
cnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmJlZ2luKCktPnZhbHVlKTsKK30KIAordm9pZCBT
V1NlcnZlcjo6d29ya2VyQ29udGV4dFRlcm1pbmF0ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikK
K3sKICAgICB3b3JrZXIuc2V0U3RhdGUoU1dTZXJ2ZXJXb3JrZXI6OlN0YXRlOjpOb3RSdW5uaW5n
KTsKIAogICAgIC8vIEF0IHRoaXMgcG9pbnQgaWYgbm8gcmVnaXN0cmF0aW9ucyBhcmUgcmVmZXJl
bmNpbmcgdGhlIHdvcmtlciB0aGVuIGl0IHdpbGwgYmUgZGVzdHJveWVkLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGQ3YmUzMTA0
MDVjYTgyOTA0MDllNTg5MTRhNDlhODI2OTIxNWQ4OTEuLjk4NTRlYmYyMjZkMjA1NDNkZTJlMjYz
N2MzZWI0MTc5MTAyNjJhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTE0MCw2ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBmaXJlSW5zdGFsbEV2ZW50KFNXU2VydmVyV29ya2VyJik7CiAgICAgdm9pZCBmaXJlQWN0aXZh
dGVFdmVudChTV1NlcnZlcldvcmtlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyV29y
a2VyKiB3b3JrZXJCeUlEKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBjb25zdDsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbWFya0FsbFdvcmtlcnNBc1Rlcm1pbmF0ZWQoKTsKICAgICAKICAg
ICBDb25uZWN0aW9uKiBnZXRDb25uZWN0aW9uKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIg
aWRlbnRpZmllcikgeyByZXR1cm4gbV9jb25uZWN0aW9ucy5nZXQoaWRlbnRpZmllcik7IH0KICAg
ICBTV09yaWdpblN0b3JlJiBvcmlnaW5TdG9yZSgpIHsgcmV0dXJuIG1fb3JpZ2luU3RvcmU7IH0K
QEAgLTE2MCw3ICsxNjIsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdp
c3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2luJiYsIFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiYgY29udHJvbGxpbmdTZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGludm9rZVJ1blNlcnZpY2VXb3JrZXIoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHVzaW5nIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFj
ayA9IFdURjo6RnVuY3Rpb248dm9pZChib29sLCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
KT47CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnko
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjayYmKTsKIAog
ICAgIHZvaWQgc2V0Q2xpZW50QWN0aXZlV29ya2VyKFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCByZXNvbHZlUmVnaXN0cmF0
aW9uUmVhZHlSZXF1ZXN0cyhTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwpAQCAtMTgwLDYgKzE4Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uKENvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlclJlZ2lzdHJhdGlvbiogZG9SZWdpc3RyYXRpb25N
YXRjaGluZyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBj
bGllbnRVUkwpOworICAgIGJvb2wgcnVuU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CiAKICAgICB2b2lkIGluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmKTsKIApAQCAtMjE2LDYgKzIyMCw3IEBAIHByaXZhdGU6CiAgICAgVW5pcXVl
UmVmPFNXT3JpZ2luU3RvcmU+IG1fb3JpZ2luU3RvcmU7CiAgICAgUmVnaXN0cmF0aW9uU3RvcmUg
bV9yZWdpc3RyYXRpb25TdG9yZTsKICAgICBEZXF1ZTxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+
IG1fcGVuZGluZ0NvbnRleHREYXRhczsKKyAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBWZWN0b3I8UnVuU2VydmljZVdvcmtlckNhbGxiYWNrPj4gbV9zZXJ2aWNlV29ya2VyUnVu
UmVxdWVzdHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDQzNDBiN2I3NTRhOWJjNzYzZjU2M2YzODNjZGQw
Y2U1OGZiMTZjZTAuLjMyZGJmOThmZThmNmQ1ZmY0MWMzM2ExMzMzNWI2YTEyMGEyNGRiYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xMTYsMTEgKzExNiwx
OCBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3RhdGVJbkNsaWVu
dChTZXJ2aWNlV29ya2VySWRlbnRpZmllciB3bwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xp
ZW50Q29ubmVjdGlvbjo6VXBkYXRlV29ya2VyU3RhdGUod29ya2VyLCBzdGF0ZSkpOwogfQogCi12
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEZldGNo
T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYgZm9ybURhdGEp
Cit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGZXRjaE9wdGlvbnMm
JiBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgZm9ybURhdGEpCiB7CiAgICAgLy8g
SXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmljIHdvcmtlciBjYW5ub3QgYmUgcmUtcnVuIChlLmcu
IGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4gcmVtb3ZlZCkKLSAgICBpZiAoc2VydmljZVdvcmtl
cklkZW50aWZpZXIgJiYgIXNlcnZlcigpLmludm9rZVJ1blNlcnZpY2VXb3JrZXIoKnNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSkKKyAgICBpZiAoc2VydmljZVdvcmtlcklkZW50aWZpZXIpIHsKKyAg
ICAgICAgc2VydmVyKCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KCpzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgW2NvbnRlbnRDb25uZWN0aW9uID0gbV9jb250ZW50Q29ubmVjdGlvbi5jb3B5
UmVmKCksIGNvbm5lY3Rpb25JZGVudGlmaWVyID0gaWRlbnRpZmllcigpLCBmZXRjaElkZW50aWZp
ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwg
b3B0aW9ucyA9IFdURk1vdmUob3B0aW9ucyksIGZvcm1EYXRhID0gV1RGTW92ZShmb3JtRGF0YSld
KGJvb2wgc3VjY2VzcywgYXV0byYgY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIGlm
IChzdWNjZXNzKQorICAgICAgICAgICAgICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKGNvbnRleHRD
b25uZWN0aW9uLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlN0YXJ0
RmV0Y2ggeyBjb25uZWN0aW9uSWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9ybURhdGEgfSk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlm
aWVyKTsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICAvLyBGSVhN
RTogSWYgd2UgZG9uJ3QgaGF2ZSBhIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGhlcmUgdGhlbiB3
ZSBuZWVkIHRvIGNyZWF0ZSBhbmQgcnVuIHRoZSBhcHByb3ByaWF0ZSBTZXJ2aWNlIFdvcmtlciwK
ICAgICAvLyBidXQgaXQncyB1bmNsZWFyIHRoYXQgd2UgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24g
aGVyZSB0byBkbyB0aGF0LgpAQCAtMTI4LDI2ICsxMzUsMjggQEAgdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBzdGQ6Om9wdGlv
bmFsPFMKICAgICBzZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OlN0YXJ0RmV0Y2ggeyBpZGVudGlmaWVyKCksIGZldGNoSWRlbnRpZmll
ciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGZvcm1EYXRhIH0p
OwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJGcm9tQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYm
IHNvdXJjZURhdGEpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJGcm9tQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9u
SWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSwgU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudERhdGEm
JiBzb3VyY2VEYXRhKQogewogICAgIC8vIEl0J3MgcG9zc2libGUgdGhpcyBzcGVjaWZpYyB3b3Jr
ZXIgY2Fubm90IGJlIHJlLXJ1biAoZS5nLiBpdHMgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIHJlbW92
ZWQpCi0gICAgaWYgKCFzZXJ2ZXIoKS5pbnZva2VSdW5TZXJ2aWNlV29ya2VyKGRlc3RpbmF0aW9u
SWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNlbmRUb0NvbnRleHRQcm9jZXNz
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJGcm9tQ2xpZW50IHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdlLCBz
b3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKHNvdXJjZURhdGEpIH0pOworICAgIHNlcnZlcigpLnJ1
blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShkZXN0aW5hdGlvbklkZW50aWZpZXIsIFtkZXN0aW5h
dGlvbklkZW50aWZpZXIsIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlm
aWVyLCBzb3VyY2VEYXRhID0gV1RGTW92ZShzb3VyY2VEYXRhKV0oYm9vbCBzdWNjZXNzLCBhdXRv
JiBjb250ZXh0Q29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgIGlmIChzdWNjZXNzKQorICAg
ICAgICAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoY29udGV4dENvbm5lY3Rpb24sIE1lc3NhZ2Vz
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJGcm9tQ2xpZW50IHsgZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVu
dGlmaWVyLCBXVEZNb3ZlKHNvdXJjZURhdGEpIH0pOworICAgIH0pOwogfQogCi12b2lkIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJGcm9tU2VydmljZVdv
cmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291
cmNlSWRlbnRpZmllcikKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckZyb21TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRl
c3RpbmF0aW9uSWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlJiYgbWVzc2FnZSwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllcikKIHsKLSAgICAvLyBJdCdzIHBvc3Np
YmxlIHRoaXMgc3BlY2lmaWMgd29ya2VyIGNhbm5vdCBiZSByZS1ydW4gKGUuZy4gaXRzIHJlZ2lz
dHJhdGlvbiBoYXMgYmVlbiByZW1vdmVkKQotICAgIGlmICghc2VydmVyKCkuaW52b2tlUnVuU2Vy
dmljZVdvcmtlcihkZXN0aW5hdGlvbklkZW50aWZpZXIpKQotICAgICAgICByZXR1cm47Ci0KICAg
ICBhdXRvKiBzb3VyY2VXb3JrZXIgPSBzZXJ2ZXIoKS53b3JrZXJCeUlEKHNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIGlmICghc291cmNlV29ya2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZW5k
VG9Db250ZXh0UHJvY2VzcyhNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyRnJvbVNlcnZpY2VXb3JrZXIgeyBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZVdvcmtlci0+ZGF0YSgpIH0pOworICAgIC8vIEl0
J3MgcG9zc2libGUgdGhpcyBzcGVjaWZpYyB3b3JrZXIgY2Fubm90IGJlIHJlLXJ1biAoZS5nLiBp
dHMgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIHJlbW92ZWQpCisgICAgc2VydmVyKCkucnVuU2Vydmlj
ZVdvcmtlcklmTmVjZXNzYXJ5KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgW2Rlc3RpbmF0aW9uSWRl
bnRpZmllciwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNv
dXJjZURhdGEgPSBzb3VyY2VXb3JrZXItPmRhdGEoKV0oYm9vbCBzdWNjZXNzLCBhdXRvJiBjb250
ZXh0Q29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBzZW5kVG9Db250ZXh0UHJvY2Vzcyhjb250ZXh0Q29ubmVj
dGlvbiwgTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckZyb21TZXJ2aWNlV29ya2VyIHsgZGVzdGluYXRpb25JZGVudGlmaWVy
LCBtZXNzYWdlLCBXVEZNb3ZlKHNvdXJjZURhdGEpIH0pOworICAgIH0pOwogfQogCiB2b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3QgZmV0
Y2hJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTIzMiw2
ICsyNDEsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rp
b246OnNlbmRUb0NvbnRleHRQcm9jZXNzKFUmJiBtZXNzYWcKICAgICAgICAgY29ubmVjdGlvbi0+
c2VuZChXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OnNlbmRUb0NvbnRleHRQcm9jZXNzKFdlYkNvcmU6OlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgVSYmIG1lc3NhZ2UpCit7CisgICAg
c3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oY29ubmVjdGlvbiku
c2VuZChXVEZNb3ZlKG1lc3NhZ2UpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmgKaW5kZXggYjY1MDg1M2M1NTZlZjkzNmMyYmM5YjhhNTNhZGE0N2M2MGUwMTNkOS4u
NTAzNDk3ODM1OTk3M2YyYjlkMzZmYTIyNjgyMDI2ZTM4ZDljNzhkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uKGNvbnN0IFdlYlNXU2VydmVyQ29ubmVjdGlvbiYpID0gZGVsZXRl
OwogICAgIH5XZWJTV1NlcnZlckNvbm5lY3Rpb24oKSBmaW5hbDsKIAorICAgIElQQzo6Q29ubmVj
dGlvbiYgaXBjQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24u
Z2V0KCk7IH0KKwogICAgIHZvaWQgZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKTsKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZp
bmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CkBAIC03OSwxMCAr
ODEsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeUNsaWVudHNPZkNvbnRyb2xsZXJDaGFu
Z2UoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXI+JiBjb250ZXh0SWRl
bnRpZmllcnMsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhJiBuZXdDb250cm9sbGVy
KTsKICAgICB2b2lkIHJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IHJlZ2lzdHJhdGlvblJlYWR5
UmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
JiYpIGZpbmFsOwogCi0gICAgdm9pZCBzdGFydEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcj4sIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYs
IGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHN0YXJ0RmV0Y2godWlu
dDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyPiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYpOwogCi0gICAgdm9pZCBwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckZyb21DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgZGVzdGluYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmJiBzb3VyY2UpOwotICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJGcm9tU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNz
YWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UpOworICAgIHZvaWQg
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJGcm9tQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmIHNvdXJjZSk7CisgICAgdm9pZCBwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiBtZXNzYWdl
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UpOwogCiAgICAgdm9pZCBt
YXRjaFJlZ2lzdHJhdGlvbih1aW50NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBjbGllbnRVUkwpOwogICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyh1aW50
NjRfdCByZWdpc3RyYXRpb25NYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgV2ViQ29yZTo6VVJMJiBjbGllbnRV
UkwpOwpAQCAtOTQsMTAgKzk2LDEwIEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKSBmaW5hbCB7IHJldHVybiBpZGVudGlmaWVyKCkudG9VSW50NjQo
KTsgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgc2VuZFRvQ29udGV4dFBy
b2Nlc3MoVSYmIG1lc3NhZ2UpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHN0YXRpYyB2b2lk
IHNlbmRUb0NvbnRleHRQcm9jZXNzKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biYsIFUmJiBtZXNzYWdlKTsKIAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAg
IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29udGVudENvbm5lY3Rpb247Ci0gICAgUmVmUHRyPElQ
Qzo6Q29ubmVjdGlvbj4gbV9jb250ZXh0Q29ubmVjdGlvbjsKICAgICBIYXNoTWFwPFdlYkNvcmU6
OkRvY3VtZW50SWRlbnRpZmllciwgV2ViQ29yZTo6Q2xpZW50T3JpZ2luPiBtX2NsaWVudE9yaWdp
bnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MuY3BwCmluZGV4IDJmN2E1MDE1NTJkMTJmOTc5NjRkYTk5NzU2ZDhiMGM1NDA4ZjhhZWIuLmZj
ZmUxMTVhMzI5ZDc2MDlkYWNjYjY1YjY1NzU1NWZiZGQ4OGYxZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCkBAIC04Niw4ICs4Niw3IEBA
IHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bikKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKG1fc2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiAmJiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPmlwY0Nvbm5lY3Rp
b24oKSA9PSAmY29ubmVjdGlvbikgewotICAgICAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24tPmNvbm5lY3Rpb25DbG9zZWQoKTsKLSAgICAgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uID0gbnVsbHB0cjsKKyAgICAgICAgY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9z
ZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbHNlCkBAIC05Niw2ICs5NSwzOCBAQCB2
b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24p
CiAgICAgc3RvcFJ1bkxvb3AoKTsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3Zv
aWQgU3RvcmFnZVByb2Nlc3M6OmNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNzV2FzQ2xvc2VkKCkK
K3sKKyAgICBpZiAoIW1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJu
OworCisgICAgYm9vbCBzaG91bGRSZWxhdW5jaCA9IG5lZWRzU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbigpOworCisgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uQ2xv
c2VkKCk7CisgICAgbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKKworICAg
IGZvciAoYXV0byYgc3dTZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAgc3dT
ZXJ2ZXItPm1hcmtBbGxXb3JrZXJzQXNUZXJtaW5hdGVkKCk7CisKKyAgICBpZiAoc2hvdWxkUmVs
YXVuY2gpCisgICAgICAgIGNyZWF0ZVNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKK30KKwor
Ly8gVGhlIHJ1bGUgaXMgdGhhdCB3ZSBuZWVkIGEgY29udGV4dCBwcm9jZXNzIChhbmQgYSBjb25u
ZWN0aW9uIHRvIGl0KSBhcyBsb25nIGFzIHdlIGhhdmUgU1dTZXJ2ZXJDb25uZWN0aW9ucyB0byBy
ZWd1bGFyIFdlYlByb2Nlc3Nlcy4KK2Jvb2wgU3RvcmFnZVByb2Nlc3M6Om5lZWRzU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKG1fc3dTZXJ2ZXJDb25uZWN0aW9u
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIElmIHRoZSBsYXN0
IFNXU2VydmVyQ29ubmVjdGlvbiBpcyB0byB0aGUgY29udGV4dCBwcm9jZXNzLCB0aGVuIHdlIG5v
IGxvbmdlciBuZWVkIHRoZSBjb250ZXh0IGNvbm5lY3Rpb24uCisgICAgaWYgKG1fc3dTZXJ2ZXJD
b25uZWN0aW9ucy5zaXplKCkgPT0gMSAmJiBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gJiYg
Jm1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5iZWdpbigpLT52YWx1ZS0+aXBjQ29ubmVjdGlvbigpID09
IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+aXBjQ29ubmVjdGlvbigpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiB2b2lkIFN0b3Jh
Z2VQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBpZiAobWVzc2FnZVJlY2VpdmVyTWFwKCku
ZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCmluZGV4IDE3MWM3YTZlN2IwY2VkMDM0OGI0
NGI0MzM1ZGMxYWE4NzNiZGU0YjEuLjM0ODJlNzRmYWYzNzVkNjVhMjc4Nzk2NDk3NWRlNzBmY2Jh
YWZlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
LmgKQEAgLTk4LDYgKzk4LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVN0b3Jh
Z2VQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAorI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIGNvbm5lY3Rpb25Ub0NvbnRleHRQcm9j
ZXNzV2FzQ2xvc2VkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBTdG9yYWdlUHJvY2Vzcygp
OwogCkBAIC0xMzMsNiArMTM3LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAgICAgV2ViU1dPcmlnaW5TdG9yZSYg
c3dPcmlnaW5TdG9yZUZvclNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOworICAgIGJvb2wgbmVlZHNT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkgY29uc3Q7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBp
bmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VUb1dlYlByb2Nlc3NDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCmluZGV4IDc1NDgxOTI1MTFkZDA5NmU3MTRjMGY4YzJjMTcxYmNhODUxYTAz
YTYuLjMyODJhMzQzMGZjNGNkMzNhNDVjNjE4ZDZlYmNhYThiMDk3Zjk5M2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0xMjAsOCArMTIwLDE3IEBAIHZvaWQgU3RvcmFnZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU3RvcmFnZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpCit2b2lkIFN0b3Jh
Z2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24pCiB7CisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOworCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorICAgIGlmIChTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuZ2xvYmFs
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpICYmIFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24o
KS5nbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCktPmlwY0Nvbm5lY3Rpb24oKSA9PSAm
Y29ubmVjdGlvbikgeworICAgICAgICAvLyBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIGV4aXRlZC4K
KyAgICAgICAgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25Ub0NvbnRleHRQ
cm9jZXNzV2FzQ2xvc2VkKCk7CisgICAgfQorI2VuZGlmCisKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKICAgICBhdXRvIGlkYkNvbm5lY3Rpb25zID0gbV93ZWJJREJDb25uZWN0aW9uczsK
ICAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBpZGJDb25uZWN0aW9ucy52YWx1ZXMoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IDVmMjBkMTI1
NTA3MzNiMGZkZjAyZDJiNTFlMzU3ZTYwNjI1MDA5M2QuLmFmODRiZjI2YTBkM2Q4YjVmZGNkNjk5
ZGZjNDJkNjRlNmJhZmE5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcApAQCAtNjE0LDYgKzYxNCwxMSBAQCB2b2lkIFdLQ29udGV4dFRlcm1pbmF0ZU5l
dHdvcmtQcm9jZXNzKFdLQ29udGV4dFJlZiBjb250ZXh0KQogICAgIHRvSW1wbChjb250ZXh0KS0+
dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKIH0KIAordm9pZCBXS0NvbnRleHRUZXJtaW5hdGVT
ZXJ2aWNlV29ya2VyUHJvY2VzcyhXS0NvbnRleHRSZWYgY29udGV4dCkKK3sKKyAgICB0b0ltcGwo
Y29udGV4dCktPnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCk7Cit9CisKIFByb2Nlc3NJ
RCBXS0NvbnRleHRHZXROZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYpCiB7CiAgICAgcmV0dXJuIHRvSW1wbChjb250ZXh0UmVmKS0+bmV0d29ya1Byb2Nlc3NJ
ZGVudGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHRQcml2YXRlLmgKaW5kZXggMmRlMTFkZWVjNTJkN2UzYWVmNzJkOTEyNGY0YjYzNjFjNTVhMmY1
Zi4uYTBmYzFjMjNkYjgyY2QzNDY3ZjMxZWY4ZTZlZDg4Zjk3ZjVkYzZhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaApAQCAtODksNiAr
ODksNyBAQCBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRXYXJtSW5pdGlhbFByb2Nlc3MoV0tDb250
ZXh0UmVmIGNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0VXNlc05ldHdvcmtQ
cm9jZXNzKFdLQ29udGV4dFJlZiwgYm9vbCk7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFRl
cm1pbmF0ZU5ldHdvcmtQcm9jZXNzKFdLQ29udGV4dFJlZik7CitXS19FWFBPUlQgdm9pZCBXS0Nv
bnRleHRUZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyhXS0NvbnRleHRSZWYpOwogCiBXS19F
WFBPUlQgdm9pZCBXS0NvbnRleHRTZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tl
dFRlc3RpbmcoV0tDb250ZXh0UmVmLCBib29sKTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNl
dEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlclRlc3RpbmcoV0tDb250ZXh0
UmVmLCBib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW0KaW5kZXggMGNjOTg4MDM0MWRjZDUyMTQ5MWI3YzFjZWNhNGYwODlhOTBh
YzEyZC4uN2M5NDdiMDQzZWYxYzIxZWY4YzkwZTNjY2M3ZjBhN2VmODNhOWRiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAg
LTQxMiw2ICs0MTIsMTEgQEAgLSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3MKICAgICBf
cHJvY2Vzc1Bvb2wtPnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CiB9CiAKKy0gKHZvaWQpX3Rl
cm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzCit7CisgICAgX3Byb2Nlc3NQb29sLT50ZXJtaW5h
dGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpOworfQorCiAtIChwaWRfdClfbmV0d29ya1Byb2Nlc3NJ
ZGVudGlmaWVyCiB7CiAgICAgcmV0dXJuIF9wcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3NJZGVu
dGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDBkYzEyODY4Y2I3ZTUzMDRiYWU1YjZhYTg1
NzA2N2Q0ZTdiODBiOTUuLmFkZGU3YzFiODY3YmM1NzgyNGFlMGQ5Mjk1ZWViNDEzNWVlMzg0NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC03NCw2ICs3NCw3IEBACiAvLyBUZXN0IG9ubHkuIFNob3Vs
ZCBiZSBjYWxsZWQgb25seSB3aGlsZSBubyB3ZWIgY29udGVudCBwcm9jZXNzZXMgYXJlIHJ1bm5p
bmcuCiAtICh2b2lkKV90ZXJtaW5hdGVTdG9yYWdlUHJvY2VzczsKIC0gKHZvaWQpX3Rlcm1pbmF0
ZU5ldHdvcmtQcm9jZXNzOworLSAodm9pZClfdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3M7
CiAKIC8vIFRlc3Qgb25seS4KIC0gKHBpZF90KV9uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTMpLCBpb3MoMTEuMCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGFjN2NiYmNmMWRmMjRmYzNlMWUzNDY3
NDY5YmNlMWEzMmRjYjk2OWUuLjIwOTk5Y2IzNzcxNjZiOWExZWYzYzkwZjFlMjg3ZGZkZDY2NTE3
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTEx
NSw2ICsxMTUsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogREVGSU5FX0RFQlVHX09OTFlfR0xP
QkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCBwcm9jZXNzUG9vbENvdW50ZXIsICgiV2Vi
UHJvY2Vzc1Bvb2wiKSk7CiAKK3N0YXRpYyBjb25zdCBTZWNvbmRzIHNlcnZpY2VXb3JrZXJUZXJt
aW5hdGlvbkRlbGF5IHsgNV9zIH07CisKIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUxpc3RlbmVy
SWRlbnRpZmllcigpCiB7CiAgICAgc3RhdGljIHVpbnQ2NF90IG5leHRJZGVudGlmaWVyID0gMTsK
QEAgLTI0NCw2ICsyNDYsNyBAQCBXZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX3Byb2Nlc3NT
dXBwcmVzc2lvbkRpc2FibGVkRm9yUGFnZUNvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkg
eyB1cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0ZSgpOyB9KQogICAgICwgbV9oaWRkZW5QYWdl
VGhyb3R0bGluZ0F1dG9JbmNyZWFzZXNDb3VudGVyKFt0aGlzXShSZWZDb3VudGVyRXZlbnQpIHsg
bV9oaWRkZW5QYWdlVGhyb3R0bGluZ1RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOyB9KQogICAgICwg
bV9oaWRkZW5QYWdlVGhyb3R0bGluZ1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBy
b2Nlc3NQb29sOjp1cGRhdGVIaWRkZW5QYWdlVGhyb3R0bGluZ0F1dG9JbmNyZWFzZUxpbWl0KQor
ICAgICwgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uVGltZXIoUnVuTG9vcDo6bWFp
bigpLCB0aGlzLCAmV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
KQogewogICAgIGlmIChtX2NvbmZpZ3VyYXRpb24tPnNob3VsZEhhdmVMZWdhY3lEYXRhU3RvcmUo
KSkKICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpj
cmVhdGVMZWdhY3kobGVnYWN5V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24obV9jb25maWd1
cmF0aW9uKSk7CkBAIC02OTcsNiArNzAwLDEwIEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vz
c1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhCiAg
ICAgYXV0byYgcHJvY2VzcyA9IHByb2Nlc3NQcm94eS5nZXQoKTsKICAgICBpbml0aWFsaXplTmV3
V2ViUHJvY2Vzcyhwcm9jZXNzLCB3ZWJzaXRlRGF0YVN0b3JlKTsKICAgICBtX3Byb2Nlc3Nlcy5h
cHBlbmQoV1RGTW92ZShwcm9jZXNzUHJveHkpKTsKKworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJQ
cm9jZXNzVGVybWluYXRpb25UaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3NlcnZpY2VXb3Jr
ZXJQcm9jZXNzVGVybWluYXRpb25UaW1lci5zdG9wKCk7CisKICAgICByZXR1cm4gcHJvY2VzczsK
IH0KIApAQCAtOTQzLDggKzk1MCw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcykKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGRvIGJldHRlciB0aGFuIHRoaXMuIEZvciBub3csIHdlIGp1c3QgZGVzdHJveSB0aGUgU2Vydmlj
ZVdvcmtlciBwcm9jZXNzCiAgICAgLy8gd2hlbmV2ZXIgdGhlcmUgaXMgbm8gcmVndWxhciBXZWJD
b250ZW50IHByb2Nlc3MgcmVtYWluaW5nLgogICAgIGlmIChtX3Byb2Nlc3Nlcy5zaXplKCkgPT0g
MSAmJiBtX3Byb2Nlc3Nlc1swXSA9PSBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzKSB7Ci0gICAgICAg
IG1fc2VydmljZVdvcmtlclByb2Nlc3MgPSBudWxscHRyOwotICAgICAgICBtX3Byb2Nlc3Nlcy5j
bGVhcigpOworICAgICAgICBpZiAoIW1fc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvblRp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgICAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWlu
YXRpb25UaW1lci5zdGFydE9uZVNob3Qoc2VydmljZVdvcmtlclRlcm1pbmF0aW9uRGVsYXkpOwog
ICAgIH0KICNlbmRpZgogfQpAQCAtMTQwOCw2ICsxNDE1LDE4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCkKICAgICBtX2RpZE5ldHdvcmtQcm9jZXNzQ3Jh
c2ggPSB0cnVlOwogfQogCit2b2lkIFdlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTZXJ2aWNlV29y
a2VyUHJvY2VzcygpCit7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIGlmICghbV9z
ZXJ2aWNlV29ya2VyUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZXJ2aWNlV29y
a2VyUHJvY2Vzcy0+cmVxdWVzdFRlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6
UmVxdWVzdGVkQnlDbGllbnQpOworICAgIEFTU0VSVCghbV9wcm9jZXNzZXMuY29udGFpbnMobV9z
ZXJ2aWNlV29ya2VyUHJvY2VzcykpOworICAgIEFTU0VSVCghbV9zZXJ2aWNlV29ya2VyUHJvY2Vz
cyk7CisjZW5kaWYKK30KKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6c3luY05ldHdvcmtQcm9jZXNz
Q29va2llcygpCiB7CiAgICAgc2VuZFN5bmNUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6U3luY0FsbENvb2tpZXMoKSwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpTeW5jQWxsQ29va2llczo6UmVwbHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAppbmRleCA1ZjE0NTAxNjUyNDgxMWM2NTIyYTQxYjI3Nzc0ZWQzMmNlOTAyNjMz
Li5iY2QzMTY1NDU3NjE1ODZkYTA5ZDJlYWJkMzE2MjhhOTE1MWE0YTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTI2Miw2ICsyNjIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjbGVhckNhY2hlZENyZWRlbnRpYWxzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVT
dG9yYWdlUHJvY2VzcygpOwogICAgIHZvaWQgdGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKKyAg
ICB2b2lkIHRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCk7CiAKICAgICB2b2lkIHN5bmNO
ZXR3b3JrUHJvY2Vzc0Nvb2tpZXMoKTsKIApAQCAtNjMzLDYgKzYzNCw3IEBAIHByaXZhdGU6CiAg
ICAgUGF0aHMgbV9yZXNvbHZlZFBhdGhzOwogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwg
SGFzaFNldDxXZWJQYWdlUHJveHkqPj4gbV9zZXNzaW9uVG9QYWdlc01hcDsKKyAgICBSdW5Mb29w
OjpUaW1lcjxXZWJQcm9jZXNzUG9vbD4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
VGltZXI7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBiNmM1MmNiZDA2Y2NjOGE2OTVjNzlmNWJl
MTRmODY5NTU0ODhiMzYuLmZmZTA5ZGE5ZmMzZjBhNzg4N2I3YTIyNWI2NTRiNDI2YTNiYWZhZWEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNy0xMi0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIHJlY292ZXIgYWZ0ZXIgYSBTZXJ2aWNlIFdv
cmtlciBwcm9jZXNzIGNyYXNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODA0NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgdGVzdFJ1bm5lciBBUEkgdG8gdGVybWluYXRlIHRoZSBTZXJ2aWNlIFdv
cmtlciBwcm9jZXNzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjp0
ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjp0ZXJt
aW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE3LTEyLTA2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEV4Y2x1ZGUgYW5vdGhlciBsZWFrIGNhbGxzdGFjay4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGE4YmM3Y2JmMjMwYWMzOTJkYzk5YzEyYjVm
YzE2MjFhNDIzZTA1MDkuLjRiYmRlYzE5NTkyNmQxNWFiOGYwODQxOGJiMzQ2ZTJmNTlhMjhmYjUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzA0LDYgKzMwNCw3IEBAIGludGVyZmFj
ZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHNldFdlYlJUQ0xlZ2FjeUFQSUVuYWJsZWQoYm9vbGVh
biB2YWx1ZSk7CiAKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgdm9p
ZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpOwogCiAgICAgdm9pZCByZW1vdmVBbGxT
ZXNzaW9uQ3JlZGVudGlhbHMob2JqZWN0IGNhbGxiYWNrKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYWE5OGQw
Y2M1ZGYxZDFhM2ZmYmViZDdiZTE5ODUzNmZlMWEwNWRiMS4uNmEzNTUwMWNhZGMzNDM4ZTRiMWZm
MWMxY2M2MGY0ZGY1NGY5MzQyNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xMTM4LDYgKzExMzgsMTIgQEAgdm9p
ZCBUZXN0UnVubmVyOjp0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpCiAgICAgV0tCdW5kbGVQYWdl
UG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBt
ZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6dGVybWlu
YXRlU2VydmljZVdvcmtlclByb2Nlc3MoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVGVy
bWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MiKSk7CisgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3Nh
Z2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFt
ZS5nZXQoKSwgbnVsbHB0cik7Cit9CisKIHN0YXRpYyB1bnNpZ25lZCBuZXh0VUlTY3JpcHRDYWxs
YmFja0lEKCkKIHsKICAgICBzdGF0aWMgdW5zaWduZWQgY2FsbGJhY2tJRCA9IEZpcnN0VUlTY3Jp
cHRDYWxsYmFja0lEOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBkNjQ0OTQzMTdjYTBlYTMxYjk0MjRkZWFkMGI2NDA0YjE1
NmU1MmYxLi42MDQwYTFiYmFjMTBlNzdhMGMwNjY3NzkwYTA5YTNmNTJmYWY3ZDQ1IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApA
QCAtNDAyLDYgKzQwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzKEpT
VmFsdWVSZWYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOworICAgIHZv
aWQgdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKTsKIAogICAgIHZvaWQgcmVtb3ZlQWxs
U2Vzc2lvbkNyZWRlbnRpYWxzKEpTVmFsdWVSZWYpOwogICAgIHZvaWQgY2FsbERpZFJlbW92ZUFs
bFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IDI3MDAwNDUzMzliZWJkMTE1YmZjMDFhZThkOTZlMDg3MzRh
MmIxMzcuLjM0YmFlMjYzNDA3NDliYzg1MzIzY2JjZjkwYTU1MGEzNjljYmEyMGQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMjc0LDYgKzIyNzQsMTEg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKQogICAgIFdL
Q29udGV4dFRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKHBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAor
dm9pZCBUZXN0Q29udHJvbGxlcjo6dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKQorewor
ICAgIFdLQ29udGV4dFRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHBsYXRmb3JtQ29udGV4
dCgpKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtV2lsbFJ1blRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mKQogewpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGIxYWM0ZjcyNTBhOGYwMWNlODFhZjA1YTcw
MGU2OTBjNWFiZTkzYzkuLmFkNWRiNmJmZTZhNzk5NGQ3Yzk2ZjhjOGMzMzIxNmUxYTE0ZDc2NzMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTE4OCw2ICsxODgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlVVJMcyhXS0FycmF5UmVmIGZp
bGVVUkxzKSB7IG1fb3BlblBhbmVsRmlsZVVSTHMgPSBmaWxlVVJMczsgfQogCiAgICAgdm9pZCB0
ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOworICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdvcmtl
clByb2Nlc3MoKTsKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggNzUzNzJlN2Jm
ZDgxYWQ3OTYzZDc1MzExNzgxY2UzOWVmMjJmYjMxOC4uZjU0NjZkOGRiY2Q2YWIzNTE5NWFhYzY1
NTczZTA4ZGIzMGFlYjlkNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKQEAgLTc0NCw2ICs3NDQsMTIgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiVGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MiKSkgeworICAgICAg
ICBBU1NFUlQoIW1lc3NhZ2VCb2R5KTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IlJ1blVJUHJvY2Vzc1NjcmlwdCIpKSB7CiAgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdl
Qm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5
KTsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNjcmlwdEtleShBZG9wdFdLLCBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2NyaXB0IikpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg4ODhjMDQ4
YTEwMzllMjFhYjU0YjhiOGEwN2Q5NjY0MGMyYmQ5OTQuLjhjZDNlYTIwOTE3YjJkOGQ3MTk4Nzkw
OWNjZTNlOTEyYWJkZDM0OGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0xMi0wNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBiZSBhYmxl
IHRvIHJlY292ZXIgYWZ0ZXIgYSBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIGNyYXNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA0NzcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3Qg
Y292ZXJhZ2UuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9wb3N0bWVz
c2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ct
cHJvY2Vzcy1jcmFzaC5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFz
aC5qczogQWRkZWQuCisKIDIwMTctMTItMDYgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNv
bT4KIAogICAgICAgICBBZGp1c3RlZCBleHBlY3RhdGlvbnMgZm9yIGluc3BlY3Rvci93b3JrZXIv
cmVzb3VyY2VzLWluLXdvcmtlci5odG1sLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmh0dHBzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMTBjMjgxOWYwMWQxODNiNjIzNjkzN2QzZTZhYTFlODcwNzUwNjFmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcG9z
dG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw4IEBACisqIFNlbmRpbmcgJ01lc3NhZ2UgMScgdG8gU2VydmljZSBXb3JrZXIKK1BBU1M6
IENsaWVudCByZWNlaXZlZCBtZXNzYWdlIGZyb20gc2VydmljZSB3b3JrZXIsIG9yaWdpbjogaHR0
cHM6Ly8xMjcuMC4wLjE6ODQ0MworUEFTUzogU2VydmljZSB3b3JrZXIgcmVjZWl2ZWQgbWVzc2Fn
ZSAnTWVzc2FnZSAxJyBmcm9tIG9yaWdpbiAnaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MycKKyogU2lt
dWxhdGluZyBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIGNyYXNoCisqIFNlbmRpbmcgJ01lc3NhZ2Ug
MicgdG8gU2VydmljZSBXb3JrZXIKK1BBU1M6IENsaWVudCByZWNlaXZlZCBtZXNzYWdlIGZyb20g
c2VydmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MworUEFTUzogU2Vy
dmljZSB3b3JrZXIgcmVjZWl2ZWQgbWVzc2FnZSAnTWVzc2FnZSAyJyBmcm9tIG9yaWdpbiAnaHR0
cHM6Ly8xMjcuMC4wLjE6ODQ0MycKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcG9zdG1lc3Nh
Z2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlNjA3M2Rj
MDFjMTMxYTFhOGMzOTJiYWMyZjMyNjdlN2ExMDBhYzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9wb3N0bWVzc2FnZS1hZnRlci1zdy1w
cm9jZXNzLWNyYXNoLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9zdy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1w
cm9jZXNzLWNyYXNoLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVz
c2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jh
c2guanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGU1ZWQ5MjNlZDFlYzE1NzU0YjFiNzlkYjQyYzRjZDgwM2RhMmI1
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmpzCkBAIC0w
LDAgKzEsMjggQEAKK3ZhciBtZXNzYWdlTnVtYmVyID0gMTsKK25hdmlnYXRvci5zZXJ2aWNlV29y
a2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgeworICAgIGxv
ZygiUEFTUzogQ2xpZW50IHJlY2VpdmVkIG1lc3NhZ2UgZnJvbSBzZXJ2aWNlIHdvcmtlciwgb3Jp
Z2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICBsb2coZXZlbnQuZGF0YSk7CisgICAgaWYgKG1l
c3NhZ2VOdW1iZXIgPT0gMSkgeworICAgICAgICBsb2coIiogU2ltdWxhdGluZyBTZXJ2aWNlIFdv
cmtlciBwcm9jZXNzIGNyYXNoIik7CisgICAgICAgIHRlc3RSdW5uZXIudGVybWluYXRlU2Vydmlj
ZVdvcmtlclByb2Nlc3MoKTsKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGxvZygiKiBTZW5kaW5nICdNZXNzYWdlIDInIHRvIFNlcnZpY2UgV29ya2VyIik7Cisg
ICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIk1lc3NhZ2UgMiIpOworICAgICAg
ICAgICAgbWVzc2FnZU51bWJlcisrOworICAgICAgICAgICAgaGFuZGxlID0gc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBsb2coIkZBSUw6IERpZCBub3QgcmVjZWl2ZSBt
ZXNzYWdlIGZyb20gc2VydmljZSB3b3JrZXIgcHJvY2VzcyBhZnRlciB0aGUgY3Jhc2giKTsKKyAg
ICAgICAgICAgICAgICBmaW5pc2hTV1Rlc3QoKTsKKyAgICAgICAgICAgIH0sIDEwMDApOworICAg
ICAgICB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobWVzc2FnZU51bWJl
ciA9PSAyKSB7CisgICAgICAgIGNsZWFyVGltZW91dChoYW5kbGUpOworICAgICAgICBmaW5pc2hT
V1Rlc3QoKTsKKyAgICB9Cit9KTsKKworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIo
InJlc291cmNlcy9wb3N0bWVzc2FnZS1lY2hvLXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlv
bihyZWdpc3RyYXRpb24pIHsKKyAgICBsb2coIiogU2VuZGluZyAnTWVzc2FnZSAxJyB0byBTZXJ2
aWNlIFdvcmtlciIpOworICAgIHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLnBvc3RNZXNzYWdlKCJN
ZXNzYWdlIDEiKTsKK30pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328680</attachid>
            <date>2017-12-06 22:31:45 -0800</date>
            <delta_ts>2017-12-06 22:59:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180477-20171206223144.patch</filename>
            <type>text/plain</type>
            <size>39810</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY3MjBiOTU0MWFkMzhj
N2E5ODQ2NzY5MDEzNmMyMGM3NzZjODM0MC4uOTJlM2JiMGI5YTkyZTdjZTA1NmZhZmM5OGU0MGUy
MDEwYzY2NjE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTEyLTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc2hvdWxkIGJlIGFibGUg
dG8gcmVjb3ZlciBhZnRlciBhIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgY3Jhc2gKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDQ3NworCisgICAgICAg
IFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbiBhbmQgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBU
ZXN0OiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9j
ZXNzLWNyYXNoLmh0dHBzLmh0bWwKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAgICAgT25jZSB0aGUgY29ubmVjdGlvbiB3aXRoIHRo
ZSBjb250ZXh0IHByb2Nlc3MgaXMgZXN0YWJsaXNoZWQsIHByb2Nlc3MgInJ1biBzZXJ2aWNlIHdv
cmtlciIKKyAgICAgICAgcmVxdWVzdHMgdGhhdCBvY3VycmVkIHdoaWxlIGVzdGFibGlzaGluZyB0
aGUgY29ubmVjdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJ1blNlcnZpY2VX
b3JrZXJJZk5lY2Vzc2FyeSk6CisgICAgICAgIFRha2UgaW4gYSBsYW1iZGEgZnVuY3Rpb24gdGhh
dCBnZXRzIGNhbGxlZCBhZnRlciB0aGUgInJ1biBzZXJ2aWNlIHdvcmtlciIgcmVxdWVzdAorICAg
ICAgICBpcyBwcm9jZXNzZWQuIFdlIHVzZWQgdG8gYXNzZXJ0IHRoYXQgd2UgaGFkIGEgY29ubmVj
dGlvbiB0byB0aGUgY29udGV4dCBwcm9jZXNzLgorICAgICAgICBXZSBub3cgd2FpdCBmb3IgdGhl
IGNvbm5lY3Rpb24gdG8gYmUgZXN0YWJsaXNoZWQgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdCwgdGh1
cworICAgICAgICBtYWtpbmcgdGhlIG9wZXJhdGlvbiBhc3luY2hyb25vdXMuCisKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgU3BsaXQgc29t
ZSBsb2dpYyBvdXQgb2YgcnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KCkgdG8gcmV1c2UgaW4g
c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKS4KKworICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzQXNUZXJtaW5hdGVkKToKKyAgICAgICAgQWRkIG1ldGhv
ZCB0byBtYXJrIGFsbCBzZXJ2aWNlIHdvcmtlcnMgYXMgdGVybWluYXRlZC4gVGhpcyBpcyBjYWxs
ZWQgd2hlbiB0aGUgU2VydmljZQorICAgICAgICBXb3JrZXIgcHJvY2VzcyBjcmFzaGVzLgorCisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorCiAyMDE3LTEyLTA2
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG5vZGVz
IGZyb20gQVhPYmplY3RDYWNoZSB3aGVuIHRoZSBhc3NvY2lhdGVkIHN1YmZyYW1lIGRvY3VtZW50
IGlzIGdldHRpbmcgZGVzdHJveWVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0OGRmMzkzOGY3ZWM2NGM5MWMxMjU4
ZWIwNTM5ZDYwOTE4MGE0OTdjLi42ZDlkNTcyNmYxOWFkMzZhYWVjOWY5NDMwM2EzYTk0YjBkNzZk
OGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE3LTEyLTA2ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVjb3Zl
ciBhZnRlciBhIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDQ3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IEJyYWR5IEVpZHNvbiBhbmQgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFN0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZy
b21DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyRnJvbVNlcnZpY2VXb3JrZXIpOgorICAgICAgICBVcGRhdGUg
Y2FsbHMgdG8gU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeSgpIHRoYXQgdGhh
dCBpdCBpcyBhc3luY2hyb25vdXMKKyAgICAgICAgYW5kIHRha2VzIGluIGEgbGFtYmRhLgorCisg
ICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjppcGNDb25uZWN0
aW9uIGNvbnN0KToKKyAgICAgICAgQWRkIGdldHRlciBmb3IgdGhlIHVuZGVybHlpbmcgSVBDIGNv
bm5lY3Rpb24uCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3Nl
ZCk6CisgICAgICAgIE1vdmUgc29tZSBjb2RlIHRvIGNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNz
V2FzQ2xvc2VkKCkgdG8gYXZvaWQgZHVwbGljYXRpb24uCisgICAgICAgIEFsc28sIHJlbGF1bmNo
IHRoZSBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIGlmIGl0IGhhcyBleGl0ZWQgYnV0IHdlIHN0aWxs
CisgICAgICAgIGhhdmUgU1dTZXJ2ZXIgY29ubmVjdGlvbnMgdG8gcmVndWxhciBXZWIgUHJvY2Vz
c2VzLgorCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpuZWVkc1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICBVdGlsaXR5IGZ1bmN0aW9uIHRvIGRldGVy
bWluZSBpZiB3ZSBzdGlsbCBuZWVkIHRoZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzLgorICAgICAg
ICBUaGUgY3VycmVudCBydWxlIGlzIHRoYXQgd2UgbmVlZCB0aGUgc2VydmljZSB3b3JrZXIgKGFr
YSAiY29udGV4dCIpIHByb2Nlc3MKKyAgICAgICAgaWYgd2Ugc3RpbGwgaGF2ZSBTV1NlcnZlciBj
b25uZWN0aW9ucyB0byByZWd1bGFyIFdlYiBQcm9jZXNzZXMuCisKKyAgICAgICAgKiBTdG9yYWdl
UHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oOgorCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UpOgorICAgICAgICBJZiBkaWRDbG9zZSgp
IGlzIGNhbGxlZCBmb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZpY2Ugd29ya2VyIGNvbnRl
eHQsCisgICAgICAgIGxldCB0aGUgU3RvcmFnZVByb2Nlc3Mga25vdyBzbyB0aGF0IGl0IGNhbiBj
bGVhciBpdHMgc3RhdGUgYW5kIHJlbGF1bmNoCisgICAgICAgIHRoZSBwcm9jZXNzIGlmIG5lY2Vz
c2FyeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAg
ICAoV0tDb250ZXh0VGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF90ZXJt
aW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgQWRkIFNQSSB0byB0ZXJtaW5hdGUg
dGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVy
bWluYXRpb25UaW1lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVO
ZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5l
Y3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aDoKKyAgICAgICAgV2UgdXNlZCB0byBzaHV0ZG93biB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNz
IHJpZ2h0IGF3YXkgYXMgc29vbiBhcyB0aGUgbGFzdCByZWd1bGFyCisgICAgICAgIFdlYlByb2Nl
c3Mgd2FzIGdvbmUuIFdlIG5vdyBnaXZlIGl0IGEgZ3JhY2UgcGVyaW9kIG9mIDUgc2Vjb25kcyBp
biBjYXNlIGEgbmV3CisgICAgICAgIFdlYlByb2Nlc3MgZ2V0cyBsYXVuY2hlZCBzaG9ydGx5IGFm
dGVyLgorCiAyMDE3LTEyLTA2ICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAg
ICAgICAtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gY29weVdpdGhab25lXSBkb2Vzbid0IGNvcHkg
X2dyb3VwSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBiYWZjNjRjNDgzZTkwM2RjZTZhN2JmNDdkN2E1NmRl
MjMxY2RhN2FkLi5hMWVjMDI3ZWQzYjBlNGNhODE0YTdkMDFkMWQ2OTJkYmQxNGJkMDc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cApAQCAtNDIxLDExICs0MjEsMTkgQEAgdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKENvbm5l
Y3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGoKIAogdm9pZCBT
V1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKQogewotICAgIEFTU0VS
VChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKSk7Ci0gICAgZm9yIChhdXRvJiBkYXRhIDogbV9wZW5kaW5nQ29udGV4dERhdGFzKQor
ICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2Jh
bFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKyAgICBBU1NFUlQoY29ubmVjdGlvbik7CisK
KyAgICBhdXRvIHBlbmRpbmdDb250ZXh0RGF0YXMgPSBXVEZNb3ZlKG1fcGVuZGluZ0NvbnRleHRE
YXRhcyk7CisgICAgZm9yIChhdXRvJiBkYXRhIDogcGVuZGluZ0NvbnRleHREYXRhcykKICAgICAg
ICAgaW5zdGFsbENvbnRleHREYXRhKGRhdGEpOwotICAgIAotICAgIG1fcGVuZGluZ0NvbnRleHRE
YXRhcy5jbGVhcigpOworCisgICAgYXV0byBzZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMgPSBXVEZN
b3ZlKG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBz
ZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMpIHsKKyAgICAgICAgYm9vbCBzdWNjZXNzID0gcnVuU2Vy
dmljZVdvcmtlcihpdGVtLmtleSk7CisgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpdGVt
LnZhbHVlKQorICAgICAgICAgICAgY2FsbGJhY2soc3VjY2VzcywgKmNvbm5lY3Rpb24pOworICAg
IH0KIH0KIAogdm9pZCBTV1NlcnZlcjo6aW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKQEAgLTQ0NiwyOSArNDU0LDQ3IEBAIHZvaWQgU1dTZXJ2
ZXI6Omluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRh
dGEpCiAgICAgY29ubmVjdGlvbi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGRhdGEpOwog
fQogCi1ib29sIFNXU2VydmVyOjppbnZva2VSdW5TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VySWZO
ZWNlc3NhcnkoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUnVuU2VydmljZVdv
cmtlckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigp
OwogICAgIGlmIChhdXRvKiB3b3JrZXIgPSBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5n
ZXQoaWRlbnRpZmllcikpIHsKLSAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkpCi0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkpIHsK
KyAgICAgICAgICAgIEFTU0VSVChjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRy
dWUsICpjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1
ZXN0cy5lbnN1cmUoaWRlbnRpZmllciwgWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBWZWN0b3I8
UnVuU2VydmljZVdvcmtlckNhbGxiYWNrPiB7IH07CisgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1
ZS5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgLy8gTm9ib2R5IHNob3VsZCBoYXZlIGEgU2VydmljZVdvcmtlcklkZW50aWZpZXIgZm9yIGEg
U1dTZXJ2ZXJXb3JrZXIgdGhhdCBkb2Vzbid0IGV4aXN0LgorICAgIGNhbGxiYWNrKHJ1blNlcnZp
Y2VXb3JrZXIoaWRlbnRpZmllciksICpjb25uZWN0aW9uKTsKK30KKworYm9vbCBTV1NlcnZlcjo6
cnVuU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQorewog
ICAgIGF1dG8qIHdvcmtlciA9IHdvcmtlckJ5SUQoaWRlbnRpZmllcik7Ci0gICAgQVNTRVJUKHdv
cmtlcik7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IElmIHRoZSByZWdpc3RyYXRpb24gZm9yIGEgd29ya2luZyBoYXMgYmVlbiByZW1vdmVkIHRoZW4g
dGhlIHJlcXVlc3QgdG8gcnVuCiAgICAgLy8gdGhlIHdvcmtlciBpcyBtb290LgogICAgIGlmICgh
Z2V0UmVnaXN0cmF0aW9uKHdvcmtlci0+cmVnaXN0cmF0aW9uS2V5KCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5hZGQoaWRlbnRp
ZmllciwgKndvcmtlcik7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3J1bm5pbmdPclRlcm1pbmF0
aW5nV29ya2Vycy5hZGQoaWRlbnRpZmllciwgKndvcmtlcik7CisgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKwogICAgIHdvcmtlci0+c2V0U3RhdGUo
U1dTZXJ2ZXJXb3JrZXI6OlN0YXRlOjpSdW5uaW5nKTsKIAogICAgIGF1dG8qIGNvbm5lY3Rpb24g
PSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKTsKICAgICBBU1NFUlQoY29ubmVjdGlvbik7CiAgICAgY29ubmVjdGlvbi0+aW5zdGFs
bFNlcnZpY2VXb3JrZXJDb250ZXh0KHdvcmtlci0+Y29udGV4dERhdGEoKSk7Ci0gICAgCisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA1LDEwICs1MzEsMTQgQEAgdm9pZCBTV1NlcnZlcjo6
dGVybWluYXRlV29ya2VySW50ZXJuYWwoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgVGVybWluYXRp
b25Nb2RlIG0KICAgICB9OwogfQogCi12b2lkIFNXU2VydmVyOjp3b3JrZXJDb250ZXh0VGVybWlu
YXRlZChTV1NlcnZlcldvcmtlciYgd29ya2VyKQordm9pZCBTV1NlcnZlcjo6bWFya0FsbFdvcmtl
cnNBc1Rlcm1pbmF0ZWQoKQogewotICAgIEFTU0VSVCh3b3JrZXIuaXNUZXJtaW5hdGluZygpKTsK
KyAgICB3aGlsZSAoIW1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmlzRW1wdHkoKSkKKyAg
ICAgICAgd29ya2VyQ29udGV4dFRlcm1pbmF0ZWQobV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtl
cnMuYmVnaW4oKS0+dmFsdWUpOworfQogCit2b2lkIFNXU2VydmVyOjp3b3JrZXJDb250ZXh0VGVy
bWluYXRlZChTV1NlcnZlcldvcmtlciYgd29ya2VyKQorewogICAgIHdvcmtlci5zZXRTdGF0ZShT
V1NlcnZlcldvcmtlcjo6U3RhdGU6Ok5vdFJ1bm5pbmcpOwogCiAgICAgLy8gQXQgdGhpcyBwb2lu
dCBpZiBubyByZWdpc3RyYXRpb25zIGFyZSByZWZlcmVuY2luZyB0aGUgd29ya2VyIHRoZW4gaXQg
d2lsbCBiZSBkZXN0cm95ZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmgKaW5kZXggZDdiZTMxMDQwNWNhODI5MDQwOWU1ODkxNGE0OWE4MjY5
MjE1ZDg5MS4uOTg1NGViZjIyNmQyMDU0M2RlMmUyNjM3YzNlYjQxNzkxMDI2MmFhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAt
MTQwLDYgKzE0MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU1dTZXJ2
ZXJXb3JrZXImKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNXU2VydmVyV29ya2VyJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJXb3JrZXIqIHdvcmtlckJ5SUQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXJrQWxs
V29ya2Vyc0FzVGVybWluYXRlZCgpOwogICAgIAogICAgIENvbm5lY3Rpb24qIGdldENvbm5lY3Rp
b24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX2Nv
bm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0
b3JlKCkgeyByZXR1cm4gbV9vcmlnaW5TdG9yZTsgfQpAQCAtMTYwLDcgKzE2Miw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChD
bGllbnRPcmlnaW4mJiwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZp
ZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdp
biYsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaW52b2tlUnVuU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Cisg
ICAgdXNpbmcgUnVuU2VydmljZVdvcmtlckNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKGJv
b2wsIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpPjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
UnVuU2VydmljZVdvcmtlckNhbGxiYWNrJiYpOwogCiAgICAgdm9pZCBzZXRDbGllbnRBY3RpdmVX
b3JrZXIoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKICAgICB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzKFNXU2VydmVy
UmVnaXN0cmF0aW9uJik7CkBAIC0xODAsNiArMTgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
bW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYsIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2Vy
dmVyUmVnaXN0cmF0aW9uKiBkb1JlZ2lzdHJhdGlvbk1hdGNoaW5nKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCk7CisgICAgYm9vbCBydW5T
ZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgaW5zdGFs
bENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOwogCkBAIC0yMTYs
NiArMjIwLDcgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4gbV9vcmln
aW5TdG9yZTsKICAgICBSZWdpc3RyYXRpb25TdG9yZSBtX3JlZ2lzdHJhdGlvblN0b3JlOwogICAg
IERlcXVlPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gbV9wZW5kaW5nQ29udGV4dERhdGFzOwor
ICAgIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFZlY3RvcjxSdW5TZXJ2aWNlV29y
a2VyQ2FsbGJhY2s+PiBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0czsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5k
ZXggNDM0MGI3Yjc1NGE5YmM3NjNmNTYzZjM4M2NkZDBjZTU4ZmIxNmNlMC4uMzJkYmY5OGZlOGY2
ZDVmZjQxYzMzYTEzMzM1YjZhMTIwYTI0ZGJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAKQEAgLTExNiwxMSArMTE2LDE4IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjp1cGRhdGVXb3JrZXJTdGF0ZUluQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHdvCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpVcGRhdGVXb3Jr
ZXJTdGF0ZSh3b3JrZXIsIHN0YXRlKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpzdGFydEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VySWRlbnRpZmllcj4gc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpzdGFydEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcj4gc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmJiBmb3JtRGF0YSkKIHsKICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoaXMgc3BlY2lm
aWMgd29ya2VyIGNhbm5vdCBiZSByZS1ydW4gKGUuZy4gaXRzIHJlZ2lzdHJhdGlvbiBoYXMgYmVl
biByZW1vdmVkKQotICAgIGlmIChzZXJ2aWNlV29ya2VySWRlbnRpZmllciAmJiAhc2VydmVyKCku
aW52b2tlUnVuU2VydmljZVdvcmtlcigqc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQorICAgIGlm
IChzZXJ2aWNlV29ya2VySWRlbnRpZmllcikgeworICAgICAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNl
V29ya2VySWZOZWNlc3NhcnkoKnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbY29udGVudENvbm5l
Y3Rpb24gPSBtX2NvbnRlbnRDb25uZWN0aW9uLmNvcHlSZWYoKSwgY29ubmVjdGlvbklkZW50aWZp
ZXIgPSBpZGVudGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25z
KSwgZm9ybURhdGEgPSBXVEZNb3ZlKGZvcm1EYXRhKV0oYm9vbCBzdWNjZXNzLCBhdXRvJiBjb250
ZXh0Q29ubmVjdGlvbikgeworICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgICAgICAg
ICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoY29udGV4dENvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IGNvbm5lY3Rpb25JZGVudGlm
aWVyLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0LCBv
cHRpb25zLCBmb3JtRGF0YSB9KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBj
b250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNo
OjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOworICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIEZJWE1FOiBJZiB3ZSBkb24ndCBoYXZlIGEgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaGVyZSB0aGVuIHdlIG5lZWQgdG8gY3JlYXRlIGFuZCBydW4g
dGhlIGFwcHJvcHJpYXRlIFNlcnZpY2UgV29ya2VyLAogICAgIC8vIGJ1dCBpdCdzIHVuY2xlYXIg
dGhhdCB3ZSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBoZXJlIHRvIGRvIHRoYXQuCkBAIC0xMjgs
MjYgKzEzNSwyOCBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50
NjRfdCBmZXRjaElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8UwogICAgIHNlbmRUb0NvbnRleHRQ
cm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRj
aCB7IGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgcmVxdWVzdCwgb3B0aW9ucywgZm9ybURhdGEgfSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21DbGllbnQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIHNvdXJjZUlkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgc291cmNlRGF0YSkKK3ZvaWQgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21DbGllbnQoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZl
cmVuY2UmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBzb3VyY2VJZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmIHNvdXJjZURhdGEpCiB7CiAgICAgLy8g
SXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmljIHdvcmtlciBjYW5ub3QgYmUgcmUtcnVuIChlLmcu
IGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4gcmVtb3ZlZCkKLSAgICBpZiAoIXNlcnZlcigpLmlu
dm9rZVJ1blNlcnZpY2VXb3JrZXIoZGVzdGluYXRpb25JZGVudGlmaWVyKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21DbGllbnQgeyBk
ZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUo
c291cmNlRGF0YSkgfSk7CisgICAgc2VydmVyKCkucnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5
KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgW2Rlc3RpbmF0aW9uSWRlbnRpZmllciwgbWVzc2FnZSA9
IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZURhdGEgPSBXVEZNb3Zl
KHNvdXJjZURhdGEpXShib29sIHN1Y2Nlc3MsIGF1dG8mIGNvbnRleHRDb25uZWN0aW9uKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgICAgICBzZW5kVG9Db250ZXh0UHJv
Y2Vzcyhjb250ZXh0Q29ubmVjdGlvbiwgTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21DbGllbnQgeyBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoc291cmNlRGF0
YSkgfSk7CisgICAgfSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckZyb21TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNz
YWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyKQordm9pZCBXZWJT
V1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyRnJvbVNlcnZpY2VX
b3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBJUEM6
OkRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJ
ZGVudGlmaWVyKQogewotICAgIC8vIEl0J3MgcG9zc2libGUgdGhpcyBzcGVjaWZpYyB3b3JrZXIg
Y2Fubm90IGJlIHJlLXJ1biAoZS5nLiBpdHMgcmVnaXN0cmF0aW9uIGhhcyBiZWVuIHJlbW92ZWQp
Ci0gICAgaWYgKCFzZXJ2ZXIoKS5pbnZva2VSdW5TZXJ2aWNlV29ya2VyKGRlc3RpbmF0aW9uSWRl
bnRpZmllcikpCi0gICAgICAgIHJldHVybjsKLQogICAgIGF1dG8qIHNvdXJjZVdvcmtlciA9IHNl
cnZlcigpLndvcmtlckJ5SUQoc291cmNlSWRlbnRpZmllcik7CiAgICAgaWYgKCFzb3VyY2VXb3Jr
ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2Vz
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJGcm9tU2VydmljZVdvcmtlciB7IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgbWVzc2FnZSwgc291
cmNlV29ya2VyLT5kYXRhKCkgfSk7CisgICAgLy8gSXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmlj
IHdvcmtlciBjYW5ub3QgYmUgcmUtcnVuIChlLmcuIGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4g
cmVtb3ZlZCkKKyAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3NhcnkoZGVzdGlu
YXRpb25JZGVudGlmaWVyLCBbZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdlID0gV1RGTW92
ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwgc291cmNlRGF0YSA9IHNvdXJjZVdvcmtlci0+
ZGF0YSgpXShib29sIHN1Y2Nlc3MsIGF1dG8mIGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHNl
bmRUb0NvbnRleHRQcm9jZXNzKGNvbnRleHRDb25uZWN0aW9uLCBNZXNzYWdlczo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyRnJvbVNlcnZp
Y2VXb3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UsIFdURk1vdmUoc291cmNl
RGF0YSkgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMjMyLDYgKzI0MSwxMSBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3Mo
VSYmIG1lc3NhZwogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKFdURk1vdmUobWVzc2FnZSkpOwog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2Vu
ZFRvQ29udGV4dFByb2Nlc3MoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBVJiYgbWVzc2FnZSkKK3sKKyAgICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24mPihjb25uZWN0aW9uKS5zZW5kKFdURk1vdmUobWVzc2FnZSkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAppbmRleCBiNjUwODUzYzU1
NmVmOTM2YzJiYzliOGE1M2FkYTQ3YzYwZTAxM2Q5Li41MDM0OTc4MzU5OTczZjJiOWQzNmZhMjI2
ODIwMjZlMzhkOWM3OGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBA
IC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICBXZWJTV1NlcnZlckNvbm5lY3Rpb24oY29uc3Qg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uJikgPSBkZWxldGU7CiAgICAgfldlYlNXU2VydmVyQ29ubmVj
dGlvbigpIGZpbmFsOwogCisgICAgSVBDOjpDb25uZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZW50Q29ubmVjdGlvbi5nZXQoKTsgfQorCiAgICAgdm9pZCBkaXNj
b25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKTsKQEAgLTc5LDEwICs4MSwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgbm90aWZ5Q2xpZW50c09mQ29udHJvbGxlckNoYW5nZShjb25zdCBIYXNoU2V0PFdlYkNvcmU6
OkRvY3VtZW50SWRlbnRpZmllcj4mIGNvbnRleHRJZGVudGlmaWVycywgY29uc3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlckRhdGEmIG5ld0NvbnRyb2xsZXIpOwogICAgIHZvaWQgcmVnaXN0cmF0aW9u
UmVhZHkodWludDY0X3QgcmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJikgZmluYWw7CiAKLSAgICB2b2lkIHN0
YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYpOworICAgIHZvaWQgc3RhcnRGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXI+LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmJik7CiAKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyRnJvbUNs
aWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YSYmIHNvdXJjZSk7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21T
ZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9u
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNvdXJjZSk7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckZyb21DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24s
IElQQzo6RGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnREYXRhJiYgc291cmNlKTsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyRnJv
bVNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRp
b24sIElQQzo6RGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNvdXJjZSk7CiAKICAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90
IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7
CiAgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3Jp
Z2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7CkBAIC05NCwxMCArOTYsMTAgQEAg
cHJpdmF0ZToKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFs
IHsgcmV0dXJuIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpOyB9CiAgICAgCiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gdm9pZCBzZW5kVG9Db250ZXh0UHJvY2VzcyhVJiYgbWVzc2FnZSk7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIHZvaWQgc2VuZFRvQ29udGV4dFByb2Nlc3MoV2Vi
Q29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiwgVSYmIG1lc3NhZ2UpOwogCiAgICAg
UEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9j
b250ZW50Q29ubmVjdGlvbjsKLSAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2NvbnRleHRD
b25uZWN0aW9uOwogICAgIEhhc2hNYXA8V2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyLCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4+IG1fY2xpZW50T3JpZ2luczsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggMmY3YTUwMTU1MmQx
MmY5Nzk2NGRhOTk3NTZkOGIwYzU0MDhmOGFlYi4uZmNmZTExNWEzMjlkNzYwOWRhY2NiNjViNjU3
NTU1ZmJkZDg4ZjFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9y
YWdlUHJvY2Vzcy5jcHAKQEAgLTg2LDggKzg2LDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlk
Q2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBpZiAobV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uICYmIG1fc2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi0+aXBjQ29ubmVjdGlvbigpID09ICZjb25uZWN0aW9uKSB7Ci0g
ICAgICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbkNsb3NlZCgpOwot
ICAgICAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworICAgICAgICBj
b25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3NlZCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogI2Vsc2UKQEAgLTk2LDYgKzk1LDM4IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICBzdG9wUnVuTG9vcCgpOwogfQog
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBTdG9yYWdlUHJvY2Vzczo6Y29ubmVj
dGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQoKQoreworICAgIGlmICghbV9zZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIHNob3VsZFJlbGF1
bmNoID0gbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CisKKyAgICBtX3NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25DbG9zZWQoKTsKKyAgICBtX3NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworCisgICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1f
c3dTZXJ2ZXJzLnZhbHVlcygpKQorICAgICAgICBzd1NlcnZlci0+bWFya0FsbFdvcmtlcnNBc1Rl
cm1pbmF0ZWQoKTsKKworICAgIGlmIChzaG91bGRSZWxhdW5jaCkKKyAgICAgICAgY3JlYXRlU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworfQorCisvLyBUaGUgcnVsZSBpcyB0aGF0IHdlIG5l
ZWQgYSBjb250ZXh0IHByb2Nlc3MgKGFuZCBhIGNvbm5lY3Rpb24gdG8gaXQpIGFzIGxvbmcgYXMg
d2UgaGF2ZSBTV1NlcnZlckNvbm5lY3Rpb25zIHRvIHJlZ3VsYXIgV2ViUHJvY2Vzc2VzLgorYm9v
bCBTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkgY29uc3QK
K3sKKyAgICBpZiAobV9zd1NlcnZlckNvbm5lY3Rpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgLy8gSWYgdGhlIGxhc3QgU1dTZXJ2ZXJDb25uZWN0aW9uIGlzIHRv
IHRoZSBjb250ZXh0IHByb2Nlc3MsIHRoZW4gd2Ugbm8gbG9uZ2VyIG5lZWQgdGhlIGNvbnRleHQg
Y29ubmVjdGlvbi4KKyAgICBpZiAobV9zd1NlcnZlckNvbm5lY3Rpb25zLnNpemUoKSA9PSAxICYm
IG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiAmJiAmbV9zd1NlcnZlckNvbm5lY3Rpb25zLmJl
Z2luKCktPnZhbHVlLT5pcGNDb25uZWN0aW9uKCkgPT0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLT5pcGNDb25uZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biB0cnVlOworfQorI2VuZGlmCisKIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQog
ewogICAgIGlmIChtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2RlcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0
b3JhZ2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9j
ZXNzLmgKaW5kZXggMTcxYzdhNmU3YjBjZWQwMzQ4YjQ0YjQzMzVkYzFhYTg3M2JkZTRiMS4uMzQ4
MmU3NGZhZjM3NWQ2NWEyNzg3OTY0OTc1ZGU3MGZjYmFhZmU3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuaApAQCAtOTgsNiArOTgsMTAgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlU3RvcmFnZVByb2Nlc3NNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
ICAgIHZvaWQgY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQoKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIFN0b3JhZ2VQcm9jZXNzKCk7CiAKQEAgLTEzMyw2ICsxMzcsNyBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKTsKICAgICBXZWJTV09yaWdpblN0b3JlJiBzd09yaWdpblN0b3JlRm9yU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRCk7CisgICAgYm9vbCBuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
KSBjb25zdDsKICNlbmRpZgogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMoY29u
c3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNzU0ODE5
MjUxMWRkMDk2ZTcxNGMwZjhjMmMxNzFiY2E4NTFhMDNhNi4uMzI4MmEzNDMwZmM0Y2QzM2E0NWM2
MThkNmViY2FhOGIwOTdmOTkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTEy
MCw4ICsxMjAsMTcgQEAgdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmUKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotdm9pZCBTdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xv
c2UoSVBDOjpDb25uZWN0aW9uJikKK3ZvaWQgU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKKyAgICBVTlVTRURfUEFS
QU0oY29ubmVjdGlvbik7CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKFN0
b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5nbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
KCkgJiYgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRvbigpLmdsb2JhbFNlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24oKS0+aXBjQ29ubmVjdGlvbigpID09ICZjb25uZWN0aW9uKSB7CisgICAgICAgIC8v
IFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgZXhpdGVkLgorICAgICAgICBTdG9yYWdlUHJvY2Vzczo6
c2luZ2xldG9uKCkuY29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQoKTsKKyAgICB9
CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogICAgIGF1dG8gaWRiQ29u
bmVjdGlvbnMgPSBtX3dlYklEQkNvbm5lY3Rpb25zOwogICAgIGZvciAoYXV0byYgY29ubmVjdGlv
biA6IGlkYkNvbm5lY3Rpb25zLnZhbHVlcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKaW5kZXggNWYyMGQxMjU1MDczM2IwZmRmMDJkMmI1MWUzNTdlNjA2
MjUwMDkzZC4uYWY4NGJmMjZhMGQzZDhiNWZkY2Q2OTlkZmM0MmQ2NGU2YmFmYTkxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC02MTQsNiArNjE0
LDExIEBAIHZvaWQgV0tDb250ZXh0VGVybWluYXRlTmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0UmVm
IGNvbnRleHQpCiAgICAgdG9JbXBsKGNvbnRleHQpLT50ZXJtaW5hdGVOZXR3b3JrUHJvY2Vzcygp
OwogfQogCit2b2lkIFdLQ29udGV4dFRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKFdLQ29u
dGV4dFJlZiBjb250ZXh0KQoreworICAgIHRvSW1wbChjb250ZXh0KS0+dGVybWluYXRlU2Vydmlj
ZVdvcmtlclByb2Nlc3MoKTsKK30KKwogUHJvY2Vzc0lEIFdLQ29udGV4dEdldE5ldHdvcmtQcm9j
ZXNzSWRlbnRpZmllcihXS0NvbnRleHRSZWYgY29udGV4dFJlZikKIHsKICAgICByZXR1cm4gdG9J
bXBsKGNvbnRleHRSZWYpLT5uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAppbmRleCAyZGUxMWRl
ZWM1MmQ3ZTNhZWY3MmQ5MTI0ZjRiNjM2MWM1NWEyZjVmLi5hMGZjMWMyM2RiODJjZDM0NjdmMzFl
ZjhlNmVkODhmOTdmNWRjNmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0UHJpdmF0ZS5oCkBAIC04OSw2ICs4OSw3IEBAIFdLX0VYUE9SVCB2b2lkIFdL
Q29udGV4dFdhcm1Jbml0aWFsUHJvY2VzcyhXS0NvbnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBP
UlQgdm9pZCBXS0NvbnRleHRTZXRVc2VzTmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0UmVmLCBib29s
KTsKIAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0VGVybWluYXRlTmV0d29ya1Byb2Nlc3MoV0tD
b250ZXh0UmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFRlcm1pbmF0ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzKFdLQ29udGV4dFJlZik7CiAKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEFs
bG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZyhXS0NvbnRleHRSZWYsIGJv
b2wpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVG
b3JTZXJ2aWNlV29ya2VyVGVzdGluZyhXS0NvbnRleHRSZWYsIGJvb2wpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCAwY2M5
ODgwMzQxZGNkNTIxNDkxYjdjMWNlY2E0ZjA4OWE5MGFjMTJkLi43Yzk0N2IwNDNlZjFjMjFlZjhj
OTBlM2NjYzdmMGE3ZWY4M2E5ZGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtNDEyLDYgKzQxMiwxMSBAQCAtICh2b2lk
KV90ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcwogICAgIF9wcm9jZXNzUG9vbC0+dGVybWluYXRlTmV0
d29ya1Byb2Nlc3MoKTsKIH0KIAorLSAodm9pZClfdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nl
c3MKK3sKKyAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCk7
Cit9CisKIC0gKHBpZF90KV9uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIKIHsKICAgICByZXR1cm4g
X3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgK
aW5kZXggMGRjMTI4NjhjYjdlNTMwNGJhZTViNmFhODU3MDY3ZDRlN2I4MGI5NS4uYWRkZTdjMWI4
NjdiYzU3ODI0YWUwZDkyOTVlZWI0MTM1ZWUzODQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTc0
LDYgKzc0LDcgQEAKIC8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxlZCBvbmx5IHdoaWxlIG5v
IHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmluZy4KIC0gKHZvaWQpX3Rlcm1pbmF0ZVN0
b3JhZ2VQcm9jZXNzOwogLSAodm9pZClfdGVybWluYXRlTmV0d29ya1Byb2Nlc3M7CistICh2b2lk
KV90ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzczsKIAogLy8gVGVzdCBvbmx5LgogLSAocGlk
X3QpX25ldHdvcmtQcm9jZXNzSWRlbnRpZmllciBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MyksIGlvcygxMS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKaW5kZXggYWM3Y2JiY2YxZGYyNGZjM2UxZTM0Njc0NjliY2UxYTMyZGNiOTY5ZS4uMjA5OTlj
YjM3NzE2NmI5YTFlZjNjOTBmMWUyODdkZmRkNjY1MTdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTE1LDYgKzExNSw4IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0Nv
dW50ZXIsIHByb2Nlc3NQb29sQ291bnRlciwgKCJXZWJQcm9jZXNzUG9vbCIpKTsKIAorc3RhdGlj
IGNvbnN0IFNlY29uZHMgc2VydmljZVdvcmtlclRlcm1pbmF0aW9uRGVsYXkgeyA1X3MgfTsKKwog
c3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTGlzdGVuZXJJZGVudGlmaWVyKCkKIHsKICAgICBzdGF0
aWMgdWludDY0X3QgbmV4dElkZW50aWZpZXIgPSAxOwpAQCAtMjQ0LDYgKzI0Niw3IEBAIFdlYlBy
b2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbikKICAgICAsIG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRGb3JQYWdl
Q291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50KSB7IHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lv
blN0YXRlKCk7IH0pCiAgICAgLCBtX2hpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0Nv
dW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkgeyBtX2hpZGRlblBhZ2VUaHJvdHRsaW5nVGlt
ZXIuc3RhcnRPbmVTaG90KDBfcyk7IH0pCiAgICAgLCBtX2hpZGRlblBhZ2VUaHJvdHRsaW5nVGlt
ZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZUhpZGRlblBh
Z2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlTGltaXQpCisgICAgLCBtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzVGVybWluYXRpb25UaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQcm9jZXNzUG9v
bDo6dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MpCiB7CiAgICAgaWYgKG1fY29uZmlndXJh
dGlvbi0+c2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9yZSgpKQogICAgICAgICBtX3dlYnNpdGVEYXRh
U3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShsZWdhY3lXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZpZ3VyYXRpb24pKTsKQEAgLTY5Nyw2ICs3MDAs
MTAgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2Vz
cyhXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGEKICAgICBhdXRvJiBwcm9jZXNzID0gcHJvY2Vz
c1Byb3h5LmdldCgpOwogICAgIGluaXRpYWxpemVOZXdXZWJQcm9jZXNzKHByb2Nlc3MsIHdlYnNp
dGVEYXRhU3RvcmUpOwogICAgIG1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKHByb2Nlc3NQcm94
eSkpOworCisgICAgaWYgKG1fc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvblRpbWVyLmlz
QWN0aXZlKCkpCisgICAgICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvblRpbWVy
LnN0b3AoKTsKKwogICAgIHJldHVybiBwcm9jZXNzOwogfQogCkBAIC05NDMsOCArOTUwLDggQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBw
cm9jZXNzKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gYmV0dGVyIHRoYW4gdGhpcy4gRm9y
IG5vdywgd2UganVzdCBkZXN0cm95IHRoZSBTZXJ2aWNlV29ya2VyIHByb2Nlc3MKICAgICAvLyB3
aGVuZXZlciB0aGVyZSBpcyBubyByZWd1bGFyIFdlYkNvbnRlbnQgcHJvY2VzcyByZW1haW5pbmcu
CiAgICAgaWYgKG1fcHJvY2Vzc2VzLnNpemUoKSA9PSAxICYmIG1fcHJvY2Vzc2VzWzBdID09IG1f
c2VydmljZVdvcmtlclByb2Nlc3MpIHsKLSAgICAgICAgbV9zZXJ2aWNlV29ya2VyUHJvY2VzcyA9
IG51bGxwdHI7Ci0gICAgICAgIG1fcHJvY2Vzc2VzLmNsZWFyKCk7CisgICAgICAgIGlmICghbV9z
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAg
ICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChz
ZXJ2aWNlV29ya2VyVGVybWluYXRpb25EZWxheSk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0xNDA4
LDYgKzE0MTUsMTggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlTmV0d29ya1Byb2Nl
c3MoKQogICAgIG1fZGlkTmV0d29ya1Byb2Nlc3NDcmFzaCA9IHRydWU7CiB9CiAKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCkKK3sKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzLT5yZXF1ZXN0VGVybWlu
YXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpSZXF1ZXN0ZWRCeUNsaWVudCk7CisgICAg
QVNTRVJUKCFtX3Byb2Nlc3Nlcy5jb250YWlucyhtX3NlcnZpY2VXb3JrZXJQcm9jZXNzKSk7Cisg
ICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJQcm9jZXNzKTsKKyNlbmRpZgorfQorCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjpzeW5jTmV0d29ya1Byb2Nlc3NDb29raWVzKCkKIHsKICAgICBzZW5kU3lu
Y1RvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTeW5jQWxsQ29v
a2llcygpLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlN5bmNBbGxDb29raWVzOjpSZXBseSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDVmMTQ1MDE2
NTI0ODExYzY1MjJhNDFiMjc3NzRlZDMyY2U5MDI2MzMuLmJjZDMxNjU0NTc2MTU4NmRhMDlkMmVh
YmQzMTYyOGE5MTUxYTRhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaApAQCAtMjYyLDYgKzI2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyQ2FjaGVkQ3Jl
ZGVudGlhbHMoKTsKICAgICB2b2lkIHRlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzKCk7CiAgICAgdm9p
ZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOworICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdv
cmtlclByb2Nlc3MoKTsKIAogICAgIHZvaWQgc3luY05ldHdvcmtQcm9jZXNzQ29va2llcygpOwog
CkBAIC02MzMsNiArNjM0LDcgQEAgcHJpdmF0ZToKICAgICBQYXRocyBtX3Jlc29sdmVkUGF0aHM7
CiAKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBIYXNoU2V0PFdlYlBhZ2VQcm94eSo+PiBt
X3Nlc3Npb25Ub1BhZ2VzTWFwOworICAgIFJ1bkxvb3A6OlRpbWVyPFdlYlByb2Nlc3NQb29sPiBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25UaW1lcjsKIH07CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggMGI2YzUyY2JkMDZjY2M4YTY5NWM3OWY1YmUxNGY4Njk1NTQ4OGIzNi4uMDExMzQ0MmJk
ZjliOTI1MDNkNmVmOWUwMmExMzk2YzIyZDk2ZTAwMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTEyLTA2ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc2hvdWxkIGJlIGFi
bGUgdG8gcmVjb3ZlciBhZnRlciBhIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgY3Jhc2gKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDQ3NworCisgICAg
ICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbiBhbmQgWW91ZW5uIEZhYmxldC4KKworICAgICAg
ICBBZGQgdGVzdFJ1bm5lciBBUEkgdG8gdGVybWluYXRlIHRoZSBTZXJ2aWNlIFdvcmtlciBwcm9j
ZXNzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjp0ZXJtaW5hdGVT
ZXJ2aWNlV29ya2VyUHJvY2Vzcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjp0ZXJtaW5hdGVTZXJ2
aWNlV29ya2VyUHJvY2Vzcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGUpOgorCiAyMDE3LTEyLTA2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUu
Y29tPgogCiAgICAgICAgIEV4Y2x1ZGUgYW5vdGhlciBsZWFrIGNhbGxzdGFjay4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCmluZGV4IGE4YmM3Y2JmMjMwYWMzOTJkYzk5YzEyYjVmYzE2MjFhNDIz
ZTA1MDkuLjRiYmRlYzE5NTkyNmQxNWFiOGYwODQxOGJiMzQ2ZTJmNTlhMjhmYjUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzA0LDYgKzMwNCw3IEBAIGludGVyZmFjZSBUZXN0UnVu
bmVyIHsKICAgICB2b2lkIHNldFdlYlJUQ0xlZ2FjeUFQSUVuYWJsZWQoYm9vbGVhbiB2YWx1ZSk7
CiAKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKCk7CisgICAgdm9pZCB0ZXJtaW5h
dGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpOwogCiAgICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3Jl
ZGVudGlhbHMob2JqZWN0IGNhbGxiYWNrKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYWE5OGQwY2M1ZGYxZDFh
M2ZmYmViZDdiZTE5ODUzNmZlMWEwNWRiMS4uNmEzNTUwMWNhZGMzNDM4ZTRiMWZmMWMxY2M2MGY0
ZGY1NGY5MzQyNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xMTM4LDYgKzExMzgsMTIgQEAgdm9pZCBUZXN0UnVu
bmVyOjp0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpCiAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3Nh
Z2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFt
ZS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6dGVybWluYXRlU2Vydmlj
ZVdvcmtlclByb2Nlc3MoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdl
TmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVGVybWluYXRlU2Vy
dmljZVdvcmtlclByb2Nlc3MiKSk7CisgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UoSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwg
bnVsbHB0cik7Cit9CisKIHN0YXRpYyB1bnNpZ25lZCBuZXh0VUlTY3JpcHRDYWxsYmFja0lEKCkK
IHsKICAgICBzdGF0aWMgdW5zaWduZWQgY2FsbGJhY2tJRCA9IEZpcnN0VUlTY3JpcHRDYWxsYmFj
a0lEOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaAppbmRleCBkNjQ0OTQzMTdjYTBlYTMxYjk0MjRkZWFkMGI2NDA0YjE1NmU1MmYxLi42
MDQwYTFiYmFjMTBlNzdhMGMwNjY3NzkwYTA5YTNmNTJmYWY3ZDQ1IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDAyLDYg
KzQwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzKEpTVmFsdWVSZWYp
OwogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOworICAgIHZvaWQgdGVybWlu
YXRlU2VydmljZVdvcmtlclByb2Nlc3MoKTsKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNy
ZWRlbnRpYWxzKEpTVmFsdWVSZWYpOwogICAgIHZvaWQgY2FsbERpZFJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDI3MDAwNDUzMzliZWJkMTE1YmZjMDFhZThkOTZlMDg3MzRhMmIxMzcuLjM0
YmFlMjYzNDA3NDliYzg1MzIzY2JjZjkwYTU1MGEzNjljYmEyMGQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yMjc0LDYgKzIyNzQsMTEgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKQogICAgIFdLQ29udGV4dFRl
cm1pbmF0ZU5ldHdvcmtQcm9jZXNzKHBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAordm9pZCBUZXN0
Q29udHJvbGxlcjo6dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKQoreworICAgIFdLQ29u
dGV4dFRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHBsYXRmb3JtQ29udGV4dCgpKTsKK30K
KwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtV2ls
bFJ1blRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCmluZGV4IGIxYWM0ZjcyNTBhOGYwMWNlODFhZjA1YTcwMGU2OTBjNWFi
ZTkzYzkuLmFkNWRiNmJmZTZhNzk5NGQ3Yzk2ZjhjOGMzMzIxNmUxYTE0ZDc2NzMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTE4OCw2ICsxODgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlVVJMcyhXS0FycmF5UmVmIGZpbGVVUkxzKSB7
IG1fb3BlblBhbmVsRmlsZVVSTHMgPSBmaWxlVVJMczsgfQogCiAgICAgdm9pZCB0ZXJtaW5hdGVO
ZXR3b3JrUHJvY2VzcygpOworICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3Mo
KTsKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggNzUzNzJlN2JmZDgxYWQ3OTYz
ZDc1MzExNzgxY2UzOWVmMjJmYjMxOC4uZjU0NjZkOGRiY2Q2YWIzNTE5NWFhYzY1NTczZTA4ZGIz
MGFlYjlkNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAg
LTc0NCw2ICs3NDQsMTIgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiVGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MiKSkgeworICAgICAgICBBU1NFUlQo
IW1lc3NhZ2VCb2R5KTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnRlcm1p
bmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJ1blVJUHJv
Y2Vzc1NjcmlwdCIpKSB7CiAgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rp
b25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKICAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNjcmlwdEtleShBZG9wdFdLLCBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2NyaXB0IikpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg4ODhjMDQ4YTEwMzllMjFh
YjU0YjhiOGEwN2Q5NjY0MGMyYmQ5OTQuLmUyNTA5ZTMxYzgxZjg4YWZhZDViY2M2OWNjMDA1OGNm
NmYxODAzODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0xMi0wNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIHJlY292
ZXIgYWZ0ZXIgYSBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIGNyYXNoCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA0NzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBCcmFkeSBFaWRzb24gYW5kIFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgQWRkIGxheW91
dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5odHRwcy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Bvc3RtZXNzYWdlLWFm
dGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nl
c3MtY3Jhc2guanM6IEFkZGVkLgorCiAyMDE3LTEyLTA2ICBNYXR0IExld2lzICA8amxld2lzM0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQWRqdXN0ZWQgZXhwZWN0YXRpb25zIGZvciBpbnNwZWN0b3Iv
d29ya2VyL3Jlc291cmNlcy1pbi13b3JrZXIuaHRtbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3Mt
Y3Jhc2guaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5odHRwcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzEwYzI4MTlmMDFkMTgzYjYyMzY5MzdkM2U2YWExZTg3MDc1MDYx
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsOCBAQAorKiBTZW5kaW5nICdNZXNzYWdlIDEnIHRvIFNlcnZpY2UgV29ya2Vy
CitQQVNTOiBDbGllbnQgcmVjZWl2ZWQgbWVzc2FnZSBmcm9tIHNlcnZpY2Ugd29ya2VyLCBvcmln
aW46IGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMKK1BBU1M6IFNlcnZpY2Ugd29ya2VyIHJlY2VpdmVk
IG1lc3NhZ2UgJ01lc3NhZ2UgMScgZnJvbSBvcmlnaW4gJ2h0dHBzOi8vMTI3LjAuMC4xOjg0NDMn
CisqIFNpbXVsYXRpbmcgU2VydmljZSBXb3JrZXIgcHJvY2VzcyBjcmFzaAorKiBTZW5kaW5nICdN
ZXNzYWdlIDInIHRvIFNlcnZpY2UgV29ya2VyCitQQVNTOiBDbGllbnQgcmVjZWl2ZWQgbWVzc2Fn
ZSBmcm9tIHNlcnZpY2Ugd29ya2VyLCBvcmlnaW46IGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMKK1BB
U1M6IFNlcnZpY2Ugd29ya2VyIHJlY2VpdmVkIG1lc3NhZ2UgJ01lc3NhZ2UgMicgZnJvbSBvcmln
aW4gJ2h0dHBzOi8vMTI3LjAuMC4xOjg0NDMnCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jh
c2guaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Bv
c3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5i
ZTYwNzNkYzAxYzEzMWExYThjMzkyYmFjMmYzMjY3ZTdhMTAwYWMwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0
ZXItc3ctcHJvY2Vzcy1jcmFzaC5odHRwcy5odG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3ctdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0
ZXItc3ctcHJvY2Vzcy1jcmFzaC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMv
cG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9j
ZXNzLWNyYXNoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlNWVkOTIzZWQxZWMxNTc1NGIxYjc5ZGI0MmM0Y2Q4
MDNkYTJiNTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5q
cwpAQCAtMCwwICsxLDI4IEBACit2YXIgbWVzc2FnZU51bWJlciA9IDE7CituYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICBsb2coIlBBU1M6IENsaWVudCByZWNlaXZlZCBtZXNzYWdlIGZyb20gc2VydmljZSB3b3Jr
ZXIsIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAgbG9nKGV2ZW50LmRhdGEpOworICAg
IGlmIChtZXNzYWdlTnVtYmVyID09IDEpIHsKKyAgICAgICAgbG9nKCIqIFNpbXVsYXRpbmcgU2Vy
dmljZSBXb3JrZXIgcHJvY2VzcyBjcmFzaCIpOworICAgICAgICB0ZXN0UnVubmVyLnRlcm1pbmF0
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCk7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBsb2coIiogU2VuZGluZyAnTWVzc2FnZSAyJyB0byBTZXJ2aWNlIFdvcmtl
ciIpOworICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJNZXNzYWdlIDIiKTsK
KyAgICAgICAgICAgIG1lc3NhZ2VOdW1iZXIrKzsKKyAgICAgICAgICAgIGhhbmRsZSA9IHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IHJl
Y2VpdmUgbWVzc2FnZSBmcm9tIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgYWZ0ZXIgdGhlIGNyYXNo
Iik7CisgICAgICAgICAgICAgICAgZmluaXNoU1dUZXN0KCk7CisgICAgICAgICAgICB9LCAxMDAw
KTsKKyAgICAgICAgfSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1lc3Nh
Z2VOdW1iZXIgPT0gMikgeworICAgICAgICBjbGVhclRpbWVvdXQoaGFuZGxlKTsKKyAgICAgICAg
ZmluaXNoU1dUZXN0KCk7CisgICAgfQorfSk7CisKK25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJl
Z2lzdGVyKCJyZXNvdXJjZXMvcG9zdG1lc3NhZ2UtZWNoby13b3JrZXIuanMiLCB7IH0pLnRoZW4o
ZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7CisgICAgbG9nKCIqIFNlbmRpbmcgJ01lc3NhZ2UgMScg
dG8gU2VydmljZSBXb3JrZXIiKTsKKyAgICByZWdpc3RyYXRpb24uaW5zdGFsbGluZy5wb3N0TWVz
c2FnZSgiTWVzc2FnZSAxIik7Cit9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328681</attachid>
            <date>2017-12-06 22:59:08 -0800</date>
            <delta_ts>2017-12-06 23:37:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180477-20171206225908.patch</filename>
            <type>text/plain</type>
            <size>39837</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY3MjBiOTU0MWFkMzhj
N2E5ODQ2NzY5MDEzNmMyMGM3NzZjODM0MC4uOTJlM2JiMGI5YTkyZTdjZTA1NmZhZmM5OGU0MGUy
MDEwYzY2NjE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE3LTEyLTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc2hvdWxkIGJlIGFibGUg
dG8gcmVjb3ZlciBhZnRlciBhIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgY3Jhc2gKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDQ3NworCisgICAgICAg
IFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbiBhbmQgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBU
ZXN0OiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9j
ZXNzLWNyYXNoLmh0dHBzLmh0bWwKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAgICAgT25jZSB0aGUgY29ubmVjdGlvbiB3aXRoIHRo
ZSBjb250ZXh0IHByb2Nlc3MgaXMgZXN0YWJsaXNoZWQsIHByb2Nlc3MgInJ1biBzZXJ2aWNlIHdv
cmtlciIKKyAgICAgICAgcmVxdWVzdHMgdGhhdCBvY3VycmVkIHdoaWxlIGVzdGFibGlzaGluZyB0
aGUgY29ubmVjdGlvbi4KKworICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJ1blNlcnZpY2VX
b3JrZXJJZk5lY2Vzc2FyeSk6CisgICAgICAgIFRha2UgaW4gYSBsYW1iZGEgZnVuY3Rpb24gdGhh
dCBnZXRzIGNhbGxlZCBhZnRlciB0aGUgInJ1biBzZXJ2aWNlIHdvcmtlciIgcmVxdWVzdAorICAg
ICAgICBpcyBwcm9jZXNzZWQuIFdlIHVzZWQgdG8gYXNzZXJ0IHRoYXQgd2UgaGFkIGEgY29ubmVj
dGlvbiB0byB0aGUgY29udGV4dCBwcm9jZXNzLgorICAgICAgICBXZSBub3cgd2FpdCBmb3IgdGhl
IGNvbm5lY3Rpb24gdG8gYmUgZXN0YWJsaXNoZWQgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdCwgdGh1
cworICAgICAgICBtYWtpbmcgdGhlIG9wZXJhdGlvbiBhc3luY2hyb25vdXMuCisKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgU3BsaXQgc29t
ZSBsb2dpYyBvdXQgb2YgcnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KCkgdG8gcmV1c2UgaW4g
c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKS4KKworICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6Om1hcmtBbGxXb3JrZXJzQXNUZXJtaW5hdGVkKToKKyAgICAgICAgQWRkIG1ldGhv
ZCB0byBtYXJrIGFsbCBzZXJ2aWNlIHdvcmtlcnMgYXMgdGVybWluYXRlZC4gVGhpcyBpcyBjYWxs
ZWQgd2hlbiB0aGUgU2VydmljZQorICAgICAgICBXb3JrZXIgcHJvY2VzcyBjcmFzaGVzLgorCisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorCiAyMDE3LTEyLTA2
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG5vZGVz
IGZyb20gQVhPYmplY3RDYWNoZSB3aGVuIHRoZSBhc3NvY2lhdGVkIHN1YmZyYW1lIGRvY3VtZW50
IGlzIGdldHRpbmcgZGVzdHJveWVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0OGRmMzkzOGY3ZWM2NGM5MWMxMjU4
ZWIwNTM5ZDYwOTE4MGE0OTdjLi42ZDlkNTcyNmYxOWFkMzZhYWVjOWY5NDMwM2EzYTk0YjBkNzZk
OGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE3LTEyLTA2ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVjb3Zl
ciBhZnRlciBhIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDQ3NworCisgICAgICAgIFJldmlld2Vk
IGJ5IEJyYWR5IEVpZHNvbiBhbmQgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAqIFN0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZy
b21DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyRnJvbVNlcnZpY2VXb3JrZXIpOgorICAgICAgICBVcGRhdGUg
Y2FsbHMgdG8gU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeSgpIHRoYXQgdGhh
dCBpdCBpcyBhc3luY2hyb25vdXMKKyAgICAgICAgYW5kIHRha2VzIGluIGEgbGFtYmRhLgorCisg
ICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjppcGNDb25uZWN0
aW9uIGNvbnN0KToKKyAgICAgICAgQWRkIGdldHRlciBmb3IgdGhlIHVuZGVybHlpbmcgSVBDIGNv
bm5lY3Rpb24uCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpkaWRDbG9zZSk6CisgICAgICAgIChX
ZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Nsb3Nl
ZCk6CisgICAgICAgIE1vdmUgc29tZSBjb2RlIHRvIGNvbm5lY3Rpb25Ub0NvbnRleHRQcm9jZXNz
V2FzQ2xvc2VkKCkgdG8gYXZvaWQgZHVwbGljYXRpb24uCisgICAgICAgIEFsc28sIHJlbGF1bmNo
IHRoZSBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzIGlmIGl0IGhhcyBleGl0ZWQgYnV0IHdlIHN0aWxs
CisgICAgICAgIGhhdmUgU1dTZXJ2ZXIgY29ubmVjdGlvbnMgdG8gcmVndWxhciBXZWIgUHJvY2Vz
c2VzLgorCisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VQcm9jZXNzOjpuZWVkc1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24gY29uc3QpOgorICAgICAgICBVdGlsaXR5IGZ1bmN0aW9uIHRvIGRldGVy
bWluZSBpZiB3ZSBzdGlsbCBuZWVkIHRoZSBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzLgorICAgICAg
ICBUaGUgY3VycmVudCBydWxlIGlzIHRoYXQgd2UgbmVlZCB0aGUgc2VydmljZSB3b3JrZXIgKGFr
YSAiY29udGV4dCIpIHByb2Nlc3MKKyAgICAgICAgaWYgd2Ugc3RpbGwgaGF2ZSBTV1NlcnZlciBj
b25uZWN0aW9ucyB0byByZWd1bGFyIFdlYiBQcm9jZXNzZXMuCisKKyAgICAgICAgKiBTdG9yYWdl
UHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oOgorCisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UpOgorICAgICAgICBJZiBkaWRDbG9zZSgp
IGlzIGNhbGxlZCBmb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZpY2Ugd29ya2VyIGNvbnRl
eHQsCisgICAgICAgIGxldCB0aGUgU3RvcmFnZVByb2Nlc3Mga25vdyBzbyB0aGF0IGl0IGNhbiBj
bGVhciBpdHMgc3RhdGUgYW5kIHJlbGF1bmNoCisgICAgICAgIHRoZSBwcm9jZXNzIGlmIG5lY2Vz
c2FyeS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAg
ICAoV0tDb250ZXh0VGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF90ZXJt
aW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vzc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgQWRkIFNQSSB0byB0ZXJtaW5hdGUg
dGhlIHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVy
bWluYXRpb25UaW1lcik6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVO
ZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5l
Y3RQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNl
cnZpY2VXb3JrZXJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aDoKKyAgICAgICAgV2UgdXNlZCB0byBzaHV0ZG93biB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNz
IHJpZ2h0IGF3YXkgYXMgc29vbiBhcyB0aGUgbGFzdCByZWd1bGFyCisgICAgICAgIFdlYlByb2Nl
c3Mgd2FzIGdvbmUuIFdlIG5vdyBnaXZlIGl0IGEgZ3JhY2UgcGVyaW9kIG9mIDUgc2Vjb25kcyBp
biBjYXNlIGEgbmV3CisgICAgICAgIFdlYlByb2Nlc3MgZ2V0cyBsYXVuY2hlZCBzaG9ydGx5IGFm
dGVyLgorCiAyMDE3LTEyLTA2ICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KIAogICAg
ICAgICAtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gY29weVdpdGhab25lXSBkb2Vzbid0IGNvcHkg
X2dyb3VwSWRlbnRpZmllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBiYWZjNjRjNDgzZTkwM2RjZTZhN2JmNDdkN2E1NmRl
MjMxY2RhN2FkLi5hMWVjMDI3ZWQzYjBlNGNhODE0YTdkMDFkMWQ2OTJkYmQxNGJkMDc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cApAQCAtNDIxLDExICs0MjEsMTkgQEAgdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKENvbm5l
Y3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGoKIAogdm9pZCBT
V1NlcnZlcjo6c2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKQogewotICAgIEFTU0VS
VChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKSk7Ci0gICAgZm9yIChhdXRvJiBkYXRhIDogbV9wZW5kaW5nQ29udGV4dERhdGFzKQor
ICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2Jh
bFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKTsKKyAgICBBU1NFUlQoY29ubmVjdGlvbik7CisK
KyAgICBhdXRvIHBlbmRpbmdDb250ZXh0RGF0YXMgPSBXVEZNb3ZlKG1fcGVuZGluZ0NvbnRleHRE
YXRhcyk7CisgICAgZm9yIChhdXRvJiBkYXRhIDogcGVuZGluZ0NvbnRleHREYXRhcykKICAgICAg
ICAgaW5zdGFsbENvbnRleHREYXRhKGRhdGEpOwotICAgIAotICAgIG1fcGVuZGluZ0NvbnRleHRE
YXRhcy5jbGVhcigpOworCisgICAgYXV0byBzZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMgPSBXVEZN
b3ZlKG1fc2VydmljZVdvcmtlclJ1blJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBz
ZXJ2aWNlV29ya2VyUnVuUmVxdWVzdHMpIHsKKyAgICAgICAgYm9vbCBzdWNjZXNzID0gcnVuU2Vy
dmljZVdvcmtlcihpdGVtLmtleSk7CisgICAgICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBpdGVt
LnZhbHVlKQorICAgICAgICAgICAgY2FsbGJhY2soc3VjY2VzcywgKmNvbm5lY3Rpb24pOworICAg
IH0KIH0KIAogdm9pZCBTV1NlcnZlcjo6aW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKQEAgLTQ0NiwyOSArNDU0LDQ3IEBAIHZvaWQgU1dTZXJ2
ZXI6Omluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRh
dGEpCiAgICAgY29ubmVjdGlvbi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGRhdGEpOwog
fQogCi1ib29sIFNXU2VydmVyOjppbnZva2VSdW5TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VySWZO
ZWNlc3NhcnkoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUnVuU2VydmljZVdv
cmtlckNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigp
OwogICAgIGlmIChhdXRvKiB3b3JrZXIgPSBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5n
ZXQoaWRlbnRpZmllcikpIHsKLSAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkpCi0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkpIHsK
KyAgICAgICAgICAgIEFTU0VSVChjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRy
dWUsICpjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1
ZXN0cy5lbnN1cmUoaWRlbnRpZmllciwgWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBWZWN0b3I8
UnVuU2VydmljZVdvcmtlckNhbGxiYWNrPiB7IH07CisgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1
ZS5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgLy8gTm9ib2R5IHNob3VsZCBoYXZlIGEgU2VydmljZVdvcmtlcklkZW50aWZpZXIgZm9yIGEg
U1dTZXJ2ZXJXb3JrZXIgdGhhdCBkb2Vzbid0IGV4aXN0LgorICAgIGNhbGxiYWNrKHJ1blNlcnZp
Y2VXb3JrZXIoaWRlbnRpZmllciksICpjb25uZWN0aW9uKTsKK30KKworYm9vbCBTV1NlcnZlcjo6
cnVuU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQorewog
ICAgIGF1dG8qIHdvcmtlciA9IHdvcmtlckJ5SUQoaWRlbnRpZmllcik7Ci0gICAgQVNTRVJUKHdv
cmtlcik7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IElmIHRoZSByZWdpc3RyYXRpb24gZm9yIGEgd29ya2luZyBoYXMgYmVlbiByZW1vdmVkIHRoZW4g
dGhlIHJlcXVlc3QgdG8gcnVuCiAgICAgLy8gdGhlIHdvcmtlciBpcyBtb290LgogICAgIGlmICgh
Z2V0UmVnaXN0cmF0aW9uKHdvcmtlci0+cmVnaXN0cmF0aW9uS2V5KCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5hZGQoaWRlbnRp
ZmllciwgKndvcmtlcik7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3J1bm5pbmdPclRlcm1pbmF0
aW5nV29ya2Vycy5hZGQoaWRlbnRpZmllciwgKndvcmtlcik7CisgICAgQVNTRVJUX1VOVVNFRChh
ZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKwogICAgIHdvcmtlci0+c2V0U3RhdGUo
U1dTZXJ2ZXJXb3JrZXI6OlN0YXRlOjpSdW5uaW5nKTsKIAogICAgIGF1dG8qIGNvbm5lY3Rpb24g
PSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24oKTsKICAgICBBU1NFUlQoY29ubmVjdGlvbik7CiAgICAgY29ubmVjdGlvbi0+aW5zdGFs
bFNlcnZpY2VXb3JrZXJDb250ZXh0KHdvcmtlci0+Y29udGV4dERhdGEoKSk7Ci0gICAgCisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTA1LDEwICs1MzEsMTQgQEAgdm9pZCBTV1NlcnZlcjo6
dGVybWluYXRlV29ya2VySW50ZXJuYWwoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgVGVybWluYXRp
b25Nb2RlIG0KICAgICB9OwogfQogCi12b2lkIFNXU2VydmVyOjp3b3JrZXJDb250ZXh0VGVybWlu
YXRlZChTV1NlcnZlcldvcmtlciYgd29ya2VyKQordm9pZCBTV1NlcnZlcjo6bWFya0FsbFdvcmtl
cnNBc1Rlcm1pbmF0ZWQoKQogewotICAgIEFTU0VSVCh3b3JrZXIuaXNUZXJtaW5hdGluZygpKTsK
KyAgICB3aGlsZSAoIW1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmlzRW1wdHkoKSkKKyAg
ICAgICAgd29ya2VyQ29udGV4dFRlcm1pbmF0ZWQobV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtl
cnMuYmVnaW4oKS0+dmFsdWUpOworfQogCit2b2lkIFNXU2VydmVyOjp3b3JrZXJDb250ZXh0VGVy
bWluYXRlZChTV1NlcnZlcldvcmtlciYgd29ya2VyKQorewogICAgIHdvcmtlci5zZXRTdGF0ZShT
V1NlcnZlcldvcmtlcjo6U3RhdGU6Ok5vdFJ1bm5pbmcpOwogCiAgICAgLy8gQXQgdGhpcyBwb2lu
dCBpZiBubyByZWdpc3RyYXRpb25zIGFyZSByZWZlcmVuY2luZyB0aGUgd29ya2VyIHRoZW4gaXQg
d2lsbCBiZSBkZXN0cm95ZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmgKaW5kZXggZDdiZTMxMDQwNWNhODI5MDQwOWU1ODkxNGE0OWE4MjY5
MjE1ZDg5MS4uOTg1NGViZjIyNmQyMDU0M2RlMmUyNjM3YzNlYjQxNzkxMDI2MmFhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAt
MTQwLDYgKzE0MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU1dTZXJ2
ZXJXb3JrZXImKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNXU2VydmVyV29ya2VyJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJXb3JrZXIqIHdvcmtlckJ5SUQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtYXJrQWxs
V29ya2Vyc0FzVGVybWluYXRlZCgpOwogICAgIAogICAgIENvbm5lY3Rpb24qIGdldENvbm5lY3Rp
b24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX2Nv
bm5lY3Rpb25zLmdldChpZGVudGlmaWVyKTsgfQogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0
b3JlKCkgeyByZXR1cm4gbV9vcmlnaW5TdG9yZTsgfQpAQCAtMTYwLDcgKzE2Miw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChD
bGllbnRPcmlnaW4mJiwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhJiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklkZW50aWZp
ZXI+JiBjb250cm9sbGluZ1NlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdp
biYsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaW52b2tlUnVuU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Cisg
ICAgdXNpbmcgUnVuU2VydmljZVdvcmtlckNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKGJv
b2wsIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpPjsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
UnVuU2VydmljZVdvcmtlckNhbGxiYWNrJiYpOwogCiAgICAgdm9pZCBzZXRDbGllbnRBY3RpdmVX
b3JrZXIoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKICAgICB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzKFNXU2VydmVy
UmVnaXN0cmF0aW9uJik7CkBAIC0xODAsNiArMTgzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
bW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYsIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2Vy
dmVyUmVnaXN0cmF0aW9uKiBkb1JlZ2lzdHJhdGlvbk1hdGNoaW5nKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCk7CisgICAgYm9vbCBydW5T
ZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgaW5zdGFs
bENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOwogCkBAIC0yMTYs
NiArMjIwLDcgQEAgcHJpdmF0ZToKICAgICBVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4gbV9vcmln
aW5TdG9yZTsKICAgICBSZWdpc3RyYXRpb25TdG9yZSBtX3JlZ2lzdHJhdGlvblN0b3JlOwogICAg
IERlcXVlPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gbV9wZW5kaW5nQ29udGV4dERhdGFzOwor
ICAgIEhhc2hNYXA8U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFZlY3RvcjxSdW5TZXJ2aWNlV29y
a2VyQ2FsbGJhY2s+PiBtX3NlcnZpY2VXb3JrZXJSdW5SZXF1ZXN0czsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5k
ZXggNDM0MGI3Yjc1NGE5YmM3NjNmNTYzZjM4M2NkZDBjZTU4ZmIxNmNlMC4uNWExZTkxMzIzNTJj
NTM4NWQ1NGJjZWM3ZmRlZTc0ZjE3YThmZjEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAKQEAgLTExNiwxMSArMTE2LDE4IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjp1cGRhdGVXb3JrZXJTdGF0ZUluQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHdvCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpVcGRhdGVXb3Jr
ZXJTdGF0ZSh3b3JrZXIsIHN0YXRlKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpzdGFydEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VySWRlbnRpZmllcj4gc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpzdGFydEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcj4gc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmJiBmb3JtRGF0YSkKIHsKICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoaXMgc3BlY2lm
aWMgd29ya2VyIGNhbm5vdCBiZSByZS1ydW4gKGUuZy4gaXRzIHJlZ2lzdHJhdGlvbiBoYXMgYmVl
biByZW1vdmVkKQotICAgIGlmIChzZXJ2aWNlV29ya2VySWRlbnRpZmllciAmJiAhc2VydmVyKCku
aW52b2tlUnVuU2VydmljZVdvcmtlcigqc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQorICAgIGlm
IChzZXJ2aWNlV29ya2VySWRlbnRpZmllcikgeworICAgICAgICBzZXJ2ZXIoKS5ydW5TZXJ2aWNl
V29ya2VySWZOZWNlc3NhcnkoKnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbY29udGVudENvbm5l
Y3Rpb24gPSBtX2NvbnRlbnRDb25uZWN0aW9uLmNvcHlSZWYoKSwgY29ubmVjdGlvbklkZW50aWZp
ZXIgPSBpZGVudGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIgPSAqc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
LCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKSwgZm9ybURhdGEgPSBXVEZNb3ZlKGZvcm1EYXRh
KV0oYm9vbCBzdWNjZXNzLCBhdXRvJiBjb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICAgICAg
aWYgKHN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoY29udGV4
dENvbm5lY3Rpb24sIE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3Rh
cnRGZXRjaCB7IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIsIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBmb3JtRGF0YSB9KTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50
aWZpZXIpOworICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIEZJ
WE1FOiBJZiB3ZSBkb24ndCBoYXZlIGEgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaGVyZSB0aGVu
IHdlIG5lZWQgdG8gY3JlYXRlIGFuZCBydW4gdGhlIGFwcHJvcHJpYXRlIFNlcnZpY2UgV29ya2Vy
LAogICAgIC8vIGJ1dCBpdCdzIHVuY2xlYXIgdGhhdCB3ZSBoYXZlIGVub3VnaCBpbmZvcm1hdGlv
biBoZXJlIHRvIGRvIHRoYXQuCkBAIC0xMjgsMjYgKzEzNSwyOCBAQCB2b2lkIFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6c3RhcnRGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8UwogICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6U3RhcnRGZXRjaCB7IGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlm
aWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9ybURhdGEg
fSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlckZyb21DbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
JiYgc291cmNlRGF0YSkKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckZyb21DbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRp
b25JZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSYmIHNvdXJjZURhdGEpCiB7CiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmljIHdv
cmtlciBjYW5ub3QgYmUgcmUtcnVuIChlLmcuIGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4gcmVt
b3ZlZCkKLSAgICBpZiAoIXNlcnZlcigpLmludm9rZVJ1blNlcnZpY2VXb3JrZXIoZGVzdGluYXRp
b25JZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2VuZFRvQ29udGV4dFByb2Nl
c3MoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckZyb21DbGllbnQgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2Us
IHNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoc291cmNlRGF0YSkgfSk7CisgICAgc2VydmVyKCku
cnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgW2Rlc3Rp
bmF0aW9uSWRlbnRpZmllciwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHNvdXJjZUlkZW50
aWZpZXIsIHNvdXJjZURhdGEgPSBXVEZNb3ZlKHNvdXJjZURhdGEpXShib29sIHN1Y2Nlc3MsIGF1
dG8mIGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpCisg
ICAgICAgICAgICBzZW5kVG9Db250ZXh0UHJvY2Vzcyhjb250ZXh0Q29ubmVjdGlvbiwgTWVzc2Fn
ZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckZyb21DbGllbnQgeyBkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlk
ZW50aWZpZXIsIFdURk1vdmUoc291cmNlRGF0YSkgfSk7CisgICAgfSk7CiB9CiAKLXZvaWQgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21TZXJ2aWNl
V29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
b3VyY2VJZGVudGlmaWVyKQordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyRnJvbVNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIg
ZGVzdGluYXRpb25JZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyKQogewotICAgIC8vIEl0J3MgcG9z
c2libGUgdGhpcyBzcGVjaWZpYyB3b3JrZXIgY2Fubm90IGJlIHJlLXJ1biAoZS5nLiBpdHMgcmVn
aXN0cmF0aW9uIGhhcyBiZWVuIHJlbW92ZWQpCi0gICAgaWYgKCFzZXJ2ZXIoKS5pbnZva2VSdW5T
ZXJ2aWNlV29ya2VyKGRlc3RpbmF0aW9uSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybjsKLQog
ICAgIGF1dG8qIHNvdXJjZVdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQoc291cmNlSWRlbnRp
Zmllcik7CiAgICAgaWYgKCFzb3VyY2VXb3JrZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNl
bmRUb0NvbnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJGcm9tU2VydmljZVdvcmtlciB7IGRlc3RpbmF0
aW9uSWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlV29ya2VyLT5kYXRhKCkgfSk7CisgICAgLy8g
SXQncyBwb3NzaWJsZSB0aGlzIHNwZWNpZmljIHdvcmtlciBjYW5ub3QgYmUgcmUtcnVuIChlLmcu
IGl0cyByZWdpc3RyYXRpb24gaGFzIGJlZW4gcmVtb3ZlZCkKKyAgICBzZXJ2ZXIoKS5ydW5TZXJ2
aWNlV29ya2VySWZOZWNlc3NhcnkoZGVzdGluYXRpb25JZGVudGlmaWVyLCBbZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlSWRlbnRpZmllciwg
c291cmNlRGF0YSA9IHNvdXJjZVdvcmtlci0+ZGF0YSgpXShib29sIHN1Y2Nlc3MsIGF1dG8mIGNv
bnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIHNlbmRUb0NvbnRleHRQcm9jZXNzKGNvbnRleHRDb25u
ZWN0aW9uLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyRnJvbVNlcnZpY2VXb3JrZXIgeyBkZXN0aW5hdGlvbklkZW50aWZp
ZXIsIG1lc3NhZ2UsIFdURk1vdmUoc291cmNlRGF0YSkgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBm
ZXRjaElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMjMy
LDYgKzI0MSwxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZwogICAgICAgICBjb25uZWN0aW9u
LT5zZW5kKFdURk1vdmUobWVzc2FnZSkpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoV2ViQ29yZTo6U1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBVJiYgbWVzc2FnZSkKK3sKKyAg
ICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPihjb25uZWN0aW9u
KS5zZW5kKFdURk1vdmUobWVzc2FnZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uaAppbmRleCBiNjUwODUzYzU1NmVmOTM2YzJiYzliOGE1M2FkYTQ3YzYwZTAxM2Q5
Li41MDM0OTc4MzU5OTczZjJiOWQzNmZhMjI2ODIwMjZlMzhkOWM3OGQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC01Miw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICBX
ZWJTV1NlcnZlckNvbm5lY3Rpb24oY29uc3QgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJikgPSBkZWxl
dGU7CiAgICAgfldlYlNXU2VydmVyQ29ubmVjdGlvbigpIGZpbmFsOwogCisgICAgSVBDOjpDb25u
ZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50Q29ubmVjdGlv
bi5nZXQoKTsgfQorCiAgICAgdm9pZCBkaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKQEAgLTc5LDEw
ICs4MSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5Q2xpZW50c09mQ29udHJvbGxlckNo
YW5nZShjb25zdCBIYXNoU2V0PFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcj4mIGNvbnRleHRJ
ZGVudGlmaWVycywgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGEmIG5ld0NvbnRyb2xs
ZXIpOwogICAgIHZvaWQgcmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgcmVnaXN0cmF0aW9uUmVh
ZHlSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEmJikgZmluYWw7CiAKLSAgICB2b2lkIHN0YXJ0RmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
JiwgY29uc3QgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgc3RhcnRGZXRjaCh1
aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXI+LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6RmV0
Y2hPcHRpb25zJiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJik7CiAKLSAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyRnJvbUNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBkZXN0aW5hdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYmIHNvdXJjZSk7Ci0gICAgdm9pZCBwb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1l
c3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZSk7CisgICAgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckZyb21DbGllbnQoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIElQQzo6RGF0YVJlZmVyZW5jZSYmIG1lc3NhZ2Us
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgc291cmNlKTsKKyAgICB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyRnJvbVNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIElQQzo6RGF0YVJlZmVyZW5jZSYmIG1lc3Nh
Z2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZSk7CiAKICAgICB2b2lk
IG1hdGNoUmVnaXN0cmF0aW9uKHVpbnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25z
dCBXZWJDb3JlOjpVUkwmIGNsaWVudFVSTCk7CiAgICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKHVp
bnQ2NF90IHJlZ2lzdHJhdGlvbk1hdGNoUmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBXZWJDb3JlOjpVUkwmIGNsaWVu
dFVSTCk7CkBAIC05NCwxMCArOTYsMTAgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGZpbmFsIHsgcmV0dXJuIGlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpOyB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gdm9pZCBzZW5kVG9Db250ZXh0
UHJvY2VzcyhVJiYgbWVzc2FnZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIHZv
aWQgc2VuZFRvQ29udGV4dFByb2Nlc3MoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJiwgVSYmIG1lc3NhZ2UpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAg
ICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb250ZW50Q29ubmVjdGlvbjsKLSAgICBSZWZQdHI8
SVBDOjpDb25uZWN0aW9uPiBtX2NvbnRleHRDb25uZWN0aW9uOwogICAgIEhhc2hNYXA8V2ViQ29y
ZTo6RG9jdW1lbnRJZGVudGlmaWVyLCBXZWJDb3JlOjpDbGllbnRPcmlnaW4+IG1fY2xpZW50T3Jp
Z2luczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJv
Y2Vzcy5jcHAKaW5kZXggMmY3YTUwMTU1MmQxMmY5Nzk2NGRhOTk3NTZkOGIwYzU0MDhmOGFlYi4u
ZmNmZTExNWEzMjlkNzYwOWRhY2NiNjViNjU3NTU1ZmJkZDg4ZjFkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKQEAgLTg2LDggKzg2LDcg
QEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAobV9zZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uICYmIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi0+aXBjQ29ubmVj
dGlvbigpID09ICZjb25uZWN0aW9uKSB7Ci0gICAgICAgIG1fc2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi0+Y29ubmVjdGlvbkNsb3NlZCgpOwotICAgICAgICBtX3NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24gPSBudWxscHRyOworICAgICAgICBjb25uZWN0aW9uVG9Db250ZXh0UHJvY2Vzc1dhc0Ns
b3NlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vsc2UKQEAgLTk2LDYgKzk1LDM4IEBA
IHZvaWQgU3RvcmFnZVByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bikKICAgICBzdG9wUnVuTG9vcCgpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
dm9pZCBTdG9yYWdlUHJvY2Vzczo6Y29ubmVjdGlvblRvQ29udGV4dFByb2Nlc3NXYXNDbG9zZWQo
KQoreworICAgIGlmICghbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBib29sIHNob3VsZFJlbGF1bmNoID0gbmVlZHNTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uKCk7CisKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25D
bG9zZWQoKTsKKyAgICBtX3NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOworCisg
ICAgZm9yIChhdXRvJiBzd1NlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQorICAgICAgICBz
d1NlcnZlci0+bWFya0FsbFdvcmtlcnNBc1Rlcm1pbmF0ZWQoKTsKKworICAgIGlmIChzaG91bGRS
ZWxhdW5jaCkKKyAgICAgICAgY3JlYXRlU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpOworfQor
CisvLyBUaGUgcnVsZSBpcyB0aGF0IHdlIG5lZWQgYSBjb250ZXh0IHByb2Nlc3MgKGFuZCBhIGNv
bm5lY3Rpb24gdG8gaXQpIGFzIGxvbmcgYXMgd2UgaGF2ZSBTV1NlcnZlckNvbm5lY3Rpb25zIHRv
IHJlZ3VsYXIgV2ViUHJvY2Vzc2VzLgorYm9vbCBTdG9yYWdlUHJvY2Vzczo6bmVlZHNTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAobV9zd1NlcnZlckNvbm5lY3Rp
b25zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSWYgdGhlIGxh
c3QgU1dTZXJ2ZXJDb25uZWN0aW9uIGlzIHRvIHRoZSBjb250ZXh0IHByb2Nlc3MsIHRoZW4gd2Ug
bm8gbG9uZ2VyIG5lZWQgdGhlIGNvbnRleHQgY29ubmVjdGlvbi4KKyAgICBpZiAobV9zd1NlcnZl
ckNvbm5lY3Rpb25zLnNpemUoKSA9PSAxICYmIG1fc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiAm
JiAmbV9zd1NlcnZlckNvbm5lY3Rpb25zLmJlZ2luKCktPnZhbHVlLT5pcGNDb25uZWN0aW9uKCkg
PT0gbV9zZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLT5pcGNDb25uZWN0aW9uKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKIHZvaWQgU3Rv
cmFnZVByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIGlmIChtZXNzYWdlUmVjZWl2ZXJNYXAo
KS5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlcikpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKaW5kZXggMTcxYzdhNmU3YjBjZWQwMzQ4
YjQ0YjQzMzVkYzFhYTg3M2JkZTRiMS4uMzQ4MmU3NGZhZjM3NWQ2NWEyNzg3OTY0OTc1ZGU3MGZj
YmFhZmU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdl
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MuaApAQCAtOTgsNiArOTgsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRSZWNlaXZlU3Rv
cmFnZVByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgY29ubmVjdGlvblRvQ29udGV4dFBy
b2Nlc3NXYXNDbG9zZWQoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFN0b3JhZ2VQcm9jZXNz
KCk7CiAKQEAgLTEzMyw2ICsxMzcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKICAgICBXZWJTV09yaWdpblN0b3Jl
JiBzd09yaWdpblN0b3JlRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CisgICAgYm9vbCBuZWVk
c1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKSBjb25zdDsKICNlbmRpZgogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
IGluZGV4ZWREYXRhYmFzZU9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKaW5kZXggNzU0ODE5MjUxMWRkMDk2ZTcxNGMwZjhjMmMxNzFiY2E4NTFh
MDNhNi4uMzI4MmEzNDMwZmM0Y2QzM2E0NWM2MThkNmViY2FhOGIwOTdmOTkzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlVG9XZWJQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTEyMCw4ICsxMjAsMTcgQEAgdm9pZCBTdG9yYWdlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmUKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBTdG9yYWdlVG9X
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikKK3ZvaWQgU3Rv
cmFnZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKIHsKKyAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CisKKyNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCisgICAgaWYgKFN0b3JhZ2VQcm9jZXNzOjpzaW5nbGV0b24oKS5nbG9i
YWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCkgJiYgU3RvcmFnZVByb2Nlc3M6OnNpbmdsZXRv
bigpLmdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKS0+aXBjQ29ubmVjdGlvbigpID09
ICZjb25uZWN0aW9uKSB7CisgICAgICAgIC8vIFNlcnZpY2UgV29ya2VyIHByb2Nlc3MgZXhpdGVk
LgorICAgICAgICBTdG9yYWdlUHJvY2Vzczo6c2luZ2xldG9uKCkuY29ubmVjdGlvblRvQ29udGV4
dFByb2Nlc3NXYXNDbG9zZWQoKTsKKyAgICB9CisjZW5kaWYKKwogI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQogICAgIGF1dG8gaWRiQ29ubmVjdGlvbnMgPSBtX3dlYklEQkNvbm5lY3Rpb25z
OwogICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IGlkYkNvbm5lY3Rpb25zLnZhbHVlcygpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggNWYyMGQx
MjU1MDczM2IwZmRmMDJkMmI1MWUzNTdlNjA2MjUwMDkzZC4uYWY4NGJmMjZhMGQzZDhiNWZkY2Q2
OTlkZmM0MmQ2NGU2YmFmYTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCkBAIC02MTQsNiArNjE0LDExIEBAIHZvaWQgV0tDb250ZXh0VGVybWluYXRl
TmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgdG9JbXBsKGNvbnRleHQp
LT50ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwogfQogCit2b2lkIFdLQ29udGV4dFRlcm1pbmF0
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKFdLQ29udGV4dFJlZiBjb250ZXh0KQoreworICAgIHRvSW1w
bChjb250ZXh0KS0+dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKTsKK30KKwogUHJvY2Vz
c0lEIFdLQ29udGV4dEdldE5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcihXS0NvbnRleHRSZWYgY29u
dGV4dFJlZikKIHsKICAgICByZXR1cm4gdG9JbXBsKGNvbnRleHRSZWYpLT5uZXR3b3JrUHJvY2Vz
c0lkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dFByaXZhdGUuaAppbmRleCAyZGUxMWRlZWM1MmQ3ZTNhZWY3MmQ5MTI0ZjRiNjM2MWM1NWEy
ZjVmLi5hMGZjMWMyM2RiODJjZDM0NjdmMzFlZjhlNmVkODhmOTdmNWRjNmE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCkBAIC04OSw2
ICs4OSw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFdhcm1Jbml0aWFsUHJvY2VzcyhXS0Nv
bnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRVc2VzTmV0d29y
a1Byb2Nlc3MoV0tDb250ZXh0UmVmLCBib29sKTsKIAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0
VGVybWluYXRlTmV0d29ya1Byb2Nlc3MoV0tDb250ZXh0UmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdL
Q29udGV4dFRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKFdLQ29udGV4dFJlZik7CiAKIFdL
X0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29j
a2V0VGVzdGluZyhXS0NvbnRleHRSZWYsIGJvb2wpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0
U2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyVGVzdGluZyhXS0NvbnRl
eHRSZWYsIGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbQppbmRleCAwY2M5ODgwMzQxZGNkNTIxNDkxYjdjMWNlY2E0ZjA4OWE5
MGFjMTJkLi43Yzk0N2IwNDNlZjFjMjFlZjhjOTBlM2NjYzdmMGE3ZWY4M2E5ZGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpA
QCAtNDEyLDYgKzQxMiwxMSBAQCAtICh2b2lkKV90ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcwogICAg
IF9wcm9jZXNzUG9vbC0+dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKTsKIH0KIAorLSAodm9pZClf
dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MKK3sKKyAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1p
bmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCk7Cit9CisKIC0gKHBpZF90KV9uZXR3b3JrUHJvY2Vz
c0lkZW50aWZpZXIKIHsKICAgICByZXR1cm4gX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2Vzc0lk
ZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggMGRjMTI4NjhjYjdlNTMwNGJhZTViNmFh
ODU3MDY3ZDRlN2I4MGI5NS4uYWRkZTdjMWI4NjdiYzU3ODI0YWUwZDkyOTVlZWI0MTM1ZWUzODQ1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTc0LDYgKzc0LDcgQEAKIC8vIFRlc3Qgb25seS4gU2hv
dWxkIGJlIGNhbGxlZCBvbmx5IHdoaWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVu
bmluZy4KIC0gKHZvaWQpX3Rlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzOwogLSAodm9pZClfdGVybWlu
YXRlTmV0d29ya1Byb2Nlc3M7CistICh2b2lkKV90ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
czsKIAogLy8gVGVzdCBvbmx5LgogLSAocGlkX3QpX25ldHdvcmtQcm9jZXNzSWRlbnRpZmllciBX
S19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMyksIGlvcygxMS4wKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYWM3Y2JiY2YxZGYyNGZjM2UxZTM0
Njc0NjliY2UxYTMyZGNiOTY5ZS4uMjA5OTljYjM3NzE2NmI5YTFlZjNjOTBmMWUyODdkZmRkNjY1
MTdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAt
MTE1LDYgKzExNSw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBERUZJTkVfREVCVUdfT05MWV9H
TE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHByb2Nlc3NQb29sQ291bnRlciwgKCJX
ZWJQcm9jZXNzUG9vbCIpKTsKIAorc3RhdGljIGNvbnN0IFNlY29uZHMgc2VydmljZVdvcmtlclRl
cm1pbmF0aW9uRGVsYXkgeyA1X3MgfTsKKwogc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTGlzdGVu
ZXJJZGVudGlmaWVyKCkKIHsKICAgICBzdGF0aWMgdWludDY0X3QgbmV4dElkZW50aWZpZXIgPSAx
OwpAQCAtMjQ0LDYgKzI0Niw3IEBAIFdlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbChBUEk6
OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICAsIG1fcHJvY2Vz
c1N1cHByZXNzaW9uRGlzYWJsZWRGb3JQYWdlQ291bnRlcihbdGhpc10oUmVmQ291bnRlckV2ZW50
KSB7IHVwZGF0ZVByb2Nlc3NTdXBwcmVzc2lvblN0YXRlKCk7IH0pCiAgICAgLCBtX2hpZGRlblBh
Z2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlc0NvdW50ZXIoW3RoaXNdKFJlZkNvdW50ZXJFdmVudCkg
eyBtX2hpZGRlblBhZ2VUaHJvdHRsaW5nVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7IH0pCiAgICAg
LCBtX2hpZGRlblBhZ2VUaHJvdHRsaW5nVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2Vi
UHJvY2Vzc1Bvb2w6OnVwZGF0ZUhpZGRlblBhZ2VUaHJvdHRsaW5nQXV0b0luY3JlYXNlTGltaXQp
CisgICAgLCBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25UaW1lcihSdW5Mb29wOjpt
YWluKCksIHRoaXMsICZXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nl
c3MpCiB7CiAgICAgaWYgKG1fY29uZmlndXJhdGlvbi0+c2hvdWxkSGF2ZUxlZ2FjeURhdGFTdG9y
ZSgpKQogICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmNyZWF0ZUxlZ2FjeShsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihtX2NvbmZp
Z3VyYXRpb24pKTsKQEAgLTY5Nyw2ICs3MDAsMTAgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcyhXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGEK
ICAgICBhdXRvJiBwcm9jZXNzID0gcHJvY2Vzc1Byb3h5LmdldCgpOwogICAgIGluaXRpYWxpemVO
ZXdXZWJQcm9jZXNzKHByb2Nlc3MsIHdlYnNpdGVEYXRhU3RvcmUpOwogICAgIG1fcHJvY2Vzc2Vz
LmFwcGVuZChXVEZNb3ZlKHByb2Nlc3NQcm94eSkpOworCisgICAgaWYgKG1fc2VydmljZVdvcmtl
clByb2Nlc3NUZXJtaW5hdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fc2VydmljZVdv
cmtlclByb2Nlc3NUZXJtaW5hdGlvblRpbWVyLnN0b3AoKTsKKwogICAgIHJldHVybiBwcm9jZXNz
OwogfQogCkBAIC05NDMsOCArOTUwLDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVj
dFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgZG8gYmV0dGVyIHRoYW4gdGhpcy4gRm9yIG5vdywgd2UganVzdCBkZXN0cm95IHRoZSBTZXJ2
aWNlV29ya2VyIHByb2Nlc3MKICAgICAvLyB3aGVuZXZlciB0aGVyZSBpcyBubyByZWd1bGFyIFdl
YkNvbnRlbnQgcHJvY2VzcyByZW1haW5pbmcuCiAgICAgaWYgKG1fcHJvY2Vzc2VzLnNpemUoKSA9
PSAxICYmIG1fcHJvY2Vzc2VzWzBdID09IG1fc2VydmljZVdvcmtlclByb2Nlc3MpIHsKLSAgICAg
ICAgbV9zZXJ2aWNlV29ya2VyUHJvY2VzcyA9IG51bGxwdHI7Ci0gICAgICAgIG1fcHJvY2Vzc2Vz
LmNsZWFyKCk7CisgICAgICAgIGlmICghbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fc2VydmljZVdvcmtlclByb2Nlc3NUZXJt
aW5hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChzZXJ2aWNlV29ya2VyVGVybWluYXRpb25EZWxheSk7
CiAgICAgfQogI2VuZGlmCiB9CkBAIC0xNDA4LDYgKzE0MTUsMTggQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6dGVybWluYXRlTmV0d29ya1Byb2Nlc3MoKQogICAgIG1fZGlkTmV0d29ya1Byb2Nlc3ND
cmFzaCA9IHRydWU7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VX
b3JrZXJQcm9jZXNzKCkKK3sKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKCFt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NlcnZpY2VX
b3JrZXJQcm9jZXNzLT5yZXF1ZXN0VGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29u
OjpSZXF1ZXN0ZWRCeUNsaWVudCk7CisgICAgQVNTRVJUKCFtX3Byb2Nlc3Nlcy5jb250YWlucyht
X3NlcnZpY2VXb3JrZXJQcm9jZXNzKSk7CisgICAgQVNTRVJUKCFtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzKTsKKyNlbmRpZgorfQorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzeW5jTmV0d29ya1Byb2Nl
c3NDb29raWVzKCkKIHsKICAgICBzZW5kU3luY1RvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpTeW5jQWxsQ29va2llcygpLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OlN5bmNBbGxDb29raWVzOjpSZXBseSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCmluZGV4IDVmMTQ1MDE2NTI0ODExYzY1MjJhNDFiMjc3NzRlZDMyY2U5MDI2
MzMuLmJjZDMxNjU0NTc2MTU4NmRhMDlkMmVhYmQzMTYyOGE5MTUxYTRhNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMjYyLDYgKzI2Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNsZWFyQ2FjaGVkQ3JlZGVudGlhbHMoKTsKICAgICB2b2lkIHRlcm1pbmF0
ZVN0b3JhZ2VQcm9jZXNzKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOwor
ICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKTsKIAogICAgIHZvaWQgc3lu
Y05ldHdvcmtQcm9jZXNzQ29va2llcygpOwogCkBAIC02MzMsNiArNjM0LDcgQEAgcHJpdmF0ZToK
ICAgICBQYXRocyBtX3Jlc29sdmVkUGF0aHM7CiAKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklE
LCBIYXNoU2V0PFdlYlBhZ2VQcm94eSo+PiBtX3Nlc3Npb25Ub1BhZ2VzTWFwOworICAgIFJ1bkxv
b3A6OlRpbWVyPFdlYlByb2Nlc3NQb29sPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRp
b25UaW1lcjsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGI2YzUyY2JkMDZjY2M4YTY5NWM3OWY1
YmUxNGY4Njk1NTQ4OGIzNi4uMDExMzQ0MmJkZjliOTI1MDNkNmVmOWUwMmExMzk2YzIyZDk2ZTAw
MSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIyIEBACisyMDE3LTEyLTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVjb3ZlciBhZnRlciBhIFNlcnZpY2Ug
V29ya2VyIHByb2Nlc3MgY3Jhc2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MDQ3NworCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbiBh
bmQgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBBZGQgdGVzdFJ1bm5lciBBUEkgdG8gdGVybWlu
YXRlIHRoZSBTZXJ2aWNlIFdvcmtlciBwcm9jZXNzLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAo
V1RSOjpUZXN0UnVubmVyOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDE3LTEyLTA2ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEV4Y2x1ZGUgYW5vdGhl
ciBsZWFrIGNhbGxzdGFjay4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGE4YmM3Y2Jm
MjMwYWMzOTJkYzk5YzEyYjVmYzE2MjFhNDIzZTA1MDkuLjRiYmRlYzE5NTkyNmQxNWFiOGYwODQx
OGJiMzQ2ZTJmNTlhMjhmYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzA0LDYg
KzMwNCw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHNldFdlYlJUQ0xlZ2Fj
eUFQSUVuYWJsZWQoYm9vbGVhbiB2YWx1ZSk7CiAKICAgICB2b2lkIHRlcm1pbmF0ZU5ldHdvcmtQ
cm9jZXNzKCk7CisgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyUHJvY2VzcygpOwogCiAg
ICAgdm9pZCByZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMob2JqZWN0IGNhbGxiYWNrKTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAKaW5kZXggYWE5OGQwY2M1ZGYxZDFhM2ZmYmViZDdiZTE5ODUzNmZlMWEwNWRiMS4uNmEz
NTUwMWNhZGMzNDM4ZTRiMWZmMWMxY2M2MGY0ZGY1NGY5MzQyNCAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xMTM4
LDYgKzExMzgsMTIgQEAgdm9pZCBUZXN0UnVubmVyOjp0ZXJtaW5hdGVOZXR3b3JrUHJvY2Vzcygp
CiAgICAgV0tCdW5kbGVQYWdlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigp
LnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK3ZvaWQg
VGVzdFJ1bm5lcjo6dGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKQoreworICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiVGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MiKSk7CisgICAgV0tC
dW5kbGVQYWdlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+
cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7Cit9CisKIHN0YXRpYyB1bnNpZ25l
ZCBuZXh0VUlTY3JpcHRDYWxsYmFja0lEKCkKIHsKICAgICBzdGF0aWMgdW5zaWduZWQgY2FsbGJh
Y2tJRCA9IEZpcnN0VUlTY3JpcHRDYWxsYmFja0lEOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBkNjQ0OTQzMTdjYTBlYTMx
Yjk0MjRkZWFkMGI2NDA0YjE1NmU1MmYxLi42MDQwYTFiYmFjMTBlNzdhMGMwNjY3NzkwYTA5YTNm
NTJmYWY3ZDQ1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDAyLDYgKzQwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dE9wZW5QYW5lbEZpbGVzKEpTVmFsdWVSZWYpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3Jr
UHJvY2VzcygpOworICAgIHZvaWQgdGVybWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKTsKIAog
ICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKEpTVmFsdWVSZWYpOwogICAgIHZv
aWQgY2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDI3MDAwNDUzMzliZWJkMTE1
YmZjMDFhZThkOTZlMDg3MzRhMmIxMzcuLjM0YmFlMjYzNDA3NDliYzg1MzIzY2JjZjkwYTU1MGEz
NjljYmEyMGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBA
IC0yMjc0LDYgKzIyNzQsMTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6dGVybWluYXRlTmV0d29y
a1Byb2Nlc3MoKQogICAgIFdLQ29udGV4dFRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzKHBsYXRmb3Jt
Q29udGV4dCgpKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6dGVybWluYXRlU2VydmljZVdv
cmtlclByb2Nlc3MoKQoreworICAgIFdLQ29udGV4dFRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzKHBsYXRmb3JtQ29udGV4dCgpKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQg
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtV2lsbFJ1blRlc3QoY29uc3QgVGVzdEludm9jYXRpb24m
KQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGIxYWM0Zjcy
NTBhOGYwMWNlODFhZjA1YTcwMGU2OTBjNWFiZTkzYzkuLmFkNWRiNmJmZTZhNzk5NGQ3Yzk2Zjhj
OGMzMzIxNmUxYTE0ZDc2NzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKQEAgLTE4OCw2ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxl
VVJMcyhXS0FycmF5UmVmIGZpbGVVUkxzKSB7IG1fb3BlblBhbmVsRmlsZVVSTHMgPSBmaWxlVVJM
czsgfQogCiAgICAgdm9pZCB0ZXJtaW5hdGVOZXR3b3JrUHJvY2VzcygpOworICAgIHZvaWQgdGVy
bWluYXRlU2VydmljZVdvcmtlclByb2Nlc3MoKTsKIAogICAgIHZvaWQgcmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKaW5kZXggNzUzNzJlN2JmZDgxYWQ3OTYzZDc1MzExNzgxY2UzOWVmMjJmYjMxOC4uZjU0NjZk
OGRiY2Q2YWIzNTE5NWFhYzY1NTczZTA4ZGIzMGFlYjlkNiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTc0NCw2ICs3NDQsMTIgQEAgdm9pZCBUZXN0SW52
b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYg
bWVzc2FnZU5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiVGVybWluYXRlU2VydmljZVdvcmtlclBy
b2Nlc3MiKSkgeworICAgICAgICBBU1NFUlQoIW1lc3NhZ2VCb2R5KTsKKyAgICAgICAgVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIlJ1blVJUHJvY2Vzc1NjcmlwdCIpKSB7CiAgICAgICAgIFdLRGlj
dGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25h
cnlSZWY+KG1lc3NhZ2VCb2R5KTsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNj
cmlwdEtleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2NyaXB0Iikp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDg4ODhjMDQ4YTEwMzllMjFhYjU0YjhiOGEwN2Q5NjY0MGMyYmQ5OTQuLmUyNTA5
ZTMxYzgxZjg4YWZhZDViY2M2OWNjMDA1OGNmNmYxODAzODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxNy0xMi0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFdlIHNob3VsZCBiZSBhYmxlIHRvIHJlY292ZXIgYWZ0ZXIgYSBTZXJ2aWNlIFdvcmtlciBwcm9j
ZXNzIGNyYXNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODA0NzcKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24gYW5kIFlvdWVubiBG
YWJsZXQuCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICog
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1j
cmFzaC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2Vz
L3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guanM6IEFkZGVkLgorCiAyMDE3LTEy
LTA2ICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRqdXN0ZWQg
ZXhwZWN0YXRpb25zIGZvciBpbnNwZWN0b3Ivd29ya2VyL3Jlc291cmNlcy1pbi13b3JrZXIuaHRt
bC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Bv
c3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ct
cHJvY2Vzcy1jcmFzaC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzEwYzI4MTlmMDFk
MTgzYjYyMzY5MzdkM2U2YWExZTg3MDc1MDYxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nl
c3MtY3Jhc2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorKiBTZW5kaW5nICdN
ZXNzYWdlIDEnIHRvIFNlcnZpY2UgV29ya2VyCitQQVNTOiBDbGllbnQgcmVjZWl2ZWQgbWVzc2Fn
ZSBmcm9tIHNlcnZpY2Ugd29ya2VyLCBvcmlnaW46IGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMKK1BB
U1M6IFNlcnZpY2Ugd29ya2VyIHJlY2VpdmVkIG1lc3NhZ2UgJ01lc3NhZ2UgMScgZnJvbSBvcmln
aW4gJ2h0dHBzOi8vMTI3LjAuMC4xOjg0NDMnCisqIFNpbXVsYXRpbmcgU2VydmljZSBXb3JrZXIg
cHJvY2VzcyBjcmFzaAorKiBTZW5kaW5nICdNZXNzYWdlIDInIHRvIFNlcnZpY2UgV29ya2VyCitQ
QVNTOiBDbGllbnQgcmVjZWl2ZWQgbWVzc2FnZSBmcm9tIHNlcnZpY2Ugd29ya2VyLCBvcmlnaW46
IGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMKK1BBU1M6IFNlcnZpY2Ugd29ya2VyIHJlY2VpdmVkIG1l
c3NhZ2UgJ01lc3NhZ2UgMicgZnJvbSBvcmlnaW4gJ2h0dHBzOi8vMTI3LjAuMC4xOjg0NDMnCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Bvc3Rt
ZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jhc2guaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Bvc3RtZXNzYWdlLWFmdGVyLXN3LXByb2Nlc3MtY3Jh
c2guaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTYwNzNkYzAxYzEzMWExYThjMzkyYmFjMmYzMjY3
ZTdhMTAwYWMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5odHRwcy5odG1s
CkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c3ctdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3NhZ2UtYWZ0ZXItc3ctcHJvY2Vzcy1j
cmFzaC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNl
cy9wb3N0bWVzc2FnZS1hZnRlci1zdy1wcm9jZXNzLWNyYXNoLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlNWVk
OTIzZWQxZWMxNTc1NGIxYjc5ZGI0MmM0Y2Q4MDNkYTJiNTkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvcG9zdG1lc3Nh
Z2UtYWZ0ZXItc3ctcHJvY2Vzcy1jcmFzaC5qcwpAQCAtMCwwICsxLDI4IEBACit2YXIgbWVzc2Fn
ZU51bWJlciA9IDE7CituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBsb2coIlBBU1M6IENsaWVudCByZWNlaXZl
ZCBtZXNzYWdlIGZyb20gc2VydmljZSB3b3JrZXIsIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7
CisgICAgbG9nKGV2ZW50LmRhdGEpOworICAgIGlmIChtZXNzYWdlTnVtYmVyID09IDEpIHsKKyAg
ICAgICAgbG9nKCIqIFNpbXVsYXRpbmcgU2VydmljZSBXb3JrZXIgcHJvY2VzcyBjcmFzaCIpOwor
ICAgICAgICB0ZXN0UnVubmVyLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKCk7CisgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBsb2coIiogU2VuZGluZyAn
TWVzc2FnZSAyJyB0byBTZXJ2aWNlIFdvcmtlciIpOworICAgICAgICAgICAgZXZlbnQuc291cmNl
LnBvc3RNZXNzYWdlKCJNZXNzYWdlIDIiKTsKKyAgICAgICAgICAgIG1lc3NhZ2VOdW1iZXIrKzsK
KyAgICAgICAgICAgIGhhbmRsZSA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgbG9nKCJGQUlMOiBEaWQgbm90IHJlY2VpdmUgbWVzc2FnZSBmcm9tIHNlcnZpY2Ugd29y
a2VyIHByb2Nlc3MgYWZ0ZXIgdGhlIGNyYXNoIik7CisgICAgICAgICAgICAgICAgZmluaXNoU1dU
ZXN0KCk7CisgICAgICAgICAgICB9LCAxMDAwKTsKKyAgICAgICAgfSwgMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgaWYgKG1lc3NhZ2VOdW1iZXIgPT0gMikgeworICAgICAgICBjbGVh
clRpbWVvdXQoaGFuZGxlKTsKKyAgICAgICAgZmluaXNoU1dUZXN0KCk7CisgICAgfQorfSk7CisK
K25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvcG9zdG1lc3NhZ2Ut
ZWNoby13b3JrZXIuanMiLCB7IH0pLnRoZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7CisgICAg
bG9nKCIqIFNlbmRpbmcgJ01lc3NhZ2UgMScgdG8gU2VydmljZSBXb3JrZXIiKTsKKyAgICByZWdp
c3RyYXRpb24uaW5zdGFsbGluZy5wb3N0TWVzc2FnZSgiTWVzc2FnZSAxIik7Cit9KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>