<?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>179846</bug_id>
          
          <creation_ts>2017-11-17 16:03:34 -0800</creation_ts>
          <short_desc>ASSERTION FAILED: registration in WebCore::SWServerJobQueue::scriptContextStarted(ServiceWorkerIdentifier)</short_desc>
          <delta_ts>2017-11-19 14:48:18 -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>New Bugs</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=179877</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryan Haddad">ryanhaddad</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</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>1373375</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-11-17 16:03:34 -0800</bug_when>
    <thetext>This flaky assertion failure was seen with imported/w3c/web-platform-tests/service-workers/service-worker/getregistration.https.html

ASSERTION FAILED: registration
/Volumes/Data/slave/elcapitan-debug/build/Source/WebCore/workers/service/server/SWServerJobQueue.cpp(114) : void WebCore::SWServerJobQueue::scriptContextStarted(ServiceWorkerIdentifier)
1   0x11ebc87cd WTFCrash
2   0x112b8a76e WebCore::SWServerJobQueue::scriptContextStarted(WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerIdentifierType&gt;)
3   0x112b8a705 WebCore::SWServer::scriptContextStarted(WebCore::SWServerWorker&amp;)
4   0x112b8d7a4 WebCore::SWServerWorker::scriptContextStarted()
5   0x112b8d779 WebCore::SWServerToContextConnection::scriptContextStarted(WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerIdentifierType&gt;)
6   0x10b877601 void IPC::callMemberFunctionImpl&lt;WebKit::WebSWServerToContextConnection, void (WebCore::SWServerToContextConnection::*)(WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerIdentifierType&gt;), std::__1::tuple&lt;WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerIdentifierType&gt; &gt;, 0ul&gt;(WebKit::WebSWServerToContextConnection*, void (WebCore::SWServerToContextConnection::*)(WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerIdentifierType&gt;), std::__1::tuple&lt;WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerIdentifierType&gt; &gt;&amp;&amp;, std::__1::integer_sequence&lt;unsigned long, 0ul&gt;)
7   0x10b877558 void IPC::callMemberFunction&lt;WebKit::WebSWServerToContextConnection, void (WebCore::SWServerToContextConnection::*)(WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerIdentifierType&gt;), std::__1::tuple&lt;WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerIdentifierType&gt; &gt;, std::__1::integer_sequence&lt;unsigned long, 0ul&gt; &gt;(std::__1::tuple&lt;WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerIdentifierType&gt; &gt;&amp;&amp;, WebKit::WebSWServerToContextConnection*, void (WebCore::SWServerToContextConnection::*)(WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerIdentifierType&gt;))
8   0x10b876b61 void IPC::handleMessage&lt;Messages::WebSWServerToContextConnection::ScriptContextStarted, WebKit::WebSWServerToContextConnection, void (WebCore::SWServerToContextConnection::*)(WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerIdentifierType&gt;)&gt;(IPC::Decoder&amp;, WebKit::WebSWServerToContextConnection*, void (WebCore::SWServerToContextConnection::*)(WTF::ObjectIdentifier&lt;WebCore::ServiceWorkerIdentifierType&gt;))
9   0x10b87666d WebKit::WebSWServerToContextConnection::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
10  0x10b1c499c WebKit::StorageProcess::didReceiveMessage(IPC::Connection&amp;, IPC::Decoder&amp;)
11  0x10ad35653 IPC::Connection::dispatchMessage(IPC::Decoder&amp;)
12  0x10ad2c9f8 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)
13  0x10ad35c50 IPC::Connection::dispatchOneMessage()
14  0x10ad3cacd IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14::operator()()
15  0x10ad3ca29 WTF::Function&lt;void ()&gt;::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_14&gt;::call()
16  0x11ec04bbb WTF::Function&lt;void ()&gt;::operator()() const
17  0x11ec25f33 WTF::RunLoop::performWork()
18  0x11ec26834 WTF::RunLoop::performWork(void*)
19  0x7fff8e1cc7e1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
20  0x7fff8e1abf0c __CFRunLoopDoSources0
21  0x7fff8e1ab42f __CFRunLoopRun
22  0x7fff8e1aae28 CFRunLoopRunSpecific
23  0x7fff90a8fcb9 -[NSRunLoop(NSRunLoop) runMode:beforeDate:]
24  0x7fff90a8fb98 -[NSRunLoop(NSRunLoop) run]
25  0x10ef96168 _xpc_objc_main
26  0x10ef94bbe xpc_main
27  0x10abf7045 main
28  0x7fff9835c5ad start
29  0x1

https://build.webkit.org/results/Apple%20El%20Capitan%20Debug%20WK2%20(Tests)/r224962%20(4200)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373438</commentid>
    <comment_count>1</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-11-17 17:08:53 -0800</bug_when>
    <thetext>Skipped the test on debug in https://trac.webkit.org/r225004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373476</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-17 18:20:01 -0800</bug_when>
    <thetext>Will look into this soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373614</commentid>
    <comment_count>3</comment_count>
      <attachid>327329</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-18 17:59:47 -0800</bug_when>
    <thetext>Created attachment 327329
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373616</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-18 18:00:41 -0800</bug_when>
    <thetext>*** Bug 179748 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373633</commentid>
    <comment_count>5</comment_count>
      <attachid>327329</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-18 20:20:47 -0800</bug_when>
    <thetext>Comment on attachment 327329
Patch

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

&gt; Source/WTF/wtf/ObjectIdentifier.h:96
&gt; +    static uint64_t currentIdentifier = 0;

No need for the &quot;= 0&quot; here.

&gt; Source/WTF/wtf/ObjectIdentifier.h:100
&gt; +template&lt;typename T&gt; inline ObjectIdentifier&lt;T&gt; generateThreadSafeObjectIdentifier()

Nothing prevents us from accidentally using generateThreadSafeObjectIdentifier and generateObjectIdentifier for the same type. Might be nice if there was something that made sure that never happened.

&gt; Source/WTF/wtf/ObjectIdentifier.h:102
&gt; +    static NeverDestroyed&lt;std::atomic&lt;uint64_t&gt;&gt; currentIdentifier;

Does std::atomic have a non-trivial destructor? I am surprised we have to use NeverDestroyed here.

What prevents two threads from racing to construct the std::atomic&lt;uint64_t&gt;? We turn off the code that normally protects globals from this kind of problem with a compiler flag. I fear that while access to the atomic is safely guarded against use from multiple threads, construction may not be.

&gt; Source/WebCore/workers/service/ServiceWorkerJobDataIdentifier.h:41
&gt; +    bool operator==(const ServiceWorkerJobDataIdentifier&amp; other) const
&gt; +    {
&gt; +        return connectionIdentifier == other.connectionIdentifier &amp;&amp; jobIdentifier == other.jobIdentifier;
&gt; +    }

Stylistically, I slightly prefer to make this a non-member function. Generally speaking it’s better because then conversions can happen on the left side too, and no special access to the struct internals is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373646</commentid>
    <comment_count>6</comment_count>
      <attachid>327329</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-18 21:36:34 -0800</bug_when>
    <thetext>Comment on attachment 327329
Patch

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

&gt;&gt; Source/WTF/wtf/ObjectIdentifier.h:96
&gt;&gt; +    static uint64_t currentIdentifier = 0;
&gt; 
&gt; No need for the &quot;= 0&quot; here.

I know. I kind of link it for clarity though but OK.

&gt;&gt; Source/WTF/wtf/ObjectIdentifier.h:100
&gt;&gt; +template&lt;typename T&gt; inline ObjectIdentifier&lt;T&gt; generateThreadSafeObjectIdentifier()
&gt; 
&gt; Nothing prevents us from accidentally using generateThreadSafeObjectIdentifier and generateObjectIdentifier for the same type. Might be nice if there was something that made sure that never happened.

I had an initial patch with 2 different Identifier types (ObjectIdentifier &amp; ThreadSafeObjectIdentifier) but it seemed overkill for this.

&gt;&gt; Source/WTF/wtf/ObjectIdentifier.h:102
&gt;&gt; +    static NeverDestroyed&lt;std::atomic&lt;uint64_t&gt;&gt; currentIdentifier;
&gt; 
&gt; Does std::atomic have a non-trivial destructor? I am surprised we have to use NeverDestroyed here.
&gt; 
&gt; What prevents two threads from racing to construct the std::atomic&lt;uint64_t&gt;? We turn off the code that normally protects globals from this kind of problem with a compiler flag. I fear that while access to the atomic is safely guarded against use from multiple threads, construction may not be.

The compiler had me use NeverDestroyed here.

I fear that you are indeed right about the thread safety issue. The thing is though that I am porting a class from using ThreadSafeIdentified to ObjectIdentifier&lt;&gt; with generateThreadSafeObjectIdentifier(). I followed the pattern used in ThreadSafeIdentified ( a global static with an std::atomic&lt;uint64_t&gt;. So the good news is that I did not make it worse. The bad news is that all our classes inheriting from ThreadSafeIdentified suffer from the same initialization issue.

I will look into it but I don&apos;t know off-hand how to fix this. Note that I tried to maintain the thread-safety for the job identifier because Brady used ThreadSafeIdentified when introducing the code. However, we do not technically need this thread-safety yet. This is forward-looking for when we will support service workers inside workers.

&gt;&gt; Source/WebCore/workers/service/ServiceWorkerJobDataIdentifier.h:41
&gt;&gt; +    }
&gt; 
&gt; Stylistically, I slightly prefer to make this a non-member function. Generally speaking it’s better because then conversions can happen on the left side too, and no special access to the struct internals is needed.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373648</commentid>
    <comment_count>7</comment_count>
      <attachid>327329</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-18 21:51:22 -0800</bug_when>
    <thetext>Comment on attachment 327329
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/ObjectIdentifier.h:102
&gt;&gt;&gt; +    static NeverDestroyed&lt;std::atomic&lt;uint64_t&gt;&gt; currentIdentifier;
&gt;&gt; 
&gt;&gt; Does std::atomic have a non-trivial destructor? I am surprised we have to use NeverDestroyed here.
&gt;&gt; 
&gt;&gt; What prevents two threads from racing to construct the std::atomic&lt;uint64_t&gt;? We turn off the code that normally protects globals from this kind of problem with a compiler flag. I fear that while access to the atomic is safely guarded against use from multiple threads, construction may not be.
&gt; 
&gt; The compiler had me use NeverDestroyed here.
&gt; 
&gt; I fear that you are indeed right about the thread safety issue. The thing is though that I am porting a class from using ThreadSafeIdentified to ObjectIdentifier&lt;&gt; with generateThreadSafeObjectIdentifier(). I followed the pattern used in ThreadSafeIdentified ( a global static with an std::atomic&lt;uint64_t&gt;. So the good news is that I did not make it worse. The bad news is that all our classes inheriting from ThreadSafeIdentified suffer from the same initialization issue.
&gt; 
&gt; I will look into it but I don&apos;t know off-hand how to fix this. Note that I tried to maintain the thread-safety for the job identifier because Brady used ThreadSafeIdentified when introducing the code. However, we do not technically need this thread-safety yet. This is forward-looking for when we will support service workers inside workers.

Looking at our code base, we seem to use std::call_once() for such case. e.g.:
static FunctionWhitelist&amp; ensureGlobalDFGWhitelist()
{
    static LazyNeverDestroyed&lt;FunctionWhitelist&gt; dfgWhitelist;
    static std::once_flag initializeWhitelistFlag;
    std::call_once(initializeWhitelistFlag, [] {
        const char* functionWhitelistFile = Options::dfgWhitelist();
        dfgWhitelist.construct(functionWhitelistFile);
    });
    return dfgWhitelist;
}

or

HashMap&lt;const char*, GCTypeMap&lt;SimpleStats&gt;&gt;&amp; timingStats()
{
    static HashMap&lt;const char*, GCTypeMap&lt;SimpleStats&gt;&gt;* result;
    static std::once_flag once;
    std::call_once(
        once,
        [] {
            result = new HashMap&lt;const char*, GCTypeMap&lt;SimpleStats&gt;&gt;();
        });
    return *result;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373649</commentid>
    <comment_count>8</comment_count>
      <attachid>327338</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-18 21:59:27 -0800</bug_when>
    <thetext>Created attachment 327338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373653</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-18 22:46:57 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 327338:

http/tests/websocket/tests/hybi/workers/worker-reload.html bug 179874 (authors: abarth@webkit.org, rniwa@webkit.org, and yutak@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373656</commentid>
    <comment_count>10</comment_count>
      <attachid>327338</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-18 23:19:05 -0800</bug_when>
    <thetext>Comment on attachment 327338
Patch

Clearing flags on attachment: 327338

Committed r225031: &lt;https://trac.webkit.org/changeset/225031&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373657</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-18 23:19:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1373658</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-18 23:21:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/35635700&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327329</attachid>
            <date>2017-11-18 17:59:47 -0800</date>
            <delta_ts>2017-11-18 21:59:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179846-20171118175946.patch</filename>
            <type>text/plain</type>
            <size>79159</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY2NzFmNmY1ZGY2MWE4ZDVhOGE3MjI3
OWMxZGMyYWIzNWVjNTlhODkuLmEzMDY1ZGM0YzcxZjRkZjU3NDIwY2QwNTFlMWNlYWNiMmU3NWU1
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMTEtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiByZWdpc3RyYXRpb24gaW4g
V2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzk4NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBnZW5lcmF0ZVRocmVhZFNhZmVPYmplY3RJZGVudGlmaWVyKCkgZm9yIGdl
bmVyYXRpbmcgYW4gT2JqZWN0SWRlbnRpZmllcgorICAgICAgICBpbiBhIHRocmVhZC1zYWZlIG1h
bm5lciwgdXNpbmcgc3RkOjphdG9taWMuCisKKyAgICAgICAgKiB3dGYvT2JqZWN0SWRlbnRpZmll
ci5oOgorICAgICAgICAoV1RGOjpnZW5lcmF0ZU9iamVjdElkZW50aWZpZXIpOgorICAgICAgICAo
V1RGOjpnZW5lcmF0ZVRocmVhZFNhZmVPYmplY3RJZGVudGlmaWVyKToKKwogMjAxNy0xMS0xOCAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbV1RGXSBS
ZW1vdmUgQ1BVKEhQUEEpIGluIFN0YWNrQm91bmRzIGJ5IHVzaW5nIHJ1bnRpbWUgc3RhY2sgZGly
ZWN0aW9uIHRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2Y2Y2MWE4NzI0NzBkZWE0MGRkYTBmNjg3NjY5M2M0
MzY4NzQ4YTU2Li41ZmFjZTQzMmE0ZTkxNGE1OTUwZWEzZGI3YTg1Zjc0Y2VlZjM5MDg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTAyIEBACisyMDE3LTExLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogcmVnaXN0cmF0aW9uIGlu
IFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc5ODQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2UgaGF2ZSBzZWVuIGNyYXNoZXMgb24gdGhlIGJvdHMgaW4gU1dTZXJ2ZXJKb2JR
dWV1ZSBiZWNhdXNlIG1ldGhvZHMgc3VjaCBhcyBzY3JpcHRDb250ZXh0U3RhcnRlZCgpCisgICAg
ICAgIGNhbiBnZXQgY2FsbGVkIGFmdGVyIHRoZSBqb2JRdWV1ZSBoYXMgYmVlbiBjbGVhcmVkLiBU
aGlzIGlzIGJlY2F1c2Ugd2hlbiBhIGpvYlF1ZXVlIGlzIGNsZWFyZWQsCisgICAgICAgIGFuIGFz
eW5jaHJvbm91cyBvcGVyYXRpb24gbWF5IGJlIHBlbmRpbmcgKGUuZy4gc2NyaXB0IGZldGNoLCBz
ZXJ2aWNlIHdvcmtlciBzdGFydGluZywgaW5zdGFsbCBldmVudCkuCisKKyAgICAgICAgVG8gYWRk
cmVzcyB0aGUgaXNzdWUsIHdlIG5vdyBwYXNzIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBqb2IgdGhh
dCBzdGFydGVkIHRoZSBhc3luY2hyb25vdXMgb3BlcmF0aW9uCisgICAgICAgIHdoZW4gY2FsbGlu
ZyB0aGUgbWV0aG9kcyBvbiBTV1NlcnZlckpvYlF1ZXVlLiBJZiB0aGUgaWRlbnRpZmllciBkb2Vz
IG5vdCBtYXRjaCB0aGUgaWRlbnRpZmllciBvZgorICAgICAgICB0aGUgY3VycmVudCBqb2IgaW4g
dGhlIEpvYlF1ZXVlLCB3ZSBpZ25vcmUgaXQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIHN0
YXJ0cyB1c2luZyBhIHN0cm9uZ2x5IHR5cGVkIGlkZW50aWZpZXIgKFNlcnZpY2VXb3JrZXJKb2JJ
ZGVudGlmaWVyKSBmb3IKKyAgICAgICAgU2VydmljZVdvcmtlckpvYiwgaW5zdGVhZCBvZiBhIHVp
bnQ2NF90LiBJdCBhbHNvIGludHJvZHVjZXMgYSBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXIgdHlwZQorICAgICAgICB3aGljaCBjb250YWlucyBib3RoIGEgU1dTZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciBhbmQgYSBTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllci4gVGhpcyBpcyB1c2Vm
dWwKKyAgICAgICAgYmVjYXVzZSBTZXJ2aWNlV29ya2VySm9iRGF0YSBpcyBwYXNzZWQgdG8gdGhl
IFN0b3JhZ2VQcm9jZXNzIGFuZCBpdCBuZWVkcyBhIGdsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVy
LgorICAgICAgICBTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBpcyBvbmx5IGd1YXJhbnRlZWQg
dG8gYmUgdW5pcXVlIHdpdGhpbiBhIHNpbmdsZSBXZWJQcm9jZXNzLiBBdWdtZW50aW5nIGl0Cisg
ICAgICAgIHdpdGggdGhlIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgb2YgdGhlIFdlYlBy
b2Nlc3MgbWFrZXMgaXQgZ2xvYmFsbHkgdW5pcXVlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywg
dW5za2lwcGVkIGV4aXRpbmcgdGVzdC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpz
Y2hlZHVsZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpz
dGFydFNjcmlwdEZldGNoRm9ySm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250YWluZXI6OmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkRpZEZpbmlzaCk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZSk6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoUmVzdWx0OjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoUmVzdWx0OjpkZWNvZGUpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySm9iOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckpvYkRhdGE6OlNlcnZpY2VXb3JrZXJKb2JEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OmNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppZGVudGlmaWVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OmRlY29kZSk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNo
UmVzdWx0LmguCisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXI6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyOjpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcjo6ZGVjb2RlKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJUaHJlYWRGb3JJbnN0
YWxsKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2Vy
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaXJlSW5zdGFs
bEV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxl
Sm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmluaXNoZWRGZXRj
aGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OmZhaWxl
ZEZldGNoaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6
am9iUmVqZWN0ZWRJblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rp
b246OnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNoRm9y
U2VydmVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVj
dGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlamVjdEpvYik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6cmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYik6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6
c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OnNjcmlwdENvbnRleHRTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRG
aW5pc2hJbnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6aXNDdXJyZW50bHlQcm9jZXNzaW5nSm9iIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNo
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dEZh
aWxlZFRvU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0
Q29udGV4dFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlk
RmluaXNoSW5zdGFsbCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRleHRTdGFydGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmluaXNo
SW5zdGFsbCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpzY3JpcHRD
b250ZXh0RmFpbGVkVG9TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6
c2NyaXB0Q29udGV4dFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6
OmRpZEZpbmlzaEluc3RhbGwpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaDoKKwogMjAxNy0xMS0xOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIyMDY0Nik6IFJFR1JFU1NJT04gKHIyMjA2
NDYpOiBSZW5kZXJUcmVlUG9zaXRpb246OmNvbXB1dGVOZXh0U2libGluZyBoaXRzIGFzc2VydGlv
biB3aXRoIGNlcnRhaW4gZmlyc3QtbGV0dGVyIG11dGF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3NjYzZWQz
NmIxNDFiMGExZTg4NjhmOGNhYTkwYzJjMDk0MzZkNTYwLi42NzU3NTRiMDM2MGM5ZThhOTljYmNm
NjNkMjc3ZDA1ZWQ0ZThlNTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE3LTExLTE4
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQVNTRVJUSU9OIEZB
SUxFRDogcmVnaXN0cmF0aW9uIGluIFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnNjcmlwdENv
bnRleHRTdGFydGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5ODQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6cmVqZWN0Sm9iSW5DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246OnJlc29sdmVSZWdpc3RyYXRpb25Kb2JJbkNsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVzb2x2ZVVucmVnaXN0cmF0aW9u
Sm9iSW5DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0
YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCk6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyU3RhcnRlZFdpdGhNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZpbmlzaEluc3RhbGwpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oOgorCiAyMDE3LTExLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1NlcnZpY2UgV29ya2Vyc10gSW1wbGVtZW50ICJOb3RpZnkgQ29udHJvbGxlciBDaGFu
Z2UiIGFsZ29yaXRobQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmll
ci5oIGIvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCmluZGV4IDZmN2FhYzQ1ZWQw
NTRlZGZlYTUwMDQ1OTIyMzgzYjgxZTgyY2E4ODkuLjc4ZjM5YWU0ZWM3ODNiZmZlODU5NzE5MjQ5
ZmFjMDdjNjQwMDExMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZp
ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTI1LDcgKzI1
LDkgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hUcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC03Myw2ICs3NSw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQg
T2JqZWN0SWRlbnRpZmllcjxVPiBnZW5lcmF0ZU9iamVjdElkZW50aWZpZXIoKTsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgT2JqZWN0SWRlbnRpZmllcjxVPiBnZW5lcmF0ZVRocmVh
ZFNhZmVPYmplY3RJZGVudGlmaWVyKCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5k
IE9iamVjdElkZW50aWZpZXI8VT4gbWFrZU9iamVjdElkZW50aWZpZXIodWludDY0X3QpOwogICAg
IGZyaWVuZCBzdHJ1Y3QgSGFzaFRyYWl0czxPYmplY3RJZGVudGlmaWVyPjsKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBmcmllbmQgc3RydWN0IE9iamVjdElkZW50aWZpZXJIYXNoOwpAQCAtODYs
MTQgKzg5LDE4IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVy
IHsgMCB9OwotICAgIHN0YXRpYyB1aW50NjRfdCBzX2N1cnJlbnRJZGVudGlmaWVyOwogfTsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdWludDY0X3QgT2JqZWN0SWRlbnRpZmllcjxUPjo6c19jdXJy
ZW50SWRlbnRpZmllcjsKLQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE9iamVjdElkZW50
aWZpZXI8VD4gZ2VuZXJhdGVPYmplY3RJZGVudGlmaWVyKCkKIHsKLSAgICByZXR1cm4gT2JqZWN0
SWRlbnRpZmllcjxUPiB7ICsrT2JqZWN0SWRlbnRpZmllcjxUPjo6c19jdXJyZW50SWRlbnRpZmll
ciB9OworICAgIHN0YXRpYyB1aW50NjRfdCBjdXJyZW50SWRlbnRpZmllciA9IDA7CisgICAgcmV0
dXJuIE9iamVjdElkZW50aWZpZXI8VD4geyArK2N1cnJlbnRJZGVudGlmaWVyIH07Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBPYmplY3RJZGVudGlmaWVyPFQ+IGdlbmVyYXRlVGhy
ZWFkU2FmZU9iamVjdElkZW50aWZpZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxz
dGQ6OmF0b21pYzx1aW50NjRfdD4+IGN1cnJlbnRJZGVudGlmaWVyOworICAgIHJldHVybiBPYmpl
Y3RJZGVudGlmaWVyPFQ+IHsgKytjdXJyZW50SWRlbnRpZmllci5nZXQoKSB9OwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgT2JqZWN0SWRlbnRpZmllcjxUPiBtYWtlT2JqZWN0SWRl
bnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKQpAQCAtMTE3LDQgKzEyNCw1IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPYmplY3RJZGVudGlmaWVyPFQ+PiB7CiAK
IHVzaW5nIFdURjo6T2JqZWN0SWRlbnRpZmllcjsKIHVzaW5nIFdURjo6Z2VuZXJhdGVPYmplY3RJ
ZGVudGlmaWVyOwordXNpbmcgV1RGOjpnZW5lcmF0ZVRocmVhZFNhZmVPYmplY3RJZGVudGlmaWVy
OwogdXNpbmcgV1RGOjptYWtlT2JqZWN0SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NzYwYzBjOTFjMGZiN2E3
NWM3YjdjYjVmNTk1ZDFiYTI3YzBiYzU5Li5hYTBkOThiOTQwNDRiMGE0YWEyNmFlOWQ5YjFiZjM4
NzQ3NWIxMzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yMjAzLDYgKzIyMDMsNyBAQAogCQk4MzdGQjM0NTFGOUVBMDZEMDBE
MEZDMzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM3RkIzNDAxRjlFQTA2NjAwRDBGQzMxIC8qIEV4dGVu
ZGFibGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJODM4NkE5NkQxOUY2MUIyRTAwRTFFQzRBIC8q
IFN0eWxlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM4NkE5NkMxOUY2MUIyRTAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5oICovOyB9Owog
CQk4Mzg4NjczNTFEMTNCQTVGMDAzNjk3RDAgLyogUmVuZGVyT2JqZWN0RW51bXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzODg2NzM0MUQxM0JBNTkw
MDM2OTdEMCAvKiBSZW5kZXJPYmplY3RFbnVtcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTgzOENBNkJEMUZDMERGRTkwMDVEOUZBNSAvKiBTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzOENBNkJCMUZDMERGREQwMDVEOUZBNSAvKiBTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk4MzhFRjUzODFEQzE0OUUyMDA4RjBDMzkgLyogSURCVHJhbnNhY3Rp
b25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzhFRjUzNjFEQzE0OURBMDA4RjBDMzkgLyogSURCVHJhbnNhY3Rpb25Nb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODM4RUY1M0MxREMxNEE3
QzAwOEYwQzM5IC8qIEpTSURCVHJhbnNhY3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzhFRjUzQTFEQzE0QTc1MDA4RjBDMzkgLyogSlNJ
REJUcmFuc2FjdGlvbk1vZGUuaCAqLzsgfTsKIAkJODM4Rjg2REExRjUwOUU3NDAwRThDRkM1IC8q
IEZpbGVDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM4Rjg2RDgxRjUwOUU2QzAwRThDRkM1IC8qIEZpbGVDYWxsYmFjay5oICovOyB9OwpA
QCAtOTQ2MCw2ICs5NDYxLDcgQEAKIAkJODM4NkE5NkUxOUY2MUU0RjAwRTFFQzRBIC8qIFN0eWxl
QnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUJ1
aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzg4NjczNDFEMTNCQTU5
MDAzNjk3RDAgLyogUmVuZGVyT2JqZWN0RW51bXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVuZGVyT2JqZWN0RW51bXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODM4ODY5RUIxQ0U4MUU5RTAwRDE2QTlFIC8qIEpTVGV4dEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RleHRDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4MzhDQTZCQjFGQzBERkREMDA1RDlGQTUgLyogU2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk4MzhFRjUzNjFEQzE0OURBMDA4RjBDMzkgLyogSURCVHJhbnNhY3Rpb25Nb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlRyYW5zYWN0aW9uTW9kZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzhFRjUzNzFEQzE0OURBMDA4RjBDMzkgLyog
SURCVHJhbnNhY3Rpb25Nb2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBJREJUcmFuc2Fj
dGlvbk1vZGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzhFRjUzOTFEQzE0
QTc1MDA4RjBDMzkgLyogSlNJREJUcmFuc2FjdGlvbk1vZGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJUcmFuc2FjdGlvbk1vZGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTczMDQsNiArMTczMDYsNyBAQAogCQkJCTUxRjE3NTUwMUYz
RUJDMEMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VySm9iQ2xpZW50LmggKi8sCiAJCQkJNTE3QTUz
MjQxRjRCOTA0QTAwRENEQzBBIC8qIFNlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcCAqLywKIAkJCQk1
MUY2NDU2NjFGNDUzOTlGMDBCNTRERUQgLyogU2VydmljZVdvcmtlckpvYkRhdGEuaCAqLywKKwkJ
CQk4MzhDQTZCQjFGQzBERkREMDA1RDlGQTUgLyogU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyLmggKi8sCiAJCQkJNTFGNjQ1NjUxRjQ1Mzk5RjAwQjU0REVEIC8qIFNlcnZpY2VXb3JrZXJK
b2JUeXBlLmggKi8sCiAJCQkJNTFGMTc1NEYxRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZpY2VXb3Jr
ZXJQcm92aWRlci5jcHAgKi8sCiAJCQkJNTFGMTc1NEUxRjNFQkMwQzAwQzc0OTUwIC8qIFNlcnZp
Y2VXb3JrZXJQcm92aWRlci5oICovLApAQCAtMjg5NjksNiArMjg5NzIsNyBAQAogCQkJCTUxRjE3
NTYzMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VySm9iLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUYxNzU2NDFGM0VCQzgzMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlckpvYkNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGNjQ1NjkxRjQ1MzlCOTAwQjU0REVEIC8qIFNlcnZpY2VX
b3JrZXJKb2JEYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzhDQTZCRDFGQzBERkU5MDA1RDlG
QTUgLyogU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUY2NDU2QTFGNDUzOUMwMDBCNTRERUQgLyogU2VydmljZVdvcmtlckpvYlR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxRjE3NTY2MUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTY4MUYzRUJDODMwMEM3NDk1MCAv
KiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmNwcAppbmRleCBiZjk3ZWZlODJhMmE1YWY5MzRlYzlhYjYwM2MyYmUxYjA5OWE4Y2EzLi5jNzE4
ZDFjNWFlODZjZjFhM2RmMjc2NDk5ODA3NjI5ZTA3MzFiODYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
CkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVs
ZUpvYihSZWY8U2VydmljZVdvcmtlckpvYj4mJiBqb2IpCiAgICAgc2V0UGVuZGluZ0FjdGl2aXR5
KHRoaXMpOwogCiAgICAgU2VydmljZVdvcmtlckpvYiYgcmF3Sm9iID0gam9iLmdldCgpOwotICAg
IGF1dG8gcmVzdWx0ID0gbV9qb2JNYXAuYWRkKHJhd0pvYi5kYXRhKCkuaWRlbnRpZmllcigpLCBX
VEZNb3ZlKGpvYikpOworICAgIGF1dG8gcmVzdWx0ID0gbV9qb2JNYXAuYWRkKHJhd0pvYi5pZGVu
dGlmaWVyKCksIFdURk1vdmUoam9iKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dC5pc05ld0VudHJ5KTsKIAogICAgIG1fc3dDb25uZWN0aW9uLT5zY2hlZHVsZUpvYihyYXdKb2Ip
OwpAQCAtMzQ1LDcgKzM0NSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVz
b2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpvCiAKIHZvaWQgU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6c3RhcnRTY3JpcHRGZXRjaEZvckpvYihTZXJ2aWNlV29ya2Vy
Sm9iJiBqb2IpCiB7Ci0gICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXZpY2VXb3JrZXJDb250YWlu
ZXIgJXAgc3RhcnRpbmcgc2NyaXB0IGZldGNoIGZvciBqb2IgJSIgUFJJdTY0LCB0aGlzLCBqb2Iu
ZGF0YSgpLmlkZW50aWZpZXIoKSk7CisgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXZpY2VXb3Jr
ZXJDb250YWluZXIgJXAgc3RhcnRpbmcgc2NyaXB0IGZldGNoIGZvciBqb2IgJXMiLCB0aGlzLCBq
b2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGF1
dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0
KSB7CkBAIC0zNjAsMTQgKzM2MCwxNCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0
YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iKQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2Vy
Sm9iJiBqb2IsIGNvbnN0IFN0cmluZyYgc2NyaXB0KQogewotICAgIExPRyhTZXJ2aWNlV29ya2Vy
LCAiU2V2aWNlV29ya2VyQ29udGFpbmVyICVwIGZpbmlzaGVkIGZldGNoaW5nIHNjcmlwdCBmb3Ig
am9iICUiIFBSSXU2NCwgdGhpcywgam9iLmRhdGEoKS5pZGVudGlmaWVyKCkpOworICAgIExPRyhT
ZXJ2aWNlV29ya2VyLCAiU2V2aWNlV29ya2VyQ29udGFpbmVyICVwIGZpbmlzaGVkIGZldGNoaW5n
IHNjcmlwdCBmb3Igam9iICVzIiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBtX3N3Q29ubmVjdGlvbi0+ZmluaXNoZWRGZXRjaGlu
Z1NjcmlwdChqb2IsIHNjcmlwdCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
am9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yLCBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pCiB7
Ci0gICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXZpY2VXb3JrZXJDb250YWluZXIgJXAgZmFpbGVk
IGZldGNoaW5nIHNjcmlwdCBmb3Igam9iICUiIFBSSXU2NCwgdGhpcywgam9iLmRhdGEoKS5pZGVu
dGlmaWVyKCkpOworICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiU2V2aWNlV29ya2VyQ29udGFpbmVy
ICVwIGZhaWxlZCBmZXRjaGluZyBzY3JpcHQgZm9yIGpvYiAlcyIsIHRoaXMsIGpvYi5pZGVudGlm
aWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKGV4Y2VwdGlv
bikKICAgICAgICAgam9iLnByb21pc2UoKS5yZWplY3QoKmV4Y2VwdGlvbik7CkBAIC0zNzcsNyAr
Mzc3LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2FkaW5nU2Ny
aXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpqb2JEaWRGaW5pc2goU2VydmljZVdvcmtlckpvYiYgam9iKQogewotICAgIGF1dG8g
dGFrZW4gPSBtX2pvYk1hcC50YWtlKGpvYi5kYXRhKCkuaWRlbnRpZmllcigpKTsKKyAgICBhdXRv
IHRha2VuID0gbV9qb2JNYXAudGFrZShqb2IuaWRlbnRpZmllcigpKTsKICAgICBBU1NFUlRfVU5V
U0VEKHRha2VuLCAhdGFrZW4gfHwgdGFrZW4tPnB0cigpID09ICZqb2IpOwogCiAgICAgdW5zZXRQ
ZW5kaW5nQWN0aXZpdHkodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAppbmRleCA2MmJkNGRiZmQ5YzcwNmZk
Y2I3YWUwODRlNTExYTQyMmI3OTkzOTQwLi5jYzczZmE5NDU2MTllYTc0NTFjOWRlYzUzMzIwNGRk
ZDdlZjQyMjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKQEAgLTExMSw3ICsxMTEsNyBAQCBwcml2YXRlOgog
ICAgIE5hdmlnYXRvckJhc2UmIG1fbmF2aWdhdG9yOwogCiAgICAgUmVmUHRyPFNXQ2xpZW50Q29u
bmVjdGlvbj4gbV9zd0Nvbm5lY3Rpb247Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFNlcnZp
Y2VXb3JrZXJKb2I+PiBtX2pvYk1hcDsKKyAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJKb2JJZGVu
dGlmaWVyLCBSZWY8U2VydmljZVdvcmtlckpvYj4+IG1fam9iTWFwOwogCiAgICAgYm9vbCBtX2lz
U3RvcHBlZCB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbio+IG1fcmVnaXN0cmF0aW9uczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggZjBlYzc2NmUzNTM4ZDRkOTI0MWY3ODBiMzhlMzcz
ZDAwZTk2MDdkMC4uYmE1OGNjZmU5ZGYyODMzMWRkYTAwYTFjZTRjNmI2NTM0MzBjYTU1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpp
c29sYXRlZENvcHkoKSBjb25zdAogewotICAgIHJldHVybiB7IHJlZ2lzdHJhdGlvbktleS5pc29s
YXRlZENvcHkoKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHNjcmlwdC5pc29sYXRlZENvcHko
KSwgc2NyaXB0VVJMLmlzb2xhdGVkQ29weSgpLCB3b3JrZXJUeXBlIH07CisgICAgcmV0dXJuIHsg
am9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleS5pc29sYXRlZENvcHkoKSwgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIHNjcmlwdC5pc29sYXRlZENvcHkoKSwgc2NyaXB0VVJMLmlzb2xh
dGVkQ29weSgpLCB3b3JrZXJUeXBlIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEuaAppbmRleCBiN2Q2NmYxZTVhNGE0ZWRkZTE1NjgzZWE4MmUzNGQ0NDJkNTJl
YTczLi44ODgyYzFhYmU0ZjllZjg5NzAyOTBkMDZkYWIxMGVlYWRjMDY1OWFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgog
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKQEAgLTM1LDYgKzM2LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSB7CisgICAgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIGpvYkRhdGFJZGVudGlmaWVy
OwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5OwogICAg
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwogICAgIFN0
cmluZyBzY3JpcHQ7CkBAIC01MCwxMiArNTIsMTcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIg
PDwgcmVnaXN0cmF0aW9uS2V5IDw8IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIDw8IHNjcmlwdCA8
PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZTsKKyAgICBlbmNvZGVyIDw8IGpvYkRhdGFJZGVudGlm
aWVyIDw8IHJlZ2lzdHJhdGlvbktleSA8PCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA8PCBzY3Jp
cHQgPDwgc2NyaXB0VVJMIDw8IHdvcmtlclR5cGU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CiBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXI7Cisg
ICAgZGVjb2RlciA+PiBqb2JEYXRhSWRlbnRpZmllcjsKKyAgICBpZiAoIWpvYkRhdGFJZGVudGlm
aWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgYXV0byByZWdpc3RyYXRp
b25LZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjpkZWNvZGUoZGVjb2Rlcik7CiAg
ICAgaWYgKCFyZWdpc3RyYXRpb25LZXkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBA
IC03Niw3ICs4Myw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyCiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZUVudW0od29ya2VyVHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKnJlZ2lzdHJhdGlvbktleSksIFdURk1vdmUoKnNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKHNjcmlwdFVS
TCksIHdvcmtlclR5cGUgfX07CisgICAgcmV0dXJuIHt7IFdURk1vdmUoKmpvYkRhdGFJZGVudGlm
aWVyKSwgV1RGTW92ZSgqcmVnaXN0cmF0aW9uS2V5KSwgV1RGTW92ZSgqc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoc2NyaXB0VVJMKSwgd29ya2VyVHlw
ZSB9fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oCmluZGV4
IDM2MDQ0NDQ2M2ExYzdkMmQ0OWUzODVlYWUyYTA0NmY4NzNhZDA4MGQuLjcxNGY4NTdhYjlhNzc2
MDdmOGI4N2IzYjNkNjRiNzQ4MmVlOTY4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgKQEAgLTM0LDgg
KzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNlcnZpY2VXb3JrZXJGZXRj
aFJlc3VsdCB7Ci0gICAgdWludDY0X3Qgam9iSWRlbnRpZmllcjsKLSAgICBTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleTsKICAgICBTdHJpbmcgc2NyaXB0OwogICAgIFJl
c291cmNlRXJyb3Igc2NyaXB0RXJyb3I7CkBAIC00NywyMCArNDYsMTcgQEAgc3RydWN0IFNlcnZp
Y2VXb3JrZXJGZXRjaFJlc3VsdCB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2
aWNlV29ya2VyRmV0Y2hSZXN1bHQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewot
ICAgIGVuY29kZXIgPDwgam9iSWRlbnRpZmllciA8PCBjb25uZWN0aW9uSWRlbnRpZmllciA8PCBy
ZWdpc3RyYXRpb25LZXkgPDwgc2NyaXB0IDw8IHNjcmlwdEVycm9yOworICAgIGVuY29kZXIgPDwg
am9iRGF0YUlkZW50aWZpZXIgPDwgcmVnaXN0cmF0aW9uS2V5IDw8IHNjcmlwdCA8PCBzY3JpcHRF
cnJvcjsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIGJvb2wgU2VydmljZVdvcmtlckZl
dGNoUmVzdWx0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2VydmljZVdvcmtlckZldGNoUmVz
dWx0JiByZXN1bHQpCiB7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuam9iSWRlbnRp
ZmllcikpCisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+
IGpvYkRhdGFJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gam9iRGF0YUlkZW50aWZpZXI7Cisg
ICAgaWYgKCFqb2JEYXRhSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
c3RkOjpvcHRpb25hbDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyPiBjb25uZWN0aW9uSWRl
bnRpZmllcjsKLSAgICBkZWNvZGVyID4+IGNvbm5lY3Rpb25JZGVudGlmaWVyOwotICAgIGlmICgh
Y29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQu
Y29ubmVjdGlvbklkZW50aWZpZXIgPSAqY29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgcmVzdWx0
LmpvYkRhdGFJZGVudGlmaWVyID0gV1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpOwogICAgIAog
ICAgIGF1dG8gcmVnaXN0cmF0aW9uS2V5ID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6
ZGVjb2RlKGRlY29kZXIpOwogICAgIGlmICghcmVnaXN0cmF0aW9uS2V5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmgKaW5kZXggNmE1OGQ0
NmY4ZTQ0YzM3NWYzN2RlNmU5N2I4YWQ2YzRlZDFhOGY1MC4uNGM1NzhhZjlhYWFkYmZhNDBlMTJk
MTY0MzVjNzQyZjRmYTZkYzkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJU
eXBlcy5oIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgogI2luY2x1ZGUgIldvcmtl
clNjcmlwdExvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTU5LDYg
KzYwLDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1
bHQoYm9vbCk7CiAgICAgdm9pZCBzdGFydFNjcmlwdEZldGNoKCk7CiAKKyAgICB1c2luZyBJZGVu
dGlmaWVyID0gU2VydmljZVdvcmtlckpvYklkZW50aWZpZXI7CisgICAgSWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9qb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlm
aWVyOyB9CisKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9qb2JEYXRhOyB9CiAgICAgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlKCkgeyByZXR1cm4gbV9w
cm9taXNlLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwCmluZGV4IGQ4YmM0M2ViMjZjNDk2OTIzMmNh
NDNhM2NiMTEyYjcyNjEyMGQ0Y2MuLjY5ZTY3Yzk3YzMzNjZhMGIzYTE2ODliZjljNzk3ODg4NGIw
NzBmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJKb2JEYXRhLmNwcApAQCAtMzAsMTQgKzMwLDEzIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotU2VydmljZVdvcmtlckpvYkRhdGE6OlNlcnZpY2VXb3JrZXJKb2JEYXRhKHVp
bnQ2NF90IGpvYklkZW50aWZpZXIsIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVj
dGlvbklkZW50aWZpZXIpCi0gICAgOiBUaHJlYWRTYWZlSWRlbnRpZmllZChqb2JJZGVudGlmaWVy
KQotICAgICwgbV9jb25uZWN0aW9uSWRlbnRpZmllcihjb25uZWN0aW9uSWRlbnRpZmllcikKK1Nl
cnZpY2VXb3JrZXJKb2JEYXRhOjpTZXJ2aWNlV29ya2VySm9iRGF0YShjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7CiB9CiAKIFNl
cnZpY2VXb3JrZXJKb2JEYXRhOjpTZXJ2aWNlV29ya2VySm9iRGF0YShTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQotICAgIDogbV9jb25uZWN0aW9uSWRl
bnRpZmllcihjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICA6IG1faWRlbnRpZmllciB7IGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBnZW5lcmF0ZVRocmVhZFNhZmVPYmplY3RJZGVudGlmaWVyPFNlcnZp
Y2VXb3JrZXJKb2JJZGVudGlmaWVyVHlwZT4oKSB9CiB7CiB9CiAKQEAgLTUwLDcgKzQ5LDcgQEAg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBTZXJ2aWNlV29ya2VySm9iRGF0YTo6cmVnaXN0
cmF0aW9uS2V5KCkgY29uc3QKIAogU2VydmljZVdvcmtlckpvYkRhdGEgU2VydmljZVdvcmtlckpv
YkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7Ci0gICAgU2VydmljZVdvcmtlckpvYkRhdGEg
cmVzdWx0IHsgaWRlbnRpZmllcigpLCBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyIH07CisgICAgU2Vy
dmljZVdvcmtlckpvYkRhdGEgcmVzdWx0IHsgaWRlbnRpZmllcigpIH07CiAgICAgcmVzdWx0LnR5
cGUgPSB0eXBlOwogCiAgICAgcmVzdWx0LnNjcmlwdFVSTCA9IHNjcmlwdFVSTC5pc29sYXRlZENv
cHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2JEYXRhLmgKaW5kZXggOGI0NjdhOTZhZmM0ZDFiOTUxYTg3MzFmMjg2M2UzY2FiNmU3
MTlmMC4uMzJlNTQwM2I3OTAyNzU1MzEzMDllNjZjMzJjNDhmMGNiYzYzMzZiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmgKQEAgLTI4LDIyICsyOCwyMiBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JUeXBlLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25PcHRpb25zLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVz
LmgiCiAjaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGEgOiBwdWJsaWMg
VGhyZWFkU2FmZUlkZW50aWZpZWQ8U2VydmljZVdvcmtlckpvYkRhdGE+IHsKLXB1YmxpYzoKK3N0
cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YSB7CisgICAgdXNpbmcgSWRlbnRpZmllciA9IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcjsKICAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VySm9i
RGF0YShTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICBTZXJ2aWNlV29ya2VySm9i
RGF0YShjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpID0gZGVmYXVsdDsKICAgICBTZXJ2aWNl
V29ya2VySm9iRGF0YSgpID0gZGVmYXVsdDsKIAotICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb25J
ZGVudGlmaWVyOyB9CisgICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9u
SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllci5jb25uZWN0aW9uSWRlbnRp
ZmllcjsgfQogCiAgICAgVVJMIHNjcmlwdFVSTDsKICAgICBVUkwgY2xpZW50Q3JlYXRpb25VUkw7
CkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIFJlZ2lzdHJhdGlvbk9wdGlvbnMgcmVn
aXN0cmF0aW9uT3B0aW9uczsKIAorICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkg
cmVnaXN0cmF0aW9uS2V5KCkgY29uc3Q7CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGEgaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CiAKQEAgLTYwLDE1ICs2MSwxNSBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRh
dGE+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2Vy
dmljZVdvcmtlckpvYkRhdGEodWludDY0X3Qgam9iSWRlbnRpZmllciwgU1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgU2VydmljZVdvcmtl
ckpvYkRhdGEoY29uc3QgSWRlbnRpZmllciYpOwogCi0gICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIElkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckpv
YkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwg
aWRlbnRpZmllcigpIDw8IG1fY29ubmVjdGlvbklkZW50aWZpZXIgPDwgc2NyaXB0VVJMIDw8IGNs
aWVudENyZWF0aW9uVVJMIDw8IHRvcE9yaWdpbiA8PCBzY29wZVVSTDsKKyAgICBlbmNvZGVyIDw8
IGlkZW50aWZpZXIoKSA8PCBzY3JpcHRVUkwgPDwgY2xpZW50Q3JlYXRpb25VUkwgPDwgdG9wT3Jp
Z2luIDw8IHNjb3BlVVJMOwogICAgIGVuY29kZXIuZW5jb2RlRW51bSh0eXBlKTsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjoKQEAg
LTgzLDE2ICs4NCwxMiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2JEYXRhOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CiBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJKb2JEYXRhPiBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgdWludDY0X3Qgam9iSWRlbnRpZmllcjsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGpvYklkZW50aWZpZXIpKQorICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyPiBpZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gaWRlbnRp
ZmllcjsKKyAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI+IGNvbm5l
Y3Rpb25JZGVudGlmaWVyOwotICAgIGRlY29kZXIgPj4gY29ubmVjdGlvbklkZW50aWZpZXI7Ci0g
ICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGE+IGpvYkRhdGEgPSB7
IHsgam9iSWRlbnRpZmllciwgKmNvbm5lY3Rpb25JZGVudGlmaWVyIH0gfTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhPiBqb2JEYXRhID0geyBTZXJ2aWNlV29ya2VySm9i
RGF0YSB7IFdURk1vdmUoKmlkZW50aWZpZXIpIH0gfTsKIAogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoam9iRGF0YS0+c2NyaXB0VVJMKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTFkY2MyYTUxNDkwOTY3ZGE1
ZDk1NzNjNzRhMDZjNjUxOGY3ZTgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oCkBAIC0wLDAg
KzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKworI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBlcy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgeworICAg
IFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXI7CisgICAg
U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIgam9iSWRlbnRpZmllcjsKKworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIG90aGVyKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb25JZGVudGlmaWVyID09IG90aGVyLmNv
bm5lY3Rpb25JZGVudGlmaWVyICYmIGpvYklkZW50aWZpZXIgPT0gb3RoZXIuam9iSWRlbnRpZmll
cjsKKyAgICB9CisKKyNpZm5kZWYgTkRFQlVHCisgICAgU3RyaW5nIGxvZ2dpbmdTdHJpbmcoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb25JZGVudGlmaWVyLmxvZ2dpbmdT
dHJpbmcoKSArICItIiArIGpvYklkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpOworICAgIH0KKyNl
bmRpZgorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKK307CisK
K3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBj
b25uZWN0aW9uSWRlbnRpZmllciA8PCBqb2JJZGVudGlmaWVyOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+
IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgc3RkOjpvcHRpb25hbDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyPiBjb25u
ZWN0aW9uSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IGNvbm5lY3Rpb25JZGVudGlmaWVyOwor
ICAgIGlmICghY29ubmVjdGlvbklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyPiBqb2JJ
ZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gam9iSWRlbnRpZmllcjsKKyAgICBpZiAoIWpvYklk
ZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7
IFdURk1vdmUoKmNvbm5lY3Rpb25JZGVudGlmaWVyKSwgV1RGTW92ZSgqam9iSWRlbnRpZmllcikg
fSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclR5cGVzLmgKaW5kZXggMTk1MzRkMTg3NTBhMWZhMDhlYzg3NTRkNGJiNGY1MzY4
ZjdhZmQxNy4uZGRiMzA1ZDhmODIxZDIzNGZkZDNhNTU2OTI0YTZmMWY5OTkxMGIwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyVHlwZXMu
aApAQCAtNTgsNiArNTgsOSBAQCBlbnVtIGNsYXNzIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCB7
IE5vLCBZZXMgfTsKIGVudW0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXJUeXBl
IHsgfTsKIHVzaW5nIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyID0gT2JqZWN0
SWRlbnRpZmllcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllclR5cGU+OwogCitl
bnVtIFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyVHlwZSB7IH07Cit1c2luZyBTZXJ2aWNlV29y
a2VySm9iSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U2VydmljZVdvcmtlckpvYklkZW50
aWZpZXJUeXBlPjsKKwogZW51bSBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVy
VHlwZSB7IH07CiB1c2luZyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyID0g
T2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyVHlw
ZT47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggNDgyNzhjOGIyNTg0MGIyYzAxZTExNTU2
MzMxODgxOTY2ZWEyZmQ1My4uZWRjNzRiMWMxNTkwMTBiMTBjZTU5YmZmNzUwNWFhOTkwZGVhZGRm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTUxLDEyICs1MSwxMyBAQCBhdXRvIFNXQ29u
dGV4dE1hbmFnZXI6OmNvbm5lY3Rpb24oKSBjb25zdCAtPiBDb25uZWN0aW9uKgogdm9pZCBTV0Nv
bnRleHRNYW5hZ2VyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJUaHJlYWRGb3JJbnN0YWxsKFJlZjxT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+JiYgc2VydmljZVdvcmtlclRocmVhZFByb3h5KQogewog
ICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBzZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHktPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIGpvYkRhdGFJZGVudGlmaWVyID0gc2VydmljZVdv
cmtlclRocmVhZFByb3h5LT50aHJlYWQoKS5jb250ZXh0RGF0YSgpLmpvYkRhdGFJZGVudGlmaWVy
OwogICAgIGF1dG8qIHRocmVhZFByb3h5ID0gc2VydmljZVdvcmtlclRocmVhZFByb3h5LnB0cigp
OwogICAgIGF1dG8gcmVzdWx0ID0gbV93b3JrZXJNYXAuYWRkKHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSkpOwogICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgCi0gICAgdGhyZWFkUHJveHktPnRo
cmVhZCgpLnN0YXJ0KFtzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0oY29uc3QgU3RyaW5nJiBleGNl
cHRpb25NZXNzYWdlKSB7Ci0gICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNv
bm5lY3Rpb24oKS0+c2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgZXhjZXB0aW9uTWVzc2FnZSk7CisgICAgdGhyZWFkUHJveHktPnRocmVhZCgp
LnN0YXJ0KFtqb2JEYXRhSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXJdKGNvbnN0
IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkgeworICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5jb25uZWN0aW9uKCktPnNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2Uo
am9iRGF0YUlkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBleGNlcHRpb25NZXNz
YWdlKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IDYxNWNlMDc0NzQ2NzY0
ODY2YjczYjM2MTk5MDYzMmQ4NTMwZjY4MDkuLjYwZmZmOTQyY2YxYmE2MzA1Yjc3MTBhMzA4MjM2
OTQxYTIyMDMyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIH5Db25uZWN0aW9uKCkgeyB9CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiYgbWVzc2FnZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2Vydmlj
ZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hJbnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3Nh
Z2UoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXImLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2aWNlV29ya2Vy
SGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCkgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCBkOTJlNTU0ZjlkNTU1NjBm
Mzc5OGE2YTU4Mzg5Y2MzOGUyMGI3ZTUxLi41Zjg4NTMxNjBmZGE4OGFhZTBjNjgwZDUyMDYzYjQx
YmEzMjQ4MTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtMTIxLDEyICsxMjEs
MTIgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKFJlZjxTZXJpYWxpemVkU2MKIAogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFk
OjpmaXJlSW5zdGFsbEV2ZW50KCkKIHsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
IHRhc2soW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gdGhpcy0+aWRlbnRpZmllcigpXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayB0YXNrKFtqb2JEYXRhSWRlbnRpZmllciA9IG1fZGF0YS5qb2JEYXRh
SWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSB0aGlzLT5pZGVudGlmaWVyKCld
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgYXV0
byYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgYXV0byBpbnN0YWxsRXZlbnQgPSBFeHRlbmRhYmxl
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW5zdGFsbEV2ZW50LCB7IH0sIEV4dGVuZGFibGVF
dmVudDo6SXNUcnVzdGVkOjpZZXMpOwogICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
ZGlzcGF0Y2hFdmVudChpbnN0YWxsRXZlbnQpOwogCi0gICAgICAgIGluc3RhbGxFdmVudC0+d2hl
bkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVTZXR0bGVkKFtzZXJ2aWNlV29ya2VySWRlbnRp
Zmllcl0oSGFzaFNldDxSZWY8RE9NUHJvbWlzZT4+JiYgZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykg
eworICAgICAgICBpbnN0YWxsRXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJl
U2V0dGxlZChbam9iRGF0YUlkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyXShIYXNo
U2V0PFJlZjxET01Qcm9taXNlPj4mJiBleHRlbmRMaWZldGltZVByb21pc2VzKSB7CiAgICAgICAg
ICAgICBib29sIGhhc1JlamVjdGVkQW55UHJvbWlzZSA9IGZhbHNlOwogICAgICAgICAgICAgZm9y
IChhdXRvJiBwcm9taXNlIDogZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykgewogICAgICAgICAgICAg
ICAgIGlmIChwcm9taXNlLT5zdGF0dXMoKSA9PSBET01Qcm9taXNlOjpTdGF0dXM6OlJlamVjdGVk
KSB7CkBAIC0xMzQsOSArMTM0LDkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaXJlSW5z
dGFsbEV2ZW50KCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGhhc1JlamVjdGVkQW55UHJvbWlzZV0gKCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtqb2JEYXRhSWRlbnRpZmllciwgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGhhc1JlamVjdGVkQW55UHJvbWlzZV0gKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5jb25uZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmRpZEZp
bmlzaEluc3RhbGwoc2VydmljZVdvcmtlcklkZW50aWZpZXIsICFoYXNSZWplY3RlZEFueVByb21p
c2UpOworICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hJbnN0YWxsKGpv
YkRhdGFJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgIWhhc1JlamVjdGVkQW55
UHJvbWlzZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50
Q29ubmVjdGlvbi5jcHAKaW5kZXggMWE1NzQyN2Y4ZDY5OTE1NDU4NDU1NzZhNjQ0YWZkMzE3MmE0
YTc4My4uZDQzNzQyY2U5MWZlZWU5MThjY2ExMmY0M2IzMzRkZWUyYjFkOWQ3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGll
bnRDb25uZWN0aW9uLmNwcApAQCAtNDUsNyArNDUsNyBAQCBTV0NsaWVudENvbm5lY3Rpb246On5T
V0NsaWVudENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKIHZvaWQgU1dDbGllbnRDb25uZWN0aW9u
OjpzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iJiBqb2IpCiB7Ci0gICAgYXV0byBhZGRSZXN1
bHQgPSBtX3NjaGVkdWxlZEpvYnMuYWRkKGpvYi5kYXRhKCkuaWRlbnRpZmllcigpLCAmam9iKTsK
KyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc2NoZWR1bGVkSm9icy5hZGQoam9iLmlkZW50aWZpZXIo
KSwgJmpvYik7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKIAogICAgIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoam9iLmRhdGEoKSk7CkBAIC01MywzNCAr
NTMsMzQgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3Jr
ZXJKb2ImIGpvYikKIAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaGVkRmV0Y2hpbmdT
Y3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKLSAg
ICBBU1NFUlQobV9zY2hlZHVsZWRKb2JzLmdldChqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSkgPT0g
JmpvYik7CisgICAgQVNTRVJUKG1fc2NoZWR1bGVkSm9icy5nZXQoam9iLmlkZW50aWZpZXIoKSkg
PT0gJmpvYik7CiAKLSAgICBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHsgam9iLmRhdGEo
KS5pZGVudGlmaWVyKCksIGpvYi5kYXRhKCkuY29ubmVjdGlvbklkZW50aWZpZXIoKSwgam9iLmRh
dGEoKS5yZWdpc3RyYXRpb25LZXkoKSwgc2NyaXB0LCB7IH0gfSk7CisgICAgZmluaXNoRmV0Y2hp
bmdTY3JpcHRJblNlcnZlcih7IGpvYi5kYXRhKCkuaWRlbnRpZmllcigpLCBqb2IuZGF0YSgpLnJl
Z2lzdHJhdGlvbktleSgpLCBzY3JpcHQsIHsgfSB9KTsKIH0KIAogdm9pZCBTV0NsaWVudENvbm5l
Y3Rpb246OmZhaWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgQVNTRVJUKG1fc2NoZWR1bGVkSm9icy5nZXQo
am9iLmRhdGEoKS5pZGVudGlmaWVyKCkpID09ICZqb2IpOworICAgIEFTU0VSVChtX3NjaGVkdWxl
ZEpvYnMuZ2V0KGpvYi5pZGVudGlmaWVyKCkpID09ICZqb2IpOwogCi0gICAgZmluaXNoRmV0Y2hp
bmdTY3JpcHRJblNlcnZlcih7IGpvYi5kYXRhKCkuaWRlbnRpZmllcigpLCBqb2IuZGF0YSgpLmNv
bm5lY3Rpb25JZGVudGlmaWVyKCksIGpvYi5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCksIHsgfSwg
ZXJyb3IgfSk7CisgICAgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcih7IGpvYi5kYXRhKCku
aWRlbnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgpLCB7IH0sIGVycm9yIH0p
OwogfQogCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6am9iUmVqZWN0ZWRJblNlcnZlcih1aW50
NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb25EYXRhKQor
dm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmpvYlJlamVjdGVkSW5TZXJ2ZXIoY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgRXhjZXB0
aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKIHsKLSAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9i
cy50YWtlKGpvYklkZW50aWZpZXIpOworICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLnRh
a2Uoam9iRGF0YUlkZW50aWZpZXIuam9iSWRlbnRpZmllcik7CiAgICAgaWYgKCFqb2IpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJKb2IgJSIgUFJJdTY0ICIgcmVqZWN0ZWQgZnJvbSBzZXJ2ZXIsIGJ1
dCB3YXMgbm90IGZvdW5kIiwgam9iSWRlbnRpZmllcik7CisgICAgICAgIExPR19FUlJPUigiSm9i
ICVzIHJlamVjdGVkIGZyb20gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVu
dGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihleGNlcHRpb25EYXRhLnRvRXhj
ZXB0aW9uKCkpOwogfQogCi12b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0cmF0aW9uSm9i
UmVzb2x2ZWRJblNlcnZlcih1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJhdGlvbkRhdGEsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZl
ZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cmVn
aXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YSYmIHJlZ2lzdHJhdGlvbkRhdGEsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3Rp
ZnlXaGVuUmVzb2x2ZWQpCiB7Ci0gICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMudGFrZShq
b2JJZGVudGlmaWVyKTsKKyAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRh
dGFJZGVudGlmaWVyLmpvYklkZW50aWZpZXIpOwogICAgIGlmICgham9iKSB7Ci0gICAgICAgIExP
R19FUlJPUigiSm9iICUiIFBSSXU2NCAiIHJlc29sdmVkIGluIHNlcnZlciwgYnV0IHdhcyBub3Qg
Zm91bmQiLCBqb2JJZGVudGlmaWVyKTsKKyAgICAgICAgTE9HX0VSUk9SKCJKb2IgJXMgcmVzb2x2
ZWQgaW4gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVudGlmaWVyLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
OTEsMjIgKzkxLDIyIEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RyYXRpb25Kb2JS
ZXNvbHZlZEluU2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIsCiAgICAgfSk7CiB9CiAKLXZv
aWQgU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIo
dWludDY0X3Qgam9iSWRlbnRpZmllciwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKK3ZvaWQg
U1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgYm9v
bCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKIHsKLSAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9i
cy50YWtlKGpvYklkZW50aWZpZXIpOworICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLnRh
a2Uoam9iRGF0YUlkZW50aWZpZXIuam9iSWRlbnRpZmllcik7CiAgICAgaWYgKCFqb2IpIHsKLSAg
ICAgICAgTE9HX0VSUk9SKCJKb2IgJSIgUFJJdTY0ICIgcmVzb2x2ZWQgaW4gc2VydmVyLCBidXQg
d2FzIG5vdCBmb3VuZCIsIGpvYklkZW50aWZpZXIpOworICAgICAgICBMT0dfRVJST1IoIkpvYiAl
cyByZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlkZW50aWZp
ZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgam9iLT5yZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdCh1bnJlZ2lzdHJh
dGlvblJlc3VsdCk7CiB9CiAKLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZl
dGNoRm9yU2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIpCit2b2lkIFNXQ2xpZW50Q29ubmVj
dGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyKQogewotICAgIGF1dG8gam9iID0gbV9zY2hl
ZHVsZWRKb2JzLmdldChqb2JJZGVudGlmaWVyKTsKKyAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVk
Sm9icy5nZXQoam9iRGF0YUlkZW50aWZpZXIuam9iSWRlbnRpZmllcik7CiAgICAgaWYgKCFqb2Ip
IHsKLSAgICAgICAgTE9HX0VSUk9SKCJKb2IgJSIgUFJJdTY0ICIgaW5zdHJ1Y3RlZCB0byBzdGFy
dCBmZXRjaCBmcm9tIHNlcnZlciwgYnV0IGpvYiB3YXMgbm90IGZvdW5kIiwgam9iSWRlbnRpZmll
cik7CisgICAgICAgIExPR19FUlJPUigiSm9iICVzIGluc3RydWN0ZWQgdG8gc3RhcnQgZmV0Y2gg
ZnJvbSBzZXJ2ZXIsIGJ1dCBqb2Igd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVudGlmaWVyLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAvLyBGSVhNRTogU2hvdWxk
IG1lc3NhZ2UgYmFjayB0byB0aGUgc2VydmVyIGhlcmUgdG8gc2lnbmFsIGZhaWx1cmUgdG8gZmV0
Y2gsCiAgICAgICAgIC8vIGJ1dCB3ZSBjdXJyZW50bHkgbmVlZCB0aGUgcmVnaXN0cmF0aW9uIGtl
eSB0byBkbyBzbywgYW5kIGRvbid0IGhhdmUgaXQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmlu
ZGV4IDRhMjMyOWVkOWU2NDg2NzBmOGYxNTQwZmUyYWUzZTc0MGYxOWFiYTcuLjNiODExY2Q1M2Mx
NjQyNjE1YmM0MWNlYWVlMjA5OTFlYjhhMTRlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaApAQCAt
NzgsMTAgKzc4LDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBT
V0NsaWVudENvbm5lY3Rpb24oKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgam9iUmVqZWN0
ZWRJblNlcnZlcih1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBFeGNlcHRpb25EYXRhJik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVy
KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYs
IFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJl
Z2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIodWludDY0X3Qgam9iSWRlbnRpZmllciwgYm9v
bCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydFNj
cmlwdEZldGNoRm9yU2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgam9iUmVqZWN0ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImLCBjb25zdCBFeGNlcHRpb25EYXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllciYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYsIFNob3Vs
ZE5vdGlmeVdoZW5SZXNvbHZlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1bnJlZ2lzdHJh
dGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyJiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQodWludDY0X3QgZGVzdGluYXRpb25TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBTZXJ2aWNlV29y
a2VyRGF0YSYmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHVwZGF0ZVdvcmtlclN0YXRlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VyU3RhdGUpOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3Vs
dCYpID0gMDsKICAgICB2b2lkIGZvckVhY2hDb250YWluZXIoY29uc3QgV1RGOjpGdW5jdGlvbjx2
b2lkKFNlcnZpY2VXb3JrZXJDb250YWluZXImKT4mIGFwcGx5KTsKIAotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxTZXJ2aWNlV29ya2VySm9iPj4gbV9zY2hlZHVsZWRKb2JzOworICAgIEhh
c2hNYXA8U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIFJlZlB0cjxTZXJ2aWNlV29ya2VySm9i
Pj4gbV9zY2hlZHVsZWRKb2JzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRl
eCAxNWI5ZTAzODg3OTAwNGUzNDVjNGI0ZTZjZmQ1YzZkNDI5YTA4YjRiLi5lYzNhNjA4OTgzYjlj
YzI0MDFiYzM2ODNmYjI2MGI0NWQyY2U0MTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZv
aWQgU1dTZXJ2ZXI6OmNsZWFyKGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiAKIHZvaWQg
U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmIGpvYkRhdGEpCiB7Ci0gICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTY2hlZHVs
aW5nIFNlcnZpY2VXb3JrZXIgam9iICVzLSUiIFBSSXU2NCAiIGluIHNlcnZlciIsIGpvYkRhdGEu
Y29ubmVjdGlvbklkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgam9i
RGF0YS5pZGVudGlmaWVyKCkpOworICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiU2NoZWR1bGluZyBT
ZXJ2aWNlV29ya2VyIGpvYiAlcyBpbiBzZXJ2ZXIiLCBqb2JEYXRhLmlkZW50aWZpZXIoKS5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgQVNTRVJUKGlkZW50aWZpZXIoKSA9PSBq
b2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOwogCiAgICAgbV9zZXJ2ZXIuc2NoZWR1bGVK
b2Ioam9iRGF0YSk7CkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBTV1NlcnZlcjo6c2NoZWR1bGVK
b2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCiAKIHZvaWQgU1dTZXJ2ZXI6
OnJlamVjdEpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgY29uc3QgRXhj
ZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKIHsKLSAgICBMT0coU2VydmljZVdvcmtlciwgIlJl
amVjdGVkIFNlcnZpY2VXb3JrZXIgam9iICVzLSUiIFBSSXU2NCAiIGluIHNlcnZlciIsIGpvYkRh
dGEuY29ubmVjdGlvbklkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
am9iRGF0YS5pZGVudGlmaWVyKCkpOworICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiUmVqZWN0ZWQg
U2VydmljZVdvcmtlciBqb2IgJXMgaW4gc2VydmVyIiwgam9iRGF0YS5pZGVudGlmaWVyKCkubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBtX2Nv
bm5lY3Rpb25zLmdldChqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOwogICAgIGlmICgh
Y29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgU1dT
ZXJ2ZXI6OnJlamVjdEpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgY29u
c3QgRXhjZXB0aW9uRGF0CiAKIHZvaWQgU1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25Kb2Io
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhJiByZWdpc3RyYXRpb25EYXRhLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWQgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKQogewotICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
UmVzb2x2ZWQgU2VydmljZVdvcmtlciBqb2IgJXMtJSIgUFJJdTY0ICIgaW4gc2VydmVyIHdpdGgg
cmVnaXN0cmF0aW9uICVzIiwgam9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCBqb2JEYXRhLmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9u
RGF0YS5pZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0co
U2VydmljZVdvcmtlciwgIlJlc29sdmVkIFNlcnZpY2VXb3JrZXIgam9iICVzIGluIHNlcnZlciB3
aXRoIHJlZ2lzdHJhdGlvbiAlcyIsIGpvYkRhdGEuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmco
KS51dGY4KCkuZGF0YSgpLCByZWdpc3RyYXRpb25EYXRhLmlkZW50aWZpZXIubG9nZ2luZ1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25z
LmdldChqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOwogICAgIGlmICghY29ubmVjdGlv
bikKICAgICAgICAgcmV0dXJuOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnJl
c29sdmVVbnJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0
YSwgY29uCiAKIHZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmIGpvYkRhdGEpCiB7Ci0gICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2ZXIg
aXNzdWluZyBzdGFydFNjcmlwdEZldGNoIGZvciBjdXJyZW50IGpvYiAlcy0lIiBQUkl1NjQgIiBp
biBjbGllbnQiLCBqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCksIGpvYkRhdGEuaWRlbnRpZmllcigpKTsKKyAgICBMT0coU2VydmljZVdv
cmtlciwgIlNlcnZlciBpc3N1aW5nIHN0YXJ0U2NyaXB0RmV0Y2ggZm9yIGN1cnJlbnQgam9iICVz
IGluIGNsaWVudCIsIGpvYkRhdGEuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKICAgICBhdXRvKiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoam9iRGF0
YS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKICAgICBpZiAoIWNvbm5lY3Rpb24pCiAgICAgICAg
IHJldHVybjsKQEAgLTI0Nyw5ICsyNDcsOSBAQCB2b2lkIFNXU2VydmVyOjpzdGFydFNjcmlwdEZl
dGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhKQogCiB2b2lkIFNXU2VydmVy
OjpzY3JpcHRGZXRjaEZpbmlzaGVkKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZp
Y2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQogewotICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
U2VydmVyIGhhbmRsaW5nIHNjcmlwdEZldGNoRmluaXNoZWQgZm9yIGN1cnJlbnQgam9iICVzLSUi
IFBSSXU2NCAiIGluIGNsaWVudCIsIHJlc3VsdC5jb25uZWN0aW9uSWRlbnRpZmllci5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVzdWx0LmpvYklkZW50aWZpZXIpOworICAgIExPRyhT
ZXJ2aWNlV29ya2VyLCAiU2VydmVyIGhhbmRsaW5nIHNjcmlwdEZldGNoRmluaXNoZWQgZm9yIGN1
cnJlbnQgam9iICVzIGluIGNsaWVudCIsIHJlc3VsdC5qb2JEYXRhSWRlbnRpZmllci5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250
YWlucyhyZXN1bHQuY29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAgICBBU1NFUlQobV9jb25uZWN0
aW9ucy5jb250YWlucyhyZXN1bHQuam9iRGF0YUlkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZp
ZXIpKTsKIAogICAgIGF1dG8gam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVzdWx0LnJlZ2lz
dHJhdGlvbktleSk7CiAgICAgaWYgKCFqb2JRdWV1ZSkKQEAgLTI1OCwyMiArMjU4LDIyIEBAIHZv
aWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
Y29uc3QgU2VydmljZVdvcmtlckZlCiAgICAgam9iUXVldWUtPnNjcmlwdEZldGNoRmluaXNoZWQo
Y29ubmVjdGlvbiwgcmVzdWx0KTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dEZh
aWxlZFRvU3RhcnQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQordm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJXb3Jr
ZXImIHdvcmtlciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmIChhdXRvKiBqb2JR
dWV1ZSA9IG1fam9iUXVldWVzLmdldCh3b3JrZXIucmVnaXN0cmF0aW9uS2V5KCkpKQotICAgICAg
ICBqb2JRdWV1ZS0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQod29ya2VyLmlkZW50aWZpZXIo
KSwgbWVzc2FnZSk7CisgICAgICAgIGpvYlF1ZXVlLT5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFy
dChqb2JEYXRhSWRlbnRpZmllciwgd29ya2VyLmlkZW50aWZpZXIoKSwgbWVzc2FnZSk7CiB9CiAK
LXZvaWQgU1dTZXJ2ZXI6OnNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVyV29ya2VyJiB3b3Jr
ZXIpCit2b2lkIFNXU2VydmVyOjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlcldvcmtlciYg
d29ya2VyKQogewogICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldCh3b3Jr
ZXIucmVnaXN0cmF0aW9uS2V5KCkpKQotICAgICAgICBqb2JRdWV1ZS0+c2NyaXB0Q29udGV4dFN0
YXJ0ZWQod29ya2VyLmlkZW50aWZpZXIoKSk7CisgICAgICAgIGpvYlF1ZXVlLT5zY3JpcHRDb250
ZXh0U3RhcnRlZChqb2JEYXRhSWRlbnRpZmllciwgd29ya2VyLmlkZW50aWZpZXIoKSk7CiB9CiAK
LXZvaWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEluc3RhbGwoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwg
Ym9vbCB3YXNTdWNjZXNzZnVsKQordm9pZCBTV1NlcnZlcjo6ZGlkRmluaXNoSW5zdGFsbChjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1Nl
cnZlcldvcmtlciYgd29ya2VyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7CiAgICAgaWYgKGF1dG8q
IGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHdvcmtlci5yZWdpc3RyYXRpb25LZXkoKSkpCi0g
ICAgICAgIGpvYlF1ZXVlLT5kaWRGaW5pc2hJbnN0YWxsKHdvcmtlci5pZGVudGlmaWVyKCksIHdh
c1N1Y2Nlc3NmdWwpOworICAgICAgICBqb2JRdWV1ZS0+ZGlkRmluaXNoSW5zdGFsbChqb2JEYXRh
SWRlbnRpZmllciwgd29ya2VyLmlkZW50aWZpZXIoKSwgd2FzU3VjY2Vzc2Z1bCk7CiB9CiAKIHZv
aWQgU1dTZXJ2ZXI6OmRpZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikK
QEAgLTM1MCwxMSArMzUwLDExIEBAIHZvaWQgU1dTZXJ2ZXI6OnNlcnZpY2VXb3JrZXJTdG9wcGVk
Q29udHJvbGxpbmdDbGllbnQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2VyCiAgICAgcmVnaXN0
cmF0aW9uLT5yZW1vdmVDbGllbnRVc2luZ1JlZ2lzdHJhdGlvbih7IGNvbm5lY3Rpb24uaWRlbnRp
ZmllcigpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciB9KTsKIH0KIAotdm9pZCBT
V1NlcnZlcjo6dXBkYXRlV29ya2VyKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBlKQordm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2Vy
KENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRh
dGFJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3Ry
YXRpb25LZXksIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlw
ZSB0eXBlKQogewogICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBnZW5lcmF0ZVNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKCk7CiAKLSAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
ZGF0YSA9IHsgcmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc2NyaXB0
LCB1cmwsIHR5cGUgfTsKKyAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgZGF0YSA9IHsgam9i
RGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IHNjcmlwdCwgdXJsLCB0eXBlIH07CiAKICAgICAvLyBSaWdodCBub3cgd2Ugb25seSBldmVyIGtl
ZXAgdXAgdG8gb25lIGNvbm5lY3Rpb24gdG8gb25lIFNXIGNvbnRleHQgcHJvY2Vzcy4KICAgICAv
LyBBbmQgaXQgc2hvdWxkIGFsd2F5cyBleGlzdCBpZiB3ZSdyZSBjYWxsaW5nIHVwZGF0ZVdvcmtl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5o
CmluZGV4IDgxYmUwMTJjOWI5YWY4MmQyN2RjNWJiYjgxZThmMWJjYzViYWUwNTIuLjBiYjBjNTZj
ODY0YjQ5ODlkMTExNzEzMDgyYTg5ZDAxYWFiNjlhM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTg4LDEwICs4OCwxMCBAQCBw
dWJsaWM6CiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBNZXNzYWdlcyB0byB0aGUgY2xpZW50
IFdlYlByb2Nlc3MKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlamVjdEpvYkluQ2xpZW50KHVpbnQ2
NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmKSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uSm9iSW5DbGllbnQodWludDY0X3Qgam9iSWRl
bnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmLCBTaG91bGROb3Rp
ZnlXaGVuUmVzb2x2ZWQpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlc29sdmVVbnJlZ2lz
dHJhdGlvbkpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmLCBib29sIHJlZ2lzdHJhdGlvblJlc3VsdCkgPSAwOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KHVpbnQ2NF90IGpvYklk
ZW50aWZpZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlamVjdEpvYkluQ2xpZW50KGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IEV4Y2VwdGlvbkRhdGEm
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uSm9iSW5DbGll
bnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGEmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYkluQ2xpZW50KGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmLCBib29sIHJlZ2lzdHJhdGlvblJlc3VsdCkgPSAwOworICAgICAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYpID0gMDsKIAogICAgICAgICBTV1NlcnZlciYgbV9zZXJ2ZXI7CiAgICAg
ICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwpAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBvc3RUYXNrKENyb3NzVGhyZWFkVGFzayYmKTsKICAgICB2b2lkIHBvc3RUYXNr
UmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYpOwogCi0gICAgdm9pZCB1cGRhdGVXb3JrZXIoQ29ubmVj
dGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSk7CisgICAgdm9pZCB1cGRhdGVXb3JrZXIo
Q29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgV29ya2VyVHlwZSk7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU1dTZXJ2ZXJX
b3JrZXImKTsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKICAg
ICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNXU2VydmVyV29ya2VyJik7CkBAIC0xMjcsOSArMTI3
LDkgQEAgcHVibGljOgogICAgIENvbm5lY3Rpb24qIGdldENvbm5lY3Rpb24oU1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX2Nvbm5lY3Rpb25zLmdldChp
ZGVudGlmaWVyKTsgfQogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0b3JlKCkgeyByZXR1cm4g
bV9vcmlnaW5TdG9yZTsgfQogCi0gICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChT
V1NlcnZlcldvcmtlciYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRD
b250ZXh0U3RhcnRlZChTV1NlcnZlcldvcmtlciYpOwotICAgIHZvaWQgZGlkRmluaXNoSW5zdGFs
bChTV1NlcnZlcldvcmtlciYsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgdm9pZCBzY3JpcHRD
b250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIm
LCBTV1NlcnZlcldvcmtlciYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBzY3Jp
cHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBT
V1NlcnZlcldvcmtlciYpOworICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTV1NlcnZlcldvcmtlciYsIGJvb2wgd2FzU3VjY2Vz
c2Z1bCk7CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFNXU2VydmVyV29ya2VyJik7CiAg
ICAgdm9pZCB3b3JrZXJDb250ZXh0VGVybWluYXRlZChTV1NlcnZlcldvcmtlciYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9i
UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmNwcAppbmRleCA4MjQyYTBmMGMyYTlhZjcyODNmNzI1YWE5YjA3MWRhOWY1Y2I3
OTUyLi43MjFhOWQ0YTBmZmFhZTAyYjc5MWIxZWQ1YjY5MjRhYTY1OWE3NjU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJK
b2JRdWV1ZS5jcHAKQEAgLTUwLDE0ICs1MCwxNCBAQCBTV1NlcnZlckpvYlF1ZXVlOjp+U1dTZXJ2
ZXJKb2JRdWV1ZSgpCiB7CiB9CiAKLWJvb2wgU1dTZXJ2ZXJKb2JRdWV1ZTo6aXNDdXJyZW50bHlQ
cm9jZXNzaW5nSm9iKHVpbnQ2NF90IGpvYklkZW50aWZpZXIpIGNvbnN0Citib29sIFNXU2VydmVy
Sm9iUXVldWU6OmlzQ3VycmVudGx5UHJvY2Vzc2luZ0pvYihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyKSBjb25zdAogewotICAgIHJldHVybiAh
bV9qb2JRdWV1ZS5pc0VtcHR5KCkgJiYgZmlyc3RKb2IoKS5pZGVudGlmaWVyKCkgPT0gam9iSWRl
bnRpZmllcjsKKyAgICByZXR1cm4gIW1fam9iUXVldWUuaXNFbXB0eSgpICYmIGZpcnN0Sm9iKCku
aWRlbnRpZmllcigpID09IGpvYkRhdGFJZGVudGlmaWVyOwogfQogCiB2b2lkIFNXU2VydmVySm9i
UXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQogewotICAgIGlmICgh
aXNDdXJyZW50bHlQcm9jZXNzaW5nSm9iKHJlc3VsdC5qb2JJZGVudGlmaWVyKSkKKyAgICBpZiAo
IWlzQ3VycmVudGx5UHJvY2Vzc2luZ0pvYihyZXN1bHQuam9iRGF0YUlkZW50aWZpZXIpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvJiBqb2IgPSBmaXJzdEpvYigpOwpAQCAtODcsMTIgKzg3
LDE1IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZl
cjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uCiAgICAgLy8gLSBJbnZva2UgRmluaXNoIEpv
YiB3aXRoIGpvYiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAKICAgICAvLyBGSVhNRTogU3VwcG9y
dCB0aGUgcHJvcGVyIHdvcmtlciB0eXBlIChjbGFzc2ljIHZzIG1vZHVsZSkKLSAgICBtX3NlcnZl
ci51cGRhdGVXb3JrZXIoY29ubmVjdGlvbiwgbV9yZWdpc3RyYXRpb25LZXksIGpvYi5zY3JpcHRV
UkwsIHJlc3VsdC5zY3JpcHQsIFdvcmtlclR5cGU6OkNsYXNzaWMpOworICAgIG1fc2VydmVyLnVw
ZGF0ZVdvcmtlcihjb25uZWN0aW9uLCBqb2IuaWRlbnRpZmllcigpLCBtX3JlZ2lzdHJhdGlvbktl
eSwgam9iLnNjcmlwdFVSTCwgcmVzdWx0LnNjcmlwdCwgV29ya2VyVHlwZTo6Q2xhc3NpYyk7CiB9
CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN1cGRhdGUtYWxnb3Jp
dGhtCi12b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFNXU2Vy
dmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CisgICAgaWYgKCFpc0N1cnJlbnRseVBy
b2Nlc3NpbmdKb2Ioam9iRGF0YUlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKICAgICAv
LyBJZiBhbiB1bmNhdWdodCBydW50aW1lIHNjcmlwdCBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBh
Ym92ZSBzdGVwLCB0aGVuOgogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJl
Z2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7
CkBAIC0xMDgsOCArMTExLDExIEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4
dEZhaWxlZFRvU3RhcnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0CiAgICAgZmluaXNo
Q3VycmVudEpvYigpOwogfQogCi12b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRT
dGFydGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit2b2lkIFNXU2VydmVy
Sm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiB7CisgICAgaWYgKCFpc0N1cnJlbnRseVByb2Nlc3NpbmdKb2Ioam9iRGF0YUlk
ZW50aWZpZXIpKQorICAgICAgICByZXR1cm47CisKICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBt
X3NlcnZlci5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOwogICAgIEFTU0VSVChy
ZWdpc3RyYXRpb24pOwogCkBAIC0xNDgsOCArMTU0LDExIEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1
ZTo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoKQogfQogCiAvLyBodHRwczovL3czYy5n
aXRodWIuaW8vU2VydmljZVdvcmtlci8jaW5zdGFsbAotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpk
aWRGaW5pc2hJbnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wg
d2FzU3VjY2Vzc2Z1bCkKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNoSW5zdGFsbChj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7
CisgICAgaWYgKCFpc0N1cnJlbnRseVByb2Nlc3NpbmdKb2Ioam9iRGF0YUlkZW50aWZpZXIpKQor
ICAgICAgICByZXR1cm47CisKICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5nZXRS
ZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOwogICAgIEFTU0VSVChyZWdpc3RyYXRpb24p
OwogICAgIEFTU0VSVChyZWdpc3RyYXRpb24tPmluc3RhbGxpbmdXb3JrZXIoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5oCmluZGV4IDgwMGQ3YzgwMTUzYzA0MTk3NzY2OWUzZjg3YTQ5MTQzZTU4ODVmMjMuLmZi
Y2Q5OGE5ZTNhYjg5ZDk0ODQ0Zjg2MGZlYmJhOGMwNDJmM2M4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5o
CkBAIC00OCw5ICs0OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJ1bk5leHRKb2IoKTsKIAogICAg
IHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIGNvbnN0IFNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwotICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRv
U3RhcnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0g
ICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0g
ICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdh
c1N1Y2Nlc3NmdWwpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CisgICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3Nm
dWwpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRSZXNvbHZlUmVn
aXN0cmF0aW9uUHJvbWlzZSgpOwogCkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIHZvaWQgdHJ5QWN0aXZhdGUoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwog
ICAgIHN0YXRpYyB2b2lkIGFjdGl2YXRlKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24m
KTsKIAotICAgIGJvb2wgaXNDdXJyZW50bHlQcm9jZXNzaW5nSm9iKHVpbnQ2NF90IGpvYklkZW50
aWZpZXIpIGNvbnN0OworICAgIGJvb2wgaXNDdXJyZW50bHlQcm9jZXNzaW5nSm9iKGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYpIGNvbnN0OwogCiAgICAgRGVxdWU8U2Vydmlj
ZVdvcmtlckpvYkRhdGE+IG1fam9iUXVldWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAppbmRleCA0MmQyMzA5Zjk3M2FlZThlNjMxZTFhMzNiN2NkYjE5ODdhNGMw
OTAzLi5jM2ViZWU5YWFhNGUzNzM0ZGRmOTY4ZmY2ZjI2MTNmYmIzNDgzY2FmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC03MiwyMiArNzIsMjIgQEAgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omds
b2JhbFNlcnZlclRvQ29udGV4dEMKICAgICByZXR1cm4gYWxsQ29ubmVjdGlvbnMoKS5iZWdpbigp
LT52YWx1ZTsKIH0KIAotdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlwdENv
bnRleHRGYWlsZWRUb1N0YXJ0KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
ICAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9y
SWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCi0gICAgICAgIHdvcmtlci0+c2Ny
aXB0Q29udGV4dEZhaWxlZFRvU3RhcnQobWVzc2FnZSk7CisgICAgICAgIHdvcmtlci0+c2NyaXB0
Q29udGV4dEZhaWxlZFRvU3RhcnQoam9iRGF0YUlkZW50aWZpZXIsIG1lc3NhZ2UpOwogfQogCi12
b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit2b2lkIFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiB7CiAgICAgaWYgKGF1dG8qIHdv
cmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpKQotICAgICAgICB3b3JrZXItPnNjcmlwdENvbnRleHRTdGFydGVk
KCk7CisgICAgICAgIHdvcmtlci0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQoam9iRGF0YUlkZW50aWZp
ZXIpOwogfQogICAgIAotdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZpbmlz
aEluc3RhbGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGJvb2wgd2FzU3VjY2Vzc2Z1bCkKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpk
aWRGaW5pc2hJbnN0YWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9i
RGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7CiAgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNX
U2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpKQotICAgICAgICB3b3JrZXItPmRpZEZpbmlzaEluc3RhbGwod2FzU3VjY2Vzc2Z1
bCk7CisgICAgICAgIHdvcmtlci0+ZGlkRmluaXNoSW5zdGFsbChqb2JEYXRhSWRlbnRpZmllciwg
d2FzU3VjY2Vzc2Z1bCk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpk
aWRGaW5pc2hBY3RpdmF0aW9uKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggNzA3
OWZiNjIxMDdhMjMyNTY3MDNmYzY4MjA4OWRjZTU2MTkzY2RmYS4uN2MxODQ0ZDEzYjQ0YmJjNDcy
ZmZiODZmNGRkODFjNDg1MmNiMGU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1dT
ZXJ2ZXI7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOworc3RydWN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllcjsKIAogY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbj4gewogcHVibGljOgpAQCAtNDksOSArNTAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogCiAgICAg
Ly8gTWVzc2FnZXMgYmFjayBmcm9tIHRoZSBTVyBob3N0IHByb2Nlc3MKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2Ny
aXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZGlkRmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9v
bCB3YXNTdWNjZXNzZnVsKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRG
YWlsZWRUb1N0YXJ0KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdvcmtlcklk
ZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1Bl
bmRpbmdFdmVudHMoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50
cyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggYzAzMDYxN2Q2ZTFlNjE3MTlhY2Fj
MDliOWUzMDU4YmNmZThjYjBiNi4uZGM5NDAxNjM3YWZmMGEyNzdmM2FmZTlmY2E2MjhlMmMzMzA4
YzEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTY1LDE5ICs2NSwxOSBAQCB2b2lkIFNXU2VydmVy
V29ya2VyOjp0ZXJtaW5hdGUoKQogICAgIG1fc2VydmVyLnRlcm1pbmF0ZVdvcmtlcigqdGhpcyk7
CiB9CiAKLXZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNjcmlwdENvbnRleHRG
YWlsZWRUb1N0YXJ0KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0
YUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX3NlcnZlci5zY3Jp
cHRDb250ZXh0RmFpbGVkVG9TdGFydCgqdGhpcywgbWVzc2FnZSk7CisgICAgbV9zZXJ2ZXIuc2Ny
aXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoam9iRGF0YUlkZW50aWZpZXIsICp0aGlzLCBtZXNzYWdl
KTsKIH0KIAotdm9pZCBTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoKQordm9p
ZCBTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllcikKIHsKLSAgICBtX3NlcnZlci5z
Y3JpcHRDb250ZXh0U3RhcnRlZCgqdGhpcyk7CisgICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dFN0
YXJ0ZWQoam9iRGF0YUlkZW50aWZpZXIsICp0aGlzKTsKIH0KIAotdm9pZCBTV1NlcnZlcldvcmtl
cjo6ZGlkRmluaXNoSW5zdGFsbChib29sIHdhc1N1Y2Nlc3NmdWwpCit2b2lkIFNXU2VydmVyV29y
a2VyOjpkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ciYgam9iRGF0YUlkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKIHsKLSAgICBtX3NlcnZl
ci5kaWRGaW5pc2hJbnN0YWxsKCp0aGlzLCB3YXNTdWNjZXNzZnVsKTsKKyAgICBtX3NlcnZlci5k
aWRGaW5pc2hJbnN0YWxsKGpvYkRhdGFJZGVudGlmaWVyLCAqdGhpcywgd2FzU3VjY2Vzc2Z1bCk7
CiB9CiAKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZEZpbmlzaEFjdGl2YXRpb24oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5oCmluZGV4IDM5Zjc2Y2RiYmNhYTU5M2IzMjg2YjZjZDA0YTBkOGMyZjk3ODNhYmUuLjNhNmUz
ZjhhNzE1OTdmZmY5ZjQ2ZDhmOTQ3MWM3ZWFkMDQ2MTJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTM4
LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTV1NlcnZlcjsKIGVudW0g
Y2xhc3MgV29ya2VyVHlwZTsKK3N0cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI7
CiAKIGNsYXNzIFNXU2VydmVyV29ya2VyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNX
U2VydmVyV29ya2VyPiB7CiBwdWJsaWM6CkBAIC02Niw5ICs2Nyw5IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc1BlbmRpbmdFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX2hhc1BlbmRpbmdFdmVudHM7
IH0KICAgICB2b2lkIHNldEhhc1BlbmRpbmdFdmVudHMoYm9vbCB2YWx1ZSkgeyBtX2hhc1BlbmRp
bmdFdmVudHMgPSB2YWx1ZTsgfQogCi0gICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFy
dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQo
KTsKLSAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoYm9vbCB3YXNTdWNjZXNzZnVsKTsKKyAgICB2
b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllciYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBzY3JpcHRDb250
ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImKTsKKyAgICB2
b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
JiwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oKTsK
ICAgICB2b2lkIGNvbnRleHRUZXJtaW5hdGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAKaW5kZXggMDA3MjIzNjY5MjMxZTJhOWI5N2QwNTAyNDU0MzIzYWQ5YTM4
ODg5NS4uOTAxOTM4ODAxYjI3N2E0ZmM2NTQ4MWM2MmEzZGViYjhjZDllMDc3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTcyLDI0ICs3MiwyNCBAQCB2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpyZWpl
Y3RKb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBFeGNlcHRpb25EYXRh
JiBleGNlcHRpb25EYXRhKQordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnJlamVjdEpvYklu
Q2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50
aWZpZXIsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbkRhdGEpCiB7Ci0gICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpKb2JSZWplY3RlZEluU2VydmVyKGpvYklk
ZW50aWZpZXIsIGV4Y2VwdGlvbkRhdGEpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVu
dENvbm5lY3Rpb246OkpvYlJlamVjdGVkSW5TZXJ2ZXIoam9iRGF0YUlkZW50aWZpZXIsIGV4Y2Vw
dGlvbkRhdGEpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnJlc29sdmVSZWdp
c3RyYXRpb25Kb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YSYgcmVnaXN0cmF0aW9uRGF0YSwgU2hvdWxkTm90aWZ5V2hl
blJlc29sdmVkIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uOjpyZXNvbHZlUmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGEmIHJlZ2lzdHJhdGlvbkRhdGEsIFNob3VsZE5vdGlmeVdoZW5SZXNv
bHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dDbGllbnRDb25uZWN0aW9uOjpSZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGpvYklk
ZW50aWZpZXIsIHJlZ2lzdHJhdGlvbkRhdGEsIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6UmVnaXN0cmF0aW9uSm9i
UmVzb2x2ZWRJblNlcnZlcihqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uRGF0YSwgc2hv
dWxkTm90aWZ5V2hlblJlc29sdmVkKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpyZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2JJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVy
LCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGJv
b2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVz
b2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQogewot
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6VW5yZWdpc3RyYXRpb25K
b2JSZXNvbHZlZEluU2VydmVyKGpvYklkZW50aWZpZXIsIHVucmVnaXN0cmF0aW9uUmVzdWx0KSk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpVbnJlZ2lzdHJhdGlv
bkpvYlJlc29sdmVkSW5TZXJ2ZXIoam9iRGF0YUlkZW50aWZpZXIsIHVucmVnaXN0cmF0aW9uUmVz
dWx0KSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNo
SW5DbGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllcikKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjpzdGFydFNjcmlwdEZldGNoSW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllcikKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V0NsaWVudENvbm5lY3Rpb246OlN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoam9iSWRlbnRpZmll
cikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6U3RhcnRTY3Jp
cHRGZXRjaEZvclNlcnZlcihqb2JEYXRhSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGVJbkNsaWVudChTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+
JiBzZXJ2aWNlV29ya2VyRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApp
bmRleCA5OGU5MmNlNjlkMThmMGRhYTY2MzZkYmM5MDZkODRlYjM5YjFlMjM2Li5mMDQyMzE3OTFk
NDhmM2QxZGRhZDNjNDlhMTVkN2EzYzQ1NDYwOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5oCkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IC8vIEltcGxlbWVudCBTV1NlcnZlcjo6Q29ubmVjdGlvbiAoTWVzc2FnZXMgdG8gdGhlIGNsaWVu
dCBXZWJQcm9jZXNzKQotICAgIHZvaWQgcmVqZWN0Sm9iSW5DbGllbnQodWludDY0X3Qgam9iSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSYpIGZpbmFsOwotICAgIHZvaWQg
cmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiwgV2ViQ29yZTo6U2hv
dWxkTm90aWZ5V2hlblJlc29sdmVkKSBmaW5hbDsKLSAgICB2b2lkIHJlc29sdmVVbnJlZ2lzdHJh
dGlvbkpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KSBm
aW5hbDsKLSAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVu
dGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIHJlamVjdEpvYkluQ2xpZW50KGNvbnN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGEmKSBmaW5hbDsKKyAgICB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25Kb2JJbkNsaWVudChj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYsIFdlYkNvcmU6OlNob3VsZE5vdGlm
eVdoZW5SZXNvbHZlZCkgZmluYWw7CisgICAgdm9pZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2JJ
bkNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCB1bnJlZ2lz
dHJhdGlvblJlc3VsdCkgZmluYWw7CisgICAgdm9pZCBzdGFydFNjcmlwdEZldGNoSW5DbGllbnQo
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJikgZmluYWw7CiAg
ICAgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZUluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uU3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckRh
dGE+JikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVXb3JrZXJTdGF0ZUluQ2xpZW50KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyU3RhdGUpIGZp
bmFsOwogICAgIHZvaWQgZmlyZVVwZGF0ZUZvdW5kRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggNjdk
NWJjNmRkYTg3M2FmZjcyM2RlZmU3MDdjOGU3MWViZDc4YWQ4NS4uMzdmMTEyZmFhNzg1MmQ2MTkz
NDJiNjlmNGU3MjdmMmQ3ZTJjZjRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yNSw5ICsyNSw5
IEBACiBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gewogICAgICMg
V2hlbiBwb3NzaWJsZSwgdGhlc2UgbWVzc2FnZXMgY2FuIGJlIGltcGxlbWVudGVkIGRpcmVjdGx5
IGJ5IFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgogCi0gICAgU2NyaXB0Q29u
dGV4dEZhaWxlZFRvU3RhcnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgU3RyaW5nIG1lc3NhZ2UpOwotICAgIFNjcmlwdENvbnRleHRTdGFydGVkKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpOwotICAgIERpZEZpbmlzaEluc3Rh
bGwoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCB3YXNT
dWNjZXNzZnVsKTsKKyAgICBTY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChzdHJ1Y3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIGpvYkRhdGFJZGVudGlmaWVyLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU3Ry
aW5nIG1lc3NhZ2UpOworICAgIFNjcmlwdENvbnRleHRTdGFydGVkKHN0cnVjdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgam9iRGF0YUlkZW50aWZpZXIsIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBE
aWRGaW5pc2hJbnN0YWxsKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXIgam9iRGF0YUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwogICAgIERpZEZp
bmlzaEFjdGl2YXRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
cik7CiAgICAgU2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKICAg
ICBXb3JrZXJUZXJtaW5hdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDk2NWEyZjBj
ZTViNDhmMjk3NzE2NDlmMWVjOTI5NDZlN2FhZTA5NGQuLjQwYTcyZjdmYzY5YjNmNTkyYzhiYzE1
YjA1YWUwNmUzOTZlZjA2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
QEAgLTI0LDEwICsyNCwxMCBAQAogCiBtZXNzYWdlcyAtPiBXZWJTV0NsaWVudENvbm5lY3Rpb24g
ewogICAgICMgV2hlbiBwb3NzaWJsZSwgdGhlc2UgbWVzc2FnZXMgY2FuIGJlIGltcGxlbWVudGVk
IGRpcmVjdGx5IGJ5IFdlYkNvcmU6OlNXU2VydmVyOjpDb25uZWN0aW9uCi0gICAgSm9iUmVqZWN0
ZWRJblNlcnZlcih1aW50NjRfdCBpZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YSBleGNlcHRpb24pCi0gICAgUmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcih1aW50
NjRfdCBpZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEgcmVnaXN0cmF0aW9uLCBlbnVtIFdlYkNvcmU6OlNob3VsZE5vdGlmeVdoZW5SZXNvbHZl
ZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCi0gICAgVW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZl
ZEluU2VydmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQp
Ci0gICAgU3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcih1aW50NjRfdCBqb2JJZGVudGlmaWVyKQor
ICAgIEpvYlJlamVjdGVkSW5TZXJ2ZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGEgZXhjZXB0aW9uKQorICAgIFJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciBqb2JEYXRhSWRlbnRp
Zmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHJlZ2lz
dHJhdGlvbiwgZW51bSBXZWJDb3JlOjpTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgc2hvdWxkTm90
aWZ5V2hlblJlc29sdmVkKQorICAgIFVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihz
dHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIGpvYkRhdGFJZGVu
dGlmaWVyLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQorICAgIFN0YXJ0U2NyaXB0RmV0Y2hG
b3JTZXJ2ZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciBq
b2JEYXRhSWRlbnRpZmllcikKICAgICBVcGRhdGVSZWdpc3RyYXRpb25TdGF0ZShXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBlbnVtIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSBzdGF0ZSwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyRGF0YT4gc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAgICAg
VXBkYXRlV29ya2VyU3RhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGVudW0gV2ViQ29yZTo6U2VydmljZVdvcmtlclN0YXRlIHN0YXRl
KQogICAgIEZpcmVVcGRhdGVGb3VuZEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKaW5kZXggOTYxMmNiNGIzM2MzNDY0Yzk5ZjU4YzUyYmUzN2IwYWVhZDVmYzQ3NC4uN2M2
Y2Y1NjIzMjI2ZjhjZDNmY2EzNWNiZmIzYzkzNmUzMDAyNzA3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMTI0LDEyICsxMjQsMTIgQEAgdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIoY29uc3QgU2VydmljZVdv
cmtlckNvbnQKICAgICBMT0coU2VydmljZVdvcmtlciwgIkNvbnRleHQgcHJvY2VzcyBQSUQ6ICVp
IGNyZWF0ZWQgd29ya2VyIHRocmVhZFxuIiwgZ2V0cGlkKCkpOwogfQogCi12b2lkIFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXJ2aWNlV29ya2VyU3RhcnRlZFdpdGhNZXNzYWdlKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGV4Y2VwdGlvbk1lc3NhZ2UpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpzZXJ2aWNlV29ya2VyU3RhcnRlZFdpdGhNZXNzYWdlKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2Up
CiB7CiAgICAgaWYgKGV4Y2VwdGlvbk1lc3NhZ2UuaXNFbXB0eSgpKQotICAgICAgICBtX2Nvbm5l
Y3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OlNjcmlwdENvbnRleHRTdGFydGVkKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSwgMCk7CisgICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2NyaXB0Q29udGV4dFN0YXJ0ZWQo
am9iRGF0YUlkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgMCk7CiAgICAgZWxz
ZQotICAgICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0
KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBleGNlcHRpb25NZXNzYWdlKSwgMCk7CisgICAgICAg
IG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6U2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoam9iRGF0YUlk
ZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBleGNlcHRpb25NZXNzYWdlKSwgMCk7
CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU1dT
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWlu
dDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyPiBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
RmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIGZvcm1EYXRh
KQpAQCAtMTcxLDkgKzE3MSw5IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnZpCiAgICAgbV9jb25u
ZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U3RvcmFnZVByb2Nlc3M6OlBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgSVBD
OjpEYXRhUmVmZXJlbmNlIHsgbWVzc2FnZS0+ZGF0YSgpIH0sIHNvdXJjZUlkZW50aWZpZXIsIHNv
dXJjZU9yaWdpbiksIDApOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpkaWRGaW5pc2hJbnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCiB7Ci0gICAgbV9jb25uZWN0
aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpEaWRGaW5pc2hJbnN0YWxsKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3YXNT
dWNjZXNzZnVsKSwgMCk7CisgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpEaWRGaW5pc2hJbnN0YWxs
KGpvYkRhdGFJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgd2FzU3VjY2Vzc2Z1
bCksIDApOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRGaW5p
c2hBY3RpdmF0aW9uKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggNDE0MDBjZmMzZjdmNjUz
NzVmY2QwZWZjZDA4M2FjZThkYTljNjNlMi4uZDEyZmY0NDc0OGVhN2I0Zjg4ZDk5NWU5ZWY5ZWJi
NmE1ODVkZjZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01NywxMyAr
NTcsMTMgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNv
bm5lY3Rpb24uCiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkgZmluYWw7
CisgICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllciYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29s
IHdhc1N1Y2Nlc3NmdWwpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBzZXRTZXJ2aWNl
V29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Ym9vbCkgZmluYWw7CiAgICAgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KLSAgICB2b2lk
IHNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7CisgICAgdm9p
ZCBzZXJ2aWNlV29ya2VyU3RhcnRlZFdpdGhNZXNzYWdlKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgaW5zdGFs
bFNlcnZpY2VXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJik7
CiAgICAgdm9pZCBzdGFydEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllcj4sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpGZXRjaE9wdGlvbnMmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmKTsKICAgICB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIHNvdXJj
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgc291cmNlRGF0
YSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZDljYzg5YWM0ZTAwODM3OWQwMzYxYWVhYjEzNzNkMDlhOWRjMzI3Yi4uZDYz
ZWM3N2ZmM2JhODhmZGE3ZmFkNTY4Njc1ZmRjZmM5MzNhMTBkMSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDE3LTExLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgQVNTRVJUSU9OIEZBSUxFRDogcmVnaXN0cmF0aW9uIGluIFdlYkNvcmU6OlNXU2VydmVySm9i
UXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5ODQ2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5za2lwIHRlc3Qg
dGhhdCB1c2UgdG8gZmxha2lseSBjcmFzaC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDE3LTExLTE4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgdGVzdCBmb3IgYSBtdWx0aWNvbHVtbiByZW5kZXIgdHJlZSB1
cGRhdGUgaXNzdWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggNzc3NDEwYjk3NDg5ZmY0Y2JkYTJkYTY5YjBlNjU2ODM4ZjA2YTllMS4uMzU4YTk4M2FkMDJl
YWVkZWRmYjQ3ZjliNGZkNjBmNWM4MDVhN2NjZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE3NTIsNCArMTc1MiwzIEBAIHdlYmtpdC5vcmcvYi8xNzky
MDggWyBIaWdoU2llcnJhKyBdIGpzL2ludGwtZGF0ZXRpbWVmb3JtYXQuaHRtbCBbIEZhaWx1cmUg
XQogWyBIaWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEt
c291cmNlL21lZGlhc291cmNlLXJlZHVuZGFudC1zZWVrLmh0bWwgWyBGYWlsdXJlIF0KIFsgSGln
aFNpZXJyYSsgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9t
ZWRpYXNvdXJjZS1yZW1vdmUuaHRtbCBbIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTc5ODQ2
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL2dldHJlZ2lzdHJhdGlvbi5odHRwcy5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327338</attachid>
            <date>2017-11-18 21:59:27 -0800</date>
            <delta_ts>2017-11-18 23:19:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179846-20171118215926.patch</filename>
            <type>text/plain</type>
            <size>79161</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY2NzFmNmY1ZGY2MWE4ZDVhOGE3MjI3
OWMxZGMyYWIzNWVjNTlhODkuLjBjMDIxMmIzZDYyYjk4YTA2MzNjYjNlZTQ4ZDA0N2JiYTA0MjIy
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMTEtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiByZWdpc3RyYXRpb24gaW4g
V2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzk4NDYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICBBZGQgYSBnZW5lcmF0ZVRocmVhZFNhZmVPYmplY3RJZGVudGlmaWVyKCkgZm9yIGdlbmVy
YXRpbmcgYW4gT2JqZWN0SWRlbnRpZmllcgorICAgICAgICBpbiBhIHRocmVhZC1zYWZlIG1hbm5l
ciwgdXNpbmcgc3RkOjphdG9taWMuCisKKyAgICAgICAgKiB3dGYvT2JqZWN0SWRlbnRpZmllci5o
OgorICAgICAgICAoV1RGOjpnZW5lcmF0ZU9iamVjdElkZW50aWZpZXIpOgorICAgICAgICAoV1RG
OjpnZW5lcmF0ZVRocmVhZFNhZmVPYmplY3RJZGVudGlmaWVyKToKKwogMjAxNy0xMS0xOCAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbV1RGXSBSZW1v
dmUgQ1BVKEhQUEEpIGluIFN0YWNrQm91bmRzIGJ5IHVzaW5nIHJ1bnRpbWUgc3RhY2sgZGlyZWN0
aW9uIHRlc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2Y2Y2MWE4NzI0NzBkZWE0MGRkYTBmNjg3NjY5M2M0MzY4
NzQ4YTU2Li45NTBkMTg5Y2I3MGE5MTVkYzQ1NzU0NjgwNTVjMTkyMDMwMDUyYjdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTAyIEBACisyMDE3LTExLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogcmVnaXN0cmF0aW9uIGluIFdl
YkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTc5ODQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgV2UgaGF2ZSBzZWVuIGNyYXNoZXMgb24gdGhlIGJvdHMgaW4gU1dTZXJ2ZXJKb2JRdWV1ZSBi
ZWNhdXNlIG1ldGhvZHMgc3VjaCBhcyBzY3JpcHRDb250ZXh0U3RhcnRlZCgpCisgICAgICAgIGNh
biBnZXQgY2FsbGVkIGFmdGVyIHRoZSBqb2JRdWV1ZSBoYXMgYmVlbiBjbGVhcmVkLiBUaGlzIGlz
IGJlY2F1c2Ugd2hlbiBhIGpvYlF1ZXVlIGlzIGNsZWFyZWQsCisgICAgICAgIGFuIGFzeW5jaHJv
bm91cyBvcGVyYXRpb24gbWF5IGJlIHBlbmRpbmcgKGUuZy4gc2NyaXB0IGZldGNoLCBzZXJ2aWNl
IHdvcmtlciBzdGFydGluZywgaW5zdGFsbCBldmVudCkuCisKKyAgICAgICAgVG8gYWRkcmVzcyB0
aGUgaXNzdWUsIHdlIG5vdyBwYXNzIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBqb2IgdGhhdCBzdGFy
dGVkIHRoZSBhc3luY2hyb25vdXMgb3BlcmF0aW9uCisgICAgICAgIHdoZW4gY2FsbGluZyB0aGUg
bWV0aG9kcyBvbiBTV1NlcnZlckpvYlF1ZXVlLiBJZiB0aGUgaWRlbnRpZmllciBkb2VzIG5vdCBt
YXRjaCB0aGUgaWRlbnRpZmllciBvZgorICAgICAgICB0aGUgY3VycmVudCBqb2IgaW4gdGhlIEpv
YlF1ZXVlLCB3ZSBpZ25vcmUgaXQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIHN0YXJ0cyB1
c2luZyBhIHN0cm9uZ2x5IHR5cGVkIGlkZW50aWZpZXIgKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlm
aWVyKSBmb3IKKyAgICAgICAgU2VydmljZVdvcmtlckpvYiwgaW5zdGVhZCBvZiBhIHVpbnQ2NF90
LiBJdCBhbHNvIGludHJvZHVjZXMgYSBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgdHlw
ZQorICAgICAgICB3aGljaCBjb250YWlucyBib3RoIGEgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciBhbmQgYSBTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllci4gVGhpcyBpcyB1c2VmdWwKKyAg
ICAgICAgYmVjYXVzZSBTZXJ2aWNlV29ya2VySm9iRGF0YSBpcyBwYXNzZWQgdG8gdGhlIFN0b3Jh
Z2VQcm9jZXNzIGFuZCBpdCBuZWVkcyBhIGdsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyLgorICAg
ICAgICBTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBpcyBvbmx5IGd1YXJhbnRlZWQgdG8gYmUg
dW5pcXVlIHdpdGhpbiBhIHNpbmdsZSBXZWJQcm9jZXNzLiBBdWdtZW50aW5nIGl0CisgICAgICAg
IHdpdGggdGhlIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgb2YgdGhlIFdlYlByb2Nlc3Mg
bWFrZXMgaXQgZ2xvYmFsbHkgdW5pcXVlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdW5za2lw
cGVkIGV4aXRpbmcgdGVzdC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVs
ZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydFNj
cmlwdEZldGNoRm9ySm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkRpZEZpbmlzaCk6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZSk6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckZldGNoUmVzdWx0OjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoUmVzdWx0OjpkZWNvZGUpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlckpvYkRhdGE6OlNlcnZpY2VXb3JrZXJKb2JEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckpvYkRhdGE6OmNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGE6OmRlY29kZSk6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllci5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0
LmguCisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI6Om9w
ZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyOjpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcjo6ZGVjb2RlKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
V0NvbnRleHRNYW5hZ2VyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJUaHJlYWRGb3JJbnN0YWxsKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaXJlSW5zdGFsbEV2ZW50
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmluaXNoZWRGZXRjaGluZ1Nj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OmZhaWxlZEZldGNo
aW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6am9iUmVq
ZWN0ZWRJblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnJl
Z2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGll
bnRDb25uZWN0aW9uOjp1bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNoRm9yU2VydmVy
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5o
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlamVjdEpvYik6CisgICAgICAgIChXZWJDb3Jl
OjpTV1NlcnZlcjo6cmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYik6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6
c2NyaXB0RmV0Y2hGaW5pc2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NyaXB0
Q29udGV4dEZhaWxlZFRvU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNjcmlw
dENvbnRleHRTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRGaW5pc2hJ
bnN0YWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1cGRhdGVXb3JrZXIpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6aXNDdXJyZW50bHlQcm9jZXNzaW5nSm9iIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dEZhaWxlZFRv
U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4
dFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6ZGlkRmluaXNo
SW5zdGFsbCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnNjcmlwdENvbnRleHRTdGFydGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmluaXNoSW5zdGFs
bCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0
RmFpbGVkVG9TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2NyaXB0
Q29udGV4dFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmRpZEZp
bmlzaEluc3RhbGwpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaDoKKwogMjAxNy0xMS0xOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIyMDY0Nik6IFJFR1JFU1NJT04gKHIyMjA2NDYpOiBS
ZW5kZXJUcmVlUG9zaXRpb246OmNvbXB1dGVOZXh0U2libGluZyBoaXRzIGFzc2VydGlvbiB3aXRo
IGNlcnRhaW4gZmlyc3QtbGV0dGVyIG11dGF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3NjYzZWQzNmIxNDFi
MGExZTg4NjhmOGNhYTkwYzJjMDk0MzZkNTYwLi5jMzQ0MDFkNjQ4ZjFhYzVmODIwYTQwNmVkNjQw
ODBjZmQ1ZDVlNmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE3LTExLTE4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDog
cmVnaXN0cmF0aW9uIGluIFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRT
dGFydGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5ODQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6cmVqZWN0Sm9iSW5DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnJlc29sdmVSZWdpc3RyYXRpb25Kb2JJbkNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGll
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0U2NyaXB0
RmV0Y2hJbkNsaWVudCk6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpzZXJ2aWNlV29ya2VyU3RhcnRlZFdpdGhNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZpbmlzaEluc3RhbGwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorCiAy
MDE3LTExLTE3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1Nl
cnZpY2UgV29ya2Vyc10gSW1wbGVtZW50ICJOb3RpZnkgQ29udHJvbGxlciBDaGFuZ2UiIGFsZ29y
aXRobQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oIGIvU291
cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCmluZGV4IDZmN2FhYzQ1ZWQwNTRlZGZlYTUw
MDQ1OTIyMzgzYjgxZTgyY2E4ODkuLmI1MDc2OWIyMmZjOTRlM2FkOTZkYzIyY2ExZTJmZjZmZjky
OWExYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTI1LDcgKzI1LDkgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFp
dHMuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC03Myw2ICs3NSw3IEBAIHB1Ymxp
YzoKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgT2JqZWN0SWRl
bnRpZmllcjxVPiBnZW5lcmF0ZU9iamVjdElkZW50aWZpZXIoKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBmcmllbmQgT2JqZWN0SWRlbnRpZmllcjxVPiBnZW5lcmF0ZVRocmVhZFNhZmVPYmpl
Y3RJZGVudGlmaWVyKCk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gZnJpZW5kIE9iamVjdElk
ZW50aWZpZXI8VT4gbWFrZU9iamVjdElkZW50aWZpZXIodWludDY0X3QpOwogICAgIGZyaWVuZCBz
dHJ1Y3QgSGFzaFRyYWl0czxPYmplY3RJZGVudGlmaWVyPjsKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBmcmllbmQgc3RydWN0IE9iamVjdElkZW50aWZpZXJIYXNoOwpAQCAtODYsMTQgKzg5LDE4
IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyIHsgMCB9Owot
ICAgIHN0YXRpYyB1aW50NjRfdCBzX2N1cnJlbnRJZGVudGlmaWVyOwogfTsKIAotdGVtcGxhdGU8
dHlwZW5hbWUgVD4gdWludDY0X3QgT2JqZWN0SWRlbnRpZmllcjxUPjo6c19jdXJyZW50SWRlbnRp
ZmllcjsKLQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE9iamVjdElkZW50aWZpZXI8VD4g
Z2VuZXJhdGVPYmplY3RJZGVudGlmaWVyKCkKIHsKLSAgICByZXR1cm4gT2JqZWN0SWRlbnRpZmll
cjxUPiB7ICsrT2JqZWN0SWRlbnRpZmllcjxUPjo6c19jdXJyZW50SWRlbnRpZmllciB9OworICAg
IHN0YXRpYyB1aW50NjRfdCBjdXJyZW50SWRlbnRpZmllcjsKKyAgICByZXR1cm4gT2JqZWN0SWRl
bnRpZmllcjxUPiB7ICsrY3VycmVudElkZW50aWZpZXIgfTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIE9iamVjdElkZW50aWZpZXI8VD4gZ2VuZXJhdGVUaHJlYWRTYWZlT2JqZWN0
SWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6YXRvbWljPHVp
bnQ2NF90Pj4gY3VycmVudElkZW50aWZpZXI7CisgICAgcmV0dXJuIE9iamVjdElkZW50aWZpZXI8
VD4geyArK2N1cnJlbnRJZGVudGlmaWVyLmdldCgpIH07CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBPYmplY3RJZGVudGlmaWVyPFQ+IG1ha2VPYmplY3RJZGVudGlmaWVyKHVpbnQ2
NF90IGlkZW50aWZpZXIpCkBAIC0xMTcsNCArMTI0LDUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IERlZmF1bHRIYXNoPE9iamVjdElkZW50aWZpZXI8VD4+IHsKIAogdXNpbmcgV1RGOjpP
YmplY3RJZGVudGlmaWVyOwogdXNpbmcgV1RGOjpnZW5lcmF0ZU9iamVjdElkZW50aWZpZXI7Cit1
c2luZyBXVEY6OmdlbmVyYXRlVGhyZWFkU2FmZU9iamVjdElkZW50aWZpZXI7CiB1c2luZyBXVEY6
Om1ha2VPYmplY3RJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc3NjBjMGM5MWMwZmI3YTc1YzdiN2NiNWY1OTVk
MWJhMjdjMGJjNTkuLmFhMGQ5OGI5NDA0NGIwYTRhYTI2YWU5ZDliMWJmMzg3NDc1YjEzMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTIyMDMsNiArMjIwMyw3IEBACiAJCTgzN0ZCMzQ1MUY5RUEwNkQwMEQwRkMzMSAvKiBFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzdGQjM0MDFGOUVBMDY2MDBEMEZDMzEgLyogRXh0ZW5kYWJsZU1lc3NhZ2VF
dmVudC5oICovOyB9OwogCQk4Mzg2QTk2RDE5RjYxQjJFMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzg2QTk2
QzE5RjYxQjJFMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmggKi87IH07CiAJCTgzODg2NzM1MUQx
M0JBNUYwMDM2OTdEMCAvKiBSZW5kZXJPYmplY3RFbnVtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM4ODY3MzQxRDEzQkE1OTAwMzY5N0QwIC8qIFJl
bmRlck9iamVjdEVudW1zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJODM4Q0E2QkQxRkMwREZFOTAwNUQ5RkE1IC8qIFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODM4Q0E2QkIxRkMwREZERDAwNUQ5RkE1IC8qIFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTgzOEVGNTM4MURDMTQ5RTIwMDhGMEMzOSAvKiBJREJUcmFuc2FjdGlvbk1vZGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOEVGNTM2MURDMTQ5
REEwMDhGMEMzOSAvKiBJREJUcmFuc2FjdGlvbk1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzhFRjUzQzFEQzE0QTdDMDA4RjBDMzkgLyog
SlNJREJUcmFuc2FjdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgzOEVGNTNBMURDMTRBNzUwMDhGMEMzOSAvKiBKU0lEQlRyYW5zYWN0aW9u
TW9kZS5oICovOyB9OwogCQk4MzhGODZEQTFGNTA5RTc0MDBFOENGQzUgLyogRmlsZUNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzhGODZE
ODFGNTA5RTZDMDBFOENGQzUgLyogRmlsZUNhbGxiYWNrLmggKi87IH07CkBAIC05NDYwLDYgKzk0
NjEsNyBAQAogCQk4Mzg2QTk2RTE5RjYxRTRGMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlQnVpbGRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzODg2NzM0MUQxM0JBNTkwMDM2OTdEMCAvKiBS
ZW5kZXJPYmplY3RFbnVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJPYmplY3RFbnVtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Mzg4NjlFQjFD
RTgxRTlFMDBEMTZBOUUgLyogSlNUZXh0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTVGV4dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTgzOENBNkJCMUZDMERGREQwMDVEOUZBNSAvKiBTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzOEVG
NTM2MURDMTQ5REEwMDhGMEMzOSAvKiBJREJUcmFuc2FjdGlvbk1vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSURCVHJhbnNhY3Rpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTgzOEVGNTM3MURDMTQ5REEwMDhGMEMzOSAvKiBJREJUcmFuc2FjdGlv
bk1vZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IElEQlRyYW5zYWN0aW9uTW9kZS5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzOEVGNTM5MURDMTRBNzUwMDhGMEMzOSAv
KiBKU0lEQlRyYW5zYWN0aW9uTW9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0lEQlRyYW5zYWN0aW9uTW9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNzMwNCw2ICsxNzMwNiw3IEBACiAJCQkJNTFGMTc1NTAxRjNFQkMwQzAwQzc0OTUw
IC8qIFNlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCAqLywKIAkJCQk1MTdBNTMyNDFGNEI5MDRBMDBE
Q0RDMEEgLyogU2VydmljZVdvcmtlckpvYkRhdGEuY3BwICovLAogCQkJCTUxRjY0NTY2MUY0NTM5
OUYwMEI1NERFRCAvKiBTZXJ2aWNlV29ya2VySm9iRGF0YS5oICovLAorCQkJCTgzOENBNkJCMUZD
MERGREQwMDVEOUZBNSAvKiBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCAqLywKIAkJ
CQk1MUY2NDU2NTFGNDUzOTlGMDBCNTRERUQgLyogU2VydmljZVdvcmtlckpvYlR5cGUuaCAqLywK
IAkJCQk1MUYxNzU0RjFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlclByb3ZpZGVyLmNw
cCAqLywKIAkJCQk1MUYxNzU0RTFGM0VCQzBDMDBDNzQ5NTAgLyogU2VydmljZVdvcmtlclByb3Zp
ZGVyLmggKi8sCkBAIC0yODk2OSw2ICsyODk3Miw3IEBACiAJCQkJNTFGMTc1NjMxRjNFQkM4MzAw
Qzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJKb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NTY0
MUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VySm9iQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUY2NDU2OTFGNDUzOUI5MDBCNTRERUQgLyogU2VydmljZVdvcmtlckpvYkRhdGEu
aCBpbiBIZWFkZXJzICovLAorCQkJCTgzOENBNkJEMUZDMERGRTkwMDVEOUZBNSAvKiBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjY0NTZBMUY0
NTM5QzAwMEI1NERFRCAvKiBTZXJ2aWNlV29ya2VySm9iVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFGMTc1NjYxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3JrZXJQcm92aWRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc1NjgxRjNFQkM4MzAwQzc0OTUwIC8qIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGJm
OTdlZmU4MmEyYTVhZjkzNGVjOWFiNjAzYzJiZTFiMDk5YThjYTMuLmM3MThkMWM1YWU4NmNmMWEz
ZGYyNzY0OTk4MDc2MjllMDczMWI4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTE5Nyw3ICsx
OTcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlSm9iKFJlZjxTZXJ2
aWNlV29ya2VySm9iPiYmIGpvYikKICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAKICAg
ICBTZXJ2aWNlV29ya2VySm9iJiByYXdKb2IgPSBqb2IuZ2V0KCk7Ci0gICAgYXV0byByZXN1bHQg
PSBtX2pvYk1hcC5hZGQocmF3Sm9iLmRhdGEoKS5pZGVudGlmaWVyKCksIFdURk1vdmUoam9iKSk7
CisgICAgYXV0byByZXN1bHQgPSBtX2pvYk1hcC5hZGQocmF3Sm9iLmlkZW50aWZpZXIoKSwgV1RG
TW92ZShqb2IpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkp
OwogCiAgICAgbV9zd0Nvbm5lY3Rpb24tPnNjaGVkdWxlSm9iKHJhd0pvYik7CkBAIC0zNDUsNyAr
MzQ1LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhVbnJl
Z2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2VySm8KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIHsK
LSAgICBMT0coU2VydmljZVdvcmtlciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAlcCBzdGFydGlu
ZyBzY3JpcHQgZmV0Y2ggZm9yIGpvYiAlIiBQUkl1NjQsIHRoaXMsIGpvYi5kYXRhKCkuaWRlbnRp
ZmllcigpKTsKKyAgICBMT0coU2VydmljZVdvcmtlciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAl
cCBzdGFydGluZyBzY3JpcHQgZmV0Y2ggZm9yIGpvYiAlcyIsIHRoaXMsIGpvYi5pZGVudGlmaWVy
KCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgYXV0byogY29udGV4dCA9
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpIHsKQEAgLTM2MCwx
NCArMzYwLDE0IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RhcnRTY3JpcHRGZXRj
aEZvckpvYihTZXJ2aWNlV29ya2VySm9iJiBqb2IpCiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29u
c3QgU3RyaW5nJiBzY3JpcHQpCiB7Ci0gICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXZpY2VXb3Jr
ZXJDb250YWluZXIgJXAgZmluaXNoZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJSIgUFJJdTY0
LCB0aGlzLCBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSk7CisgICAgTE9HKFNlcnZpY2VXb3JrZXIs
ICJTZXZpY2VXb3JrZXJDb250YWluZXIgJXAgZmluaXNoZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBq
b2IgJXMiLCB0aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKIAogICAgIG1fc3dDb25uZWN0aW9uLT5maW5pc2hlZEZldGNoaW5nU2NyaXB0KGpvYiwg
c2NyaXB0KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2Fk
aW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikKIHsKLSAgICBMT0coU2Vy
dmljZVdvcmtlciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAlcCBmYWlsZWQgZmV0Y2hpbmcgc2Ny
aXB0IGZvciBqb2IgJSIgUFJJdTY0LCB0aGlzLCBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSk7Cisg
ICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXZpY2VXb3JrZXJDb250YWluZXIgJXAgZmFpbGVkIGZl
dGNoaW5nIHNjcmlwdCBmb3Igam9iICVzIiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICBq
b2IucHJvbWlzZSgpLnJlamVjdCgqZXhjZXB0aW9uKTsKQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYgam9iLCBjb25zdAogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkRp
ZEZpbmlzaChTZXJ2aWNlV29ya2VySm9iJiBqb2IpCiB7Ci0gICAgYXV0byB0YWtlbiA9IG1fam9i
TWFwLnRha2Uoam9iLmRhdGEoKS5pZGVudGlmaWVyKCkpOworICAgIGF1dG8gdGFrZW4gPSBtX2pv
Yk1hcC50YWtlKGpvYi5pZGVudGlmaWVyKCkpOwogICAgIEFTU0VSVF9VTlVTRUQodGFrZW4sICF0
YWtlbiB8fCB0YWtlbi0+cHRyKCkgPT0gJmpvYik7CiAKICAgICB1bnNldFBlbmRpbmdBY3Rpdml0
eSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDYyYmQ0ZGJmZDljNzA2ZmRjYjdhZTA4NGU1MTFh
NDIyYjc5OTM5NDAuLmNjNzNmYTk0NTYxOWVhNzQ1MWM5ZGVjNTMzMjA0ZGRkN2VmNDIyNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuaApAQCAtMTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgTmF2aWdhdG9y
QmFzZSYgbV9uYXZpZ2F0b3I7CiAKICAgICBSZWZQdHI8U1dDbGllbnRDb25uZWN0aW9uPiBtX3N3
Q29ubmVjdGlvbjsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8U2VydmljZVdvcmtlckpvYj4+
IG1fam9iTWFwOworICAgIEhhc2hNYXA8U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIFJlZjxT
ZXJ2aWNlV29ya2VySm9iPj4gbV9qb2JNYXA7CiAKICAgICBib29sIG1faXNTdG9wcGVkIHsgZmFs
c2UgfTsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKj4gbV9yZWdpc3RyYXRpb25zOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmNwcAppbmRleCBmMGVjNzY2ZTM1MzhkNGQ5MjQxZjc4MGIzOGUzNzNkMDBlOTYwN2QwLi5i
YTU4Y2NmZTlkZjI4MzMxZGRhMDBhMWNlNGM2YjY1MzQzMGNhNTU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmNwcApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgcmVnaXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRVUkwu
aXNvbGF0ZWRDb3B5KCksIHdvcmtlclR5cGUgfTsKKyAgICByZXR1cm4geyBqb2JEYXRhSWRlbnRp
ZmllciwgcmVnaXN0cmF0aW9uS2V5Lmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNlV29ya2VySWRlbnRp
Zmllciwgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCksIHdv
cmtlclR5cGUgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5o
CmluZGV4IGI3ZDY2ZjFlNWE0YTRlZGRlMTU2ODNlYTgyZTM0ZDQ0MmQ1MmVhNzMuLjg4ODJjMWFi
ZTRmOWVmODk3MDI5MGQwNmRhYjEwZWVhZGMwNjU5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCiAjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgpAQCAtMzUsNiArMzYsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKKyAgICBTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgam9iRGF0YUlkZW50aWZpZXI7CiAgICAgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXk7CiAgICAgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXI7CiAgICAgU3RyaW5nIHNjcmlwdDsK
QEAgLTUwLDEyICs1MiwxNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCByZWdpc3RyYXRp
b25LZXkgPDwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0IDw8IHNjcmlwdFVSTCA8
PCB3b3JrZXJUeXBlOworICAgIGVuY29kZXIgPDwgam9iRGF0YUlkZW50aWZpZXIgPDwgcmVnaXN0
cmF0aW9uS2V5IDw8IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIDw8IHNjcmlwdCA8PCBzY3JpcHRV
UkwgPDwgd29ya2VyVHlwZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogeworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+
IGpvYkRhdGFJZGVudGlmaWVyOworICAgIGlmICgham9iRGF0YUlkZW50aWZpZXIpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBhdXRvIHJlZ2lzdHJhdGlvbktleSA9IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXk6OmRlY29kZShkZWNvZGVyKTsKICAgICBpZiAoIXJlZ2lz
dHJhdGlvbktleSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTc2LDcgKzgzLDcg
QEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXIKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bSh3
b3JrZXJUeXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKLSAgICByZXR1
cm4ge3sgV1RGTW92ZSgqcmVnaXN0cmF0aW9uS2V5KSwgV1RGTW92ZSgqc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoc2NyaXB0VVJMKSwgd29ya2VyVHlw
ZSB9fTsKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpLCBXVEZNb3Zl
KCpyZWdpc3RyYXRpb25LZXkpLCBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIFdU
Rk1vdmUoc2NyaXB0KSwgV1RGTW92ZShzY3JpcHRVUkwpLCB3b3JrZXJUeXBlIH19OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgKaW5kZXggMzYwNDQ0NDYzYTFj
N2QyZDQ5ZTM4NWVhZTJhMDQ2Zjg3M2FkMDgwZC4uNzE0Zjg1N2FiOWE3NzYwN2Y4Yjg3YjNiM2Q2
NGI3NDgyZWU5Njg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaApAQCAtMzQsOCArMzQsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0IHsKLSAg
ICB1aW50NjRfdCBqb2JJZGVudGlmaWVyOwotICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIgY29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyIGpvYkRhdGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkg
cmVnaXN0cmF0aW9uS2V5OwogICAgIFN0cmluZyBzY3JpcHQ7CiAgICAgUmVzb3VyY2VFcnJvciBz
Y3JpcHRFcnJvcjsKQEAgLTQ3LDIwICs0NiwxNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckZldGNo
UmVzdWx0IHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRj
aFJlc3VsdDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8
PCBqb2JJZGVudGlmaWVyIDw8IGNvbm5lY3Rpb25JZGVudGlmaWVyIDw8IHJlZ2lzdHJhdGlvbktl
eSA8PCBzY3JpcHQgPDwgc2NyaXB0RXJyb3I7CisgICAgZW5jb2RlciA8PCBqb2JEYXRhSWRlbnRp
ZmllciA8PCByZWdpc3RyYXRpb25LZXkgPDwgc2NyaXB0IDw8IHNjcmlwdEVycm9yOwogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogYm9vbCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkK
IHsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5qb2JJZGVudGlmaWVyKSkKKyAgICBz
dGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50
aWZpZXI7CisgICAgZGVjb2RlciA+PiBqb2JEYXRhSWRlbnRpZmllcjsKKyAgICBpZiAoIWpvYkRh
dGFJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdGQ6Om9wdGlvbmFs
PFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI+IGNvbm5lY3Rpb25JZGVudGlmaWVyOwotICAg
IGRlY29kZXIgPj4gY29ubmVjdGlvbklkZW50aWZpZXI7Ci0gICAgaWYgKCFjb25uZWN0aW9uSWRl
bnRpZmllcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdC5jb25uZWN0aW9uSWRl
bnRpZmllciA9ICpjb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICByZXN1bHQuam9iRGF0YUlkZW50
aWZpZXIgPSBXVEZNb3ZlKCpqb2JEYXRhSWRlbnRpZmllcik7CiAgICAgCiAgICAgYXV0byByZWdp
c3RyYXRpb25LZXkgPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5OjpkZWNvZGUoZGVjb2Rl
cik7CiAgICAgaWYgKCFyZWdpc3RyYXRpb25LZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAppbmRleCA2YTU4ZDQ2ZjhlNDRjMzc1ZjM3
ZGU2ZTk3YjhhZDZjNGVkMWE4ZjUwLi40YzU3OGFmOWFhYWRiZmE0MGUxMmQxNjQzNWM3NDJmNGZh
NmRjOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNl
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkNsaWVudC5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJKb2JEYXRhLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCiAjaW5j
bHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNTksNiArNjAsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChib29sKTsKICAg
ICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2goKTsKIAorICAgIHVzaW5nIElkZW50aWZpZXIgPSBTZXJ2
aWNlV29ya2VySm9iSWRlbnRpZmllcjsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2pvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXI7IH0KKwogICAg
IFNlcnZpY2VXb3JrZXJKb2JEYXRhIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2pvYkRhdGE7IH0K
ICAgICBEZWZlcnJlZFByb21pc2UmIHByb21pc2UoKSB7IHJldHVybiBtX3Byb21pc2UuZ2V0KCk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2JEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5jcHAKaW5kZXggZDhiYzQzZWIyNmM0OTY5MjMyY2E0M2EzY2IxMTJiNzI2
MTIwZDRjYy4uNjllNjdjOTdjMzM2NmEwYjNhMTY4OWJmOWM3OTc4ODg0YjA3MGY0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpv
YkRhdGEuY3BwCkBAIC0zMCwxNCArMzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
ZXJ2aWNlV29ya2VySm9iRGF0YTo6U2VydmljZVdvcmtlckpvYkRhdGEodWludDY0X3Qgam9iSWRl
bnRpZmllciwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmll
cikKLSAgICA6IFRocmVhZFNhZmVJZGVudGlmaWVkKGpvYklkZW50aWZpZXIpCi0gICAgLCBtX2Nv
bm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rpb25JZGVudGlmaWVyKQorU2VydmljZVdvcmtlckpv
YkRhdGE6OlNlcnZpY2VXb3JrZXJKb2JEYXRhKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIp
CisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKIH0KIAogU2VydmljZVdvcmtlckpv
YkRhdGE6OlNlcnZpY2VXb3JrZXJKb2JEYXRhKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIg
Y29ubmVjdGlvbklkZW50aWZpZXIpCi0gICAgOiBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5l
Y3Rpb25JZGVudGlmaWVyKQorICAgIDogbV9pZGVudGlmaWVyIHsgY29ubmVjdGlvbklkZW50aWZp
ZXIsIGdlbmVyYXRlVGhyZWFkU2FmZU9iamVjdElkZW50aWZpZXI8U2VydmljZVdvcmtlckpvYklk
ZW50aWZpZXJUeXBlPigpIH0KIHsKIH0KIApAQCAtNTAsNyArNDksNyBAQCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpyZWdpc3RyYXRpb25LZXkoKSBj
b25zdAogCiBTZXJ2aWNlV29ya2VySm9iRGF0YSBTZXJ2aWNlV29ya2VySm9iRGF0YTo6aXNvbGF0
ZWRDb3B5KCkgY29uc3QKIHsKLSAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSByZXN1bHQgeyBpZGVu
dGlmaWVyKCksIG1fY29ubmVjdGlvbklkZW50aWZpZXIgfTsKKyAgICBTZXJ2aWNlV29ya2VySm9i
RGF0YSByZXN1bHQgeyBpZGVudGlmaWVyKCkgfTsKICAgICByZXN1bHQudHlwZSA9IHR5cGU7CiAK
ICAgICByZXN1bHQuc2NyaXB0VVJMID0gc2NyaXB0VVJMLmlzb2xhdGVkQ29weSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEu
aAppbmRleCA4YjQ2N2E5NmFmYzRkMWI5NTFhODczMWYyODYzZTNjYWI2ZTcxOWYwLi4zMmU1NDAz
Yjc5MDI3NTUzMTMwOWU2NmMzMmM0OGYwY2JjNjMzNmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaApAQCAtMjgsMjIg
KzI4LDIyIEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW5EYXRhLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYlR5cGUuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbk9wdGlvbnMuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKICNpbmNsdWRl
ICJVUkwuaCIKLSNpbmNsdWRlIDx3dGYvSWRlbnRpZmllZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YSA6IHB1YmxpYyBUaHJlYWRTYWZlSWRl
bnRpZmllZDxTZXJ2aWNlV29ya2VySm9iRGF0YT4gewotcHVibGljOgorc3RydWN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhIHsKKyAgICB1c2luZyBJZGVudGlmaWVyID0gU2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyOwogICAgIGV4cGxpY2l0IFNlcnZpY2VXb3JrZXJKb2JEYXRhKFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhKGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhJikgPSBkZWZhdWx0OwogICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRh
KCkgPSBkZWZhdWx0OwogCi0gICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbklkZW50aWZpZXI7IH0K
KyAgICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVyOyB9CiAKICAg
ICBVUkwgc2NyaXB0VVJMOwogICAgIFVSTCBjbGllbnRDcmVhdGlvblVSTDsKQEAgLTUzLDYgKzUz
LDcgQEAgcHVibGljOgogCiAgICAgUmVnaXN0cmF0aW9uT3B0aW9ucyByZWdpc3RyYXRpb25PcHRp
b25zOwogCisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25L
ZXkoKSBjb25zdDsKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSBpc29sYXRlZENvcHkoKSBjb25z
dDsKIApAQCAtNjAsMTUgKzYxLDE1IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YT4gZGVjb2RlKERl
Y29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VySm9i
RGF0YSh1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTZXJ2aWNlV29ya2VySm9iRGF0YShjb25z
dCBJZGVudGlmaWVyJik7CiAKLSAgICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIG1fY29u
bmVjdGlvbklkZW50aWZpZXI7CisgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCiB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VySm9iRGF0YTo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpZGVudGlmaWVyKCkg
PDwgbV9jb25uZWN0aW9uSWRlbnRpZmllciA8PCBzY3JpcHRVUkwgPDwgY2xpZW50Q3JlYXRpb25V
UkwgPDwgdG9wT3JpZ2luIDw8IHNjb3BlVVJMOworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcigp
IDw8IHNjcmlwdFVSTCA8PCBjbGllbnRDcmVhdGlvblVSTCA8PCB0b3BPcmlnaW4gPDwgc2NvcGVV
Ukw7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHR5cGUpOwogICAgIHN3aXRjaCAodHlwZSkgewog
ICAgIGNhc2UgU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyOgpAQCAtODMsMTYgKzg0LDEy
IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckpvYkRhdGE+IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICB1aW50NjRfdCBqb2JJZGVudGlmaWVyOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
am9iSWRlbnRpZmllcikpCisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXI+IGlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOworICAgIGlm
ICghaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHN0ZDo6
b3B0aW9uYWw8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcj4gY29ubmVjdGlvbklkZW50aWZp
ZXI7Ci0gICAgZGVjb2RlciA+PiBjb25uZWN0aW9uSWRlbnRpZmllcjsKLSAgICBpZiAoIWNvbm5l
Y3Rpb25JZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YT4gam9iRGF0YSA9IHsgeyBqb2JJZGVudGlm
aWVyLCAqY29ubmVjdGlvbklkZW50aWZpZXIgfSB9OworICAgIHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckpvYkRhdGE+IGpvYkRhdGEgPSB7IFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsgV1RGTW92
ZSgqaWRlbnRpZmllcikgfSB9OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShqb2JEYXRhLT5z
Y3JpcHRVUkwpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4NDZhYmU4YWY3MDA4NmU5MDRhY2YxNmYyNjcyM2E0
ZDE3MDJjYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyLmgKQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisj
aW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciB7CisgICAgU1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICBTZXJ2aWNlV29ya2Vy
Sm9iSWRlbnRpZmllciBqb2JJZGVudGlmaWVyOworCisjaWZuZGVmIE5ERUJVRworICAgIFN0cmlu
ZyBsb2dnaW5nU3RyaW5nKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjb25uZWN0aW9u
SWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkgKyAiLSIgKyBqb2JJZGVudGlmaWVyLmxvZ2dpbmdT
dHJpbmcoKTsKKyAgICB9CisjZW5kaWYKKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGRlY29k
ZShEZWNvZGVyJik7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllciYgYSwgY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyJiBiKQoreworICAgIHJldHVybiBhLmNvbm5lY3Rpb25JZGVudGlmaWVyID09IGIuY29u
bmVjdGlvbklkZW50aWZpZXIgJiYgYS5qb2JJZGVudGlmaWVyID09IGIuam9iSWRlbnRpZmllcjsK
K30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgU2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IGNvbm5lY3Rpb25JZGVudGlmaWVyIDw8IGpvYklkZW50aWZpZXI7Cit9CisKK3RlbXBsYXRl
PGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllcj4gU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI+
IGNvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gY29ubmVjdGlvbklkZW50aWZp
ZXI7CisgICAgaWYgKCFjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYklkZW50aWZpZXI+
IGpvYklkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBqb2JJZGVudGlmaWVyOworICAgIGlmICgh
am9iSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biB7IHsgV1RGTW92ZSgqY29ubmVjdGlvbklkZW50aWZpZXIpLCBXVEZNb3ZlKCpqb2JJZGVudGlm
aWVyKSB9IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyVHlwZXMuaAppbmRleCAxOTUzNGQxODc1MGExZmEwOGVjODc1NGQ0YmI0
ZjUzNjhmN2FmZDE3Li5kZGIzMDVkOGY4MjFkMjM0ZmRkM2E1NTY5MjRhNmYxZjk5OTEwYjBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclR5
cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJU
eXBlcy5oCkBAIC01OCw2ICs1OCw5IEBAIGVudW0gY2xhc3MgU2hvdWxkTm90aWZ5V2hlblJlc29s
dmVkIHsgTm8sIFllcyB9OwogZW51bSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
clR5cGUgeyB9OwogdXNpbmcgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSBP
YmplY3RJZGVudGlmaWVyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyVHlwZT47
CiAKK2VudW0gU2VydmljZVdvcmtlckpvYklkZW50aWZpZXJUeXBlIHsgfTsKK3VzaW5nIFNlcnZp
Y2VXb3JrZXJKb2JJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxTZXJ2aWNlV29ya2VySm9i
SWRlbnRpZmllclR5cGU+OworCiBlbnVtIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50
aWZpZXJUeXBlIHsgfTsKIHVzaW5nIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZp
ZXJUeXBlPjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCA0ODI3OGM4YjI1ODQwYjJjMDFl
MTE1NTYzMzE4ODE5NjZlYTJmZDUzLi5lZGM3NGIxYzE1OTAxMGIxMGNlNTliZmY3NTA1YWE5OTBk
ZWFkZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtNTEsMTIgKzUxLDEzIEBAIGF1dG8g
U1dDb250ZXh0TWFuYWdlcjo6Y29ubmVjdGlvbigpIGNvbnN0IC0+IENvbm5lY3Rpb24qCiB2b2lk
IFNXQ29udGV4dE1hbmFnZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlclRocmVhZEZvckluc3RhbGwo
UmVmPFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eT4mJiBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkp
CiB7CiAgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS0+aWRlbnRpZmllcigpOworICAgIGF1dG8gam9iRGF0YUlkZW50aWZpZXIgPSBzZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHktPnRocmVhZCgpLmNvbnRleHREYXRhKCkuam9iRGF0YUlkZW50
aWZpZXI7CiAgICAgYXV0byogdGhyZWFkUHJveHkgPSBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
cHRyKCk7CiAgICAgYXV0byByZXN1bHQgPSBtX3dvcmtlck1hcC5hZGQoc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFdURk1vdmUoc2VydmljZVdvcmtlclRocmVhZFByb3h5KSk7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKICAgICAKLSAgICB0aHJlYWRQcm94
eS0+dGhyZWFkKCkuc3RhcnQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyXShjb25zdCBTdHJpbmcm
IGV4Y2VwdGlvbk1lc3NhZ2UpIHsKLSAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuY29ubmVjdGlvbigpLT5zZXJ2aWNlV29ya2VyU3RhcnRlZFdpdGhNZXNzYWdlKHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBleGNlcHRpb25NZXNzYWdlKTsKKyAgICB0aHJlYWRQcm94eS0+dGhy
ZWFkKCkuc3RhcnQoW2pvYkRhdGFJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0o
Y29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSB7CisgICAgICAgIFNXQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+c2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVz
c2FnZShqb2JEYXRhSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGV4Y2VwdGlv
bk1lc3NhZ2UpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggNjE1Y2UwNzQ3
NDY3NjQ4NjZiNzNiMzYxOTkwNjMyZDg1MzBmNjgwOS4uNjBmZmY5NDJjZjFiYTYzMDViNzcxMGEz
MDgyMzY5NDFhMjIwMzIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtNDYsOCArNDYsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkNvbm5lY3Rpb24oKSB7IH0KIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgUmVmPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2Us
IGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBz
ZXJ2aWNlV29ya2VyU3RhcnRlZFdpdGhNZXNzYWdlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaEluc3RhbGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vz
c2Z1bCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWRXaXRo
TWVzc2FnZShjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3Nm
dWwpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFNlcnZpY2VX
b3JrZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGQ5MmU1NTRmOWQ1
NTU2MGYzNzk4YTZhNTgzODljYzM4ZTIwYjdlNTEuLjVmODg1MzE2MGZkYTg4YWFlMGM2ODBkNTIw
NjNiNDFiYTMyNDgxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0xMjEsMTIg
KzEyMSwxMiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUoUmVmPFNlcmlhbGl6ZWRTYwogCiB2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OmZpcmVJbnN0YWxsRXZlbnQoKQogewotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2sgdGFzayhbc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSB0aGlzLT5pZGVudGlmaWVyKCld
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soW2pvYkRhdGFJZGVudGlmaWVyID0gbV9kYXRhLmpv
YkRhdGFJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHRoaXMtPmlkZW50aWZp
ZXIoKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAg
ICBhdXRvJiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAgICBhdXRvIGluc3RhbGxFdmVudCA9IEV4dGVu
ZGFibGVFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnN0YWxsRXZlbnQsIHsgfSwgRXh0ZW5k
YWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5kaXNwYXRjaEV2ZW50KGluc3RhbGxFdmVudCk7CiAKLSAgICAgICAgaW5zdGFsbEV2ZW50
LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQoW3NlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyXShIYXNoU2V0PFJlZjxET01Qcm9taXNlPj4mJiBleHRlbmRMaWZldGltZVByb21p
c2VzKSB7CisgICAgICAgIGluc3RhbGxFdmVudC0+d2hlbkFsbEV4dGVuZExpZmV0aW1lUHJvbWlz
ZXNBcmVTZXR0bGVkKFtqb2JEYXRhSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXJd
KEhhc2hTZXQ8UmVmPERPTVByb21pc2U+PiYmIGV4dGVuZExpZmV0aW1lUHJvbWlzZXMpIHsKICAg
ICAgICAgICAgIGJvb2wgaGFzUmVqZWN0ZWRBbnlQcm9taXNlID0gZmFsc2U7CiAgICAgICAgICAg
ICBmb3IgKGF1dG8mIHByb21pc2UgOiBleHRlbmRMaWZldGltZVByb21pc2VzKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHByb21pc2UtPnN0YXR1cygpID09IERPTVByb21pc2U6OlN0YXR1czo6UmVq
ZWN0ZWQpIHsKQEAgLTEzNCw5ICsxMzQsOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZp
cmVJbnN0YWxsRXZlbnQoKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgaGFzUmVqZWN0ZWRBbnlQcm9taXNlXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2pvYkRhdGFJZGVudGlmaWVyLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgaGFzUmVqZWN0ZWRBbnlQcm9taXNlXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+
ZGlkRmluaXNoSW5zdGFsbChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgIWhhc1JlamVjdGVkQW55
UHJvbWlzZSk7CisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmRpZEZpbmlzaEluc3Rh
bGwoam9iRGF0YUlkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCAhaGFzUmVqZWN0
ZWRBbnlQcm9taXNlKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dD
bGllbnRDb25uZWN0aW9uLmNwcAppbmRleCAxYTU3NDI3ZjhkNjk5MTU0NTg0NTU3NmE2NDRhZmQz
MTcyYTRhNzgzLi5kNDM3NDJjZTkxZmVlZTkxOGNjYTEyZjQzYjMzNGRlZTJiMWQ5ZDdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC00NSw3ICs0NSw3IEBAIFNXQ2xpZW50Q29ubmVjdGlv
bjo6flNXQ2xpZW50Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogdm9pZCBTV0NsaWVudENvbm5l
Y3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIHsKLSAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fc2NoZWR1bGVkSm9icy5hZGQoam9iLmRhdGEoKS5pZGVudGlmaWVyKCksICZq
b2IpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zY2hlZHVsZWRKb2JzLmFkZChqb2IuaWRlbnRp
ZmllcigpLCAmam9iKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0Lmlz
TmV3RW50cnkpOwogCiAgICAgc2NoZWR1bGVKb2JJblNlcnZlcihqb2IuZGF0YSgpKTsKQEAgLTUz
LDM0ICs1MywzNCBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2IoU2Vydmlj
ZVdvcmtlckpvYiYgam9iKQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6ZmluaXNoZWRGZXRj
aGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFN0cmluZyYgc2NyaXB0KQog
ewotICAgIEFTU0VSVChtX3NjaGVkdWxlZEpvYnMuZ2V0KGpvYi5kYXRhKCkuaWRlbnRpZmllcigp
KSA9PSAmam9iKTsKKyAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2JzLmdldChqb2IuaWRlbnRpZmll
cigpKSA9PSAmam9iKTsKIAotICAgIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoeyBqb2Iu
ZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5jb25uZWN0aW9uSWRlbnRpZmllcigpLCBq
b2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgpLCBzY3JpcHQsIHsgfSB9KTsKKyAgICBmaW5pc2hG
ZXRjaGluZ1NjcmlwdEluU2VydmVyKHsgam9iLmRhdGEoKS5pZGVudGlmaWVyKCksIGpvYi5kYXRh
KCkucmVnaXN0cmF0aW9uS2V5KCksIHNjcmlwdCwgeyB9IH0pOwogfQogCiB2b2lkIFNXQ2xpZW50
Q29ubmVjdGlvbjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2Jz
LmdldChqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSkgPT0gJmpvYik7CisgICAgQVNTRVJUKG1fc2No
ZWR1bGVkSm9icy5nZXQoam9iLmlkZW50aWZpZXIoKSkgPT0gJmpvYik7CiAKLSAgICBmaW5pc2hG
ZXRjaGluZ1NjcmlwdEluU2VydmVyKHsgam9iLmRhdGEoKS5pZGVudGlmaWVyKCksIGpvYi5kYXRh
KCkuY29ubmVjdGlvbklkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXkoKSwg
eyB9LCBlcnJvciB9KTsKKyAgICBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHsgam9iLmRh
dGEoKS5pZGVudGlmaWVyKCksIGpvYi5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCksIHsgfSwgZXJy
b3IgfSk7CiB9CiAKLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpqb2JSZWplY3RlZEluU2VydmVy
KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbkRh
dGEpCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6am9iUmVqZWN0ZWRJblNlcnZlcihjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBF
eGNlcHRpb25EYXRhJiBleGNlcHRpb25EYXRhKQogewotICAgIGF1dG8gam9iID0gbV9zY2hlZHVs
ZWRKb2JzLnRha2Uoam9iSWRlbnRpZmllcik7CisgICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpv
YnMudGFrZShqb2JEYXRhSWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKICAgICBpZiAoIWpvYikg
ewotICAgICAgICBMT0dfRVJST1IoIkpvYiAlIiBQUkl1NjQgIiByZWplY3RlZCBmcm9tIHNlcnZl
ciwgYnV0IHdhcyBub3QgZm91bmQiLCBqb2JJZGVudGlmaWVyKTsKKyAgICAgICAgTE9HX0VSUk9S
KCJKb2IgJXMgcmVqZWN0ZWQgZnJvbSBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0
YUlkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgam9iLT5mYWlsZWRXaXRoRXhjZXB0aW9uKGV4Y2VwdGlvbkRhdGEu
dG9FeGNlcHRpb24oKSk7CiB9CiAKLXZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RyYXRp
b25Kb2JSZXNvbHZlZEluU2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSwgU2hvdWxkTm90aWZ5V2hlblJl
c29sdmVkIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9u
OjpyZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkIHNob3Vs
ZE5vdGlmeVdoZW5SZXNvbHZlZCkKIHsKLSAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50
YWtlKGpvYklkZW50aWZpZXIpOworICAgIGF1dG8gam9iID0gbV9zY2hlZHVsZWRKb2JzLnRha2Uo
am9iRGF0YUlkZW50aWZpZXIuam9iSWRlbnRpZmllcik7CiAgICAgaWYgKCFqb2IpIHsKLSAgICAg
ICAgTE9HX0VSUk9SKCJKb2IgJSIgUFJJdTY0ICIgcmVzb2x2ZWQgaW4gc2VydmVyLCBidXQgd2Fz
IG5vdCBmb3VuZCIsIGpvYklkZW50aWZpZXIpOworICAgICAgICBMT0dfRVJST1IoIkpvYiAlcyBy
ZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC05MSwyMiArOTEsMjIgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJhdGlv
bkpvYlJlc29sdmVkSW5TZXJ2ZXIodWludDY0X3Qgam9iSWRlbnRpZmllciwKICAgICB9KTsKIH0K
IAotdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNl
cnZlcih1aW50NjRfdCBqb2JJZGVudGlmaWVyLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQor
dm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZl
cihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVy
LCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQogewotICAgIGF1dG8gam9iID0gbV9zY2hlZHVs
ZWRKb2JzLnRha2Uoam9iSWRlbnRpZmllcik7CisgICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpv
YnMudGFrZShqb2JEYXRhSWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKICAgICBpZiAoIWpvYikg
ewotICAgICAgICBMT0dfRVJST1IoIkpvYiAlIiBQUkl1NjQgIiByZXNvbHZlZCBpbiBzZXJ2ZXIs
IGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iSWRlbnRpZmllcik7CisgICAgICAgIExPR19FUlJPUigi
Sm9iICVzIHJlc29sdmVkIGluIHNlcnZlciwgYnV0IHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBqb2ItPnJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KHVucmVn
aXN0cmF0aW9uUmVzdWx0KTsKIH0KIAotdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2Ny
aXB0RmV0Y2hGb3JTZXJ2ZXIodWludDY0X3Qgam9iSWRlbnRpZmllcikKK3ZvaWQgU1dDbGllbnRD
b25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBqb2IgPSBt
X3NjaGVkdWxlZEpvYnMuZ2V0KGpvYklkZW50aWZpZXIpOworICAgIGF1dG8gam9iID0gbV9zY2hl
ZHVsZWRKb2JzLmdldChqb2JEYXRhSWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKICAgICBpZiAo
IWpvYikgewotICAgICAgICBMT0dfRVJST1IoIkpvYiAlIiBQUkl1NjQgIiBpbnN0cnVjdGVkIHRv
IHN0YXJ0IGZldGNoIGZyb20gc2VydmVyLCBidXQgam9iIHdhcyBub3QgZm91bmQiLCBqb2JJZGVu
dGlmaWVyKTsKKyAgICAgICAgTE9HX0VSUk9SKCJKb2IgJXMgaW5zdHJ1Y3RlZCB0byBzdGFydCBm
ZXRjaCBmcm9tIHNlcnZlciwgYnV0IGpvYiB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlkZW50aWZp
ZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBT
aG91bGQgbWVzc2FnZSBiYWNrIHRvIHRoZSBzZXJ2ZXIgaGVyZSB0byBzaWduYWwgZmFpbHVyZSB0
byBmZXRjaCwKICAgICAgICAgLy8gYnV0IHdlIGN1cnJlbnRseSBuZWVkIHRoZSByZWdpc3RyYXRp
b24ga2V5IHRvIGRvIHNvLCBhbmQgZG9uJ3QgaGF2ZSBpdCBoZXJlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9u
LmgKaW5kZXggNGEyMzI5ZWQ5ZTY0ODY3MGY4ZjE1NDBmZTJhZTNlNzQwZjE5YWJhNy4uM2I4MTFj
ZDUzYzE2NDI2MTViYzQxY2VhZWUyMDk5MWViOGExNGU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5o
CkBAIC03OCwxMCArNzgsMTAgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQ
T1JUIFNXQ2xpZW50Q29ubmVjdGlvbigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBqb2JS
ZWplY3RlZEluU2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IEV4Y2VwdGlvbkRh
dGEmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5T
ZXJ2ZXIodWludDY0X3Qgam9iSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEmJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHVucmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcih1aW50NjRfdCBqb2JJZGVudGlmaWVy
LCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0
YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIodWludDY0X3Qgam9iSWRlbnRpZmllcik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBqb2JSZWplY3RlZEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiwg
U2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVucmVn
aXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXImLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBkZXN0aW5hdGlvblNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIFNlcnZp
Y2VXb3JrZXJEYXRhJiYgc291cmNlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgdXBkYXRlV29ya2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJTdGF0ZSk7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNo
UmVzdWx0JikgPSAwOwogICAgIHZvaWQgZm9yRWFjaENvbnRhaW5lcihjb25zdCBXVEY6OkZ1bmN0
aW9uPHZvaWQoU2VydmljZVdvcmtlckNvbnRhaW5lciYpPiYgYXBwbHkpOwogCi0gICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPFNlcnZpY2VXb3JrZXJKb2I+PiBtX3NjaGVkdWxlZEpvYnM7Cisg
ICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgUmVmUHRyPFNlcnZpY2VXb3Jr
ZXJKb2I+PiBtX3NjaGVkdWxlZEpvYnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CmluZGV4IDE1YjllMDM4ODc5MDA0ZTM0NWM0YjRlNmNmZDVjNmQ0MjlhMDhiNGIuLmVjM2E2MDg5
ODNiOWNjMjQwMWJjMzY4M2ZiMjYwYjQ1ZDJjZTQxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNDQsNyArMTQ0LDcg
QEAgdm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIAog
dm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSkKIHsKLSAgICBMT0coU2VydmljZVdvcmtlciwgIlNj
aGVkdWxpbmcgU2VydmljZVdvcmtlciBqb2IgJXMtJSIgUFJJdTY0ICIgaW4gc2VydmVyIiwgam9i
RGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCBqb2JEYXRhLmlkZW50aWZpZXIoKSk7CisgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTY2hlZHVs
aW5nIFNlcnZpY2VXb3JrZXIgam9iICVzIGluIHNlcnZlciIsIGpvYkRhdGEuaWRlbnRpZmllcigp
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBBU1NFUlQoaWRlbnRpZmllcigp
ID09IGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CiAKICAgICBtX3NlcnZlci5zY2hl
ZHVsZUpvYihqb2JEYXRhKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNXU2VydmVyOjpzY2hl
ZHVsZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSkKIAogdm9pZCBTV1Nl
cnZlcjo6cmVqZWN0Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBjb25z
dCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb25EYXRhKQogewotICAgIExPRyhTZXJ2aWNlV29ya2Vy
LCAiUmVqZWN0ZWQgU2VydmljZVdvcmtlciBqb2IgJXMtJSIgUFJJdTY0ICIgaW4gc2VydmVyIiwg
am9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCBqb2JEYXRhLmlkZW50aWZpZXIoKSk7CisgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJSZWpl
Y3RlZCBTZXJ2aWNlV29ya2VyIGpvYiAlcyBpbiBzZXJ2ZXIiLCBqb2JEYXRhLmlkZW50aWZpZXIo
KS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgYXV0byogY29ubmVjdGlvbiA9
IG1fY29ubmVjdGlvbnMuZ2V0KGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CiAgICAg
aWYgKCFjb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9p
ZCBTV1NlcnZlcjo6cmVqZWN0Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRh
LCBjb25zdCBFeGNlcHRpb25EYXQKIAogdm9pZCBTV1NlcnZlcjo6cmVzb2x2ZVJlZ2lzdHJhdGlv
bkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGEmIHJlZ2lzdHJhdGlvbkRhdGEsIFNob3VsZE5vdGlmeVdoZW5S
ZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCiB7Ci0gICAgTE9HKFNlcnZpY2VXb3Jr
ZXIsICJSZXNvbHZlZCBTZXJ2aWNlV29ya2VyIGpvYiAlcy0lIiBQUkl1NjQgIiBpbiBzZXJ2ZXIg
d2l0aCByZWdpc3RyYXRpb24gJXMiLCBqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIGpvYkRhdGEuaWRlbnRpZmllcigpLCByZWdpc3Ry
YXRpb25EYXRhLmlkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IExPRyhTZXJ2aWNlV29ya2VyLCAiUmVzb2x2ZWQgU2VydmljZVdvcmtlciBqb2IgJXMgaW4gc2Vy
dmVyIHdpdGggcmVnaXN0cmF0aW9uICVzIiwgam9iRGF0YS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0
cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlZ2lzdHJhdGlvbkRhdGEuaWRlbnRpZmllci5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgYXV0byogY29ubmVjdGlvbiA9IG1fY29ubmVj
dGlvbnMuZ2V0KGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFjb25u
ZWN0aW9uKQogICAgICAgICByZXR1cm47CkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBTV1NlcnZl
cjo6cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBq
b2JEYXRhLCBjb24KIAogdm9pZCBTV1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSkKIHsKLSAgICBMT0coU2VydmljZVdvcmtlciwgIlNl
cnZlciBpc3N1aW5nIHN0YXJ0U2NyaXB0RmV0Y2ggZm9yIGN1cnJlbnQgam9iICVzLSUiIFBSSXU2
NCAiIGluIGNsaWVudCIsIGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKS5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgam9iRGF0YS5pZGVudGlmaWVyKCkpOworICAgIExPRyhTZXJ2
aWNlV29ya2VyLCAiU2VydmVyIGlzc3Vpbmcgc3RhcnRTY3JpcHRGZXRjaCBmb3IgY3VycmVudCBq
b2IgJXMgaW4gY2xpZW50Iiwgam9iRGF0YS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChq
b2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpOwogICAgIGlmICghY29ubmVjdGlvbikKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjQ3LDkgKzI0Nyw5IEBAIHZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2Ny
aXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCiAKIHZvaWQgU1dT
ZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
U2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCiB7Ci0gICAgTE9HKFNlcnZpY2VXb3Jr
ZXIsICJTZXJ2ZXIgaGFuZGxpbmcgc2NyaXB0RmV0Y2hGaW5pc2hlZCBmb3IgY3VycmVudCBqb2Ig
JXMtJSIgUFJJdTY0ICIgaW4gY2xpZW50IiwgcmVzdWx0LmNvbm5lY3Rpb25JZGVudGlmaWVyLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZXN1bHQuam9iSWRlbnRpZmllcik7CisgICAg
TE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2ZXIgaGFuZGxpbmcgc2NyaXB0RmV0Y2hGaW5pc2hlZCBm
b3IgY3VycmVudCBqb2IgJXMgaW4gY2xpZW50IiwgcmVzdWx0LmpvYkRhdGFJZGVudGlmaWVyLmxv
Z2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25z
LmNvbnRhaW5zKHJlc3VsdC5jb25uZWN0aW9uSWRlbnRpZmllcikpOworICAgIEFTU0VSVChtX2Nv
bm5lY3Rpb25zLmNvbnRhaW5zKHJlc3VsdC5qb2JEYXRhSWRlbnRpZmllci5jb25uZWN0aW9uSWRl
bnRpZmllcikpOwogCiAgICAgYXV0byBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZXN1bHQu
cmVnaXN0cmF0aW9uS2V5KTsKICAgICBpZiAoIWpvYlF1ZXVlKQpAQCAtMjU4LDIyICsyNTgsMjIg
QEAgdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyRmUKICAgICBqb2JRdWV1ZS0+c2NyaXB0RmV0Y2hGaW5p
c2hlZChjb25uZWN0aW9uLCByZXN1bHQpOwogfQogCi12b2lkIFNXU2VydmVyOjpzY3JpcHRDb250
ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZlcldvcmtlciYgd29ya2VyLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCit2b2lkIFNXU2VydmVyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZl
cldvcmtlciYgd29ya2VyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKGF1dG8q
IGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHdvcmtlci5yZWdpc3RyYXRpb25LZXkoKSkpCi0g
ICAgICAgIGpvYlF1ZXVlLT5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCh3b3JrZXIuaWRlbnRp
ZmllcigpLCBtZXNzYWdlKTsKKyAgICAgICAgam9iUXVldWUtPnNjcmlwdENvbnRleHRGYWlsZWRU
b1N0YXJ0KGpvYkRhdGFJZGVudGlmaWVyLCB3b3JrZXIuaWRlbnRpZmllcigpLCBtZXNzYWdlKTsK
IH0KIAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU1dTZXJ2ZXJXb3JrZXIm
IHdvcmtlcikKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyV29y
a2VyJiB3b3JrZXIpCiB7CiAgICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0
KHdvcmtlci5yZWdpc3RyYXRpb25LZXkoKSkpCi0gICAgICAgIGpvYlF1ZXVlLT5zY3JpcHRDb250
ZXh0U3RhcnRlZCh3b3JrZXIuaWRlbnRpZmllcigpKTsKKyAgICAgICAgam9iUXVldWUtPnNjcmlw
dENvbnRleHRTdGFydGVkKGpvYkRhdGFJZGVudGlmaWVyLCB3b3JrZXIuaWRlbnRpZmllcigpKTsK
IH0KIAotdm9pZCBTV1NlcnZlcjo6ZGlkRmluaXNoSW5zdGFsbChTV1NlcnZlcldvcmtlciYgd29y
a2VyLCBib29sIHdhc1N1Y2Nlc3NmdWwpCit2b2lkIFNXU2VydmVyOjpkaWRGaW5pc2hJbnN0YWxs
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIs
IFNXU2VydmVyV29ya2VyJiB3b3JrZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKIHsKICAgICBpZiAo
YXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQod29ya2VyLnJlZ2lzdHJhdGlvbktleSgp
KSkKLSAgICAgICAgam9iUXVldWUtPmRpZEZpbmlzaEluc3RhbGwod29ya2VyLmlkZW50aWZpZXIo
KSwgd2FzU3VjY2Vzc2Z1bCk7CisgICAgICAgIGpvYlF1ZXVlLT5kaWRGaW5pc2hJbnN0YWxsKGpv
YkRhdGFJZGVudGlmaWVyLCB3b3JrZXIuaWRlbnRpZmllcigpLCB3YXNTdWNjZXNzZnVsKTsKIH0K
IAogdm9pZCBTV1NlcnZlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbihTV1NlcnZlcldvcmtlciYgd29y
a2VyKQpAQCAtMzUwLDExICszNTAsMTEgQEAgdm9pZCBTV1NlcnZlcjo6c2VydmljZVdvcmtlclN0
b3BwZWRDb250cm9sbGluZ0NsaWVudChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXIKICAgICBy
ZWdpc3RyYXRpb24tPnJlbW92ZUNsaWVudFVzaW5nUmVnaXN0cmF0aW9uKHsgY29ubmVjdGlvbi5p
ZGVudGlmaWVyKCksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIH0pOwogfQogCi12
b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUpCit2b2lkIFNXU2VydmVyOjp1cGRhdGVX
b3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYg
am9iRGF0YUlkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJl
Z2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3Jr
ZXJUeXBlIHR5cGUpCiB7CiAgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGdlbmVy
YXRlU2VydmljZVdvcmtlcklkZW50aWZpZXIoKTsKIAotICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBkYXRhID0geyByZWdpc3RyYXRpb25LZXksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBz
Y3JpcHQsIHVybCwgdHlwZSB9OworICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBkYXRhID0g
eyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRp
Zmllciwgc2NyaXB0LCB1cmwsIHR5cGUgfTsKIAogICAgIC8vIFJpZ2h0IG5vdyB3ZSBvbmx5IGV2
ZXIga2VlcCB1cCB0byBvbmUgY29ubmVjdGlvbiB0byBvbmUgU1cgY29udGV4dCBwcm9jZXNzLgog
ICAgIC8vIEFuZCBpdCBzaG91bGQgYWx3YXlzIGV4aXN0IGlmIHdlJ3JlIGNhbGxpbmcgdXBkYXRl
V29ya2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmgKaW5kZXggODFiZTAxMmM5YjlhZjgyZDI3ZGM1YmJiODFlOGYxYmNjNWJhZTA1Mi4uMGJi
MGM1NmM4NjRiNDk4OWQxMTE3MTMwODJhODlkMDFhYWI2OWEzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtODgsMTAgKzg4LDEw
IEBAIHB1YmxpYzoKIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBj
bGllbnQgV2ViUHJvY2VzcwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVqZWN0Sm9iSW5DbGllbnQo
dWludDY0X3Qgam9iSWRlbnRpZmllciwgY29uc3QgRXhjZXB0aW9uRGF0YSYpID0gMDsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25Kb2JJbkNsaWVudCh1aW50NjRfdCBq
b2JJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYsIFNob3Vs
ZE5vdGlmeVdoZW5SZXNvbHZlZCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVVu
cmVnaXN0cmF0aW9uSm9iSW5DbGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllciwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgcmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFNjcmlwdEZldGNoSW5DbGllbnQodWludDY0X3Qg
am9iSWRlbnRpZmllcikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVqZWN0Sm9iSW5DbGll
bnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgRXhjZXB0aW9u
RGF0YSYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25Kb2JJ
bkNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQo
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYsIGJvb2wgcmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzdGFydFNjcmlwdEZldGNoSW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyJikgPSAwOwogCiAgICAgICAgIFNXU2VydmVyJiBtX3NlcnZlcjsK
ICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CkBAIC0xMTgsNyArMTE4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcG9zdFRhc2soQ3Jvc3NUaHJlYWRUYXNrJiYpOwogICAgIHZvaWQgcG9z
dFRhc2tSZXBseShDcm9zc1RocmVhZFRhc2smJik7CiAKLSAgICB2b2lkIHVwZGF0ZVdvcmtlcihD
b25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlKTsKKyAgICB2b2lkIHVwZGF0ZVdv
cmtlcihDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwg
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlKTsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTV1Nl
cnZlcldvcmtlciYpOwogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChTV1NlcnZlcldvcmtlciYp
OwogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKQEAgLTEyNyw5
ICsxMjcsOSBAQCBwdWJsaWM6CiAgICAgQ29ubmVjdGlvbiogZ2V0Q29ubmVjdGlvbihTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fY29ubmVjdGlvbnMu
Z2V0KGlkZW50aWZpZXIpOyB9CiAgICAgU1dPcmlnaW5TdG9yZSYgb3JpZ2luU3RvcmUoKSB7IHJl
dHVybiBtX29yaWdpblN0b3JlOyB9CiAKLSAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0
YXJ0KFNXU2VydmVyV29ya2VyJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2b2lkIHNj
cmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVyV29ya2VyJik7Ci0gICAgdm9pZCBkaWRGaW5pc2hJ
bnN0YWxsKFNXU2VydmVyV29ya2VyJiwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKKyAgICB2b2lkIHNj
cmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
ZmllciYsIFNXU2VydmVyV29ya2VyJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lk
IHNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ciYsIFNXU2VydmVyV29ya2VyJik7CisgICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyV29ya2VyJiwgYm9vbCB3YXNT
dWNjZXNzZnVsKTsKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJXb3JrZXIm
KTsKICAgICB2b2lkIHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKFNXU2VydmVyV29ya2VyJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCmluZGV4IDgyNDJhMGYwYzJhOWFmNzI4M2Y3MjVhYTliMDcxZGE5
ZjVjYjc5NTIuLjcyMWE5ZDRhMGZmYWFlMDJiNzkxYjFlZDViNjkyNGFhNjU5YTc2NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmNwcApAQCAtNTAsMTQgKzUwLDE0IEBAIFNXU2VydmVySm9iUXVldWU6On5T
V1NlcnZlckpvYlF1ZXVlKCkKIHsKIH0KIAotYm9vbCBTV1NlcnZlckpvYlF1ZXVlOjppc0N1cnJl
bnRseVByb2Nlc3NpbmdKb2IodWludDY0X3Qgam9iSWRlbnRpZmllcikgY29uc3QKK2Jvb2wgU1dT
ZXJ2ZXJKb2JRdWV1ZTo6aXNDdXJyZW50bHlQcm9jZXNzaW5nSm9iKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuICFtX2pvYlF1ZXVlLmlzRW1wdHkoKSAmJiBmaXJzdEpvYigpLmlkZW50aWZpZXIoKSA9PSBq
b2JJZGVudGlmaWVyOworICAgIHJldHVybiAhbV9qb2JRdWV1ZS5pc0VtcHR5KCkgJiYgZmlyc3RK
b2IoKS5pZGVudGlmaWVyKCkgPT0gam9iRGF0YUlkZW50aWZpZXI7CiB9CiAKIHZvaWQgU1dTZXJ2
ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCiB7Ci0gICAg
aWYgKCFpc0N1cnJlbnRseVByb2Nlc3NpbmdKb2IocmVzdWx0LmpvYklkZW50aWZpZXIpKQorICAg
IGlmICghaXNDdXJyZW50bHlQcm9jZXNzaW5nSm9iKHJlc3VsdC5qb2JEYXRhSWRlbnRpZmllcikp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIGpvYiA9IGZpcnN0Sm9iKCk7CkBAIC04Nywx
MiArODcsMTUgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKFNX
U2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb24KICAgICAvLyAtIEludm9rZSBGaW5p
c2ggSm9iIHdpdGggam9iIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KIAogICAgIC8vIEZJWE1FOiBT
dXBwb3J0IHRoZSBwcm9wZXIgd29ya2VyIHR5cGUgKGNsYXNzaWMgdnMgbW9kdWxlKQotICAgIG1f
c2VydmVyLnVwZGF0ZVdvcmtlcihjb25uZWN0aW9uLCBtX3JlZ2lzdHJhdGlvbktleSwgam9iLnNj
cmlwdFVSTCwgcmVzdWx0LnNjcmlwdCwgV29ya2VyVHlwZTo6Q2xhc3NpYyk7CisgICAgbV9zZXJ2
ZXIudXBkYXRlV29ya2VyKGNvbm5lY3Rpb24sIGpvYi5pZGVudGlmaWVyKCksIG1fcmVnaXN0cmF0
aW9uS2V5LCBqb2Iuc2NyaXB0VVJMLCByZXN1bHQuc2NyaXB0LCBXb3JrZXJUeXBlOjpDbGFzc2lj
KTsKIH0KIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3VwZGF0ZS1h
bGdvcml0aG0KLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3Rh
cnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQg
U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKKyAgICBpZiAoIWlzQ3VycmVu
dGx5UHJvY2Vzc2luZ0pvYihqb2JEYXRhSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKwog
ICAgIC8vIElmIGFuIHVuY2F1Z2h0IHJ1bnRpbWUgc2NyaXB0IGVycm9yIG9jY3VycyBkdXJpbmcg
dGhlIGFib3ZlIHN0ZXAsIHRoZW46CiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIu
Z2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKICAgICBBU1NFUlQocmVnaXN0cmF0
aW9uKTsKQEAgLTEwOCw4ICsxMTEsMTEgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRD
b250ZXh0RmFpbGVkVG9TdGFydChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QKICAgICBm
aW5pc2hDdXJyZW50Sm9iKCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29u
dGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3ZvaWQgU1dT
ZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKIHsKKyAgICBpZiAoIWlzQ3VycmVudGx5UHJvY2Vzc2luZ0pvYihqb2JE
YXRhSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8qIHJlZ2lzdHJhdGlv
biA9IG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CiAgICAgQVNT
RVJUKHJlZ2lzdHJhdGlvbik7CiAKQEAgLTE0OCw4ICsxNTQsMTEgQEAgdm9pZCBTV1NlcnZlckpv
YlF1ZXVlOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSgpCiB9CiAKIC8vIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNpbnN0YWxsCi12b2lkIFNXU2VydmVySm9iUXVl
dWU6OmRpZEZpbmlzaEluc3RhbGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
Ym9vbCB3YXNTdWNjZXNzZnVsKQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpkaWRGaW5pc2hJbnN0
YWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZp
ZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1
bCkKIHsKKyAgICBpZiAoIWlzQ3VycmVudGx5UHJvY2Vzc2luZ0pvYihqb2JEYXRhSWRlbnRpZmll
cikpCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVy
LmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CiAgICAgQVNTRVJUKHJlZ2lzdHJh
dGlvbik7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbi0+aW5zdGFsbGluZ1dvcmtlcigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJK
b2JRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmgKaW5kZXggODAwZDdjODAxNTNjMDQxOTc3NjY5ZTNmODdhNDkxNDNlNTg4NWYy
My4uZmJjZDk4YTllM2FiODlkOTQ4NDRmODYwZmViYmE4YzA0MmYzYzg0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmgKQEAgLTQ4LDkgKzQ4LDkgQEAgcHVibGljOgogICAgIHZvaWQgcnVuTmV4dEpvYigpOwog
CiAgICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29u
c3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0RmFp
bGVkVG9TdGFydChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKLSAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKLSAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJv
b2wgd2FzU3VjY2Vzc2Z1bCk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFy
dGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3Vj
Y2Vzc2Z1bCk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihTV1NlcnZlclJl
Z2lzdHJhdGlvbiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJlc29s
dmVSZWdpc3RyYXRpb25Qcm9taXNlKCk7CiAKQEAgLTcxLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCB0cnlBY3RpdmF0ZShTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9u
Jik7CiAgICAgc3RhdGljIHZvaWQgYWN0aXZhdGUoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJh
dGlvbiYpOwogCi0gICAgYm9vbCBpc0N1cnJlbnRseVByb2Nlc3NpbmdKb2IodWludDY0X3Qgam9i
SWRlbnRpZmllcikgY29uc3Q7CisgICAgYm9vbCBpc0N1cnJlbnRseVByb2Nlc3NpbmdKb2IoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJikgY29uc3Q7CiAKICAgICBEZXF1ZTxT
ZXJ2aWNlV29ya2VySm9iRGF0YT4gbV9qb2JRdWV1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDQyZDIzMDlmOTczYWVlOGU2MzFlMWEzM2I3Y2RiMTk4
N2E0YzA5MDMuLmMzZWJlZTlhYWE0ZTM3MzRkZGY5NjhmZjZmMjYxM2ZiYjM0ODNjYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTcyLDIyICs3MiwyMiBA
QCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0QwogICAgIHJldHVybiBhbGxDb25uZWN0aW9ucygpLmJl
Z2luKCktPnZhbHVlOwogfQogCi12b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2Ny
aXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewogICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3Jr
ZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAgd29ya2Vy
LT5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChtZXNzYWdlKTsKKyAgICAgICAgd29ya2VyLT5z
Y3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChqb2JEYXRhSWRlbnRpZmllciwgbWVzc2FnZSk7CiB9
CiAKLXZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0U3RhcnRl
ZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3ZvaWQg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKIHsKICAgICBpZiAoYXV0
byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCi0gICAgICAgIHdvcmtlci0+c2NyaXB0Q29udGV4dFN0
YXJ0ZWQoKTsKKyAgICAgICAgd29ya2VyLT5zY3JpcHRDb250ZXh0U3RhcnRlZChqb2JEYXRhSWRl
bnRpZmllcik7CiB9CiAgICAgCi12b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlk
RmluaXNoSW5zdGFsbChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmRpZEZpbmlzaEluc3RhbGwoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
JiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKIHsKICAgICBpZiAoYXV0byogd29ya2Vy
ID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29y
a2VySWRlbnRpZmllcikpCi0gICAgICAgIHdvcmtlci0+ZGlkRmluaXNoSW5zdGFsbCh3YXNTdWNj
ZXNzZnVsKTsKKyAgICAgICAgd29ya2VyLT5kaWRGaW5pc2hJbnN0YWxsKGpvYkRhdGFJZGVudGlm
aWVyLCB3YXNTdWNjZXNzZnVsKTsKIH0KIAogdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OmRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRl
eCA3MDc5ZmI2MjEwN2EyMzI1NjcwM2ZjNjgyMDg5ZGNlNTYxOTNjZGZhLi43YzE4NDRkMTNiNDRi
YmM0NzJmZmI4NmY0ZGQ4MWM0ODUyY2IwZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTV1NlcnZlcjsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CitzdHJ1Y3QgU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyOwogCiBjbGFzcyBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uPiB7CiBwdWJsaWM6CkBAIC00OSw5ICs1MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAK
ICAgICAvLyBNZXNzYWdlcyBiYWNrIGZyb20gdGhlIFNXIGhvc3QgcHJvY2VzcwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzY3JpcHRDb250ZXh0U3RhcnRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBib29sIHdhc1N1Y2Nlc3NmdWwpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyaXB0Q29u
dGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXImLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllciYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIHdhc1N1Y2Nlc3NmdWwp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZXJ2aWNlV29ya2Vy
SGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5n
RXZlbnRzKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCBjMDMwNjE3ZDZlMWU2MTcx
OWFjYWMwOWI5ZTMwNThiY2ZlOGNiMGI2Li5kYzk0MDE2MzdhZmYwYTI3N2YzYWZlOWZjYTYyOGUy
YzMzMDhjMTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtNjUsMTkgKzY1LDE5IEBAIHZvaWQgU1dT
ZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZSgpCiAgICAgbV9zZXJ2ZXIudGVybWluYXRlV29ya2VyKCp0
aGlzKTsKIH0KIAotdm9pZCBTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3Rh
cnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29u
dGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBq
b2JEYXRhSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1fc2VydmVy
LnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KCp0aGlzLCBtZXNzYWdlKTsKKyAgICBtX3NlcnZl
ci5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChqb2JEYXRhSWRlbnRpZmllciwgKnRoaXMsIG1l
c3NhZ2UpOwogfQogCi12b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0U3RhcnRlZCgp
Cit2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyKQogewotICAgIG1fc2Vy
dmVyLnNjcmlwdENvbnRleHRTdGFydGVkKCp0aGlzKTsKKyAgICBtX3NlcnZlci5zY3JpcHRDb250
ZXh0U3RhcnRlZChqb2JEYXRhSWRlbnRpZmllciwgKnRoaXMpOwogfQogCi12b2lkIFNXU2VydmVy
V29ya2VyOjpkaWRGaW5pc2hJbnN0YWxsKGJvb2wgd2FzU3VjY2Vzc2Z1bCkKK3ZvaWQgU1dTZXJ2
ZXJXb3JrZXI6OmRpZEZpbmlzaEluc3RhbGwoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKQogewotICAgIG1f
c2VydmVyLmRpZEZpbmlzaEluc3RhbGwoKnRoaXMsIHdhc1N1Y2Nlc3NmdWwpOworICAgIG1fc2Vy
dmVyLmRpZEZpbmlzaEluc3RhbGwoam9iRGF0YUlkZW50aWZpZXIsICp0aGlzLCB3YXNTdWNjZXNz
ZnVsKTsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmgKaW5kZXggMzlmNzZjZGJiY2FhNTkzYjMyODZiNmNkMDRhMGQ4YzJmOTc4M2FiZS4u
M2E2ZTNmOGE3MTU5N2ZmZjlmNDZkOGY5NDcxYzdlYWQwNDYxMmM2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApA
QCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNXU2VydmVyOwog
ZW51bSBjbGFzcyBXb3JrZXJUeXBlOworc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
ZmllcjsKIAogY2xhc3MgU1dTZXJ2ZXJXb3JrZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U1dTZXJ2ZXJXb3JrZXI+IHsKIHB1YmxpYzoKQEAgLTY2LDkgKzY3LDkgQEAgcHVibGljOgog
ICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGVuZGluZ0V2
ZW50czsgfQogICAgIHZvaWQgc2V0SGFzUGVuZGluZ0V2ZW50cyhib29sIHZhbHVlKSB7IG1faGFz
UGVuZGluZ0V2ZW50cyA9IHZhbHVlOyB9CiAKLSAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRU
b1N0YXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0U3Rh
cnRlZCgpOwotICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChib29sIHdhc1N1Y2Nlc3NmdWwpOwor
ICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHNjcmlw
dENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYpOwor
ICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlv
bigpOwogICAgIHZvaWQgY29udGV4dFRlcm1pbmF0ZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCAwMDcyMjM2NjkyMzFlMmE5Yjk3ZDA1MDI0NTQzMjNh
ZDlhMzg4ODk1Li45MDE5Mzg4MDFiMjc3YTRmYzY1NDgxYzYyYTNkZWJiOGNkOWUwNzc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtNzIsMjQgKzcyLDI0IEBA
IHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpkaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2Vzcygp
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246
OnJlamVjdEpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IEV4Y2VwdGlv
bkRhdGEmIGV4Y2VwdGlvbkRhdGEpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVqZWN0
Sm9iSW5DbGllbnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRh
SWRlbnRpZmllciwgY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKIHsKLSAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OkpvYlJlamVjdGVkSW5TZXJ2ZXIo
am9iSWRlbnRpZmllciwgZXhjZXB0aW9uRGF0YSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6Sm9iUmVqZWN0ZWRJblNlcnZlcihqb2JEYXRhSWRlbnRpZmllciwg
ZXhjZXB0aW9uRGF0YSkpOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVzb2x2
ZVJlZ2lzdHJhdGlvbkpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiByZWdpc3RyYXRpb25EYXRhLCBTaG91bGROb3Rp
ZnlXaGVuUmVzb2x2ZWQgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKQordm9pZCBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OnJlc29sdmVSZWdpc3RyYXRpb25Kb2JJbkNsaWVudChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YSYgcmVnaXN0cmF0aW9uRGF0YSwgU2hvdWxkTm90aWZ5V2hl
blJlc29sdmVkIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OlJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIo
am9iSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uRGF0YSwgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVk
KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpSZWdpc3RyYXRp
b25Kb2JSZXNvbHZlZEluU2VydmVyKGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb25EYXRh
LCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50
aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktl
eSwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OjpyZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2JJbkNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQp
CiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpVbnJlZ2lzdHJh
dGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoam9iSWRlbnRpZmllciwgdW5yZWdpc3RyYXRpb25SZXN1
bHQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OlVucmVnaXN0
cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihqb2JEYXRhSWRlbnRpZmllciwgdW5yZWdpc3RyYXRp
b25SZXN1bHQpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0U2NyaXB0
RmV0Y2hJbkNsaWVudCh1aW50NjRfdCBqb2JJZGVudGlmaWVyKQordm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudChjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6U3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihqb2JJZGVu
dGlmaWVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpTdGFy
dFNjcmlwdEZldGNoRm9yU2VydmVyKGpvYkRhdGFJZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZUluQ2xpZW50KFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25TdGF0ZSBzdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
RGF0YT4mIHNlcnZpY2VXb3JrZXJEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9y
YWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5oCmluZGV4IDk4ZTkyY2U2OWQxOGYwZGFhNjYzNmRiYzkwNmQ4NGViMzliMWUyMzYuLmYwNDIz
MTc5MWQ0OGYzZDFkZGFkM2M0OWExNWQ3YTNjNDU0NjA4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTY2LDEwICs2NiwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgLy8gSW1wbGVtZW50IFNXU2VydmVyOjpDb25uZWN0aW9uIChNZXNzYWdlcyB0byB0aGUg
Y2xpZW50IFdlYlByb2Nlc3MpCi0gICAgdm9pZCByZWplY3RKb2JJbkNsaWVudCh1aW50NjRfdCBq
b2JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhJikgZmluYWw7Ci0gICAg
dm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uSm9iSW5DbGllbnQodWludDY0X3Qgam9iSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmLCBXZWJDb3Jl
OjpTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpIGZpbmFsOwotICAgIHZvaWQgcmVzb2x2ZVVucmVn
aXN0cmF0aW9uSm9iSW5DbGllbnQodWludDY0X3Qgam9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1
bHQpIGZpbmFsOwotICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KHVpbnQ2NF90IGpv
YklkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgcmVqZWN0Sm9iSW5DbGllbnQoY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSYpIGZpbmFsOworICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYkluQ2xp
ZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiwgV2ViQ29yZTo6U2hvdWxk
Tm90aWZ5V2hlblJlc29sdmVkKSBmaW5hbDsKKyAgICB2b2lkIHJlc29sdmVVbnJlZ2lzdHJhdGlv
bkpvYkluQ2xpZW50KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ciYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBib29sIHVu
cmVnaXN0cmF0aW9uUmVzdWx0KSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNs
aWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImKSBmaW5h
bDsKICAgICB2b2lkIHVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlSW5DbGllbnQoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25TdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyRGF0YT4mKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVdvcmtlclN0YXRlSW5DbGllbnQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJTdGF0
ZSkgZmluYWw7CiAgICAgdm9pZCBmaXJlVXBkYXRlRm91bmRFdmVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRl
eCA2N2Q1YmM2ZGRhODczYWZmNzIzZGVmZTcwN2M4ZTcxZWJkNzhhZDg1Li4zN2YxMTJmYWE3ODUy
ZDYxOTM0MmI2OWY0ZTcyN2YyZDdlMmNmNGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI1LDkg
KzI1LDkgQEAKIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiB7CiAg
ICAgIyBXaGVuIHBvc3NpYmxlLCB0aGVzZSBtZXNzYWdlcyBjYW4gYmUgaW1wbGVtZW50ZWQgZGly
ZWN0bHkgYnkgV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAKLSAgICBTY3Jp
cHRDb250ZXh0RmFpbGVkVG9TdGFydChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBTdHJpbmcgbWVzc2FnZSk7Ci0gICAgU2NyaXB0Q29udGV4dFN0YXJ0ZWQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcik7Ci0gICAgRGlkRmluaXNo
SW5zdGFsbChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29s
IHdhc1N1Y2Nlc3NmdWwpOworICAgIFNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgam9iRGF0YUlkZW50aWZpZXIs
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBTdHJpbmcgbWVzc2FnZSk7CisgICAgU2NyaXB0Q29udGV4dFN0YXJ0ZWQoc3RydWN0IFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwor
ICAgIERpZEZpbmlzaEluc3RhbGwoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CiAgICAg
RGlkRmluaXNoQWN0aXZhdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyKTsKICAgICBTZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMp
OwogICAgIFdvcmtlclRlcm1pbmF0ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggOTY1
YTJmMGNlNWI0OGYyOTc3MTY0OWYxZWM5Mjk0NmU3YWFlMDk0ZC4uNDBhNzJmN2ZjNjliM2Y1OTJj
OGJjMTViMDVhZTA2ZTM5NmVmMDY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdl
cy5pbgpAQCAtMjQsMTAgKzI0LDEwIEBACiAKIG1lc3NhZ2VzIC0+IFdlYlNXQ2xpZW50Q29ubmVj
dGlvbiB7CiAgICAgIyBXaGVuIHBvc3NpYmxlLCB0aGVzZSBtZXNzYWdlcyBjYW4gYmUgaW1wbGVt
ZW50ZWQgZGlyZWN0bHkgYnkgV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb24KLSAgICBKb2JS
ZWplY3RlZEluU2VydmVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhIGV4Y2VwdGlvbikKLSAgICBSZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVy
KHVpbnQ2NF90IGlkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YSByZWdpc3RyYXRpb24sIGVudW0gV2ViQ29yZTo6U2hvdWxkTm90aWZ5V2hlblJl
c29sdmVkIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKLSAgICBVbnJlZ2lzdHJhdGlvbkpvYlJl
c29sdmVkSW5TZXJ2ZXIodWludDY0X3QgaWRlbnRpZmllciwgYm9vbCB1bnJlZ2lzdHJhdGlvblJl
c3VsdCkKLSAgICBTdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZp
ZXIpCisgICAgSm9iUmVqZWN0ZWRJblNlcnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyIGpvYkRhdGFJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6RXhj
ZXB0aW9uRGF0YSBleGNlcHRpb24pCisgICAgUmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZl
cihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyIGpvYkRhdGFJ
ZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEg
cmVnaXN0cmF0aW9uLCBlbnVtIFdlYkNvcmU6OlNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWQpCisgICAgVW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2Vy
dmVyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIgam9iRGF0
YUlkZW50aWZpZXIsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCisgICAgU3RhcnRTY3JpcHRG
ZXRjaEZvclNlcnZlcihzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyIGpvYkRhdGFJZGVudGlmaWVyKQogICAgIFVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIGVudW0g
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRlLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhPiBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikK
ICAgICBVcGRhdGVXb3JrZXJTdGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZW51bSBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyU3RhdGUg
c3RhdGUpCiAgICAgRmlyZVVwZGF0ZUZvdW5kRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcAppbmRleCA5NjEyY2I0YjMzYzM0NjRjOTlmNThjNTJiZTM3YjBhZWFkNWZjNDc0
Li43YzZjZjU2MjMyMjZmOGNkM2ZjYTM1Y2JmYjNjOTM2ZTMwMDI3MDdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0xMjQsMTIgKzEyNCwxMiBAQCB2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcihjb25zdCBTZXJ2
aWNlV29ya2VyQ29udAogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiQ29udGV4dCBwcm9jZXNzIFBJ
RDogJWkgY3JlYXRlZCB3b3JrZXIgdGhyZWFkXG4iLCBnZXRwaWQoKSk7CiB9CiAKLXZvaWQgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3Nh
Z2UoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OnNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2UoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uTWVz
c2FnZSkKIHsKICAgICBpZiAoZXhjZXB0aW9uTWVzc2FnZS5pc0VtcHR5KCkpCi0gICAgICAgIG1f
Y29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6U2NyaXB0Q29udGV4dFN0YXJ0ZWQoc2VydmljZVdvcmtlcklkZW50
aWZpZXIpLCAwKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTY3JpcHRDb250ZXh0U3Rh
cnRlZChqb2JEYXRhSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIpLCAwKTsKICAg
ICBlbHNlCi0gICAgICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2NyaXB0Q29udGV4dEZhaWxlZFRv
U3RhcnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGV4Y2VwdGlvbk1lc3NhZ2UpLCAwKTsKKyAg
ICAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpTY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChqb2JE
YXRhSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGV4Y2VwdGlvbk1lc3NhZ2Up
LCAwKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRj
aChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlcklk
ZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgZm9y
bURhdGEpCkBAIC0xNzEsOSArMTcxLDkgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmkKICAgICBt
X2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlUHJvY2Vz
czo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVy
LCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBtZXNzYWdlLT5kYXRhKCkgfSwgc291cmNlSWRlbnRpZmll
ciwgc291cmNlT3JpZ2luKSwgMCk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmRpZEZpbmlzaEluc3RhbGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKK3ZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OmRpZEZpbmlzaEluc3RhbGwoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgd2FzU3VjY2Vzc2Z1bCkKIHsKLSAgICBtX2Nv
bm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OkRpZEZpbmlzaEluc3RhbGwoc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IHdhc1N1Y2Nlc3NmdWwpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OkRpZEZpbmlzaElu
c3RhbGwoam9iRGF0YUlkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3YXNTdWNj
ZXNzZnVsKSwgMCk7CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRp
ZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCA0MTQwMGNmYzNm
N2Y2NTM3NWZjZDBlZmNkMDgzYWNlOGRhOWM2M2UyLi5kMTJmZjQ0NzQ4ZWE3YjRmODhkOTk1ZTll
ZjllYmI2YTU4NWRmNmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTU3
LDEzICs1NywxMyBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdl
cjo6Q29ubmVjdGlvbi4KICAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2Fn
ZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pIGZpbmFsOwotICAgIHZvaWQgZGlkRmluaXNoSW5zdGFs
bChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCB3YXNTdWNjZXNzZnVsKSBm
aW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3QgV2ViQ29yZTo6U2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGJvb2wgd2FzU3VjY2Vzc2Z1bCkgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9u
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNldFNl
cnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sKSBmaW5hbDsKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgLy8gSVBDIG1lc3NhZ2VzLgotICAg
IHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSBmaW5hbDsKKyAg
ICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2UoY29uc3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBp
bnN0YWxsU2VydmljZVdvcmtlcihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEmKTsKICAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyPiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdl
YkNvcmU6OkZldGNoT3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYpOwogICAgIHZv
aWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIg
c291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGEmJiBzb3Vy
Y2VEYXRhKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBkOWNjODlhYzRlMDA4Mzc5ZDAzNjFhZWFiMTM3M2QwOWE5ZGMzMjdi
Li4yODIxNjY2NTIyYjVkM2Y5MDNjMzY0NzQ5MjJjNzAwMjBmZDYxN2I5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTctMTEtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiByZWdpc3RyYXRpb24gaW4gV2ViQ29yZTo6U1dTZXJ2
ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk4NDYK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVbnNraXAgdGVz
dCB0aGF0IHVzZSB0byBmbGFraWx5IGNyYXNoLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnM6CisKIDIwMTctMTEtMTggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCB0ZXN0IGZvciBhIG11bHRpY29sdW1uIHJlbmRlciB0cmVl
IHVwZGF0ZSBpc3N1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCA3Nzc0MTBiOTc0ODlmZjRjYmRhMmRhNjliMGU2NTY4MzhmMDZhOWUxLi4zNThhOTgzYWQw
MmVhZWRlZGZiNDdmOWI0ZmQ2MGY1YzgwNWE3Y2NlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTc1Miw0ICsxNzUyLDMgQEAgd2Via2l0Lm9yZy9iLzE3
OTIwOCBbIEhpZ2hTaWVycmErIF0ganMvaW50bC1kYXRldGltZWZvcm1hdC5odG1sIFsgRmFpbHVy
ZSBdCiBbIEhpZ2hTaWVycmErIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9tZWRp
YS1zb3VyY2UvbWVkaWFzb3VyY2UtcmVkdW5kYW50LXNlZWsuaHRtbCBbIEZhaWx1cmUgXQogWyBI
aWdoU2llcnJhKyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNl
L21lZGlhc291cmNlLXJlbW92ZS5odG1sIFsgRmFpbHVyZSBdCiAKLXdlYmtpdC5vcmcvYi8xNzk4
NDYgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXIvZ2V0cmVnaXN0cmF0aW9uLmh0dHBzLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>