<?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>180167</bug_id>
          
          <creation_ts>2017-11-29 14:11:06 -0800</creation_ts>
          <short_desc>Implement https://w3c.github.io/ServiceWorker/#clients-get</short_desc>
          <delta_ts>2017-12-01 16:01:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1376026</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-29 14:11:06 -0800</bug_when>
    <thetext>https://w3c.github.io/ServiceWorker/#clients-get</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376127</commentid>
    <comment_count>1</comment_count>
      <attachid>327930</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-29 17:06:22 -0800</bug_when>
    <thetext>Created attachment 327930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376174</commentid>
    <comment_count>2</comment_count>
      <attachid>327941</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-29 18:09:09 -0800</bug_when>
    <thetext>Created attachment 327941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376381</commentid>
    <comment_count>3</comment_count>
      <attachid>327988</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-30 10:19:52 -0800</bug_when>
    <thetext>Created attachment 327988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376382</commentid>
    <comment_count>4</comment_count>
      <attachid>327989</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-30 10:20:09 -0800</bug_when>
    <thetext>Created attachment 327989
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376384</commentid>
    <comment_count>5</comment_count>
      <attachid>327990</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-30 10:22:34 -0800</bug_when>
    <thetext>Created attachment 327990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376444</commentid>
    <comment_count>6</comment_count>
      <attachid>328004</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-30 12:15:05 -0800</bug_when>
    <thetext>Created attachment 328004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376536</commentid>
    <comment_count>7</comment_count>
      <attachid>328004</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-30 14:52:12 -0800</bug_when>
    <thetext>Comment on attachment 328004
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerClientIdentifier.h:61
&gt; +        if (!identifier)

We should probably check that the identifier is not 0 either.

&gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:32
&gt; +#include &quot;JSServiceWorkerWindowClient.h&quot;

I always find it fishy when we include bindings files in WebCore implementation objects.

&gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:73
&gt; +static inline ExceptionOr&lt;std::optional&lt;ServiceWorkerClientData&gt;&gt; isolatedExceptionOrClientData(const ExceptionOr&lt;std::optional&lt;ServiceWorkerClientData&gt;&gt;&amp; value)

I think the logic belongs in ExceptionOr.h. Something like:
#include &lt;wtf/CrossThreadCopier.h&gt;
template&lt;typename T&gt; struct CrossThreadCopierBase&lt;false, false, ExceptionOr&lt;T&gt;&gt; {
    typedef ExceptionOr&lt;T&gt; Type;
    static Type copy(const Type&amp; source)
    {
        if (value.hasException())
            return value.exception().isolatedCopy();
        return CrossThreadCopier&lt;T&gt;::copy(value.releaseReturnValue());
    }
};

Then you can use crossThreadCopy() with your type.

&gt; Source/WebCore/workers/service/ServiceWorkerClients.h:43
&gt; +class ServiceWorkerClients : public ThreadSafeRefCounted&lt;ServiceWorkerClients&gt;, public ActiveDOMObject {

Why is this needed? Do we really ref/deref ServiceWorkerClients from the main thread? It does not look to me that you are (or that you should).

&gt; Source/WebCore/workers/service/server/SWServer.cpp:308
&gt; +std::optional&lt;ServiceWorkerClientData&gt; SWServer::clientFromId(const ClientOrigin&amp; origin, ServiceWorkerClientIdentifier clientIdentifier)

ById?

&gt; Source/WebCore/workers/service/server/SWServer.cpp:310
&gt; +    auto clients = m_clients.get(origin);

Why are you copying the vector here? Shouldn&apos;t it be auto&amp;?

&gt; Source/WebCore/workers/service/server/SWServerWorker.h:84
&gt; +    const ClientOrigin&amp; origin() const;

I think it weird that a method called SWServerWorker::origin() returns a ClientOrigin type. This is nothing to do with clients per say.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376540</commentid>
    <comment_count>8</comment_count>
      <attachid>328004</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-30 15:00:17 -0800</bug_when>
    <thetext>Comment on attachment 328004
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerClientIdentifier.h:54
&gt; +inline std::optional&lt;ServiceWorkerClientIdentifier&gt; ServiceWorkerClientIdentifier::fromString(const String&amp; string)

Should probably take a StringView in parameter.

&gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:53
&gt; +void ServiceWorkerClients::getCompleted(ServiceWorkerClientIdentifier identifier, ExceptionOr&lt;std::optional&lt;ServiceWorkerClientData&gt;&gt;&amp;&amp; clientData, DeferredPromise&amp; promiseReference)

I find &quot;getCompleted&quot; naming a bit confusing. something like didFinishGetRequest() would be much clearer to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376640</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-30 16:46:52 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 328004 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=328004&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClientIdentifier.h:61
&gt; &gt; +        if (!identifier)
&gt; 
&gt; We should probably check that the identifier is not 0 either.

I am not sure, since the default identifier is 0-0.
I can add an additional check in ServiceWorkerClients to check for that and return early but I am not sure this is worth it.

&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:32
&gt; &gt; +#include &quot;JSServiceWorkerWindowClient.h&quot;
&gt; 
&gt; I always find it fishy when we include bindings files in WebCore
&gt; implementation objects.

We need toJS() for resolving promises.

&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:73
&gt; &gt; +static inline ExceptionOr&lt;std::optional&lt;ServiceWorkerClientData&gt;&gt; isolatedExceptionOrClientData(const ExceptionOr&lt;std::optional&lt;ServiceWorkerClientData&gt;&gt;&amp; value)
&gt; 
&gt; I think the logic belongs in ExceptionOr.h. Something like:
&gt; #include &lt;wtf/CrossThreadCopier.h&gt;
&gt; template&lt;typename T&gt; struct CrossThreadCopierBase&lt;false, false,
&gt; ExceptionOr&lt;T&gt;&gt; {
&gt;     typedef ExceptionOr&lt;T&gt; Type;
&gt;     static Type copy(const Type&amp; source)
&gt;     {
&gt;         if (value.hasException())
&gt;             return value.exception().isolatedCopy();
&gt;         return CrossThreadCopier&lt;T&gt;::copy(value.releaseReturnValue());
&gt;     }
&gt; };
&gt; 
&gt; Then you can use crossThreadCopy() with your type.

Will give it a try and will see whether optional is making things more difficult or not.

&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClients.h:43
&gt; &gt; +class ServiceWorkerClients : public ThreadSafeRefCounted&lt;ServiceWorkerClients&gt;, public ActiveDOMObject {
&gt; 
&gt; Why is this needed? Do we really ref/deref ServiceWorkerClients from the
&gt; main thread? It does not look to me that you are (or that you should).

I will rework the patch and remove this change by eliminating any possibility for it to be derefed on the main thread.

&gt; &gt; Source/WebCore/workers/service/server/SWServer.cpp:308
&gt; &gt; +std::optional&lt;ServiceWorkerClientData&gt; SWServer::clientFromId(const ClientOrigin&amp; origin, ServiceWorkerClientIdentifier clientIdentifier)
&gt; 
&gt; ById?

I prefer FromId since a query is being done.

&gt; &gt; Source/WebCore/workers/service/server/SWServer.cpp:310
&gt; &gt; +    auto clients = m_clients.get(origin);
&gt; 
&gt; Why are you copying the vector here? Shouldn&apos;t it be auto&amp;?

Will change it.

&gt; &gt; Source/WebCore/workers/service/server/SWServerWorker.h:84
&gt; &gt; +    const ClientOrigin&amp; origin() const;
&gt; 
&gt; I think it weird that a method called SWServerWorker::origin() returns a
&gt; ClientOrigin type. This is nothing to do with clients per say.

SWServerWorker origin is the origin of the client it was spawned from.
Maybe ClientOrigin is not a very good name though since it has more to do with ITP than service worker clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376644</commentid>
    <comment_count>10</comment_count>
      <attachid>328004</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-30 16:50:24 -0800</bug_when>
    <thetext>Comment on attachment 328004
Patch

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

&gt;&gt;&gt; Source/WebCore/workers/service/ServiceWorkerClientIdentifier.h:61
&gt;&gt;&gt; +        if (!identifier)
&gt;&gt; 
&gt;&gt; We should probably check that the identifier is not 0 either.
&gt; 
&gt; I am not sure, since the default identifier is 0-0.
&gt; I can add an additional check in ServiceWorkerClients to check for that and return early but I am not sure this is worth it.

If JavaScript gives you 0-0 and you let it though. Then our code will handle to handle invalid identifiers (0 is invalid). Things like looking up the identifier in a HashMap would likely crash (because 0 is the magic empty value is such HashMap).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376651</commentid>
    <comment_count>11</comment_count>
      <attachid>328004</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-30 16:53:44 -0800</bug_when>
    <thetext>Comment on attachment 328004
Patch

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

&gt;&gt;&gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:73
&gt;&gt;&gt; +static inline ExceptionOr&lt;std::optional&lt;ServiceWorkerClientData&gt;&gt; isolatedExceptionOrClientData(const ExceptionOr&lt;std::optional&lt;ServiceWorkerClientData&gt;&gt;&amp; value)
&gt;&gt; 
&gt;&gt; I think the logic belongs in ExceptionOr.h. Something like:
&gt;&gt; #include &lt;wtf/CrossThreadCopier.h&gt;
&gt;&gt; template&lt;typename T&gt; struct CrossThreadCopierBase&lt;false, false, ExceptionOr&lt;T&gt;&gt; {
&gt;&gt;     typedef ExceptionOr&lt;T&gt; Type;
&gt;&gt;     static Type copy(const Type&amp; source)
&gt;&gt;     {
&gt;&gt;         if (value.hasException())
&gt;&gt;             return value.exception().isolatedCopy();
&gt;&gt;         return CrossThreadCopier&lt;T&gt;::copy(value.releaseReturnValue());
&gt;&gt;     }
&gt;&gt; };
&gt;&gt; 
&gt;&gt; Then you can use crossThreadCopy() with your type.
&gt; 
&gt; Will give it a try and will see whether optional is making things more difficult or not.

I added support for using crossThreadCopy() with std::optional earlier today :)

&gt;&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:308
&gt;&gt;&gt; +std::optional&lt;ServiceWorkerClientData&gt; SWServer::clientFromId(const ClientOrigin&amp; origin, ServiceWorkerClientIdentifier clientIdentifier)
&gt;&gt; 
&gt;&gt; ById?
&gt; 
&gt; I prefer FromId since a query is being done.

This kind of operation is usually a getById though. See for e.g. getElementById(), not getElementFromId().

&gt;&gt;&gt; Source/WebCore/workers/service/server/SWServerWorker.h:84
&gt;&gt;&gt; +    const ClientOrigin&amp; origin() const;
&gt;&gt; 
&gt;&gt; I think it weird that a method called SWServerWorker::origin() returns a ClientOrigin type. This is nothing to do with clients per say.
&gt; 
&gt; SWServerWorker origin is the origin of the client it was spawned from.
&gt; Maybe ClientOrigin is not a very good name though since it has more to do with ITP than service worker clients.

Then call it clientOrigin() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376841</commentid>
    <comment_count>12</comment_count>
      <attachid>328102</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-01 09:29:48 -0800</bug_when>
    <thetext>Created attachment 328102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376852</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-01 09:44:11 -0800</bug_when>
    <thetext>GTK is red.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376868</commentid>
    <comment_count>14</comment_count>
      <attachid>328112</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-01 10:09:48 -0800</bug_when>
    <thetext>Created attachment 328112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376870</commentid>
    <comment_count>15</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-01 10:10:37 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #14)
&gt; Created attachment 328112 [details]
&gt; Patch

build failure log is not clear at all. Let&apos;s retry once, it will probably fail but who knows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376906</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-01 10:41:07 -0800</bug_when>
    <thetext>&gt; build failure log is not clear at all. Let&apos;s retry once, it will probably
&gt; fail but who knows.

Was a flaky build issue apparently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376957</commentid>
    <comment_count>17</comment_count>
      <attachid>328112</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-01 11:53:35 -0800</bug_when>
    <thetext>Comment on attachment 328112
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerClientIdentifier.h:45
&gt; +    bool isValid() const { return serverConnectionIdentifier.toUInt64() &amp;&amp; contextIdentifier.toUInt64(); }

I do not think this is a good. We just never construct invalid identifiers.

&gt; Source/WebCore/workers/service/ServiceWorkerClientIdentifier.h:63
&gt; +        if (!identifier)

I think we should also return std::nullopt if *identifier is 0.

&gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:110
&gt; +                if (state-&gt;m_clients)

How can clients ever be null here. If postTaskToServiceWorker managed to post the task, then the ServiceWorker exists, which means we have a ServiceWorkerGlobalScope, which means clients is alive.

&gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:136
&gt; +        request.state-&gt;m_clients = nullptr;

It looks fragile that we have to do this.

&gt; Source/WebCore/workers/service/ServiceWorkerClients.h:74
&gt; +    class RequestState : public ThreadSafeRefCounted&lt;RequestState&gt; {

Does this really need to be ThreadSafeRefCounted&lt;RequestState&gt;? Why cannot we pass an identifier to the lambda and then look up the state from m_pendingRequests when we&apos;re back on the service worker thread?

&gt; Source/WebCore/workers/service/ServiceWorkerClients.h:76
&gt; +        RequestState(ServiceWorkerClients*, DeferredPromise*, ServiceWorkerIdentifier);

We should not have a public constructor for a RefCounted class. The constructor should be private and there should be a public create() factory function.

&gt; Source/WebCore/workers/service/ServiceWorkerClients.h:78
&gt; +        ServiceWorkerClients* m_clients;

Having public m_* members is not a nice pattern or common practice.

&gt; Source/WebCore/workers/service/ServiceWorkerClients.h:80
&gt; +        ServiceWorkerIdentifier m_identifier;

This name is too generic and confusing because we are also dealing with client identifiers. We should probably call it serviceWorkerIdentifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376989</commentid>
    <comment_count>18</comment_count>
      <attachid>328138</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-01 12:50:43 -0800</bug_when>
    <thetext>Created attachment 328138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376991</commentid>
    <comment_count>19</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-01 12:54:31 -0800</bug_when>
    <thetext>&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=328112&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClientIdentifier.h:45
&gt; &gt; +    bool isValid() const { return serverConnectionIdentifier.toUInt64() &amp;&amp; contextIdentifier.toUInt64(); }
&gt; 
&gt; I do not think this is a good. We just never construct invalid identifiers.

Default constructed identifier is 0-0.
I would guess IPC identifiers could end up be invalid as well.
 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClientIdentifier.h:63
&gt; &gt; +        if (!identifier)
&gt; 
&gt; I think we should also return std::nullopt if *identifier is 0.

OK

&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:110
&gt; &gt; +                if (state-&gt;m_clients)
&gt; 
&gt; How can clients ever be null here. If postTaskToServiceWorker managed to
&gt; post the task, then the ServiceWorker exists, which means we have a
&gt; ServiceWorkerGlobalScope, which means clients is alive.

I was thinking that the scope could stop owning the clients, which is not the case.
There is no reason that clients should be an ActiveDOMObject either.
Patch updated accordingly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1376998</commentid>
    <comment_count>20</comment_count>
      <attachid>328138</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-01 13:02:38 -0800</bug_when>
    <thetext>Comment on attachment 328138
Patch

r=me if the bots happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377078</commentid>
    <comment_count>21</comment_count>
      <attachid>328161</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-12-01 14:45:00 -0800</bug_when>
    <thetext>Created attachment 328161
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377121</commentid>
    <comment_count>22</comment_count>
      <attachid>328161</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-01 16:00:47 -0800</bug_when>
    <thetext>Comment on attachment 328161
Rebasing

Clearing flags on attachment: 328161

Committed r225427: &lt;https://trac.webkit.org/changeset/225427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377122</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-01 16:00:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377123</commentid>
    <comment_count>24</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-01 16:01:46 -0800</bug_when>
    <thetext>&lt;rdar://problem/35808294&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327930</attachid>
            <date>2017-11-29 17:06:22 -0800</date>
            <delta_ts>2017-11-29 18:09:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180167-20171129170621.patch</filename>
            <type>text/plain</type>
            <size>36444</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU4Mzk3ZmRmOTFjZDg5NDFkZDY3NTJm
MGJlNWVjMjU0N2Q5NzRkZGQuLmFjZTNjMDc3MzEyYzQ2MzgxNzE3MDU1NWVjODBjNWM2ZTFlNWU0
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTEtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RG
OjpTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdCBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisKIDIwMTctMTEtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIE1vdmUgSlNPTlZhbHVlcyB0byBXVEYgYW5kIGNvbnZl
cnQgdXNlcyBvZiBJbnNwZWN0b3JWYWx1ZXMuaCB0byBKU09OVmFsdWVzLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1YTNhMmU1MTgyZDY0NmIxZDI3MWE1YTk1OTBiZjg5NWUwODZkOTkwLi5lMDdhODZjNzI3NTg3
NTc5MjM1M2RhNWY5NTI4MzZlOWM1ZjBhMDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDMgQEAK
IDIwMTctMTEtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCisgICAgICAg
IEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jY2xpZW50cy1n
ZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6
IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnQtZ2V0Lmh0dHBz
Lmh0bWwKKworICAgICAgICBJbXBsZW1lbnQgY2xpZW50cyBnZXQgYnkgaGF2aW5nIHNlcnZpY2Ug
d29ya2VyIGNsaWVudHMgZG8gdGhlIGZvbGxvd2luZzoKKyAgICAgICAgLSBHbyB0byBtYWluIHRo
cmVhZCB0byBxdWVyeSB0aGUgU1dDbGllbnRDb25uZWN0aW9uIGZvciBnZXR0aW5nIHRoZSBjbGll
bnQuCisgICAgICAgIC0gU1dDbGllbnRDb25uZWN0aW9uIHJlcXVlc3RzIGl0IHRocm91Z2ggSVBD
IHRvIFN0b3JhZ2VQcm9jZXNzIFNXU2VydmVyLgorICAgICAgICAtIFNXU2VydmVyIGxvb2tzIGF0
IGl0cyBjbGllbnQgbWFwIGFuZCByZXR1cm5zIGNsaWVudCBkYXRhIGJhc2VkIG9uIHRoZSBnaXZl
biBpZGVudGlmaWVyLgorICAgICAgICAtIFNXQ2xpZW50Q29ubmVjdGlvbiBzZW5kcyBpdCBiYWNr
IHRvIHRoZSByaWdodCBjbGllbnRzIGZvciByZXNvbHZpbmcgdGhlIHByb21pc2UuCisKKyAgICAg
ICAgSWRlbnRpZmllciBpcyBwYXJzZWQgYXQgc2VydmljZSB3b3JrZXIgcHJvY2VzcyBsZXZlbC4K
KworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6OmZy
b21TdHJpbmcpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50czo6U2VydmljZVdv
cmtlckNsaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHM6Omdl
dCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y3JlYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcjo6Z2V0Q2xpZW50RnJvbUlkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnZXRDbGllbnRGcm9tSWQpOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6b3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2VydmVyV29ya2VyOjpnZXRDbGllbnRGcm9tSWQpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKworMjAxNy0xMS0yOSAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CisKICAgICAgICAgU2VydmljZVdvcmtlckNsaWVudCBvYmpl
Y3RzIHNob3VsZCBiZSByZXVzZWQgaWYgdGhlcmUgaXMgYWxyZWFkeSBvbmUgZXhpc3Rpbmcgd2l0
aCB0aGUgc2FtZSBpZGVudGlmaWVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODAxNDMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MDM4OTUxNDlmMTMxYzNjZTMwNmQ5
ZmFjMjliNDUzMTc2Y2RiZmIxLi5lNzY5MDY3NDRkMjM4MWY3OTUxZDYxNGJjMWJkYTEwYjQ4MzU5
MTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTExLTI5ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93M2MuZ2l0
aHViLmlvL1NlcnZpY2VXb3JrZXIvI2NsaWVudHMtZ2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxNjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSVBDIHBsdW1iZXJ5IGZvciBnZXRDbGllbnRG
cm9tSWQgYmV0d2VlbiBTZXJ2aWNlV29ya2VyIHByb2Nlc3MgYW5kIFN0b3JhZ2UgcHJvY2Vzcy4K
KworICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpnZXRDbGllbnRGcm9tSWRDb21wbGV0ZWQpOgorICAgICAgICAqIFN0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6
CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmdldENsaWVudEZyb21JZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpnZXRDbGllbnRGcm9tSWRDb21w
bGV0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKwogMjAxNy0xMS0yOSAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0Nvb3JkR3JhcGhpY3NdIFJlbmFt
ZSBDb29yZGluYXRlZEJ1ZmZlciB0byBOaWNvc2lhOjpCdWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKaW5kZXggNDhmNzhkZDRmODQxNzMxYzY2NDk5NzQwODg2ODZmYmFhZDI1OGU0OS4uMmE0
NDczZDQwZmRmYTkxZDhhOTQwZTY1NjhkN2Y2YzMwYjhiYTYxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRl
IDx1bmljb2RlL3V0eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xNDYsNiArMTQ3
LDcgQEAgcHVibGljOgogICAgIGludCB0b0ludCgpIGNvbnN0OwogICAgIGludCB0b0ludChib29s
JiBpc1ZhbGlkKSBjb25zdDsKICAgICBpbnQgdG9JbnRTdHJpY3QoYm9vbCYgaXNWYWxpZCkgY29u
c3Q7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdG9VSW50NjRTdHJpY3QoKSBjb25zdDsK
ICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wmIGlzVmFsaWQpIGNvbnN0OwogCiAgICAgc3RhdGljIHZv
aWQgaW52YWxpZGF0ZShjb25zdCBTdHJpbmdJbXBsJik7CkBAIC01MjMsNiArNTI1LDE1IEBAIGlu
bGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QoYm9vbCYgaXNWYWxpZCkgY29uc3QKICAg
ICByZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwg
JmlzVmFsaWQpOwogfQogCitpbmxpbmUgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gU3RyaW5nVmll
dzo6dG9VSW50NjRTdHJpY3QoKSBjb25zdAoreworICAgIGJvb2wgaXNWYWxpZDsKKyAgICB1aW50
NjRfdCByZXN1bHQgPSBpczhCaXQoKSA/IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0
ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpIDogY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNo
YXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOworICAgIGlmICghaXNWYWxpZCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBpbmxp
bmUgU3RyaW5nIFN0cmluZ1ZpZXc6OnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSBjb25zdAogewog
ICAgIGlmIChpczhCaXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGM4YTRkZDZmYTQ5
MGE2ZTg0ZDc5NTc1M2E2MjllMzBkNTllZTU4YWMuLmQyYjk5YmYyNWUzYzgxMDFkMzgzODU0OGUz
Y2QwYjk5ZGFkOTA5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtNDYsOCArNDYsOCBA
QCBXVEZfRVhQT1JUX1NUUklOR19BUEkgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChj
b25zdCBMQ2hhciosIHNpemVfdCwgYm9vbAogV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHVuc2lnbmVk
IGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0
KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTAp
OwogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwg
Ym9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLXVpbnQ2NF90IGNoYXJhY3RlcnNU
b1VJbnQ2NFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBp
bnQgYmFzZSA9IDEwKTsKLXVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBV
Q2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKK1dURl9F
WFBPUlRfU1RSSU5HX0FQSSB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29uc3Qg
TENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CitXVEZf
RVhQT1JUX1NUUklOR19BUEkgdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0
IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwogaW50
cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29s
KiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50
UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBi
YXNlID0gMTApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCmluZGV4IDYyODU1ZDU0YmNj
NzAxOTE3ZDFiOGZiMjRhMzk3NjNkZDNhYjU2YTguLjNmYjRhMDdhOWRlODI4YWRmYzRiYjlmY2E3
ZDFkNzFiZjIxNzIwMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCkBAIC00MCw2ICs0
MCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciB7CiAgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4g
U3RyaW5nOjpudW1iZXIoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIudG9VSW50NjQoKSkgKyAi
LSIgKyAgU3RyaW5nOjpudW1iZXIoY29udGV4dElkZW50aWZpZXIudG9VSW50NjQoKSk7IH0KKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gZnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4gZGVjb2Rl
KERlY29kZXImKTsKQEAgLTUwLDYgKzUxLDI1IEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGEsIGNvbnN0IFNlcnZpY2VXb3JrCiAg
ICAgcmV0dXJuIGEuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgPT0gYi5zZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciAmJiAgYS5jb250ZXh0SWRlbnRpZmllciA9PSBiLmNvbnRleHRJZGVudGlm
aWVyOwogfQogCitpbmxpbmUgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllcj4gU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6OmZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCit7CisgICAgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50
SWRlbnRpZmllcjsKKworICAgIHVuc2lnbmVkIGNvdW50ZXIgPSAwOworICAgIGZvciAoYXV0byBp
dGVtIDogU3RyaW5nVmlldyB7IHN0cmluZyB9LnNwbGl0KCctJykpIHsKKyAgICAgICAgYXV0byBp
ZGVudGlmaWVyID0gaXRlbS50b1VJbnQ2NFN0cmljdCgpOworICAgICAgICBpZiAoIWlkZW50aWZp
ZXIpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoIWNvdW50
ZXIrKykKKyAgICAgICAgICAgIGNsaWVudElkZW50aWZpZXIuc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
VHlwZT4oaWRlbnRpZmllci52YWx1ZSgpKTsKKyAgICAgICAgZWxzZSBpZiAoY291bnRlciA9PSAy
KQorICAgICAgICAgICAgY2xpZW50SWRlbnRpZmllci5jb250ZXh0SWRlbnRpZmllciA9IG1ha2VP
YmplY3RJZGVudGlmaWVyPERvY3VtZW50SWRlbnRpZmllclR5cGU+KGlkZW50aWZpZXIudmFsdWUo
KSk7CisgICAgfQorICAgIGlmIChjb3VudGVyICE9IDIpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgcmV0dXJuIFdURk1vdmUoY2xpZW50SWRlbnRpZmllcik7Cit9CisKIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCmluZGV4IGExNDU1
N2U2YzQ0MDg3M2QxNzdlN2M5NmFmYWVhMjU4Yzk4MzNhMGUuLjQwNGVjN2QxMjAzZmRjYTNkYzFm
MTMzOWU3MmYwMzgxZjIzNjY3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcApAQCAtMjksMTAgKzI5LDEyIEBA
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudHMuaCIKIAogI2luY2x1ZGUgIkpTRE9NUHJv
bWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50Lmgi
CisjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotU2VydmljZVdvcmtlckNsaWVudHM6OlNlcnZpY2VXb3JrZXJDbGllbnRzKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCitTZXJ2aWNlV29ya2VyQ2xpZW50czo6U2Vydmlj
ZVdvcmtlckNsaWVudHMoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBjb250ZXh0KQogICAgIDog
QWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogewogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwpAQCAt
NDgsMTAgKzUwLDcyIEBAIGJvb2wgU2VydmljZVdvcmtlckNsaWVudHM6OmNhblN1c3BlbmRGb3JE
b2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAogICAgIHJldHVybiAhaGFzUGVuZGluZ0FjdGl2aXR5
KCk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6OmdldENvbXBsZXRlZChTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPj4mJiBjbGllbnREYXRhLCBEZWZlcnJlZFByb21p
c2UmIHByb21pc2VSZWZlcmVuY2UpCit7CisgICAgYXV0byBwcm9taXNlID0gbV9wZW5kaW5nUHJv
bWlzZXMudGFrZShwcm9taXNlUmVmZXJlbmNlKTsKKyAgICBpZiAoIXByb21pc2UpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChjbGllbnREYXRhLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAg
IHByb21pc2UudmFsdWUoKS0+cmVqZWN0KGNsaWVudERhdGEucmVsZWFzZUV4Y2VwdGlvbigpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGRhdGEgPSBjbGllbnREYXRhLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpOworICAgIGlmICghZGF0YSkgeworICAgICAgICBwcm9taXNlLnZhbHVl
KCktPnJlc29sdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIGNvbnRl
eHQgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOworICAgIHByb21pc2UudmFsdWUoKS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8U2Vy
dmljZVdvcmtlckNsaWVudD4+KFNlcnZpY2VXb3JrZXJDbGllbnQ6OmdldE9yQ3JlYXRlKGNvbnRl
eHQsIGlkZW50aWZpZXIsIFdURk1vdmUoZGF0YS52YWx1ZSgpKSkpOworfQorCitzdGF0aWMgaW5s
aW5lIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+PiBp
c29sYXRlZEV4Y2VwdGlvbk9yQ2xpZW50RGF0YShjb25zdCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPj4mIHZhbHVlKQoreworICAgIGlmICh2YWx1ZS5o
YXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlLmV4Y2VwdGlvbigpLmlzb2xhdGVk
Q29weSgpOworCisgICAgYXV0byBjbGllbnREYXRhID0gdmFsdWUucmV0dXJuVmFsdWUoKTsKKyAg
ICBpZiAoY2xpZW50RGF0YSkKKyAgICAgICAgY2xpZW50RGF0YSA9IGNsaWVudERhdGEtPmlzb2xh
dGVkQ29weSgpOworCisgICAgcmV0dXJuIFdURk1vdmUoY2xpZW50RGF0YSk7Cit9CisKK3N0cnVj
dCBHZXRSZXF1ZXN0U3RhdGUgeworICAgIFNlcnZpY2VXb3JrZXJDbGllbnRzJiBjbGllbnRzOwor
ICAgIFJlZjxBY3RpdmVET01PYmplY3Q6OlBlbmRpbmdBY3Rpdml0eTxTZXJ2aWNlV29ya2VyQ2xp
ZW50cz4+IHByb3RlY3RpbmdDbGllbnRzOworICAgIERlZmVycmVkUHJvbWlzZSYgcHJvbWlzZTsK
KyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyOworfTsKKwogdm9p
ZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6Z2V0KGNvbnN0IFN0cmluZyYgaWQsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oaWQpOwotICAgIHByb21p
c2UtPnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJj
bGllbnRzLmdldCgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIikgfSk7CisgICAgYXV0byogY29udGV4
dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gU2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXI6OmZyb21TdHJpbmcoaWQpOworICAgIGlmICghaWRlbnRpZmllcikg
eworICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBHZXRSZXF1ZXN0U3RhdGUgc3RhdGUgeyAqdGhpcywgbWFrZVBlbmRpbmdBY3Rpdml0eSgq
dGhpcyksIHByb21pc2UsIGlkZW50aWZpZXIudmFsdWUoKSB9OworCisgICAgbV9wZW5kaW5nUHJv
bWlzZXMuYWRkKFdURk1vdmUocHJvbWlzZSkpOworCisgICAgYXV0byYgc2VydmljZVdvcmtlckds
b2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCk7
CisgICAgY2FsbE9uTWFpblRocmVhZChbc3RhdGUgPSBXVEZNb3ZlKHN0YXRlKSwgc2VydmljZVdv
cmtlcklkZW50aWZpZXIgPSBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkuaWRlbnRp
ZmllcigpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOworICAgICAgICBjb25uZWN0aW9uLT5n
ZXRDbGllbnRGcm9tSWQoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0YXRlLmlkZW50aWZpZXIs
IFtzdGF0ZSA9IFdURk1vdmUoc3RhdGUpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKGF1dG8m
JiBjbGllbnREYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBbc3RhdGUgPSBXVEZNb3ZlKHN0YXRlKSwgY2xpZW50RGF0YSA9IGlzb2xhdGVkRXhjZXB0aW9u
T3JDbGllbnREYXRhKGNsaWVudERhdGEpXSAoYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAg
ICAgIHN0YXRlLmNsaWVudHMuZ2V0Q29tcGxldGVkKHN0YXRlLmlkZW50aWZpZXIsIFdURk1vdmUo
Y2xpZW50RGF0YSksIHN0YXRlLnByb21pc2UpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworICAgIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjptYXRjaEFsbChjb25z
dCBDbGllbnRRdWVyeU9wdGlvbnMmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBA
IC03MCw2ICsxMzQsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y2xhaW0oUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24g
eyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJjbGllbnRzLmNsYWltKCkgaXMgbm90
IHlldCBzdXBwb3J0ZWQiKSB9KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6c3Rv
cCgpCit7CisgICAgbV9wZW5kaW5nUHJvbWlzZXMuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaApp
bmRleCA3NGJiYjdmMDRmMWExYzFiODQyYjBjODE4YmEzMWNmOGEyOTdhYTUxLi41YWI3YWE3NGI3
ODhlNDAwOGFhZmE0ZDFjNTI1NGJlOTJiMGNlZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaApAQCAtMjgsMTcgKzI4
LDIxIEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyQ2xpZW50VHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKK3N0cnVjdCBTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjsK
K2NsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKIAotY2xhc3MgU2VydmljZVdvcmtlckNs
aWVudHMgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyQ2xpZW50cz4sIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QgeworY2xhc3MgU2VydmljZVdvcmtlckNsaWVudHMgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckNsaWVudHM+LCBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRzPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFNl
cnZpY2VXb3JrZXJDbGllbnRzPiBjcmVhdGUoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBjb250
ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckNs
aWVudHMoY29udGV4dCkpOwogICAgIH0KQEAgLTU0LDExICs1OCwxNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbGFpbShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICBleHBs
aWNpdCBTZXJ2aWNlV29ya2VyQ2xpZW50cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAg
ZXhwbGljaXQgU2VydmljZVdvcmtlckNsaWVudHMoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJik7
CisKKyAgICB2b2lkIGdldENvbXBsZXRlZChTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciwg
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYsIERl
ZmVycmVkUHJvbWlzZSYpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNo
YXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhblN1c3Bl
bmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBm
aW5hbDsKKworICAgIEhhc2hTZXQ8UmVmPERlZmVycmVkUHJvbWlzZT4+IG1fcGVuZGluZ1Byb21p
c2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApp
bmRleCBlZGM3NGIxYzE1OTAxMGIxMGNlNTliZmY3NTA1YWE5OTBkZWFkZGYxLi4wYjgxMWY5M2Mx
NTY2OTg4MmNmZDY5NWVlMjlkYzRhNDBhOWNiNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApA
QCAtMTA2LDYgKzEwNiwxNSBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtl
cihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIH0pOwogfQogCit2b2lk
IFNXQ29udGV4dE1hbmFnZXI6OnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNr
KQoreworICAgIGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmll
cik7CisgICAgaWYgKCFzZXJ2aWNlV29ya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXJ2
aWNlV29ya2VyLT50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5k
ZXggNjBmZmY5NDJjZjFiYTYzMDViNzcxMGEzMDgyMzY5NDFhMjIwMzIwOC4uYzE3Zjc0YTBhYTU0
NjdmNGE0Yjg1YTk1YTZhMjhjM2U3MjhiMTgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCIK
KyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSw2ICs1Miw5IEBAIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdvcmtlcklkZW50
aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5k
aW5nRXZlbnRzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7
CisKKyAgICAgICAgdXNpbmcgR2V0Q2xpZW50RnJvbUlkQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4+JiYpPjsKKyAgICAgICAgdmlydHVhbCB2b2lkIGdldENsaWVudEZyb21JZChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIEdldENs
aWVudEZyb21JZENhbGxiYWNrJiYpID0gMDsKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKQEAgLTYz
LDYgKzY3LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZUFjdGl2YXRl
RXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJik7CisKIHByaXZhdGU6CiAgICAgU1dD
b250ZXh0TWFuYWdlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCAyODYyOTkxNTM1ODVkMWJiYTlk
ZDZkNmFhNDFlMmY2Y2MyY2QyNjZhLi5iY2Q2M2Q2NTg5MDdkOTkxNjRhZGQzMWEwNmY5M2NlZjQz
NWJjNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcApAQCAtMjk2LDYgKzI5NiwyNSBAQCB2b2lkIFNXU2VydmVyOjp3b3JrZXJD
b250ZXh0VGVybWluYXRlZChTV1NlcnZlcldvcmtlciYgd29ya2VyKQogICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQpOwogfQogCit2b2lkIFNXU2VydmVyOjpnZXRDbGllbnRGcm9tSWQo
U1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgdWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmll
ciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKK3sKKyAg
ICBhdXRvKiBjb25uZWN0aW9uID0gU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnbG9iYWxT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb24pOworCisg
ICAgYXV0byBjbGllbnRzID0gbV9jbGllbnRzLmdldCh3b3JrZXIub3JpZ2luKCkpOworICAgIGF1
dG8gcG9zaXRpb24gPSBjbGllbnRzLmZpbmRNYXRjaGluZyhbJl0gKGNvbnN0IGF1dG8mIGNsaWVu
dCkgeworICAgICAgICByZXR1cm4gY2xpZW50SWRlbnRpZmllciA9PSBjbGllbnQuaWRlbnRpZmll
cjsKKyAgICB9KTsKKworICAgIGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCkgeworICAgICAgICBj
b25uZWN0aW9uLT5nZXRDbGllbnRGcm9tSWRDb21wbGV0ZWQoY2xpZW50SWRSZXF1ZXN0SWRlbnRp
Zmllciwgc3RkOjpudWxsb3B0LCBmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAvLyBGSVhNRTogVmVyaWZ5IHRoYXQgY2xpZW50IFVSTCBpcyBzZWN1cmUuCisgICAgY29ubmVj
dGlvbi0+Z2V0Q2xpZW50RnJvbUlkQ29tcGxldGVkKGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIs
IGNsaWVudHNbcG9zaXRpb25dLmRhdGEsIGZhbHNlKTsKK30KKwogdm9pZCBTV1NlcnZlcjo6ZGlk
UmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQogewogICAgIEFT
U0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9u
LmlkZW50aWZpZXIoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5oCmluZGV4IDQ3OWJkM2NjMmEzODQxZmU1MmVlNGNkYmM2MmE4NWRlODdh
NTQ1NjQuLmI3OWVmYWZiMmVlODIxMGVjMjllNzFjN2M3YTQyMjljMDE0ZDI2YzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTEz
NSw2ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyV29ya2VyJiwgYm9vbCB3YXNT
dWNjZXNzZnVsKTsKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJXb3JrZXIm
KTsKICAgICB2b2lkIHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKFNXU2VydmVyV29ya2VyJik7Cisg
ICAgdm9pZCBnZXRDbGllbnRGcm9tSWQoU1dTZXJ2ZXJXb3JrZXImLCB1aW50NjRfdCBjbGllbnRJ
ZFJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcik7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggYzNl
YmVlOWFhYTRlMzczNGRkZjk2OGZmNmYyNjEzZmJiMzQ4M2NhZi4uOTIxOTBmOWM1ZDFmNGQwOWZh
YmU3NDM2YjE5MWVmYzY1NmUwMmEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcApAQCAtMTA4LDYgKzEwOCwxMiBAQCB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6d29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aQog
ICAgICAgICB3b3JrZXItPmNvbnRleHRUZXJtaW5hdGVkKCk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpnZXRDbGllbnRGcm9tSWQodWludDY0X3QgY2xpZW50SWRSZXF1
ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkKQoreworICAgIGlm
IChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlm
aWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5nZXRDbGllbnRG
cm9tSWQoY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgY2xpZW50SWQpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA3YzE4NDRkMTNiNDRiYmM0NzJm
ZmI4NmY0ZGQ4MWM0ODUyY2IwZTdmLi45NzdiN2IyN2ViZDM1NDc4NDQ3MmFmZDgyNzNmZGQ4Yjg4
NzE2ZTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTM0LDYg
KzM0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1dTZXJ2ZXI7CitzdHJ1Y3Qg
U2VydmljZVdvcmtlckNsaWVudERhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXI7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogc3RydWN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllcjsKIApAQCAtNDgsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50
aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldENsaWVudEZyb21JZENvbXBs
ZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpID0gMDsKIAogICAg
IC8vIE1lc3NhZ2VzIGJhY2sgZnJvbSB0aGUgU1cgaG9zdCBwcm9jZXNzCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXImLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKQEAgLTU2LDYgKzU5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0Q2xpZW50RnJvbUlkKHVpbnQ2NF90IGNsaWVudElk
UmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllcik7CiAKICAgICBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uKiBjb25uZWN0aW9uRm9ySWRlbnRpZmllcihTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25J
ZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCAzNjk2MDdjZjE3MjhhMjU3OWZmNjcy
ZWUwNDczZjE1NzNmOGJkY2M0Li4yMDU4NTJhN2JiNGJlMDQxMjMyN2I2YjkyZmIwN2RiZGI2YzYw
YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtNjUsNiArNjUsMTcgQEAgdm9pZCBTV1NlcnZlcldv
cmtlcjo6dGVybWluYXRlKCkKICAgICBtX3NlcnZlci50ZXJtaW5hdGVXb3JrZXIoKnRoaXMpOwog
fQogCitjb25zdCBDbGllbnRPcmlnaW4mIFNXU2VydmVyV29ya2VyOjpvcmlnaW4oKSBjb25zdAor
eworICAgIGlmICghbV9vcmlnaW4pIHsKKyAgICAgICAgQ2xpZW50T3JpZ2luIG9yaWdpbjsKKyAg
ICAgICAgb3JpZ2luLnRvcE9yaWdpbiA9IG1fcmVnaXN0cmF0aW9uS2V5LnRvcE9yaWdpbigpOwor
ICAgICAgICBvcmlnaW4uY2xpZW50T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX2RhdGEuc2NyaXB0VVJMKSk7Cisg
ICAgICAgIG1fb3JpZ2luID0gb3JpZ2luOworICAgIH0KKyAgICByZXR1cm4gbV9vcmlnaW4udmFs
dWUoKTsKK30KKwogdm9pZCBTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3Rh
cnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIG1fc2VydmVyLnNjcmlwdENvbnRleHRG
YWlsZWRUb1N0YXJ0KGpvYkRhdGFJZGVudGlmaWVyLCAqdGhpcywgbWVzc2FnZSk7CkBAIC05MCw2
ICsxMDEsMTEgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6Y29udGV4dFRlcm1pbmF0ZWQoKQogICAg
IG1fc2VydmVyLndvcmtlckNvbnRleHRUZXJtaW5hdGVkKCp0aGlzKTsKIH0KIAordm9pZCBTV1Nl
cnZlcldvcmtlcjo6Z2V0Q2xpZW50RnJvbUlkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkKQoreworICAgIG1f
c2VydmVyLmdldENsaWVudEZyb21JZCgqdGhpcywgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwg
Y2xpZW50SWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggNWMyNjBlMGQxZTQ0MzU4NzUwYjYz
NGViZWY3MTg2OTg2OGNhNTI4Yy4uMzk5Y2Q5ZTc2ZTVmMGZhMmQxYTEwY2ViMGEyODA5NDI0MmM2
NzBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMzYsMTAgKzM2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorc3RydWN0IENsaWVudE9yaWdpbjsKIGNsYXNzIFNXU2VydmVyOwogY2xhc3MgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb247Ci1lbnVtIGNsYXNzIFdvcmtlclR5cGU7CitzdHJ1Y3QgU2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyOworZW51bSBjbGFzcyBXb3JrZXJUeXBlOwogCiBjbGFzcyBTV1NlcnZlcldvcmtlciA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTV1NlcnZlcldvcmtlcj4gewogcHVibGljOgpA
QCAtNzMsMTAgKzc1LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgYm9vbCB3YXNTdWNjZXNzZnVsKTsK
ICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oKTsKICAgICB2b2lkIGNvbnRleHRUZXJtaW5h
dGVkKCk7CisgICAgdm9pZCBnZXRDbGllbnRGcm9tSWQodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0
SWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFNXU2VydmVyV29ya2VyKiBleGlzdGluZ1dvcmtlckZvcklkZW50aWZp
ZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgY29uc3QgU2VydmljZVdvcmtlckRh
dGEmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBjb25zdCBDbGllbnRPcmln
aW4mIG9yaWdpbigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFNXU2VydmVyV29ya2VyKFNXU2Vy
dmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwpAQCAtODcsNiArOTEsNyBAQCBwcml2YXRlOgogICAg
IFNlcnZpY2VXb3JrZXJEYXRhIG1fZGF0YTsKICAgICBTdHJpbmcgbV9zY3JpcHQ7CiAgICAgYm9v
bCBtX2hhc1BlbmRpbmdFdmVudHMgeyBmYWxzZSB9OworICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxDbGllbnRPcmlnaW4+IG1fb3JpZ2luOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApp
bmRleCAyNGU0YWRhZTFjMmQ5Mzc4YTgzZjI3MThkMDlhMzIzODg2OTIyNmYwLi41NjJlOTU2ZDNm
YzdkOGExY2FlZTVmOTExYzFkNTRiMzg0NjgzNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtNzYsNiArNzYsMTEgQEAgdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXIKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6VGVybWluYXRlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7
CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpnZXRDbGllbnRGcm9t
SWRDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiBkYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3Ip
Cit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Okdl
dENsaWVudEZyb21JZENvbXBsZXRlZCB7IHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhLCBoYXNTZWN1
cml0eUVycm9yIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAppbmRleCBiNWI4NzQ5MDZlMWZiY2Y0NWNjMjkzYzRjYWExNDdiYzNm
NDY3Mjk5Li42NDZiYjU0YWY4MDllMjZiNDg3ZTBlY2VhZjFhZTYyNjJmMjk1NGE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC01OSw2
ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHRlcm1p
bmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CisgICAg
dm9pZCBnZXRDbGllbnRGcm9tSWRDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+Jiwg
Ym9vbCBoYXNTZWN1cml0eUVycm9yKSBmaW5hbDsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+
IG1faXBjQ29ubmVjdGlvbjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDM3ZjExMmZhYTc4
NTJkNjE5MzQyYjY5ZjRlNzI3ZjJkN2UyY2Y0ZTAuLjQ2NGYxNDJlN2RiODEzZjY2MzRmYWE1Nzcy
YWNkZjVhZjgyMzJkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzEsNiArMzEsNyBAQCBtZXNz
YWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gewogICAgIERpZEZpbmlzaEFj
dGl2YXRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcik7CiAg
ICAgU2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKICAgICBXb3Jr
ZXJUZXJtaW5hdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
OworICAgIEdldENsaWVudEZyb21JZCh1aW50NjRfdCBjbGllbnRJZFJlcXVlc3RJZGVudGlmaWVy
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElk
ZW50aWZpZXIpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDdjNmNmNTYyMzIyNmY4Y2QzZmNhMzVj
YmZiM2M5MzZlMzAwMjcwN2YuLmM1MmUyOTVhY2FlZjcyMTQzZWE0MDIyOGZlZDY1YWFmYmUzMjg4
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTQ4LDYgKzQ4LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25maWd1cmF0aW9uLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnRE
YXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIApAQCAtMTkxLDYgKzE5MiwyNCBAQCB2b2lk
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcgogICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V29ya2VyVGVybWlu
YXRlZChzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOwogfQogCit2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpnZXRDbGllbnRGcm9tSWQoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIEdldENsaWVudEZyb21JZENhbGxiYWNrJiYgY2Fs
bGJhY2spCit7CisgICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9wcmV2aW91c0dldENs
aWVudElkUmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9nZXRDbGllbnRJZFJlcXVlc3RzLmFkZChy
ZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIG1fY29ubmVjdGlvblRv
U3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6R2V0Q2xpZW50RnJvbUlkIHsgcmVxdWVzdElkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyIH0sIDApOworfQorCit2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpnZXRDbGllbnRGcm9tSWRDb21wbGV0ZWQodWludDY0X3QgY2xp
ZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4mJiBjbGllbnREYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCit7CisgICAgaWYgKGF1
dG8gY2FsbGJhY2sgPSBtX2dldENsaWVudElkUmVxdWVzdHMudGFrZShjbGllbnRJZFJlcXVlc3RJ
ZGVudGlmaWVyKSkgeworICAgICAgICBpZiAoaGFzU2VjdXJpdHlFcnJvcikgeworICAgICAgICAg
ICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciB9KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNsaWVudERhdGEpKTsK
KyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IGQxMmZm
NDQ3NDhlYTdiNGY4OGQ5OTVlOWVmOWViYjZhNTg1ZGY2Y2QuLmRiMGQ1YWY2MTA1ZjI3ODQyYWQ1
YjhjZDVlNDY3OTA2MWJiNjgwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApA
QCAtNjEsNiArNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBzZXRTZXJ2
aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIGdldENsaWVudEZyb21JZChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXIsIEdldENsaWVudEZyb21JZENhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgLy8g
SVBDIG1lc3NhZ2VzLgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSBm
aW5hbDsKQEAgLTcwLDEwICs3MSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxF
dmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJlQWN0
aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCB0
ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZv
aWQgZ2V0Q2xpZW50RnJvbUlkQ29tcGxldGVkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYs
IGJvb2wgaGFzU2VjdXJpdHlFcnJvcik7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzOwogICAgIHVpbnQ2NF90IG1fcGFnZUlEIHsgMCB9Owog
ICAgIHVpbnQ2NF90IG1fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQgeyAwIH07CisKKyAgICBIYXNo
TWFwPHVpbnQ2NF90LCBHZXRDbGllbnRGcm9tSWRDYWxsYmFjaz4gbV9nZXRDbGllbnRJZFJlcXVl
c3RzOworICAgIHVpbnQ2NF90IG1fcHJldmlvdXNHZXRDbGllbnRJZFJlcXVlc3RJZGVudGlmaWVy
IHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDczNmZkZjViNDcxNzliZTQwZWRh
MTJjOWZjNmQ3MjY2MmMxZDdiYzQuLjc2ZjA1MzY0YzI5NDE0MDdkOGIxYWQ5MDk2NjhhNTQ2NDgx
YWVkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCkBAIC0yOSw2ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uIHsKICAgICBGaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgRmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBUZXJtaW5hdGVXb3JrZXIoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBHZXRDbGllbnRGcm9t
SWRDb21wbGV0ZWQodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gZGF0YSwgYm9vbCBoYXNTZWN1
cml0eUVycm9yKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MGI4MjNmOGJmZTI0YjI4M2Y1NTZiMzRh
OThiMzZlOWZjZjFlYjU1Li4wYmY2ODZkNGY4MGE4ODhiYmI3MjBhZDdhOTlhMjMxODQ4M2YxYzRj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTctMTEtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2Vz
L3NlcnZpY2V3b3JrZXJjbGllbnQtZ2V0LXdvcmtlci5qczogQWRkZWQuCisgICAgICAgIChhc3lu
Yyk6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNs
aWVudC1nZXQuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50LWdldC5odHRwcy5odG1sOiBBZGRl
ZC4KKworMjAxNy0xMS0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKICAg
ICAgICAgU2VydmljZVdvcmtlckNsaWVudCBvYmplY3RzIHNob3VsZCBiZSByZXVzZWQgaWYgdGhl
cmUgaXMgYWxyZWFkeSBvbmUgZXhpc3Rpbmcgd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxNDMKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2Vz
L3NlcnZpY2V3b3JrZXJjbGllbnQtZ2V0LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zZXJ2aWNld29ya2VyY2xpZW50LWdldC13b3Jr
ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODNkMjI1YmRmNjMzNzg2MTQwM2RmN2Y3OWNiN2M4NGFjZWUyMDFk
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Jlc291cmNlcy9zZXJ2aWNld29ya2VyY2xpZW50LWdldC13b3JrZXIuanMKQEAgLTAsMCAr
MSw0MSBAQAordmFyIGNsaWVudCA9IG51bGw7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCBhc3luYyAoZXZlbnQpID0+IHsKKyAgICB0cnkgeworICAgICAgICB2YXIgY2xpZW50ID0g
ZXZlbnQuc291cmNlOworCisgICAgICAgIGlmICghKGNsaWVudCBpbnN0YW5jZW9mIFdpbmRvd0Ns
aWVudCkpIHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogY2xp
ZW50IHNvdXJjZSBpcyBub3QgYSBXaW5kb3dDbGllbnQiKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIHZhciByZXRyaWV2ZWRDbGllbnQgPSBhd2FpdCBzZWxmLmNs
aWVudHMuZ2V0KGNsaWVudC5pZCk7CisvLyAgICAgICAgaWYgKCFyZXRyaWV2ZWRDbGllbnQpIHsK
Ky8vICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiBkaWQgbm90IHJl
dHJpZXZlIGFueSBjbGllbnQgdGhyb3VnaCBzZWxmLmNsaWVudHMuZ2V0Iik7CisvLyAgICAgICAg
ICAgIHJldHVybjsKKy8vICAgICAgICB9CisvLworLy8gICAgICAgIGlmIChyZXRyaWV2ZWRDbGll
bnQuaWQgIT09IGNsaWVudC5pZCkgeworLy8gICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1l
c3NhZ2UoIkZBSUw6IGNsaWVudCBpZCBpcyBkaWZmZXJlbnQgZnJvbSByZXRyaWV2ZWQgY2xpZW50
IGlkIHRocm91Z2ggc2VsZi5jbGllbnRzLmdldDogIiArIGNsaWVudC5pZCArICIgLyAiICsgcmV0
cmlldmVkQ2xpZW50LmlkKTsKKy8vICAgICAgICAgICAgcmV0dXJuOworLy8gICAgICAgIH0KKy8v
CisvLyAgICAgICAgaWYgKHJldHJpZXZlZENsaWVudCAhPT0gY2xpZW50KSB7CisvLyAgICAgICAg
ICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogY2xpZW50IGlzIGRpZmZlcmVudCBm
cm9tIHRoZSBvbmUgcmV0cmlldmVkIHRocm91Z2ggc2VsZi5jbGllbnRzLmdldCIpOworLy8gICAg
ICAgICAgICByZXR1cm47CisvLyAgICAgICAgfQorLy8KKy8vICAgICAgICB2YXIgYmFkSWRzID0g
W2NsaWVudC5pZCArICIwIiwgIjAtMCIsICIwLSIsICItIiwgIi0wIl07CisvLyAgICAgICAgZm9y
IChpZCBpbiBiYWRJZHMpIHsKKy8vICAgICAgICAgICAgcmV0cmlldmVkQ2xpZW50ID0gYXdhaXQg
c2VsZi5jbGllbnRzLmdldChpZCk7CisvLyAgICAgICAgICAgIGlmICghIXJldHJpZXZlZENsaWVu
dCkgeworLy8gICAgICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiBy
ZXRyaWV2ZWQgY2xpZW50IHdpdGggYmFkIGlkICIgKyBpZCArICIgc2hvdWxkIGJlIG51bGwiKTsK
Ky8vICAgICAgICAgICAgICAgIHJldHVybjsKKy8vICAgICAgICAgICAgfQorLy8gICAgICAgIH0K
KworICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlBBU1MiKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogcmVjZWl2ZWQg
ZXhjZXB0aW9uICIgKyBlKTsKKyAgICB9Cit9KTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudC1nZXQuaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmljZXdvcmtlcmNsaWVudC1nZXQuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3ZjM2
NmIyYTJhY2Y1YTliZWQ0ZGNmMmZmNjU2MzkwY2U1NGM1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50
LWdldC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgVGVzdGluZyBj
bGllbnRzLmdldCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudC1nZXQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnQtZ2V0Lmh0dHBz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjM0YmRlZjZmNWY5MWNlNWI1MTgxYWM5MDgzNzY4NGFiZTMyNmRj
ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3NlcnZpY2V3b3JrZXJjbGllbnQtZ2V0Lmh0dHBzLmh0bWwKQEAgLTAsMCArMSwyNyBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKworcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7CisgICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4g
eworICAgICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwgdGVzdC5zdGVwX2Z1bmMoKGV2ZW50KSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKGV2ZW50LmRhdGEsICJQQVNTIik7CisgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAg
IH0pKTsKKyAgICB9KTsKKworICAgIHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iu
c2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL3NlcnZpY2V3b3JrZXJjbGllbnQtZ2V0
LXdvcmtlci5qcyIsIHsgc2NvcGUgOiAiL25vb25lIiB9KTsKKyAgICB2YXIgd29ya2VyID0gcmVn
aXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHdvcmtlciA9
IHJlZ2lzdHJhdGlvbi5hY3RpdmU7CisgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJzdGFydCIpOwor
CisgICAgYXdhaXQgcHJvbWlzZTsKK30sICJUZXN0aW5nIGNsaWVudHMuZ2V0Iik7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327941</attachid>
            <date>2017-11-29 18:09:09 -0800</date>
            <delta_ts>2017-11-30 10:19:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180167-20171129180908.patch</filename>
            <type>text/plain</type>
            <size>36329</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJmNzUxYmMwMzQ1MjZmOGNjODQ3MzBl
OTFlZTJjNTY2ZGFkMzYxZWEuLjMwZWJjZDQ1NmExZWZmNTIwY2E1ZWRiY2IyYTJhNWM0NGE2MzJl
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTEtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RG
OjpTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdCBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisKIDIwMTctMTEtMjkgIFN0YW5pc2xhdiBPY292YWogIDxzdGFuaXNsYXYu
b2NvdmFqQHJ0LXJrLmNvbT4KIAogICAgICAgICBbREZHXVtNSVBTXSBFbmFibGUgREZHIEpJVCBv
biBNSVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGIyNjBmMmI2OTU1NDgwMGU1NjQ5MzM4ODRkYTg0MTk0ZjE2
MmI2YTYuLjNlYzNhZTZhYjBkYjZhY2I3NTg5NmFmZDg0ZGQxZjVhYjYyZTgxOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MSBAQAorMjAxNy0xMS0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2
aWNlV29ya2VyLyNjbGllbnRzLWdldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgwMTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdv
cmtlcmNsaWVudC1nZXQuaHR0cHMuaHRtbAorCisgICAgICAgIEltcGxlbWVudCBjbGllbnRzIGdl
dCBieSBoYXZpbmcgc2VydmljZSB3b3JrZXIgY2xpZW50cyBkbyB0aGUgZm9sbG93aW5nOgorICAg
ICAgICAtIEdvIHRvIG1haW4gdGhyZWFkIHRvIHF1ZXJ5IHRoZSBTV0NsaWVudENvbm5lY3Rpb24g
Zm9yIGdldHRpbmcgdGhlIGNsaWVudC4KKyAgICAgICAgLSBTV0NsaWVudENvbm5lY3Rpb24gcmVx
dWVzdHMgaXQgdGhyb3VnaCBJUEMgdG8gU3RvcmFnZVByb2Nlc3MgU1dTZXJ2ZXIuCisgICAgICAg
IC0gU1dTZXJ2ZXIgbG9va3MgYXQgaXRzIGNsaWVudCBtYXAgYW5kIHJldHVybnMgY2xpZW50IGRh
dGEgYmFzZWQgb24gdGhlIGdpdmVuIGlkZW50aWZpZXIuCisgICAgICAgIC0gU1dDbGllbnRDb25u
ZWN0aW9uIHNlbmRzIGl0IGJhY2sgdG8gdGhlIHJpZ2h0IGNsaWVudHMgZm9yIHJlc29sdmluZyB0
aGUgcHJvbWlzZS4KKworICAgICAgICBJZGVudGlmaWVyIGlzIHBhcnNlZCBhdCBzZXJ2aWNlIHdv
cmtlciBwcm9jZXNzIGxldmVsLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllcjo6ZnJvbVN0cmluZyk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRzOjpTZXJ2aWNlV29ya2VyQ2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50czo6Z2V0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRz
OjpjcmVhdGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6cG9zdFRhc2tU
b1NlcnZpY2VXb3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpnZXRDbGllbnRGcm9tSWQpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmdldENsaWVudEZyb21J
ZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpvcmlnaW4gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmdldENsaWVudEZyb21JZCk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDE3
LTExLTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IE1pc3NpbmcgbGF5ZXIgY29udGVudCB3aGVuIGFuaW1hdGluZyBlbGVtZW50cyBvbi1zY3JlZW4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYjMyYTExM2E2NWEzZDA0NWRiNGM1ZmE2MjQ1M2Y3YzM2OTUyNTczZC4uZDdj
N2JjYzVkZWRjNjJmMjNmZjBhOGVmNzE3NDJkOTBlNzU5OTA2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMiBAQAorMjAxNy0xMS0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNj
bGllbnRzLWdldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTgwMTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIElQQyBwbHVtYmVyeSBmb3IgZ2V0Q2xpZW50RnJvbUlkIGJldHdlZW4gU2VydmljZVdv
cmtlciBwcm9jZXNzIGFuZCBTdG9yYWdlIHByb2Nlc3MuCisKKyAgICAgICAgKiBTdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2V0Q2xpZW50
RnJvbUlkQ29tcGxldGVkKToKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpnZXRDbGllbnRGcm9tSWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6Z2V0Q2xpZW50RnJvbUlkQ29tcGxldGVkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW46CisKIDIwMTctMTEtMjkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgUGFydCAyOiBBZG9wdCB1cGRhdGVkIE5TS2V5ZWRbVW5dQXJjaGl2ZXIgQVBJ
IHdoZW4gYXZhaWxhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDQ4Zjc4ZGQ0Zjg0
MTczMWM2NjQ5OTc0MDg4Njg2ZmJhYWQyNThlNDkuLjJhNDQ3M2Q0MGZkZmE5MWQ4YTk0MGU2NTY4
ZDdmNmMzMGI4YmE2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmll
dy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTQ2LDYgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICBpbnQg
dG9JbnQoKSBjb25zdDsKICAgICBpbnQgdG9JbnQoYm9vbCYgaXNWYWxpZCkgY29uc3Q7CiAgICAg
aW50IHRvSW50U3RyaWN0KGJvb2wmIGlzVmFsaWQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IHRvVUludDY0U3RyaWN0KCkgY29uc3Q7CiAgICAgZmxvYXQgdG9GbG9hdChib29s
JiBpc1ZhbGlkKSBjb25zdDsKIAogICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGUoY29uc3QgU3Ry
aW5nSW1wbCYpOwpAQCAtNTIzLDYgKzUyNSwxNSBAQCBpbmxpbmUgaW50IFN0cmluZ1ZpZXc6OnRv
SW50U3RyaWN0KGJvb2wmIGlzVmFsaWQpIGNvbnN0CiAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0lu
dFN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKIH0KIAoraW5saW5l
IHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IFN0cmluZ1ZpZXc6OnRvVUludDY0U3RyaWN0KCkgY29u
c3QKK3sKKyAgICBib29sIGlzVmFsaWQ7CisgICAgdWludDY0X3QgcmVzdWx0ID0gaXM4Qml0KCkg
PyBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsICZpc1Zh
bGlkKSA6IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgs
ICZpc1ZhbGlkKTsKKyAgICBpZiAoIWlzVmFsaWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogaW5saW5lIFN0cmluZyBTdHJpbmdWaWV3Ojp0
b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkgY29uc3QKIHsKICAgICBpZiAoaXM4Qml0KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaAppbmRleCBjOGE0ZGQ2ZmE0OTBhNmU4NGQ3OTU3NTNhNjI5ZTMwZDU5
ZWU1OGFjLi5kMmI5OWJmMjVlM2M4MTAxZDM4Mzg1NDhlM2NkMGI5OWRhZDkwOTk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgKQEAgLTQ2LDggKzQ2LDggQEAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJv
b2wKIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB1bnNpZ25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0
KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTAp
OwogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwg
Ym9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKIGludDY0X3QgY2hhcmFjdGVyc1Rv
SW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50
IGJhc2UgPSAxMCk7Ci11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgTENo
YXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci11aW50NjRf
dCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9r
ID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CitXVEZfRVhQT1JUX1NUUklOR19BUEkgdWludDY0
X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBv
ayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOworV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHVpbnQ2
NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCog
b2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKIGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0
clN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFz
ZSA9IDEwKTsKIGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBVQ2hhcios
IHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXIuaAppbmRleCA2Mjg1NWQ1NGJjYzcwMTkxN2QxYjhmYjI0YTM5NzYzZGQz
YWI1NmE4Li4zZmI0YTA3YTlkZTgyOGFkZmM0YmI5ZmNhN2QxZDcxYmYyMTcyMDFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXIuaApAQCAtNDAsNiArNDAsNyBAQCBzdHJ1Y3QgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXIgewogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIAogICAg
IFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKHNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyLnRvVUludDY0KCkpICsgIi0iICsgIFN0cmluZzo6bnVtYmVyKGNv
bnRleHRJZGVudGlmaWVyLnRvVUludDY0KCkpOyB9CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7
CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29u
c3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CkBAIC01MCw2ICs1
MSwyNSBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyJiBhLCBjb25zdCBTZXJ2aWNlV29yawogICAgIHJldHVybiBhLnNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyID09IGIuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgJiYgIGEuY29u
dGV4dElkZW50aWZpZXIgPT0gYi5jb250ZXh0SWRlbnRpZmllcjsKIH0KIAoraW5saW5lIHN0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXI7CisKKyAgICB1bnNp
Z25lZCBjb3VudGVyID0gMDsKKyAgICBmb3IgKGF1dG8gaXRlbSA6IFN0cmluZ1ZpZXcgeyBzdHJp
bmcgfS5zcGxpdCgnLScpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGl0ZW0udG9VSW50
NjRTdHJpY3QoKTsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCFjb3VudGVyKyspCisgICAgICAgICAgICBjbGll
bnRJZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50
aWZpZXI8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+KGlkZW50aWZpZXIudmFsdWUo
KSk7CisgICAgICAgIGVsc2UgaWYgKGNvdW50ZXIgPT0gMikKKyAgICAgICAgICAgIGNsaWVudElk
ZW50aWZpZXIuY29udGV4dElkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxEb2N1bWVu
dElkZW50aWZpZXJUeXBlPihpZGVudGlmaWVyLnZhbHVlKCkpOworICAgIH0KKyAgICBpZiAoY291
bnRlciAhPSAyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBXVEZN
b3ZlKGNsaWVudElkZW50aWZpZXIpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9p
ZCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnRzLmNwcAppbmRleCBhMTQ1NTdlNmM0NDA4NzNkMTc3ZTdjOTZhZmFl
YTI1OGM5ODMzYTBlLi40MDRlYzdkMTIwM2ZkY2EzZGMxZjEzMzllNzJmMDM4MWYyMzY2NzZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50cy5jcHAKQEAgLTI5LDEwICsyOSwxMiBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJDbGllbnRzLmgiCiAKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1
ZGUgIkpTU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VXb3JrZXJD
bGllbnRzOjpTZXJ2aWNlV29ya2VyQ2xpZW50cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KQorU2VydmljZVdvcmtlckNsaWVudHM6OlNlcnZpY2VXb3JrZXJDbGllbnRzKFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSYgY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4
dCkKIHsKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKQEAgLTQ4LDEwICs1MCw3MiBAQCBib29sIFNl
cnZpY2VXb3JrZXJDbGllbnRzOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29u
c3QKICAgICByZXR1cm4gIWhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCit2b2lkIFNlcnZpY2VX
b3JrZXJDbGllbnRzOjpnZXRDb21wbGV0ZWQoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIg
aWRlbnRpZmllciwgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4+JiYgY2xpZW50RGF0YSwgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlUmVmZXJlbmNlKQor
eworICAgIGF1dG8gcHJvbWlzZSA9IG1fcGVuZGluZ1Byb21pc2VzLnRha2UocHJvbWlzZVJlZmVy
ZW5jZSk7CisgICAgaWYgKCFwcm9taXNlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY2xp
ZW50RGF0YS5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLnZhbHVlKCktPnJlamVj
dChjbGllbnREYXRhLnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgYXV0byBkYXRhID0gY2xpZW50RGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBp
ZiAoIWRhdGEpIHsKKyAgICAgICAgcHJvbWlzZS52YWx1ZSgpLT5yZXNvbHZlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8U2VydmljZVdv
cmtlckdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBwcm9taXNl
LnZhbHVlKCktPnJlc29sdmU8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJDbGllbnQ+PihTZXJ2
aWNlV29ya2VyQ2xpZW50OjpnZXRPckNyZWF0ZShjb250ZXh0LCBpZGVudGlmaWVyLCBXVEZNb3Zl
KGRhdGEudmFsdWUoKSkpKTsKK30KKworc3RhdGljIGlubGluZSBFeGNlcHRpb25PcjxzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPj4gaXNvbGF0ZWRFeGNlcHRpb25PckNsaWVu
dERhdGEoY29uc3QgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4+JiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiB2YWx1ZS5leGNlcHRpb24oKS5pc29sYXRlZENvcHkoKTsKKworICAgIGF1dG8gY2xp
ZW50RGF0YSA9IHZhbHVlLnJldHVyblZhbHVlKCk7CisgICAgaWYgKGNsaWVudERhdGEpCisgICAg
ICAgIGNsaWVudERhdGEgPSBjbGllbnREYXRhLT5pc29sYXRlZENvcHkoKTsKKworICAgIHJldHVy
biBXVEZNb3ZlKGNsaWVudERhdGEpOworfQorCitzdHJ1Y3QgR2V0UmVxdWVzdFN0YXRlIHsKKyAg
ICBTZXJ2aWNlV29ya2VyQ2xpZW50cyYgY2xpZW50czsKKyAgICBSZWY8QWN0aXZlRE9NT2JqZWN0
OjpQZW5kaW5nQWN0aXZpdHk8U2VydmljZVdvcmtlckNsaWVudHM+PiBwcm90ZWN0aW5nQ2xpZW50
czsKKyAgICBEZWZlcnJlZFByb21pc2UmIHByb21pc2U7CisgICAgU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXIgaWRlbnRpZmllcjsKK307CisKIHZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6
OmdldChjb25zdCBTdHJpbmcmIGlkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGlkKTsKLSAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsg
Tm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiY2xpZW50cy5nZXQoKSBpcyBub3QgeWV0
IHN1cHBvcnRlZCIpIH0pOworICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gaWRlbnRpZmllciA9IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKGlkKTsKKyAgICBpZiAoIWlkZW50aWZpZXIpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgR2V0UmVxdWVzdFN0YXRlIHN0
YXRlIHsgKnRoaXMsIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBwcm9taXNlLCBpZGVudGlm
aWVyLnZhbHVlKCkgfTsKKworICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChXVEZNb3ZlKHByb21p
c2UpKTsKKworICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRleHQpOworICAgIGNhbGxPbk1haW5UaHJlYWQo
W3N0YXRlID0gV1RGTW92ZShzdGF0ZSksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmlkZW50aWZpZXIoKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNv
bm5lY3Rpb24oKTsKKyAgICAgICAgY29ubmVjdGlvbi0+Z2V0Q2xpZW50RnJvbUlkKHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBzdGF0ZS5pZGVudGlmaWVyLCBbc3RhdGUgPSBXVEZNb3ZlKHN0YXRl
KSwgc2VydmljZVdvcmtlcklkZW50aWZpZXJdIChhdXRvJiYgY2xpZW50RGF0YSkgbXV0YWJsZSB7
CisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2Vy
dmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3N0YXRlID0gV1RGTW92ZShzdGF0
ZSksIGNsaWVudERhdGEgPSBpc29sYXRlZEV4Y2VwdGlvbk9yQ2xpZW50RGF0YShjbGllbnREYXRh
KV0gKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS5jbGllbnRzLmdldENv
bXBsZXRlZChzdGF0ZS5pZGVudGlmaWVyLCBXVEZNb3ZlKGNsaWVudERhdGEpLCBzdGF0ZS5wcm9t
aXNlKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBT
ZXJ2aWNlV29ya2VyQ2xpZW50czo6bWF0Y2hBbGwoY29uc3QgQ2xpZW50UXVlcnlPcHRpb25zJiwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpAQCAtNzAsNiArMTM0LDExIEBAIHZvaWQg
U2VydmljZVdvcmtlckNsaWVudHM6OmNsYWltKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFT
Q0lJTGl0ZXJhbCgiY2xpZW50cy5jbGFpbSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIikgfSk7CiB9
CiAKK3ZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6OnN0b3AoKQoreworICAgIG1fcGVuZGluZ1By
b21pc2VzLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmgKaW5kZXggNzRiYmI3ZjA0ZjFhMWMxYjg0
MmIwYzgxOGJhMzFjZjhhMjk3YWE1MS4uNWFiN2FhNzRiNzg4ZTQwMDhhYWZhNGQxYzUyNTRiZTky
YjBjZWVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnRzLmgKQEAgLTI4LDE3ICsyOCwyMSBAQAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV4
Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCIKICNpbmNs
dWRlIDx3dGYvUmVmLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEZWZlcnJlZFByb21pc2U7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGE7CitzdHJ1
Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CitjbGFzcyBTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU7CiAKLWNsYXNzIFNlcnZpY2VXb3JrZXJDbGllbnRzIDogcHVibGljIFJlZkNvdW50
ZWQ8U2VydmljZVdvcmtlckNsaWVudHM+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK2NsYXNz
IFNlcnZpY2VXb3JrZXJDbGllbnRzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcnZp
Y2VXb3JrZXJDbGllbnRzPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50cz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50cz4gY3Jl
YXRlKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgY29udGV4dCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJDbGllbnRzKGNvbnRleHQpKTsKICAgICB9
CkBAIC01NCwxMSArNTgsMTYgQEAgcHVibGljOgogICAgIHZvaWQgY2xhaW0oUmVmPERlZmVycmVk
UHJvbWlzZT4mJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2VydmljZVdvcmtlckNsaWVu
dHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIGV4cGxpY2l0IFNlcnZpY2VXb3JrZXJD
bGllbnRzKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYpOworCisgICAgdm9pZCBnZXRDb21wbGV0
ZWQoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmLCBEZWZlcnJlZFByb21pc2UmKTsKIAogICAg
IC8vIEFjdGl2ZURPTU9iamVjdC4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1l
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9u
KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKKyAgICBIYXNoU2V0PFJl
ZjxEZWZlcnJlZFByb21pc2U+PiBtX3BlbmRpbmdQcm9taXNlczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggZWRjNzRiMWMxNTkwMTBiMTBj
ZTU5YmZmNzUwNWFhOTkwZGVhZGRmMS4uMGI4MTFmOTNjMTU2Njk4ODJjZmQ2OTVlZTI5ZGM0YTQw
YTljYjVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTEwNiw2ICsxMDYsMTUgQEAgdm9p
ZCBTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICB9KTsKIH0KIAordm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpwb3N0
VGFza1RvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKK3sKKyAgICBhdXRvKiBzZXJ2aWNl
V29ya2VyID0gbV93b3JrZXJNYXAuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghc2VydmljZVdv
cmtlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucnVu
TG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IDJjZjhhYjM3MGY2Mjc2YWU5NWVl
MTBjMzYxNGM4OWQwZGQwOWNlYzMuLjkyZjU1ZDYwZjgyMDdjN2VjYzViZDExZDExY2ZmZDBkYmU0
YTM5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNTEsNiArNTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hBY3RpdmF0aW9uKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgYm9vbCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyVGVybWlu
YXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOworCisgICAgICAgIHVzaW5nIEdldENs
aWVudEZyb21JZENhbGxiYWNrID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlv
bk9yPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmKT47CisgICAgICAg
IHZpcnR1YWwgdm9pZCBnZXRDbGllbnRGcm9tSWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLCBHZXRDbGllbnRGcm9tSWRDYWxsYmFjayYmKSA9
IDA7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlvbihzdGQ6
OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJik7CkBAIC02Myw2ICs2Nyw4IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNl
V29ya2VySWRlbnRpZmllcik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RUYXNrVG9T
ZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrJiYpOworCiBwcml2YXRlOgogICAgIFNXQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1
bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKaW5kZXggNmQ1NjQ4OGY5ZmEyM2M2MDc0ZTQ5N2U1MzliNmYyMDhiNjgwNDY5YS4u
NjZjOWI1YjIzMzg1NDljNDEzOGFmOTliOGI5MjdlOTVlYWE5NDM4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTMwNSw2
ICszMDUsMjUgQEAgdm9pZCBTV1NlcnZlcjo6d29ya2VyQ29udGV4dFRlcm1pbmF0ZWQoU1dTZXJ2
ZXJXb3JrZXImIHdvcmtlcikKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKIH0K
IAordm9pZCBTV1NlcnZlcjo6Z2V0Q2xpZW50RnJvbUlkKFNXU2VydmVyV29ya2VyJiB3b3JrZXIs
IHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCit7CisgICAgYXV0byogY29ubmVjdGlvbiA9IFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bigpOworICAgIEFTU0VSVChjb25uZWN0aW9uKTsKKworICAgIGF1dG8gY2xpZW50cyA9IG1fY2xp
ZW50cy5nZXQod29ya2VyLm9yaWdpbigpKTsKKyAgICBhdXRvIHBvc2l0aW9uID0gY2xpZW50cy5m
aW5kTWF0Y2hpbmcoWyZdIChjb25zdCBhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgcmV0dXJuIGNs
aWVudElkZW50aWZpZXIgPT0gY2xpZW50LmlkZW50aWZpZXI7CisgICAgfSk7CisKKyAgICBpZiAo
cG9zaXRpb24gPT0gbm90Rm91bmQpIHsKKyAgICAgICAgY29ubmVjdGlvbi0+Z2V0Q2xpZW50RnJv
bUlkQ29tcGxldGVkKGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgZmFs
c2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IFZlcmlmeSB0aGF0
IGNsaWVudCBVUkwgaXMgc2VjdXJlLgorICAgIGNvbm5lY3Rpb24tPmdldENsaWVudEZyb21JZENv
bXBsZXRlZChjbGllbnRJZFJlcXVlc3RJZGVudGlmaWVyLCBjbGllbnRzW3Bvc2l0aW9uXS5kYXRh
LCBmYWxzZSk7Cit9CisKIHZvaWQgU1dTZXJ2ZXI6OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9t
aXNlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIHJlZ2lzdHJhdGlvbktleSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24s
IG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCA1
ZjMzOGY2YzJhOTdiNTEwMjMwM2YwNmU4OTViYmQ5NzZjNDg1MTBhLi4xYzUzOGE4NTJkN2Y4NmE4
ZDljN2Y4ZmVlMTUxM2JhZWJkYjk2MTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xMzUsNiArMTM1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTV1NlcnZlcldvcmtlciYsIGJvb2wgd2FzU3VjY2Vzc2Z1
bCk7CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFNXU2VydmVyV29ya2VyJik7CiAgICAg
dm9pZCB3b3JrZXJDb250ZXh0VGVybWluYXRlZChTV1NlcnZlcldvcmtlciYpOworICAgIHZvaWQg
Z2V0Q2xpZW50RnJvbUlkKFNXU2VydmVyV29ya2VyJiwgdWludDY0X3QgY2xpZW50SWRSZXF1ZXN0
SWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIpOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCgpOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGJlODViMzlmNjYx
YzY2NWU0ZjExMTBlMDRlNGNiNDFiNTVjY2Y5MGEuLjNlNDk2NzcwMGMzZGY3YjU1ZjNkMGMxOGRl
YzA5MzVjMmFkNzJmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKQEAgLTEwOCw2ICsxMDgsMTIgQEAgdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OndvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmkKICAgICAgICAg
d29ya2VyLT5jb250ZXh0VGVybWluYXRlZCgpOwogfQogCit2b2lkIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6Z2V0Q2xpZW50RnJvbUlkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZCkKK3sKKyAgICBpZiAoYXV0byog
d29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2
aWNlV29ya2VySWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+Z2V0Q2xpZW50RnJvbUlkKGNs
aWVudElkUmVxdWVzdElkZW50aWZpZXIsIGNsaWVudElkKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggNGExNTJmMjJiODJhZjMzZGZjZjRmM2VhNTVl
ZWY1ODBmNGZkYjVlYi4uM2MwZDhkYTk1MzU1ZjVmNjVlMzUxOGUwNjI3ZTI2M2RkMzdmYzI5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0zNCw2ICszNCw4IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNXU2VydmVyOworc3RydWN0IFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhOworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwog
c3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXI7CiAKQEAgLTQ4LDYgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRGcm9tSWRDb21wbGV0ZWQodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSA9IDA7CiAKICAgICAvLyBNZXNz
YWdlcyBiYWNrIGZyb20gdGhlIFNXIGhvc3QgcHJvY2VzcwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSk7CkBAIC01Niw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVu
dHMoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldENsaWVudEZyb21JZCh1aW50NjRfdCBj
bGllbnRJZFJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXIpOwogCiAgICAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiogY29ubmVjdGlvbkZvcklkZW50aWZpZXIoU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggMWYwYjFkY2VjNGM0MDVl
NDdmNjFmODYwZmY0YTEwOWZkYTQ0NDgwZi4uOWU0ZGVjMTYxNWJhMjNiNGMxODI1MmRiYjIzODNj
NDg2ODQzMzFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTY1LDYgKzY1LDE3IEBAIHZvaWQgU1dT
ZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZSgpCiAgICAgbV9zZXJ2ZXIudGVybWluYXRlV29ya2VyKCp0
aGlzKTsKIH0KIAorY29uc3QgQ2xpZW50T3JpZ2luJiBTV1NlcnZlcldvcmtlcjo6b3JpZ2luKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fb3JpZ2luKSB7CisgICAgICAgIENsaWVudE9yaWdpbiBvcmln
aW47CisgICAgICAgIG9yaWdpbi50b3BPcmlnaW4gPSBtX3JlZ2lzdHJhdGlvbktleS50b3BPcmln
aW4oKTsKKyAgICAgICAgb3JpZ2luLmNsaWVudE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbVNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9kYXRhLnNjcmlwdFVS
TCkpOworICAgICAgICBtX29yaWdpbiA9IG9yaWdpbjsKKyAgICB9CisgICAgcmV0dXJuIG1fb3Jp
Z2luLnZhbHVlKCk7Cit9CisKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNjcmlwdENvbnRleHRGYWls
ZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBt
X3NlcnZlci5zY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChqb2JEYXRhSWRlbnRpZmllciwgKnRo
aXMsIG1lc3NhZ2UpOwpAQCAtOTAsNiArMTAxLDExIEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmNv
bnRleHRUZXJtaW5hdGVkKCkKICAgICBtX3NlcnZlci53b3JrZXJDb250ZXh0VGVybWluYXRlZCgq
dGhpcyk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmdldENsaWVudEZyb21JZCh1aW50NjRf
dCBjbGllbnRJZFJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
ciBjbGllbnRJZCkKK3sKKyAgICBtX3NlcnZlci5nZXRDbGllbnRGcm9tSWQoKnRoaXMsIGNsaWVu
dElkUmVxdWVzdElkZW50aWZpZXIsIGNsaWVudElkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4
IGMzMGQ0NTlmZTczY2Y5NmU1ZDJmMDQ2ZDMzM2M5MjZlODdjNjE4ODQuLjI2Y2E2OTAwYTA3NGVi
M2E3Njg0YmNhNjQ2NDMyNDg5ZTMyZDIzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTM2LDEwICszNiwx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVjdCBDbGllbnRPcmlnaW47CiBjbGFz
cyBTV1NlcnZlcjsKIGNsYXNzIFNXU2VydmVyUmVnaXN0cmF0aW9uOwotZW51bSBjbGFzcyBXb3Jr
ZXJUeXBlOworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwogc3RydWN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcjsKK2VudW0gY2xhc3MgV29ya2VyVHlwZTsKIAog
Y2xhc3MgU1dTZXJ2ZXJXb3JrZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U1dTZXJ2
ZXJXb3JrZXI+IHsKIHB1YmxpYzoKQEAgLTczLDEwICs3NSwxMiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyPiYsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CiAgICAgdm9pZCBkaWRGaW5pc2hB
Y3RpdmF0aW9uKCk7CiAgICAgdm9pZCBjb250ZXh0VGVybWluYXRlZCgpOworICAgIHZvaWQgZ2V0
Q2xpZW50RnJvbUlkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTV1Nl
cnZlcldvcmtlciogZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKIAogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJEYXRhJiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CisgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdDsK
IAogcHJpdmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0
cmF0aW9uJiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKQEAgLTg3LDYgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBt
X2RhdGE7CiAgICAgU3RyaW5nIG1fc2NyaXB0OwogICAgIGJvb2wgbV9oYXNQZW5kaW5nRXZlbnRz
IHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBtX29y
aWdpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMjRlNGFkYWUxYzJkOTM3
OGE4M2YyNzE4ZDA5YTMyMzg4NjkyMjZmMC4uNTYyZTk1NmQzZmM3ZDhhMWNhZWU1ZjkxMWMxZDU0
YjM4NDY4Mzc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKQEAgLTc2LDYgKzc2LDExIEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1p
bmF0ZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOwogfQogCit2b2lkIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Z2V0Q2xpZW50RnJvbUlkQ29tcGxldGVkKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiYgZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQoreworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpHZXRDbGllbnRGcm9tSWRDb21wbGV0
ZWQgeyByZXF1ZXN0SWRlbnRpZmllciwgZGF0YSwgaGFzU2VjdXJpdHlFcnJvciB9KTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5k
ZXggYjViODc0OTA2ZTFmYmNmNDVjYzI5M2M0Y2FhMTQ3YmMzZjQ2NzI5OS4uNjQ2YmI1NGFmODA5
ZTI2YjQ4N2UwZWNlYWYxYWU2MjYyZjI5NTRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTksNiArNTksNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgZmluYWw7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgZ2V0Q2xpZW50RnJvbUlk
Q29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJv
cikgZmluYWw7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2lwY0Nvbm5lY3Rpb247CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA4YjIzNDc4YjI2YTkwMGY2ODNkNzJkYTFlMGM0ZGU2
MmExOTI4MDkxLi43YzE3M2ZhOThkMzcyNzc3YzQ1YTVkYmNjNDczZWY0ZjZlOWE4YjJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uIHsKICAgICBEaWRGaW5pc2hBY3RpdmF0aW9uKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpOwogICAgIFNldFNlcnZpY2VXb3JrZXJI
YXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7CiAgICAgV29ya2VyVGVybWluYXRlZChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKKyAgICBHZXRDbGllbnRGcm9t
SWQodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKTsKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcAppbmRleCBjMGNlZGExODE3Y2VmMTUxODEzMWU2YjI0MTAyZjdhNjJhNTg0YmVmLi43
N2EyNjAzODE4YmExNDRiN2I5M2E5NDRkNzMxODMwNjQyYmYwYzA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlQ29uZmlndXJhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vz
c2lvbklELmg+CiAKQEAgLTE5NCw2ICsxOTUsMjQgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6d29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXIK
ICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OldvcmtlclRlcm1pbmF0ZWQoc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpLCAwKTsKIH0KIAordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
Z2V0Q2xpZW50RnJvbUlkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVu
dGlmaWVyLCBHZXRDbGllbnRGcm9tSWRDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGF1dG8g
cmVxdWVzdElkZW50aWZpZXIgPSArK21fcHJldmlvdXNHZXRDbGllbnRJZFJlcXVlc3RJZGVudGlm
aWVyOworICAgIG1fZ2V0Q2xpZW50SWRSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OkdldENsaWVudEZyb21J
ZCB7IHJlcXVlc3RJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY2xpZW50SWRl
bnRpZmllciB9LCAwKTsKK30KKwordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
Z2V0Q2xpZW50RnJvbUlkQ29tcGxldGVkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYgY2xpZW50RGF0YSwg
Ym9vbCBoYXNTZWN1cml0eUVycm9yKQoreworICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9nZXRD
bGllbnRJZFJlcXVlc3RzLnRha2UoY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllcikpIHsKKyAgICAg
ICAgaWYgKGhhc1NlY3VyaXR5RXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlv
biB7IFNlY3VyaXR5RXJyb3IgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZShjbGllbnREYXRhKSk7CisgICAgfQorfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBjOWU2NWE0YWI4MzhiMDM2MDE1NGI4NmIx
NmU3N2MyMDY5ZGUyZWRmLi43NDFkZTg4YTVlZjdmYjY4MmQ2MjhiNThkM2YyYmI1N2FhMTFiZDZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdF
dmVudHMoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpIGZpbmFsOwogICAg
IHZvaWQgd29ya2VyVGVybWluYXRlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikg
ZmluYWw7CisgICAgdm9pZCBnZXRDbGllbnRGcm9tSWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLCBHZXRDbGll
bnRGcm9tSWRDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2
b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSBmaW5hbDsKQEAgLTcw
LDEwICs3MSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3Jr
ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgZ2V0Q2xpZW50
RnJvbUlkQ29tcGxldGVkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJvb2wgaGFzU2Vj
dXJpdHlFcnJvcik7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub1N0
b3JhZ2VQcm9jZXNzOwogICAgIHVpbnQ2NF90IG1fcGFnZUlEIHsgMCB9OwogICAgIHVpbnQ2NF90
IG1fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQgeyAwIH07CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBHZXRDbGllbnRGcm9tSWRDYWxsYmFjaz4gbV9nZXRDbGllbnRJZFJlcXVlc3RzOworICAgIHVp
bnQ2NF90IG1fcHJldmlvdXNHZXRDbGllbnRJZFJlcXVlc3RJZGVudGlmaWVyIHsgMCB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDczNmZkZjViNDcxNzliZTQwZWRhMTJjOWZjNmQ3MjY2
MmMxZDdiYzQuLjc2ZjA1MzY0YzI5NDE0MDdkOGIxYWQ5MDk2NjhhNTQ2NDgxYWVkYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yOSw2
ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIHsKICAg
ICBGaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgRmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllcikKICAgICBUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBHZXRDbGllbnRGcm9tSWRDb21wbGV0ZWQo
dWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBmMTEwMmZjZDU5YzkxOTdjNTNhNDJiMTY3NDZhNDU5ZTZlMjhk
NmM2Li4xMGYwOTIzMDliMmJkNWY0NWM5NGY1NjhhYTg1MDNlYmFjZmM4NzZiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMTcgQEAKIDIwMTctMTEtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtl
ci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlcnZpY2V3b3Jr
ZXJjbGllbnQtZ2V0LXdvcmtlci5qczogQWRkZWQuCisgICAgICAgIChhc3luYyk6CisgICAgICAg
ICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudC1nZXQuaHR0
cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2aWNld29ya2VyY2xpZW50LWdldC5odHRwcy5odG1sOiBBZGRlZC4KKworMjAxNy0x
MS0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKICAgICAgICAgU2Vydmlj
ZVdvcmtlckNsaWVudCBvYmplY3RzIHNob3VsZCBiZSByZXVzZWQgaWYgdGhlcmUgaXMgYWxyZWFk
eSBvbmUgZXhpc3Rpbmcgd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxNDMKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlcnZpY2V3b3Jr
ZXJjbGllbnQtZ2V0LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL3Jlc291cmNlcy9zZXJ2aWNld29ya2VyY2xpZW50LWdldC13b3JrZXIuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTk2MzI5MzQwOGI4NjkxYmY0ZWMxMDU4MjZjMWM0ZjE2MjY0Y2NkMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNl
cy9zZXJ2aWNld29ya2VyY2xpZW50LWdldC13b3JrZXIuanMKQEAgLTAsMCArMSw0MSBAQAordmFy
IGNsaWVudCA9IG51bGw7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBhc3luYyAo
ZXZlbnQpID0+IHsKKyAgICB0cnkgeworICAgICAgICB2YXIgY2xpZW50ID0gZXZlbnQuc291cmNl
OworCisgICAgICAgIGlmICghKGNsaWVudCBpbnN0YW5jZW9mIFdpbmRvd0NsaWVudCkpIHsKKyAg
ICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogY2xpZW50IHNvdXJjZSBp
cyBub3QgYSBXaW5kb3dDbGllbnQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIHZhciByZXRyaWV2ZWRDbGllbnQgPSBhd2FpdCBzZWxmLmNsaWVudHMuZ2V0KGNs
aWVudC5pZCk7CisgICAgICAgIGlmICghcmV0cmlldmVkQ2xpZW50KSB7CisgICAgICAgICAgICBl
dmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIkZBSUw6IGRpZCBub3QgcmV0cmlldmUgYW55IGNsaWVu
dCB0aHJvdWdoIHNlbGYuY2xpZW50cy5nZXQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChyZXRyaWV2ZWRDbGllbnQuaWQgIT09IGNsaWVudC5pZCkgewor
ICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiBjbGllbnQgaWQgaXMg
ZGlmZmVyZW50IGZyb20gcmV0cmlldmVkIGNsaWVudCBpZCB0aHJvdWdoIHNlbGYuY2xpZW50cy5n
ZXQ6ICIgKyBjbGllbnQuaWQgKyAiIC8gIiArIHJldHJpZXZlZENsaWVudC5pZCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAocmV0cmlldmVkQ2xpZW50ICE9
PSBjbGllbnQpIHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDog
Y2xpZW50IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgcmV0cmlldmVkIHRocm91Z2ggc2VsZi5j
bGllbnRzLmdldCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
dmFyIGJhZElkcyA9IFtjbGllbnQuaWQgKyAiMCIsICIwLTAiLCAiMC0iLCAiLSIsICItMCJdOwor
ICAgICAgICBmb3IgKGlkIGluIGJhZElkcykgeworICAgICAgICAgICAgcmV0cmlldmVkQ2xpZW50
ID0gYXdhaXQgc2VsZi5jbGllbnRzLmdldChpZCk7CisgICAgICAgICAgICBpZiAoISFyZXRyaWV2
ZWRDbGllbnQpIHsKKyAgICAgICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIkZB
SUw6IHJldHJpZXZlZCBjbGllbnQgd2l0aCBiYWQgaWQgIiArIGlkICsgIiBzaG91bGQgYmUgbnVs
bCIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiUEFTUyIpOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiByZWNlaXZlZCBl
eGNlcHRpb24gIiArIGUpOworICAgIH0KK30pOworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50LWdldC5odHRwcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2
aWNld29ya2VyY2xpZW50LWdldC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdmMzY2
YjJhMmFjZjVhOWJlZDRkY2YyZmY2NTYzOTBjZTU0YzUzMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnQt
Z2V0Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBUZXN0aW5nIGNs
aWVudHMuZ2V0IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
c2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50LWdldC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudC1nZXQuaHR0cHMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MzRiZGVmNmY1ZjkxY2U1YjUxODFhYzkwODM3Njg0YWJlMzI2ZGNk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2Uvc2VydmljZXdvcmtlcmNsaWVudC1nZXQuaHR0cHMuaHRtbApAQCAtMCwwICsxLDI3IEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCitwcm9taXNlX3Rlc3QoYXN5bmMg
KHRlc3QpID0+IHsKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7
CisgICAgICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCB0ZXN0LnN0ZXBfZnVuYygoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoZXZlbnQuZGF0YSwgIlBBU1MiKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAg
fSkpOworICAgIH0pOworCisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvc2VydmljZXdvcmtlcmNsaWVudC1nZXQt
d29ya2VyLmpzIiwgeyBzY29wZSA6ICIvbm9vbmUiIH0pOworICAgIHZhciB3b3JrZXIgPSByZWdp
c3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgd29ya2VyID0g
cmVnaXN0cmF0aW9uLmFjdGl2ZTsKKyAgICB3b3JrZXIucG9zdE1lc3NhZ2UoInN0YXJ0Iik7CisK
KyAgICBhd2FpdCBwcm9taXNlOworfSwgIlRlc3RpbmcgY2xpZW50cy5nZXQiKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327988</attachid>
            <date>2017-11-30 10:19:52 -0800</date>
            <delta_ts>2017-11-30 10:20:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180167-20171130101951.patch</filename>
            <type>text/plain</type>
            <size>35718</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ4ZjFmNjU0ZWMzOTJmMmE3NjFlZDNl
MjU2MDNhZDBiZWM0MGI1YmIuLmI4YmU4MGYwNTIzMmRhMzIxNDgwN2MxOTEzOTBhY2I0MmY0ZGM5
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTEtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RG
OjpTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdCBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisKIDIwMTctMTEtMjkgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdURiAvIGJtYWxsb2M6IGRvbid0IHdyaXRlIHRvIDB4YmJhZGJlZWYg
d2hlbiBBU0FOIGlzIGxvb2tpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkOTFhZWIyZDZjOTMyNjUwYzQ2NDAy
MWU3ZTMwNjk1YWFiMGQwMDU5Li5hODY3NDk0MmQyZjIyNWQ1OWMzYTk4ZGRiOGZkNDNiYWY5ZWIz
NmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTctMTEtMjkgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5n
aXRodWIuaW8vU2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy5odG1sCisKKyAgICAgICAgSW1wbGVt
ZW50IGNsaWVudHMgZ2V0IGJ5IGhhdmluZyBzZXJ2aWNlIHdvcmtlciBjbGllbnRzIGRvIHRoZSBm
b2xsb3dpbmc6CisgICAgICAgIC0gR28gdG8gbWFpbiB0aHJlYWQgdG8gcXVlcnkgdGhlIFNXQ2xp
ZW50Q29ubmVjdGlvbiBmb3IgZ2V0dGluZyB0aGUgY2xpZW50LgorICAgICAgICAtIFNXQ2xpZW50
Q29ubmVjdGlvbiByZXF1ZXN0cyBpdCB0aHJvdWdoIElQQyB0byBTdG9yYWdlUHJvY2VzcyBTV1Nl
cnZlci4KKyAgICAgICAgLSBTV1NlcnZlciBsb29rcyBhdCBpdHMgY2xpZW50IG1hcCBhbmQgcmV0
dXJucyBjbGllbnQgZGF0YSBiYXNlZCBvbiB0aGUgZ2l2ZW4gaWRlbnRpZmllci4KKyAgICAgICAg
LSBTV0NsaWVudENvbm5lY3Rpb24gc2VuZHMgaXQgYmFjayB0byB0aGUgcmlnaHQgY2xpZW50cyBm
b3IgcmVzb2x2aW5nIHRoZSBwcm9taXNlLgorCisgICAgICAgIElkZW50aWZpZXIgaXMgcGFyc2Vk
IGF0IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgbGV2ZWwuCisKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpmcm9tU3RyaW5nKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudHM6OlNlcnZpY2VXb3JrZXJDbGllbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRzOjpnZXQpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudHM6OmNyZWF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5h
Z2VyOjpwb3N0VGFza1RvU2VydmljZVdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmdldENsaWVu
dEZyb21JZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
Y2xpZW50RnJvbUlkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6Om9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y2xpZW50RnJv
bUlkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6
CisKIDIwMTctMTEtMzAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtDb29yZEdyYXBoaWNzXSBNb3ZlIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBwYWlu
dGluZyBiZWhpbmQgTmljb3NpYTo6UGFpbnRpbmdFbmdpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmRjN2U2Mzg3
N2NiNjc1ZGI5MzA4Yzg4MjcxNDMyMjI1Yjk4YWI4Yi4uN2QyNmQ1YWM4OTBiM2Q2YmM2NjU5YzM0
OTM0NTM3MTg3YWU5MDYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0xMS0yOSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNjbGllbnRzLWdldAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIElQQyBwbHVtYmVyeSBm
b3IgY2xpZW50RnJvbUlkIGJldHdlZW4gU2VydmljZVdvcmtlciBwcm9jZXNzIGFuZCBTdG9yYWdl
IHByb2Nlc3MuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y2xpZW50RnJvbUlkQ29tcGxldGVkKToKKyAgICAgICAg
KiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbGllbnRGcm9tSWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xpZW50RnJvbUlkQ29t
cGxldGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIwMTctMTEtMzAgIFphbiBEb2JlcnNl
ayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDb29yZEdyYXBoaWNzXSBNb3Zl
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBwYWludGluZyBiZWhpbmQgTmljb3NpYTo6UGFpbnRp
bmdFbmdpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNDhmNzhkZDRmODQxNzMxYzY2
NDk5NzQwODg2ODZmYmFhZDI1OGU0OS4uYzg4MTE4YjY2N2EzMjYwYjBhNWM0NWRhMjg3YmEyNThi
NmIyYmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CkBAIC0xNDYsNiArMTQ3LDcgQEAgcHVibGljOgogICAgIGludCB0b0ludCgp
IGNvbnN0OwogICAgIGludCB0b0ludChib29sJiBpc1ZhbGlkKSBjb25zdDsKICAgICBpbnQgdG9J
bnRTdHJpY3QoYm9vbCYgaXNWYWxpZCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gdG9VSW50NjRTdHJpY3QoKSBjb25zdDsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wmIGlzVmFs
aWQpIGNvbnN0OwogCiAgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZShjb25zdCBTdHJpbmdJbXBs
Jik7CkBAIC01MjMsNiArNTI1LDEzIEBAIGlubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnRTdHJp
Y3QoYm9vbCYgaXNWYWxpZCkgY29uc3QKICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0
KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwogfQogCitpbmxpbmUgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gU3RyaW5nVmlldzo6dG9VSW50NjRTdHJpY3QoKSBjb25zdAorewor
ICAgIGJvb2wgaXNWYWxpZDsKKyAgICB1aW50NjRfdCByZXN1bHQgPSBpczhCaXQoKSA/IGNoYXJh
Y3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpIDog
Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFs
aWQpOworICAgIHJldHVybiBpc1ZhbGlkID8gc3RkOjptYWtlX29wdGlvbmFsKHJlc3VsdCkgOiBz
dGQ6Om51bGxvcHQ7Cit9CisKIGlubGluZSBTdHJpbmcgU3RyaW5nVmlldzo6dG9TdHJpbmdXaXRo
b3V0Q29weWluZygpIGNvbnN0CiB7CiAgICAgaWYgKGlzOEJpdCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKaW5kZXggYzhhNGRkNmZhNDkwYTZlODRkNzk1NzUzYTYyOWUzMGQ1OWVlNThhYy4uZDJi
OTliZjI1ZTNjODEwMWQzODM4NTQ4ZTNjZDBiOTlkYWQ5MDk5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCkBAIC00Niw4ICs0Niw4IEBAIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB1bnNpZ25lZCBj
aGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sCiBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKIGludDY0X3Qg
Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0
KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTAp
OwotdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotdWludDY0X3QgY2hhcmFjdGVy
c1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIs
IGludCBiYXNlID0gMTApOworV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHVpbnQ2NF90IGNoYXJhY3Rl
cnNUb1VJbnQ2NFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRy
LCBpbnQgYmFzZSA9IDEwKTsKK1dURl9FWFBPUlRfU1RSSU5HX0FQSSB1aW50NjRfdCBjaGFyYWN0
ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0
ciwgaW50IGJhc2UgPSAxMCk7CiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29u
c3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiBp
bnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJv
b2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyLmgKaW5kZXggNjI4NTVkNTRiY2M3MDE5MTdkMWI4ZmIyNGEzOTc2M2RkM2FiNTZhOC4uNjJh
Yzg1ZTYwMDBhYzMwZGJjZWY3ZjUwZjU2OWNhZjdmYTc5OTJiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyIHsKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgdG9T
dHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmc6Om51bWJlcihzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllci50b1VJbnQ2NCgpKSArICItIiArICBTdHJpbmc6Om51bWJlcihjb250ZXh0SWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyPiBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNTAsNiArNTEsMjMgQEAgaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYg
YSwgY29uc3QgU2VydmljZVdvcmsKICAgICByZXR1cm4gYS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciA9PSBiLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyICYmICBhLmNvbnRleHRJZGVudGlm
aWVyID09IGIuY29udGV4dElkZW50aWZpZXI7CiB9CiAKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyOworCisgICAgdW5zaWduZWQgY291bnRl
ciA9IDA7CisgICAgZm9yIChhdXRvIGl0ZW0gOiBTdHJpbmdWaWV3IHsgc3RyaW5nIH0uc3BsaXQo
Jy0nKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBpdGVtLnRvVUludDY0U3RyaWN0KCk7
CisgICAgICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIGlmICghY291bnRlcisrKQorICAgICAgICAgICAgY2xpZW50SWRlbnRpZmll
ci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihpZGVudGlmaWVyLnZhbHVlKCkpOworICAgICAg
ICBlbHNlIGlmIChjb3VudGVyID09IDIpCisgICAgICAgICAgICBjbGllbnRJZGVudGlmaWVyLmNv
bnRleHRJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8RG9jdW1lbnRJZGVudGlmaWVy
VHlwZT4oaWRlbnRpZmllci52YWx1ZSgpKTsKKyAgICB9CisgICAgcmV0dXJuIChjb3VudGVyID09
IDIpID8gc3RkOjptYWtlX29wdGlvbmFsKFdURk1vdmUoY2xpZW50SWRlbnRpZmllcikpIDogc3Rk
OjpudWxsb3B0OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnRzLmNwcAppbmRleCBhMTQ1NTdlNmM0NDA4NzNkMTc3ZTdjOTZhZmFlYTI1OGM5ODMzYTBl
Li4wM2JkMjFkN2Y1YzhkMTQ3NmI4N2FhYjEwYzBjZjA1MDdjMzE5OGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5j
cHAKQEAgLTI5LDEwICsyOSwxMiBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRzLmgi
CiAKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkpTU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VXb3JrZXJDbGllbnRzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorU2Vydmlj
ZVdvcmtlckNsaWVudHM6OlNlcnZpY2VXb3JrZXJDbGllbnRzKFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSYgY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKIHsKICAgICBz
dXNwZW5kSWZOZWVkZWQoKTsKQEAgLTQ4LDEwICs1MCw3MiBAQCBib29sIFNlcnZpY2VXb3JrZXJD
bGllbnRzOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKICAgICByZXR1
cm4gIWhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRz
OjpnZXRDb21wbGV0ZWQoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwg
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYgY2xp
ZW50RGF0YSwgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlUmVmZXJlbmNlKQoreworICAgIGF1dG8g
cHJvbWlzZSA9IG1fcGVuZGluZ1Byb21pc2VzLnRha2UocHJvbWlzZVJlZmVyZW5jZSk7CisgICAg
aWYgKCFwcm9taXNlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY2xpZW50RGF0YS5oYXNF
eGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLnZhbHVlKCktPnJlamVjdChjbGllbnREYXRh
LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBk
YXRhID0gY2xpZW50RGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBpZiAoIWRhdGEpIHsK
KyAgICAgICAgcHJvbWlzZS52YWx1ZSgpLT5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBwcm9taXNlLnZhbHVlKCktPnJl
c29sdmU8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJDbGllbnQ+PihTZXJ2aWNlV29ya2VyQ2xp
ZW50OjpnZXRPckNyZWF0ZShjb250ZXh0LCBpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEudmFsdWUo
KSkpKTsKK30KKworc3RhdGljIGlubGluZSBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPj4gaXNvbGF0ZWRFeGNlcHRpb25PckNsaWVudERhdGEoY29uc3Qg
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiB2YWx1
ZSkKK3sKKyAgICBpZiAodmFsdWUuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB2YWx1
ZS5leGNlcHRpb24oKS5pc29sYXRlZENvcHkoKTsKKworICAgIGF1dG8gY2xpZW50RGF0YSA9IHZh
bHVlLnJldHVyblZhbHVlKCk7CisgICAgaWYgKGNsaWVudERhdGEpCisgICAgICAgIGNsaWVudERh
dGEgPSBjbGllbnREYXRhLT5pc29sYXRlZENvcHkoKTsKKworICAgIHJldHVybiBXVEZNb3ZlKGNs
aWVudERhdGEpOworfQorCitzdHJ1Y3QgR2V0UmVxdWVzdFN0YXRlIHsKKyAgICBTZXJ2aWNlV29y
a2VyQ2xpZW50cyYgY2xpZW50czsKKyAgICBSZWY8QWN0aXZlRE9NT2JqZWN0OjpQZW5kaW5nQWN0
aXZpdHk8U2VydmljZVdvcmtlckNsaWVudHM+PiBwcm90ZWN0aW5nQ2xpZW50czsKKyAgICBEZWZl
cnJlZFByb21pc2UmIHByb21pc2U7CisgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcjsKK307CisKIHZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6OmdldChjb25zdCBTdHJpbmcm
IGlkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGlkKTsKLSAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiY2xpZW50cy5nZXQoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH0pOwor
ICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFj
b250ZXh0KSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2xpZW50SWRl
bnRpZmllciA9IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGlkKTsK
KyAgICBpZiAoIWNsaWVudElkZW50aWZpZXIpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYgc2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCk7Cisg
ICAgR2V0UmVxdWVzdFN0YXRlIHN0YXRlIHsgKnRoaXMsIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRo
aXMpLCBwcm9taXNlLCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkuaWRlbnRpZmll
cigpIH07CisKKyAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQoV1RGTW92ZShwcm9taXNlKSk7CisK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtzdGF0ZSA9IFdURk1vdmUoc3RhdGUpLCBjbGllbnRJZGVu
dGlmaWVyID0gY2xpZW50SWRlbnRpZmllci52YWx1ZSgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
YXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpOworICAgICAgICBjb25uZWN0aW9uLT5jbGllbnRGcm9tSWQoc3RhdGUuaWRlbnRpZmllciwg
Y2xpZW50SWRlbnRpZmllciwgW3N0YXRlID0gV1RGTW92ZShzdGF0ZSksIGNsaWVudElkZW50aWZp
ZXJdIChhdXRvJiYgY2xpZW50RGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzdGF0ZS5pZGVudGlm
aWVyLCBbc3RhdGUgPSBXVEZNb3ZlKHN0YXRlKSwgY2xpZW50SWRlbnRpZmllciwgY2xpZW50RGF0
YSA9IGlzb2xhdGVkRXhjZXB0aW9uT3JDbGllbnREYXRhKGNsaWVudERhdGEpXSAoYXV0byYpIG11
dGFibGUgeworICAgICAgICAgICAgICAgIHN0YXRlLmNsaWVudHMuZ2V0Q29tcGxldGVkKGNsaWVu
dElkZW50aWZpZXIsIFdURk1vdmUoY2xpZW50RGF0YSksIHN0YXRlLnByb21pc2UpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJD
bGllbnRzOjptYXRjaEFsbChjb25zdCBDbGllbnRRdWVyeU9wdGlvbnMmLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCkBAIC03MCw2ICsxMzQsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
Q2xpZW50czo6Y2xhaW0oUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIHByb21p
c2UtPnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJj
bGllbnRzLmNsYWltKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9KTsKIH0KIAordm9pZCBTZXJ2
aWNlV29ya2VyQ2xpZW50czo6c3RvcCgpCit7CisgICAgbV9wZW5kaW5nUHJvbWlzZXMuY2xlYXIo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudHMuaAppbmRleCA3NGJiYjdmMDRmMWExYzFiODQyYjBjODE4YmEzMWNm
OGEyOTdhYTUxLi41YWI3YWE3NGI3ODhlNDAwOGFhZmE0ZDFjNTI1NGJlOTJiMGNlZWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVu
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuaApAQCAtMjgsMTcgKzI4LDIxIEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
CiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERlZmVycmVkUHJv
bWlzZTsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcjsKK2NsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKIAot
Y2xhc3MgU2VydmljZVdvcmtlckNsaWVudHMgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29y
a2VyQ2xpZW50cz4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworY2xhc3MgU2VydmljZVdvcmtl
ckNsaWVudHMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckNsaWVu
dHM+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNl
cnZpY2VXb3JrZXJDbGllbnRzPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkKKyAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRzPiBjcmVhdGUoU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlJiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2VydmljZVdvcmtlckNsaWVudHMoY29udGV4dCkpOwogICAgIH0KQEAgLTU0LDExICs1
OCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGFpbShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsK
IAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VyQ2xpZW50cyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jik7CisgICAgZXhwbGljaXQgU2VydmljZVdvcmtlckNsaWVudHMoU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlJik7CisKKyAgICB2b2lkIGdldENvbXBsZXRlZChTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllciwgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YT4+JiYsIERlZmVycmVkUHJvbWlzZSYpOwogCiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKworICAgIEhhc2hTZXQ8UmVmPERlZmVycmVkUHJv
bWlzZT4+IG1fcGVuZGluZ1Byb21pc2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCBlZGM3NGIxYzE1OTAxMGIxMGNlNTliZmY3NTA1YWE5
OTBkZWFkZGYxLi40MWE5ZjBhZDBmMWNkMjczOGJkOTUxMjk4MjlhOTQyNGJkOTUwOGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTA2LDYgKzEwNiwxMiBAQCB2b2lkIFNXQ29udGV4dE1h
bmFnZXI6OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIH0pOwogfQogCit2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnBvc3RUYXNrVG9TZXJ2aWNl
V29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2smJiB0YXNrKQoreworICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2VyID0g
bV93b3JrZXJNYXAuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICBzZXJ2aWNlV29ya2VyLT50aHJl
YWQoKS5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggMmNmOGFiMzcwZjYy
NzZhZTk1ZWUxMGMzNjE0Yzg5ZDBkZDA5Y2VjMy4uOGFlMTVjZmZlNGZkOGI3OWY1NzIzMTdkNWRm
NTQ1ZGFjNDE2NWEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC01MSw2ICs1Miw5IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3b3Jr
ZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CisKKyAgICAgICAgdXNp
bmcgQ2xpZW50RnJvbUlkQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhj
ZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYpPjsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGNsaWVudEZyb21JZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIENsaWVudEZyb21JZENhbGxiYWNrJiYpID0g
MDsKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6
dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKQEAgLTYzLDYgKzY3LDggQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdFRhc2tUb1Nl
cnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2smJik7CisKIHByaXZhdGU6CiAgICAgU1dDb250ZXh0TWFuYWdlcigpID0gZGVmYXVs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcAppbmRleCA2ZDU2NDg4ZjlmYTIzYzYwNzRlNDk3ZTUzOWI2ZjIwOGI2ODA0NjlhLi4w
OTA3NDNmNDliM2ZiZTc3ODcxOTQ2ZTQyMGE1N2Q3ZWRiZmY0Y2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMzA1LDYg
KzMwNSwxNiBAQCB2b2lkIFNXU2VydmVyOjp3b3JrZXJDb250ZXh0VGVybWluYXRlZChTV1NlcnZl
cldvcmtlciYgd29ya2VyKQogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogfQog
CitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZlcjo6Y2xpZW50
RnJvbUlkKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8gY2xpZW50cyA9IG1fY2xpZW50
cy5nZXQob3JpZ2luKTsKKyAgICBhdXRvIHBvc2l0aW9uID0gY2xpZW50cy5maW5kTWF0Y2hpbmco
WyZdIChjb25zdCBhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgcmV0dXJuIGNsaWVudElkZW50aWZp
ZXIgPT0gY2xpZW50LmlkZW50aWZpZXI7CisgICAgfSk7CisKKyAgICByZXR1cm4gKHBvc2l0aW9u
ICE9IG5vdEZvdW5kKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChjbGllbnRzW3Bvc2l0aW9uXS5kYXRh
KSA6IHN0ZDo6bnVsbG9wdDsKK30KKwogdm9pZCBTV1NlcnZlcjo6ZGlkUmVzb2x2ZVJlZ2lzdHJh
dGlvblByb21pc2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQogewogICAgIEFTU0VSVF9VTlVTRUQoY29u
bmVjdGlvbiwgbV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5o
CmluZGV4IDVmMzM4ZjZjMmE5N2I1MTAyMzAzZjA2ZTg5NWJiZDk3NmM0ODUxMGEuLjJiMjM4MjQz
M2YyMDZkYTcyYWQ1YTQyN2M4ODJmYjYxNTY1YTk3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTEzNSw2ICsxMzUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNXU2VydmVyV29ya2VyJiwgYm9vbCB3YXNT
dWNjZXNzZnVsKTsKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJXb3JrZXIm
KTsKICAgICB2b2lkIHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKFNXU2VydmVyV29ya2VyJik7Cisg
ICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gY2xpZW50RnJvbUlkKGNv
bnN0IENsaWVudE9yaWdpbiYsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBiZTg1
YjM5ZjY2MWM2NjVlNGYxMTEwZTA0ZTRjYjQxYjU1Y2NmOTBhLi5lNjc3MGM3YWY1MzU5ZmY0MTYx
YjAyZTJhMWE4N2ZlYzU4ZDUwN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwCkBAIC0xMDgsNiArMTA4LDEyIEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpCiAg
ICAgICAgIHdvcmtlci0+Y29udGV4dFRlcm1pbmF0ZWQoKTsKIH0KIAordm9pZCBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OmNsaWVudEZyb21JZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkKQoreworICAgIGlmIChhdXRvKiB3b3Jr
ZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bigpLT5jbGllbnRGcm9tSWRDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHdvcmtlci0+Y2xp
ZW50RnJvbUlkKGNsaWVudElkKSwgZmFsc2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAppbmRleCA0YTE1MmYyMmI4MmFmMzNkZmNmNGYzZWE1NWVlZjU4MGY0
ZmRiNWViLi4wZjRiZWIwNzM0YTFhNGViNjNkYzkxNTM0MDQ3Y2M5MTA3M2ZiZTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTM0LDYgKzM0LDggQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1dTZXJ2ZXI7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNs
aWVudERhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBzdHJ1Y3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllcjsKIApAQCAtNDgsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZp
cmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNsaWVudEZyb21JZENvbXBsZXRlZCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpID0gMDsKIAogICAgIC8vIE1lc3NhZ2VzIGJhY2sg
ZnJvbSB0aGUgU1cgaG9zdCBwcm9jZXNzCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRD
b250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcj4mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKQEAgLTU2LDYgKzU5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpZW50RnJvbUlkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVz
dElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllcik7CiAKICAgICBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBj
b25uZWN0aW9uRm9ySWRlbnRpZmllcihTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCAxZjBiMWRjZWM0YzQwNWU0N2Y2MWY4NjBmZjRh
MTA5ZmRhNDQ0ODBmLi5mMmU3NjVmNzMwMmQ4YzNmYWZiZmMyNGRiM2QyMjFiZmE1NzVkODJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcApAQCAtNjUsNiArNjUsMTQgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6
dGVybWluYXRlKCkKICAgICBtX3NlcnZlci50ZXJtaW5hdGVXb3JrZXIoKnRoaXMpOwogfQogCitj
b25zdCBDbGllbnRPcmlnaW4mIFNXU2VydmVyV29ya2VyOjpvcmlnaW4oKSBjb25zdAoreworICAg
IGlmICghbV9vcmlnaW4pCisgICAgICAgIG1fb3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgbV9yZWdp
c3RyYXRpb25LZXkudG9wT3JpZ2luKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9kYXRhLnNjcmlwdFVSTCkpIH07CisKKyAg
ICByZXR1cm4gKm1fb3JpZ2luOworfQorCiB2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250
ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7
CiAgICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoam9iRGF0YUlkZW50aWZp
ZXIsICp0aGlzLCBtZXNzYWdlKTsKQEAgLTkwLDYgKzk4LDExIEBAIHZvaWQgU1dTZXJ2ZXJXb3Jr
ZXI6OmNvbnRleHRUZXJtaW5hdGVkKCkKICAgICBtX3NlcnZlci53b3JrZXJDb250ZXh0VGVybWlu
YXRlZCgqdGhpcyk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+
IFNXU2VydmVyV29ya2VyOjpjbGllbnRGcm9tSWQoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIgY2xpZW50SWQpCit7CisgICAgcmV0dXJuIG1fc2VydmVyLmNsaWVudEZyb21JZChvcmlnaW4o
KSwgY2xpZW50SWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggYzMwZDQ1OWZlNzNjZjk2ZTVk
MmYwNDZkMzMzYzkyNmU4N2M2MTg4NC4uOWNjNmYzOGVhNjlhYWRiYjI1ZDIyMTdkM2IyMTk5MDUz
ZWIyZDg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMzYsMTAgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorc3RydWN0IENsaWVudE9yaWdpbjsKIGNsYXNzIFNXU2VydmVyOwogY2xhc3Mg
U1dTZXJ2ZXJSZWdpc3RyYXRpb247Ci1lbnVtIGNsYXNzIFdvcmtlclR5cGU7CitzdHJ1Y3QgU2Vy
dmljZVdvcmtlckNsaWVudERhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyOworZW51bSBjbGFzcyBX
b3JrZXJUeXBlOwogCiBjbGFzcyBTV1NlcnZlcldvcmtlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxTV1NlcnZlcldvcmtlcj4gewogcHVibGljOgpAQCAtNzMsMTAgKzc2LDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKICAgICB2
b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oKTsKICAgICB2b2lkIGNvbnRleHRUZXJtaW5hdGVkKCk7
CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gY2xpZW50RnJvbUlk
KFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTV1NlcnZlcldvcmtlciogZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKIAogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJEYXRhJiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4o
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2Vy
dmVyUmVnaXN0cmF0aW9uJiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKQEAgLTg3LDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29y
a2VyRGF0YSBtX2RhdGE7CiAgICAgU3RyaW5nIG1fc2NyaXB0OwogICAgIGJvb2wgbV9oYXNQZW5k
aW5nRXZlbnRzIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3Jp
Z2luPiBtX29yaWdpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMjRlNGFk
YWUxYzJkOTM3OGE4M2YyNzE4ZDA5YTMyMzg4NjkyMjZmMC4uOTNhYjI0ZDUxYmE5NjNhMjNjNGRi
Yzg2ZTRlY2M2MzI0NzRiNWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTc2LDYgKzc2LDExIEBAIHZvaWQgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VyCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlRlcm1pbmF0ZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOwogfQogCit2b2lk
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y2xpZW50RnJvbUlkQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiYgZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbGllbnRGcm9tSWRDb21w
bGV0ZWQgeyByZXF1ZXN0SWRlbnRpZmllciwgZGF0YSwgaGFzU2VjdXJpdHlFcnJvciB9KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
aW5kZXggYjViODc0OTA2ZTFmYmNmNDVjYzI5M2M0Y2FhMTQ3YmMzZjQ2NzI5OS4uZWE5OTk5NzU0
MjA3MDM4YjA3YWE0MzhhNmNiMDQ0MDhmMzRkOTU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTksNiArNTksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikgZmluYWw7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgY2xpZW50RnJvbUlk
Q29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJv
cikgZmluYWw7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2lwY0Nvbm5lY3Rpb247CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA4YjIzNDc4YjI2YTkwMGY2ODNkNzJkYTFlMGM0ZGU2
MmExOTI4MDkxLi5iMzRlNTIzMTZiMGQ1ZjkzNmVhYmYzYWIyY2U5MTkwMDRlODA2ZjE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uIHsKICAgICBEaWRGaW5pc2hBY3RpdmF0aW9uKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpOwogICAgIFNldFNlcnZpY2VXb3JrZXJI
YXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7CiAgICAgV29ya2VyVGVybWluYXRlZChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKKyAgICBDbGllbnRGcm9tSWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcik7CiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5k
ZXggYzBjZWRhMTgxN2NlZjE1MTgxMzFlNmIyNDEwMmY3YTYyYTU4NGJlZi4uNDg5MGE4MzUxOTYx
YjVhMzdjZDdkMjQ2NjE2NmU2ZDJiZTJiMjkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNvbmZp
Z3VyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgog
CkBAIC0xOTQsNiArMTk1LDI0IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OndvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VyCiAgICAgbV9jb25u
ZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpXb3JrZXJUZXJtaW5hdGVkKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwg
MCk7CiB9CiAKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsaWVudEZyb21J
ZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgQ2xpZW50
RnJvbUlkQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvIHJlcXVlc3RJZGVudGlmaWVy
ID0gKyttX3ByZXZpb3VzUmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9jbGllbnRGcm9tSWRSZXF1
ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX2Nv
bm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OkNsaWVudEZyb21JZCB7IHJlcXVlc3RJZGVudGlmaWVyLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciB9LCAwKTsKK30KKwordm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xpZW50RnJvbUlkQ29tcGxldGVkKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
PiYmIGNsaWVudERhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKK3sKKyAgICBpZiAoYXV0byBj
YWxsYmFjayA9IG1fY2xpZW50RnJvbUlkUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikp
IHsKKyAgICAgICAgaWYgKGhhc1NlY3VyaXR5RXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
KEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjbGllbnREYXRhKSk7CisgICAgfQorfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBjOWU2NWE0YWI4MzhiMDM2
MDE1NGI4NmIxNmU3N2MyMDY5ZGUyZWRmLi4zZTAyY2UzZTdjNDlkN2NiMTQxNjU5MjJjMzE3YmY2
YjljZmFmYTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTYxLDYgKzYx
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckhh
c1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpIGZp
bmFsOwogICAgIHZvaWQgd29ya2VyVGVybWluYXRlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllcikgZmluYWw7CisgICAgdm9pZCBjbGllbnRGcm9tSWQoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLCBD
bGllbnRGcm9tSWRDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAg
ICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSBmaW5hbDsKQEAg
LTcwLDEwICs3MSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVu
dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCB0ZXJtaW5hdGVX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgY2xpZW50
RnJvbUlkQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmLCBib29sIGhhc1NlY3VyaXR5RXJy
b3IpOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJv
Y2VzczsKICAgICB1aW50NjRfdCBtX3BhZ2VJRCB7IDAgfTsKICAgICB1aW50NjRfdCBtX3ByZXZp
b3VzU2VydmljZVdvcmtlcklEIHsgMCB9OworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ2xpZW50
RnJvbUlkQ2FsbGJhY2s+IG1fY2xpZW50RnJvbUlkUmVxdWVzdHM7CisgICAgdWludDY0X3QgbV9w
cmV2aW91c1JlcXVlc3RJZGVudGlmaWVyIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmlu
ZGV4IDczNmZkZjViNDcxNzliZTQwZWRhMTJjOWZjNmQ3MjY2MmMxZDdiYzQuLmJhZDhjNmVmZjdi
MzU4ZDViZmJhNmQxZmViMmQ5YjlkZmRhYTdjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yOSw2ICsyOSw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIHsKICAgICBGaXJlSW5zdGFsbEV2ZW50KFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgRmlyZUFjdGl2
YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICBUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKKyAgICBDbGllbnRGcm9tSWRDb21wbGV0ZWQodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0
SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YT4gZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZTg1
NmE4ZTcwYjQwOTYyYzNlZWQ1MjI3NDgyZTM5YzMwZTFkNzI5Li4xNDRlMjM3MDk0N2UwM2JhNjc2
MTg3OTExMGE3ZjE3MzE3NjRlNDg5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTEtMjkg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBo
dHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC13b3JrZXIuanM6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3Jr
ZXJjbGllbnRzLWdldC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy5odG1s
OiBBZGRlZC4KKwogMjAxNy0xMS0zMCAgTXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS10gRW5hYmxlIGFsbCB3cHQgdG91Y2gtZXZlbnRzIHRlc3RzLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlcnZp
Y2V3b3JrZXJjbGllbnRzLWdldC13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0LXdvcmtlci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hOTYzMjkzNDA4Yjg2OTFiZjRlYzEwNTgyNmMxYzRmMTYyNjRjY2QxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC13b3JrZXIuanMKQEAgLTAsMCArMSw0
MSBAQAordmFyIGNsaWVudCA9IG51bGw7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2Ui
LCBhc3luYyAoZXZlbnQpID0+IHsKKyAgICB0cnkgeworICAgICAgICB2YXIgY2xpZW50ID0gZXZl
bnQuc291cmNlOworCisgICAgICAgIGlmICghKGNsaWVudCBpbnN0YW5jZW9mIFdpbmRvd0NsaWVu
dCkpIHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogY2xpZW50
IHNvdXJjZSBpcyBub3QgYSBXaW5kb3dDbGllbnQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIHZhciByZXRyaWV2ZWRDbGllbnQgPSBhd2FpdCBzZWxmLmNsaWVu
dHMuZ2V0KGNsaWVudC5pZCk7CisgICAgICAgIGlmICghcmV0cmlldmVkQ2xpZW50KSB7CisgICAg
ICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIkZBSUw6IGRpZCBub3QgcmV0cmlldmUg
YW55IGNsaWVudCB0aHJvdWdoIHNlbGYuY2xpZW50cy5nZXQiKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXRyaWV2ZWRDbGllbnQuaWQgIT09IGNsaWVu
dC5pZCkgeworICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiBjbGll
bnQgaWQgaXMgZGlmZmVyZW50IGZyb20gcmV0cmlldmVkIGNsaWVudCBpZCB0aHJvdWdoIHNlbGYu
Y2xpZW50cy5nZXQ6ICIgKyBjbGllbnQuaWQgKyAiIC8gIiArIHJldHJpZXZlZENsaWVudC5pZCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAocmV0cmlldmVk
Q2xpZW50ICE9PSBjbGllbnQpIHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2Fn
ZSgiRkFJTDogY2xpZW50IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgcmV0cmlldmVkIHRocm91
Z2ggc2VsZi5jbGllbnRzLmdldCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgdmFyIGJhZElkcyA9IFtjbGllbnQuaWQgKyAiMCIsICIwLTAiLCAiMC0iLCAiLSIs
ICItMCJdOworICAgICAgICBmb3IgKGlkIGluIGJhZElkcykgeworICAgICAgICAgICAgcmV0cmll
dmVkQ2xpZW50ID0gYXdhaXQgc2VsZi5jbGllbnRzLmdldChpZCk7CisgICAgICAgICAgICBpZiAo
ISFyZXRyaWV2ZWRDbGllbnQpIHsKKyAgICAgICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1l
c3NhZ2UoIkZBSUw6IHJldHJpZXZlZCBjbGllbnQgd2l0aCBiYWQgaWQgIiArIGlkICsgIiBzaG91
bGQgYmUgbnVsbCIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiUEFTUyIpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiBy
ZWNlaXZlZCBleGNlcHRpb24gIiArIGUpOworICAgIH0KK30pOworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1n
ZXQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jN2YzNjZiMmEyYWNmNWE5YmVkNGRjZjJmZjY1NjM5MGNlNTRjNTMzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdv
cmtlcmNsaWVudHMtZ2V0Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFT
UyBUZXN0aW5nIGNsaWVudHMuZ2V0IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGll
bnRzLWdldC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliYmZiYTM4Y2NlZjdmMGQ5ZTY4MzdlODQ3
OWJiYjZmOTUyMWM2ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMuaHRtbApAQCAt
MCwwICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCitwcm9t
aXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNl
KChyZXNvbHZlKSA9PiB7CisgICAgICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCB0ZXN0LnN0ZXBfZnVuYygoZXZlbnQpID0+IHsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuZGF0YSwgIlBBU1MiKTsKKyAgICAgICAgICAgIHJlc29s
dmUoKTsKKyAgICAgICAgfSkpOworICAgIH0pOworCisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3
YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvc2VydmljZXdv
cmtlcmNsaWVudHMtZ2V0LXdvcmtlci5qcyIsIHsgc2NvcGUgOiAiL25vb25lIiB9KTsKKyAgICB2
YXIgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgaWYgKCF3b3JrZXIpCisg
ICAgICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5hY3RpdmU7CisgICAgd29ya2VyLnBvc3RNZXNz
YWdlKCJzdGFydCIpOworCisgICAgYXdhaXQgcHJvbWlzZTsKK30sICJUZXN0aW5nIGNsaWVudHMu
Z2V0Iik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327989</attachid>
            <date>2017-11-30 10:20:09 -0800</date>
            <delta_ts>2017-11-30 10:22:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180167-20171130102008.patch</filename>
            <type>text/plain</type>
            <size>35718</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ4ZjFmNjU0ZWMzOTJmMmE3NjFlZDNl
MjU2MDNhZDBiZWM0MGI1YmIuLmI4YmU4MGYwNTIzMmRhMzIxNDgwN2MxOTEzOTBhY2I0MmY0ZGM5
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTEtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RG
OjpTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdCBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisKIDIwMTctMTEtMjkgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdURiAvIGJtYWxsb2M6IGRvbid0IHdyaXRlIHRvIDB4YmJhZGJlZWYg
d2hlbiBBU0FOIGlzIGxvb2tpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkOTFhZWIyZDZjOTMyNjUwYzQ2NDAy
MWU3ZTMwNjk1YWFiMGQwMDU5Li5hODY3NDk0MmQyZjIyNWQ1OWMzYTk4ZGRiOGZkNDNiYWY5ZWIz
NmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTctMTEtMjkgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5n
aXRodWIuaW8vU2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy5odG1sCisKKyAgICAgICAgSW1wbGVt
ZW50IGNsaWVudHMgZ2V0IGJ5IGhhdmluZyBzZXJ2aWNlIHdvcmtlciBjbGllbnRzIGRvIHRoZSBm
b2xsb3dpbmc6CisgICAgICAgIC0gR28gdG8gbWFpbiB0aHJlYWQgdG8gcXVlcnkgdGhlIFNXQ2xp
ZW50Q29ubmVjdGlvbiBmb3IgZ2V0dGluZyB0aGUgY2xpZW50LgorICAgICAgICAtIFNXQ2xpZW50
Q29ubmVjdGlvbiByZXF1ZXN0cyBpdCB0aHJvdWdoIElQQyB0byBTdG9yYWdlUHJvY2VzcyBTV1Nl
cnZlci4KKyAgICAgICAgLSBTV1NlcnZlciBsb29rcyBhdCBpdHMgY2xpZW50IG1hcCBhbmQgcmV0
dXJucyBjbGllbnQgZGF0YSBiYXNlZCBvbiB0aGUgZ2l2ZW4gaWRlbnRpZmllci4KKyAgICAgICAg
LSBTV0NsaWVudENvbm5lY3Rpb24gc2VuZHMgaXQgYmFjayB0byB0aGUgcmlnaHQgY2xpZW50cyBm
b3IgcmVzb2x2aW5nIHRoZSBwcm9taXNlLgorCisgICAgICAgIElkZW50aWZpZXIgaXMgcGFyc2Vk
IGF0IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgbGV2ZWwuCisKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpmcm9tU3RyaW5nKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudHM6OlNlcnZpY2VXb3JrZXJDbGllbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRzOjpnZXQpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudHM6OmNyZWF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5h
Z2VyOjpwb3N0VGFza1RvU2VydmljZVdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmdldENsaWVu
dEZyb21JZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
Y2xpZW50RnJvbUlkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6Om9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y2xpZW50RnJv
bUlkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6
CisKIDIwMTctMTEtMzAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtDb29yZEdyYXBoaWNzXSBNb3ZlIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBwYWlu
dGluZyBiZWhpbmQgTmljb3NpYTo6UGFpbnRpbmdFbmdpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmRjN2U2Mzg3
N2NiNjc1ZGI5MzA4Yzg4MjcxNDMyMjI1Yjk4YWI4Yi4uN2QyNmQ1YWM4OTBiM2Q2YmM2NjU5YzM0
OTM0NTM3MTg3YWU5MDYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0xMS0yOSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNjbGllbnRzLWdldAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIElQQyBwbHVtYmVyeSBm
b3IgY2xpZW50RnJvbUlkIGJldHdlZW4gU2VydmljZVdvcmtlciBwcm9jZXNzIGFuZCBTdG9yYWdl
IHByb2Nlc3MuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y2xpZW50RnJvbUlkQ29tcGxldGVkKToKKyAgICAgICAg
KiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbGllbnRGcm9tSWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xpZW50RnJvbUlkQ29t
cGxldGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIwMTctMTEtMzAgIFphbiBEb2JlcnNl
ayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDb29yZEdyYXBoaWNzXSBNb3Zl
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBwYWludGluZyBiZWhpbmQgTmljb3NpYTo6UGFpbnRp
bmdFbmdpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNDhmNzhkZDRmODQxNzMxYzY2
NDk5NzQwODg2ODZmYmFhZDI1OGU0OS4uYzg4MTE4YjY2N2EzMjYwYjBhNWM0NWRhMjg3YmEyNThi
NmIyYmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CkBAIC0xNDYsNiArMTQ3LDcgQEAgcHVibGljOgogICAgIGludCB0b0ludCgp
IGNvbnN0OwogICAgIGludCB0b0ludChib29sJiBpc1ZhbGlkKSBjb25zdDsKICAgICBpbnQgdG9J
bnRTdHJpY3QoYm9vbCYgaXNWYWxpZCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gdG9VSW50NjRTdHJpY3QoKSBjb25zdDsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wmIGlzVmFs
aWQpIGNvbnN0OwogCiAgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZShjb25zdCBTdHJpbmdJbXBs
Jik7CkBAIC01MjMsNiArNTI1LDEzIEBAIGlubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnRTdHJp
Y3QoYm9vbCYgaXNWYWxpZCkgY29uc3QKICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0
KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwogfQogCitpbmxpbmUgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gU3RyaW5nVmlldzo6dG9VSW50NjRTdHJpY3QoKSBjb25zdAorewor
ICAgIGJvb2wgaXNWYWxpZDsKKyAgICB1aW50NjRfdCByZXN1bHQgPSBpczhCaXQoKSA/IGNoYXJh
Y3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpIDog
Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFs
aWQpOworICAgIHJldHVybiBpc1ZhbGlkID8gc3RkOjptYWtlX29wdGlvbmFsKHJlc3VsdCkgOiBz
dGQ6Om51bGxvcHQ7Cit9CisKIGlubGluZSBTdHJpbmcgU3RyaW5nVmlldzo6dG9TdHJpbmdXaXRo
b3V0Q29weWluZygpIGNvbnN0CiB7CiAgICAgaWYgKGlzOEJpdCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKaW5kZXggYzhhNGRkNmZhNDkwYTZlODRkNzk1NzUzYTYyOWUzMGQ1OWVlNThhYy4uZDJi
OTliZjI1ZTNjODEwMWQzODM4NTQ4ZTNjZDBiOTlkYWQ5MDk5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCkBAIC00Niw4ICs0Niw4IEBAIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB1bnNpZ25lZCBj
aGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sCiBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKIGludDY0X3Qg
Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0
KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTAp
OwotdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotdWludDY0X3QgY2hhcmFjdGVy
c1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIs
IGludCBiYXNlID0gMTApOworV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHVpbnQ2NF90IGNoYXJhY3Rl
cnNUb1VJbnQ2NFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRy
LCBpbnQgYmFzZSA9IDEwKTsKK1dURl9FWFBPUlRfU1RSSU5HX0FQSSB1aW50NjRfdCBjaGFyYWN0
ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0
ciwgaW50IGJhc2UgPSAxMCk7CiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29u
c3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiBp
bnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJv
b2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyLmgKaW5kZXggNjI4NTVkNTRiY2M3MDE5MTdkMWI4ZmIyNGEzOTc2M2RkM2FiNTZhOC4uNjJh
Yzg1ZTYwMDBhYzMwZGJjZWY3ZjUwZjU2OWNhZjdmYTc5OTJiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyIHsKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgdG9T
dHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmc6Om51bWJlcihzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllci50b1VJbnQ2NCgpKSArICItIiArICBTdHJpbmc6Om51bWJlcihjb250ZXh0SWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyPiBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNTAsNiArNTEsMjMgQEAgaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYg
YSwgY29uc3QgU2VydmljZVdvcmsKICAgICByZXR1cm4gYS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciA9PSBiLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyICYmICBhLmNvbnRleHRJZGVudGlm
aWVyID09IGIuY29udGV4dElkZW50aWZpZXI7CiB9CiAKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyOworCisgICAgdW5zaWduZWQgY291bnRl
ciA9IDA7CisgICAgZm9yIChhdXRvIGl0ZW0gOiBTdHJpbmdWaWV3IHsgc3RyaW5nIH0uc3BsaXQo
Jy0nKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBpdGVtLnRvVUludDY0U3RyaWN0KCk7
CisgICAgICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIGlmICghY291bnRlcisrKQorICAgICAgICAgICAgY2xpZW50SWRlbnRpZmll
ci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihpZGVudGlmaWVyLnZhbHVlKCkpOworICAgICAg
ICBlbHNlIGlmIChjb3VudGVyID09IDIpCisgICAgICAgICAgICBjbGllbnRJZGVudGlmaWVyLmNv
bnRleHRJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8RG9jdW1lbnRJZGVudGlmaWVy
VHlwZT4oaWRlbnRpZmllci52YWx1ZSgpKTsKKyAgICB9CisgICAgcmV0dXJuIChjb3VudGVyID09
IDIpID8gc3RkOjptYWtlX29wdGlvbmFsKFdURk1vdmUoY2xpZW50SWRlbnRpZmllcikpIDogc3Rk
OjpudWxsb3B0OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnRzLmNwcAppbmRleCBhMTQ1NTdlNmM0NDA4NzNkMTc3ZTdjOTZhZmFlYTI1OGM5ODMzYTBl
Li4wM2JkMjFkN2Y1YzhkMTQ3NmI4N2FhYjEwYzBjZjA1MDdjMzE5OGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5j
cHAKQEAgLTI5LDEwICsyOSwxMiBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRzLmgi
CiAKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkpTU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VXb3JrZXJDbGllbnRzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorU2Vydmlj
ZVdvcmtlckNsaWVudHM6OlNlcnZpY2VXb3JrZXJDbGllbnRzKFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSYgY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKIHsKICAgICBz
dXNwZW5kSWZOZWVkZWQoKTsKQEAgLTQ4LDEwICs1MCw3MiBAQCBib29sIFNlcnZpY2VXb3JrZXJD
bGllbnRzOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKICAgICByZXR1
cm4gIWhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRz
OjpnZXRDb21wbGV0ZWQoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwg
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYgY2xp
ZW50RGF0YSwgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlUmVmZXJlbmNlKQoreworICAgIGF1dG8g
cHJvbWlzZSA9IG1fcGVuZGluZ1Byb21pc2VzLnRha2UocHJvbWlzZVJlZmVyZW5jZSk7CisgICAg
aWYgKCFwcm9taXNlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY2xpZW50RGF0YS5oYXNF
eGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLnZhbHVlKCktPnJlamVjdChjbGllbnREYXRh
LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBk
YXRhID0gY2xpZW50RGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBpZiAoIWRhdGEpIHsK
KyAgICAgICAgcHJvbWlzZS52YWx1ZSgpLT5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBwcm9taXNlLnZhbHVlKCktPnJl
c29sdmU8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJDbGllbnQ+PihTZXJ2aWNlV29ya2VyQ2xp
ZW50OjpnZXRPckNyZWF0ZShjb250ZXh0LCBpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEudmFsdWUo
KSkpKTsKK30KKworc3RhdGljIGlubGluZSBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPj4gaXNvbGF0ZWRFeGNlcHRpb25PckNsaWVudERhdGEoY29uc3Qg
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiB2YWx1
ZSkKK3sKKyAgICBpZiAodmFsdWUuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB2YWx1
ZS5leGNlcHRpb24oKS5pc29sYXRlZENvcHkoKTsKKworICAgIGF1dG8gY2xpZW50RGF0YSA9IHZh
bHVlLnJldHVyblZhbHVlKCk7CisgICAgaWYgKGNsaWVudERhdGEpCisgICAgICAgIGNsaWVudERh
dGEgPSBjbGllbnREYXRhLT5pc29sYXRlZENvcHkoKTsKKworICAgIHJldHVybiBXVEZNb3ZlKGNs
aWVudERhdGEpOworfQorCitzdHJ1Y3QgR2V0UmVxdWVzdFN0YXRlIHsKKyAgICBTZXJ2aWNlV29y
a2VyQ2xpZW50cyYgY2xpZW50czsKKyAgICBSZWY8QWN0aXZlRE9NT2JqZWN0OjpQZW5kaW5nQWN0
aXZpdHk8U2VydmljZVdvcmtlckNsaWVudHM+PiBwcm90ZWN0aW5nQ2xpZW50czsKKyAgICBEZWZl
cnJlZFByb21pc2UmIHByb21pc2U7CisgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcjsKK307CisKIHZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6OmdldChjb25zdCBTdHJpbmcm
IGlkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGlkKTsKLSAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiY2xpZW50cy5nZXQoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH0pOwor
ICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFj
b250ZXh0KSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2xpZW50SWRl
bnRpZmllciA9IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGlkKTsK
KyAgICBpZiAoIWNsaWVudElkZW50aWZpZXIpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYgc2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCk7Cisg
ICAgR2V0UmVxdWVzdFN0YXRlIHN0YXRlIHsgKnRoaXMsIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRo
aXMpLCBwcm9taXNlLCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkuaWRlbnRpZmll
cigpIH07CisKKyAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQoV1RGTW92ZShwcm9taXNlKSk7CisK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtzdGF0ZSA9IFdURk1vdmUoc3RhdGUpLCBjbGllbnRJZGVu
dGlmaWVyID0gY2xpZW50SWRlbnRpZmllci52YWx1ZSgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
YXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpOworICAgICAgICBjb25uZWN0aW9uLT5jbGllbnRGcm9tSWQoc3RhdGUuaWRlbnRpZmllciwg
Y2xpZW50SWRlbnRpZmllciwgW3N0YXRlID0gV1RGTW92ZShzdGF0ZSksIGNsaWVudElkZW50aWZp
ZXJdIChhdXRvJiYgY2xpZW50RGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzdGF0ZS5pZGVudGlm
aWVyLCBbc3RhdGUgPSBXVEZNb3ZlKHN0YXRlKSwgY2xpZW50SWRlbnRpZmllciwgY2xpZW50RGF0
YSA9IGlzb2xhdGVkRXhjZXB0aW9uT3JDbGllbnREYXRhKGNsaWVudERhdGEpXSAoYXV0byYpIG11
dGFibGUgeworICAgICAgICAgICAgICAgIHN0YXRlLmNsaWVudHMuZ2V0Q29tcGxldGVkKGNsaWVu
dElkZW50aWZpZXIsIFdURk1vdmUoY2xpZW50RGF0YSksIHN0YXRlLnByb21pc2UpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJD
bGllbnRzOjptYXRjaEFsbChjb25zdCBDbGllbnRRdWVyeU9wdGlvbnMmLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCkBAIC03MCw2ICsxMzQsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
Q2xpZW50czo6Y2xhaW0oUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIHByb21p
c2UtPnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJj
bGllbnRzLmNsYWltKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9KTsKIH0KIAordm9pZCBTZXJ2
aWNlV29ya2VyQ2xpZW50czo6c3RvcCgpCit7CisgICAgbV9wZW5kaW5nUHJvbWlzZXMuY2xlYXIo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudHMuaAppbmRleCA3NGJiYjdmMDRmMWExYzFiODQyYjBjODE4YmEzMWNm
OGEyOTdhYTUxLi41YWI3YWE3NGI3ODhlNDAwOGFhZmE0ZDFjNTI1NGJlOTJiMGNlZWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVu
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuaApAQCAtMjgsMTcgKzI4LDIxIEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
CiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERlZmVycmVkUHJv
bWlzZTsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcjsKK2NsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKIAot
Y2xhc3MgU2VydmljZVdvcmtlckNsaWVudHMgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29y
a2VyQ2xpZW50cz4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworY2xhc3MgU2VydmljZVdvcmtl
ckNsaWVudHMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckNsaWVu
dHM+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNl
cnZpY2VXb3JrZXJDbGllbnRzPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkKKyAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRzPiBjcmVhdGUoU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlJiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2VydmljZVdvcmtlckNsaWVudHMoY29udGV4dCkpOwogICAgIH0KQEAgLTU0LDExICs1
OCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGFpbShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsK
IAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VyQ2xpZW50cyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jik7CisgICAgZXhwbGljaXQgU2VydmljZVdvcmtlckNsaWVudHMoU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlJik7CisKKyAgICB2b2lkIGdldENvbXBsZXRlZChTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllciwgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YT4+JiYsIERlZmVycmVkUHJvbWlzZSYpOwogCiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKworICAgIEhhc2hTZXQ8UmVmPERlZmVycmVkUHJv
bWlzZT4+IG1fcGVuZGluZ1Byb21pc2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCBlZGM3NGIxYzE1OTAxMGIxMGNlNTliZmY3NTA1YWE5
OTBkZWFkZGYxLi40MWE5ZjBhZDBmMWNkMjczOGJkOTUxMjk4MjlhOTQyNGJkOTUwOGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTA2LDYgKzEwNiwxMiBAQCB2b2lkIFNXQ29udGV4dE1h
bmFnZXI6OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIH0pOwogfQogCit2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnBvc3RUYXNrVG9TZXJ2aWNl
V29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2smJiB0YXNrKQoreworICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2VyID0g
bV93b3JrZXJNYXAuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICBzZXJ2aWNlV29ya2VyLT50aHJl
YWQoKS5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggMmNmOGFiMzcwZjYy
NzZhZTk1ZWUxMGMzNjE0Yzg5ZDBkZDA5Y2VjMy4uOGFlMTVjZmZlNGZkOGI3OWY1NzIzMTdkNWRm
NTQ1ZGFjNDE2NWEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC01MSw2ICs1Miw5IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3b3Jr
ZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CisKKyAgICAgICAgdXNp
bmcgQ2xpZW50RnJvbUlkQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhj
ZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYpPjsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGNsaWVudEZyb21JZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIENsaWVudEZyb21JZENhbGxiYWNrJiYpID0g
MDsKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6
dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKQEAgLTYzLDYgKzY3LDggQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdFRhc2tUb1Nl
cnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2smJik7CisKIHByaXZhdGU6CiAgICAgU1dDb250ZXh0TWFuYWdlcigpID0gZGVmYXVs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcAppbmRleCA2ZDU2NDg4ZjlmYTIzYzYwNzRlNDk3ZTUzOWI2ZjIwOGI2ODA0NjlhLi4w
OTA3NDNmNDliM2ZiZTc3ODcxOTQ2ZTQyMGE1N2Q3ZWRiZmY0Y2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMzA1LDYg
KzMwNSwxNiBAQCB2b2lkIFNXU2VydmVyOjp3b3JrZXJDb250ZXh0VGVybWluYXRlZChTV1NlcnZl
cldvcmtlciYgd29ya2VyKQogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogfQog
CitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZlcjo6Y2xpZW50
RnJvbUlkKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8gY2xpZW50cyA9IG1fY2xpZW50
cy5nZXQob3JpZ2luKTsKKyAgICBhdXRvIHBvc2l0aW9uID0gY2xpZW50cy5maW5kTWF0Y2hpbmco
WyZdIChjb25zdCBhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgcmV0dXJuIGNsaWVudElkZW50aWZp
ZXIgPT0gY2xpZW50LmlkZW50aWZpZXI7CisgICAgfSk7CisKKyAgICByZXR1cm4gKHBvc2l0aW9u
ICE9IG5vdEZvdW5kKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChjbGllbnRzW3Bvc2l0aW9uXS5kYXRh
KSA6IHN0ZDo6bnVsbG9wdDsKK30KKwogdm9pZCBTV1NlcnZlcjo6ZGlkUmVzb2x2ZVJlZ2lzdHJh
dGlvblByb21pc2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQogewogICAgIEFTU0VSVF9VTlVTRUQoY29u
bmVjdGlvbiwgbV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5o
CmluZGV4IDVmMzM4ZjZjMmE5N2I1MTAyMzAzZjA2ZTg5NWJiZDk3NmM0ODUxMGEuLjJiMjM4MjQz
M2YyMDZkYTcyYWQ1YTQyN2M4ODJmYjYxNTY1YTk3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTEzNSw2ICsxMzUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNXU2VydmVyV29ya2VyJiwgYm9vbCB3YXNT
dWNjZXNzZnVsKTsKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJXb3JrZXIm
KTsKICAgICB2b2lkIHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKFNXU2VydmVyV29ya2VyJik7Cisg
ICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gY2xpZW50RnJvbUlkKGNv
bnN0IENsaWVudE9yaWdpbiYsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBiZTg1
YjM5ZjY2MWM2NjVlNGYxMTEwZTA0ZTRjYjQxYjU1Y2NmOTBhLi5lNjc3MGM3YWY1MzU5ZmY0MTYx
YjAyZTJhMWE4N2ZlYzU4ZDUwN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwCkBAIC0xMDgsNiArMTA4LDEyIEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpCiAg
ICAgICAgIHdvcmtlci0+Y29udGV4dFRlcm1pbmF0ZWQoKTsKIH0KIAordm9pZCBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OmNsaWVudEZyb21JZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkKQoreworICAgIGlmIChhdXRvKiB3b3Jr
ZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bigpLT5jbGllbnRGcm9tSWRDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHdvcmtlci0+Y2xp
ZW50RnJvbUlkKGNsaWVudElkKSwgZmFsc2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAppbmRleCA0YTE1MmYyMmI4MmFmMzNkZmNmNGYzZWE1NWVlZjU4MGY0
ZmRiNWViLi4wZjRiZWIwNzM0YTFhNGViNjNkYzkxNTM0MDQ3Y2M5MTA3M2ZiZTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTM0LDYgKzM0LDggQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1dTZXJ2ZXI7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNs
aWVudERhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBzdHJ1Y3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllcjsKIApAQCAtNDgsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZp
cmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNsaWVudEZyb21JZENvbXBsZXRlZCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpID0gMDsKIAogICAgIC8vIE1lc3NhZ2VzIGJhY2sg
ZnJvbSB0aGUgU1cgaG9zdCBwcm9jZXNzCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRD
b250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcj4mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKQEAgLTU2LDYgKzU5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpZW50RnJvbUlkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVz
dElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllcik7CiAKICAgICBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBj
b25uZWN0aW9uRm9ySWRlbnRpZmllcihTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCAxZjBiMWRjZWM0YzQwNWU0N2Y2MWY4NjBmZjRh
MTA5ZmRhNDQ0ODBmLi5mMmU3NjVmNzMwMmQ4YzNmYWZiZmMyNGRiM2QyMjFiZmE1NzVkODJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcApAQCAtNjUsNiArNjUsMTQgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6
dGVybWluYXRlKCkKICAgICBtX3NlcnZlci50ZXJtaW5hdGVXb3JrZXIoKnRoaXMpOwogfQogCitj
b25zdCBDbGllbnRPcmlnaW4mIFNXU2VydmVyV29ya2VyOjpvcmlnaW4oKSBjb25zdAoreworICAg
IGlmICghbV9vcmlnaW4pCisgICAgICAgIG1fb3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgbV9yZWdp
c3RyYXRpb25LZXkudG9wT3JpZ2luKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9kYXRhLnNjcmlwdFVSTCkpIH07CisKKyAg
ICByZXR1cm4gKm1fb3JpZ2luOworfQorCiB2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250
ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7
CiAgICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoam9iRGF0YUlkZW50aWZp
ZXIsICp0aGlzLCBtZXNzYWdlKTsKQEAgLTkwLDYgKzk4LDExIEBAIHZvaWQgU1dTZXJ2ZXJXb3Jr
ZXI6OmNvbnRleHRUZXJtaW5hdGVkKCkKICAgICBtX3NlcnZlci53b3JrZXJDb250ZXh0VGVybWlu
YXRlZCgqdGhpcyk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+
IFNXU2VydmVyV29ya2VyOjpjbGllbnRGcm9tSWQoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIgY2xpZW50SWQpCit7CisgICAgcmV0dXJuIG1fc2VydmVyLmNsaWVudEZyb21JZChvcmlnaW4o
KSwgY2xpZW50SWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggYzMwZDQ1OWZlNzNjZjk2ZTVk
MmYwNDZkMzMzYzkyNmU4N2M2MTg4NC4uOWNjNmYzOGVhNjlhYWRiYjI1ZDIyMTdkM2IyMTk5MDUz
ZWIyZDg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMzYsMTAgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorc3RydWN0IENsaWVudE9yaWdpbjsKIGNsYXNzIFNXU2VydmVyOwogY2xhc3Mg
U1dTZXJ2ZXJSZWdpc3RyYXRpb247Ci1lbnVtIGNsYXNzIFdvcmtlclR5cGU7CitzdHJ1Y3QgU2Vy
dmljZVdvcmtlckNsaWVudERhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyOworZW51bSBjbGFzcyBX
b3JrZXJUeXBlOwogCiBjbGFzcyBTV1NlcnZlcldvcmtlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxTV1NlcnZlcldvcmtlcj4gewogcHVibGljOgpAQCAtNzMsMTAgKzc2LDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKICAgICB2
b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oKTsKICAgICB2b2lkIGNvbnRleHRUZXJtaW5hdGVkKCk7
CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gY2xpZW50RnJvbUlk
KFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTV1NlcnZlcldvcmtlciogZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKIAogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJEYXRhJiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4o
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2Vy
dmVyUmVnaXN0cmF0aW9uJiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKQEAgLTg3LDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29y
a2VyRGF0YSBtX2RhdGE7CiAgICAgU3RyaW5nIG1fc2NyaXB0OwogICAgIGJvb2wgbV9oYXNQZW5k
aW5nRXZlbnRzIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3Jp
Z2luPiBtX29yaWdpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMjRlNGFk
YWUxYzJkOTM3OGE4M2YyNzE4ZDA5YTMyMzg4NjkyMjZmMC4uOTNhYjI0ZDUxYmE5NjNhMjNjNGRi
Yzg2ZTRlY2M2MzI0NzRiNWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTc2LDYgKzc2LDExIEBAIHZvaWQgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VyCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlRlcm1pbmF0ZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOwogfQogCit2b2lk
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y2xpZW50RnJvbUlkQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiYgZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbGllbnRGcm9tSWRDb21w
bGV0ZWQgeyByZXF1ZXN0SWRlbnRpZmllciwgZGF0YSwgaGFzU2VjdXJpdHlFcnJvciB9KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
aW5kZXggYjViODc0OTA2ZTFmYmNmNDVjYzI5M2M0Y2FhMTQ3YmMzZjQ2NzI5OS4uZWE5OTk5NzU0
MjA3MDM4YjA3YWE0MzhhNmNiMDQ0MDhmMzRkOTU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTksNiArNTksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikgZmluYWw7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgY2xpZW50RnJvbUlk
Q29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJv
cikgZmluYWw7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2lwY0Nvbm5lY3Rpb247CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA4YjIzNDc4YjI2YTkwMGY2ODNkNzJkYTFlMGM0ZGU2
MmExOTI4MDkxLi5iMzRlNTIzMTZiMGQ1ZjkzNmVhYmYzYWIyY2U5MTkwMDRlODA2ZjE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uIHsKICAgICBEaWRGaW5pc2hBY3RpdmF0aW9uKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpOwogICAgIFNldFNlcnZpY2VXb3JrZXJI
YXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7CiAgICAgV29ya2VyVGVybWluYXRlZChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKKyAgICBDbGllbnRGcm9tSWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcik7CiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5k
ZXggYzBjZWRhMTgxN2NlZjE1MTgxMzFlNmIyNDEwMmY3YTYyYTU4NGJlZi4uNDg5MGE4MzUxOTYx
YjVhMzdjZDdkMjQ2NjE2NmU2ZDJiZTJiMjkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNvbmZp
Z3VyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgog
CkBAIC0xOTQsNiArMTk1LDI0IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OndvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VyCiAgICAgbV9jb25u
ZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpXb3JrZXJUZXJtaW5hdGVkKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwg
MCk7CiB9CiAKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsaWVudEZyb21J
ZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgQ2xpZW50
RnJvbUlkQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvIHJlcXVlc3RJZGVudGlmaWVy
ID0gKyttX3ByZXZpb3VzUmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9jbGllbnRGcm9tSWRSZXF1
ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX2Nv
bm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OkNsaWVudEZyb21JZCB7IHJlcXVlc3RJZGVudGlmaWVyLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciB9LCAwKTsKK30KKwordm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xpZW50RnJvbUlkQ29tcGxldGVkKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
PiYmIGNsaWVudERhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKK3sKKyAgICBpZiAoYXV0byBj
YWxsYmFjayA9IG1fY2xpZW50RnJvbUlkUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikp
IHsKKyAgICAgICAgaWYgKGhhc1NlY3VyaXR5RXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
KEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjbGllbnREYXRhKSk7CisgICAgfQorfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBjOWU2NWE0YWI4MzhiMDM2
MDE1NGI4NmIxNmU3N2MyMDY5ZGUyZWRmLi4zZTAyY2UzZTdjNDlkN2NiMTQxNjU5MjJjMzE3YmY2
YjljZmFmYTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTYxLDYgKzYx
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckhh
c1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpIGZp
bmFsOwogICAgIHZvaWQgd29ya2VyVGVybWluYXRlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllcikgZmluYWw7CisgICAgdm9pZCBjbGllbnRGcm9tSWQoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLCBD
bGllbnRGcm9tSWRDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAg
ICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSBmaW5hbDsKQEAg
LTcwLDEwICs3MSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVu
dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCB0ZXJtaW5hdGVX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgY2xpZW50
RnJvbUlkQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmLCBib29sIGhhc1NlY3VyaXR5RXJy
b3IpOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJv
Y2VzczsKICAgICB1aW50NjRfdCBtX3BhZ2VJRCB7IDAgfTsKICAgICB1aW50NjRfdCBtX3ByZXZp
b3VzU2VydmljZVdvcmtlcklEIHsgMCB9OworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ2xpZW50
RnJvbUlkQ2FsbGJhY2s+IG1fY2xpZW50RnJvbUlkUmVxdWVzdHM7CisgICAgdWludDY0X3QgbV9w
cmV2aW91c1JlcXVlc3RJZGVudGlmaWVyIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmlu
ZGV4IDczNmZkZjViNDcxNzliZTQwZWRhMTJjOWZjNmQ3MjY2MmMxZDdiYzQuLmJhZDhjNmVmZjdi
MzU4ZDViZmJhNmQxZmViMmQ5YjlkZmRhYTdjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yOSw2ICsyOSw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIHsKICAgICBGaXJlSW5zdGFsbEV2ZW50KFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgRmlyZUFjdGl2
YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICBUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKKyAgICBDbGllbnRGcm9tSWRDb21wbGV0ZWQodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0
SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YT4gZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZTg1
NmE4ZTcwYjQwOTYyYzNlZWQ1MjI3NDgyZTM5YzMwZTFkNzI5Li4xNDRlMjM3MDk0N2UwM2JhNjc2
MTg3OTExMGE3ZjE3MzE3NjRlNDg5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTEtMjkg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBo
dHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC13b3JrZXIuanM6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3Jr
ZXJjbGllbnRzLWdldC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy5odG1s
OiBBZGRlZC4KKwogMjAxNy0xMS0zMCAgTXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS10gRW5hYmxlIGFsbCB3cHQgdG91Y2gtZXZlbnRzIHRlc3RzLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlcnZp
Y2V3b3JrZXJjbGllbnRzLWdldC13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0LXdvcmtlci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hOTYzMjkzNDA4Yjg2OTFiZjRlYzEwNTgyNmMxYzRmMTYyNjRjY2QxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC13b3JrZXIuanMKQEAgLTAsMCArMSw0
MSBAQAordmFyIGNsaWVudCA9IG51bGw7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2Ui
LCBhc3luYyAoZXZlbnQpID0+IHsKKyAgICB0cnkgeworICAgICAgICB2YXIgY2xpZW50ID0gZXZl
bnQuc291cmNlOworCisgICAgICAgIGlmICghKGNsaWVudCBpbnN0YW5jZW9mIFdpbmRvd0NsaWVu
dCkpIHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogY2xpZW50
IHNvdXJjZSBpcyBub3QgYSBXaW5kb3dDbGllbnQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIHZhciByZXRyaWV2ZWRDbGllbnQgPSBhd2FpdCBzZWxmLmNsaWVu
dHMuZ2V0KGNsaWVudC5pZCk7CisgICAgICAgIGlmICghcmV0cmlldmVkQ2xpZW50KSB7CisgICAg
ICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIkZBSUw6IGRpZCBub3QgcmV0cmlldmUg
YW55IGNsaWVudCB0aHJvdWdoIHNlbGYuY2xpZW50cy5nZXQiKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXRyaWV2ZWRDbGllbnQuaWQgIT09IGNsaWVu
dC5pZCkgeworICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiBjbGll
bnQgaWQgaXMgZGlmZmVyZW50IGZyb20gcmV0cmlldmVkIGNsaWVudCBpZCB0aHJvdWdoIHNlbGYu
Y2xpZW50cy5nZXQ6ICIgKyBjbGllbnQuaWQgKyAiIC8gIiArIHJldHJpZXZlZENsaWVudC5pZCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAocmV0cmlldmVk
Q2xpZW50ICE9PSBjbGllbnQpIHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2Fn
ZSgiRkFJTDogY2xpZW50IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgcmV0cmlldmVkIHRocm91
Z2ggc2VsZi5jbGllbnRzLmdldCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgdmFyIGJhZElkcyA9IFtjbGllbnQuaWQgKyAiMCIsICIwLTAiLCAiMC0iLCAiLSIs
ICItMCJdOworICAgICAgICBmb3IgKGlkIGluIGJhZElkcykgeworICAgICAgICAgICAgcmV0cmll
dmVkQ2xpZW50ID0gYXdhaXQgc2VsZi5jbGllbnRzLmdldChpZCk7CisgICAgICAgICAgICBpZiAo
ISFyZXRyaWV2ZWRDbGllbnQpIHsKKyAgICAgICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1l
c3NhZ2UoIkZBSUw6IHJldHJpZXZlZCBjbGllbnQgd2l0aCBiYWQgaWQgIiArIGlkICsgIiBzaG91
bGQgYmUgbnVsbCIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiUEFTUyIpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiBy
ZWNlaXZlZCBleGNlcHRpb24gIiArIGUpOworICAgIH0KK30pOworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1n
ZXQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jN2YzNjZiMmEyYWNmNWE5YmVkNGRjZjJmZjY1NjM5MGNlNTRjNTMzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdv
cmtlcmNsaWVudHMtZ2V0Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFT
UyBUZXN0aW5nIGNsaWVudHMuZ2V0IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGll
bnRzLWdldC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliYmZiYTM4Y2NlZjdmMGQ5ZTY4MzdlODQ3
OWJiYjZmOTUyMWM2ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMuaHRtbApAQCAt
MCwwICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCitwcm9t
aXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNl
KChyZXNvbHZlKSA9PiB7CisgICAgICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCB0ZXN0LnN0ZXBfZnVuYygoZXZlbnQpID0+IHsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuZGF0YSwgIlBBU1MiKTsKKyAgICAgICAgICAgIHJlc29s
dmUoKTsKKyAgICAgICAgfSkpOworICAgIH0pOworCisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3
YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvc2VydmljZXdv
cmtlcmNsaWVudHMtZ2V0LXdvcmtlci5qcyIsIHsgc2NvcGUgOiAiL25vb25lIiB9KTsKKyAgICB2
YXIgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgaWYgKCF3b3JrZXIpCisg
ICAgICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5hY3RpdmU7CisgICAgd29ya2VyLnBvc3RNZXNz
YWdlKCJzdGFydCIpOworCisgICAgYXdhaXQgcHJvbWlzZTsKK30sICJUZXN0aW5nIGNsaWVudHMu
Z2V0Iik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327990</attachid>
            <date>2017-11-30 10:22:34 -0800</date>
            <delta_ts>2017-11-30 12:15:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180167-20171130102233.patch</filename>
            <type>text/plain</type>
            <size>35718</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ4ZjFmNjU0ZWMzOTJmMmE3NjFlZDNl
MjU2MDNhZDBiZWM0MGI1YmIuLmI4YmU4MGYwNTIzMmRhMzIxNDgwN2MxOTEzOTBhY2I0MmY0ZGM5
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTEtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RG
OjpTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdCBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisKIDIwMTctMTEtMjkgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdURiAvIGJtYWxsb2M6IGRvbid0IHdyaXRlIHRvIDB4YmJhZGJlZWYg
d2hlbiBBU0FOIGlzIGxvb2tpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkOTFhZWIyZDZjOTMyNjUwYzQ2NDAy
MWU3ZTMwNjk1YWFiMGQwMDU5Li5hODY3NDk0MmQyZjIyNWQ1OWMzYTk4ZGRiOGZkNDNiYWY5ZWIz
NmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTctMTEtMjkgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5n
aXRodWIuaW8vU2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy5odG1sCisKKyAgICAgICAgSW1wbGVt
ZW50IGNsaWVudHMgZ2V0IGJ5IGhhdmluZyBzZXJ2aWNlIHdvcmtlciBjbGllbnRzIGRvIHRoZSBm
b2xsb3dpbmc6CisgICAgICAgIC0gR28gdG8gbWFpbiB0aHJlYWQgdG8gcXVlcnkgdGhlIFNXQ2xp
ZW50Q29ubmVjdGlvbiBmb3IgZ2V0dGluZyB0aGUgY2xpZW50LgorICAgICAgICAtIFNXQ2xpZW50
Q29ubmVjdGlvbiByZXF1ZXN0cyBpdCB0aHJvdWdoIElQQyB0byBTdG9yYWdlUHJvY2VzcyBTV1Nl
cnZlci4KKyAgICAgICAgLSBTV1NlcnZlciBsb29rcyBhdCBpdHMgY2xpZW50IG1hcCBhbmQgcmV0
dXJucyBjbGllbnQgZGF0YSBiYXNlZCBvbiB0aGUgZ2l2ZW4gaWRlbnRpZmllci4KKyAgICAgICAg
LSBTV0NsaWVudENvbm5lY3Rpb24gc2VuZHMgaXQgYmFjayB0byB0aGUgcmlnaHQgY2xpZW50cyBm
b3IgcmVzb2x2aW5nIHRoZSBwcm9taXNlLgorCisgICAgICAgIElkZW50aWZpZXIgaXMgcGFyc2Vk
IGF0IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgbGV2ZWwuCisKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpmcm9tU3RyaW5nKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudHM6OlNlcnZpY2VXb3JrZXJDbGllbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRzOjpnZXQpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudHM6OmNyZWF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5h
Z2VyOjpwb3N0VGFza1RvU2VydmljZVdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmdldENsaWVu
dEZyb21JZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
Y2xpZW50RnJvbUlkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6Om9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y2xpZW50RnJv
bUlkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6
CisKIDIwMTctMTEtMzAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtDb29yZEdyYXBoaWNzXSBNb3ZlIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBwYWlu
dGluZyBiZWhpbmQgTmljb3NpYTo6UGFpbnRpbmdFbmdpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmRjN2U2Mzg3
N2NiNjc1ZGI5MzA4Yzg4MjcxNDMyMjI1Yjk4YWI4Yi4uN2QyNmQ1YWM4OTBiM2Q2YmM2NjU5YzM0
OTM0NTM3MTg3YWU5MDYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0xMS0yOSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNjbGllbnRzLWdldAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIElQQyBwbHVtYmVyeSBm
b3IgY2xpZW50RnJvbUlkIGJldHdlZW4gU2VydmljZVdvcmtlciBwcm9jZXNzIGFuZCBTdG9yYWdl
IHByb2Nlc3MuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y2xpZW50RnJvbUlkQ29tcGxldGVkKToKKyAgICAgICAg
KiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbGllbnRGcm9tSWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xpZW50RnJvbUlkQ29t
cGxldGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIwMTctMTEtMzAgIFphbiBEb2JlcnNl
ayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDb29yZEdyYXBoaWNzXSBNb3Zl
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBwYWludGluZyBiZWhpbmQgTmljb3NpYTo6UGFpbnRp
bmdFbmdpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNDhmNzhkZDRmODQxNzMxYzY2
NDk5NzQwODg2ODZmYmFhZDI1OGU0OS4uYzg4MTE4YjY2N2EzMjYwYjBhNWM0NWRhMjg3YmEyNThi
NmIyYmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CkBAIC0xNDYsNiArMTQ3LDcgQEAgcHVibGljOgogICAgIGludCB0b0ludCgp
IGNvbnN0OwogICAgIGludCB0b0ludChib29sJiBpc1ZhbGlkKSBjb25zdDsKICAgICBpbnQgdG9J
bnRTdHJpY3QoYm9vbCYgaXNWYWxpZCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gdG9VSW50NjRTdHJpY3QoKSBjb25zdDsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wmIGlzVmFs
aWQpIGNvbnN0OwogCiAgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZShjb25zdCBTdHJpbmdJbXBs
Jik7CkBAIC01MjMsNiArNTI1LDEzIEBAIGlubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnRTdHJp
Y3QoYm9vbCYgaXNWYWxpZCkgY29uc3QKICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0
KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwogfQogCitpbmxpbmUgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gU3RyaW5nVmlldzo6dG9VSW50NjRTdHJpY3QoKSBjb25zdAorewor
ICAgIGJvb2wgaXNWYWxpZDsKKyAgICB1aW50NjRfdCByZXN1bHQgPSBpczhCaXQoKSA/IGNoYXJh
Y3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpIDog
Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFs
aWQpOworICAgIHJldHVybiBpc1ZhbGlkID8gc3RkOjptYWtlX29wdGlvbmFsKHJlc3VsdCkgOiBz
dGQ6Om51bGxvcHQ7Cit9CisKIGlubGluZSBTdHJpbmcgU3RyaW5nVmlldzo6dG9TdHJpbmdXaXRo
b3V0Q29weWluZygpIGNvbnN0CiB7CiAgICAgaWYgKGlzOEJpdCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKaW5kZXggYzhhNGRkNmZhNDkwYTZlODRkNzk1NzUzYTYyOWUzMGQ1OWVlNThhYy4uZDJi
OTliZjI1ZTNjODEwMWQzODM4NTQ4ZTNjZDBiOTlkYWQ5MDk5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCkBAIC00Niw4ICs0Niw4IEBAIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB1bnNpZ25lZCBj
aGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sCiBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKIGludDY0X3Qg
Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0
KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTAp
OwotdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotdWludDY0X3QgY2hhcmFjdGVy
c1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIs
IGludCBiYXNlID0gMTApOworV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHVpbnQ2NF90IGNoYXJhY3Rl
cnNUb1VJbnQ2NFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRy
LCBpbnQgYmFzZSA9IDEwKTsKK1dURl9FWFBPUlRfU1RSSU5HX0FQSSB1aW50NjRfdCBjaGFyYWN0
ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0
ciwgaW50IGJhc2UgPSAxMCk7CiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29u
c3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiBp
bnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJv
b2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyLmgKaW5kZXggNjI4NTVkNTRiY2M3MDE5MTdkMWI4ZmIyNGEzOTc2M2RkM2FiNTZhOC4uNjJh
Yzg1ZTYwMDBhYzMwZGJjZWY3ZjUwZjU2OWNhZjdmYTc5OTJiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyIHsKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgdG9T
dHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmc6Om51bWJlcihzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllci50b1VJbnQ2NCgpKSArICItIiArICBTdHJpbmc6Om51bWJlcihjb250ZXh0SWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyPiBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNTAsNiArNTEsMjMgQEAgaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYg
YSwgY29uc3QgU2VydmljZVdvcmsKICAgICByZXR1cm4gYS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciA9PSBiLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyICYmICBhLmNvbnRleHRJZGVudGlm
aWVyID09IGIuY29udGV4dElkZW50aWZpZXI7CiB9CiAKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyOworCisgICAgdW5zaWduZWQgY291bnRl
ciA9IDA7CisgICAgZm9yIChhdXRvIGl0ZW0gOiBTdHJpbmdWaWV3IHsgc3RyaW5nIH0uc3BsaXQo
Jy0nKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBpdGVtLnRvVUludDY0U3RyaWN0KCk7
CisgICAgICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIGlmICghY291bnRlcisrKQorICAgICAgICAgICAgY2xpZW50SWRlbnRpZmll
ci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihpZGVudGlmaWVyLnZhbHVlKCkpOworICAgICAg
ICBlbHNlIGlmIChjb3VudGVyID09IDIpCisgICAgICAgICAgICBjbGllbnRJZGVudGlmaWVyLmNv
bnRleHRJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8RG9jdW1lbnRJZGVudGlmaWVy
VHlwZT4oaWRlbnRpZmllci52YWx1ZSgpKTsKKyAgICB9CisgICAgcmV0dXJuIChjb3VudGVyID09
IDIpID8gc3RkOjptYWtlX29wdGlvbmFsKFdURk1vdmUoY2xpZW50SWRlbnRpZmllcikpIDogc3Rk
OjpudWxsb3B0OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnRzLmNwcAppbmRleCBhMTQ1NTdlNmM0NDA4NzNkMTc3ZTdjOTZhZmFlYTI1OGM5ODMzYTBl
Li4wM2JkMjFkN2Y1YzhkMTQ3NmI4N2FhYjEwYzBjZjA1MDdjMzE5OGExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5j
cHAKQEAgLTI5LDEwICsyOSwxMiBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRzLmgi
CiAKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkpTU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VXb3JrZXJDbGllbnRzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorU2Vydmlj
ZVdvcmtlckNsaWVudHM6OlNlcnZpY2VXb3JrZXJDbGllbnRzKFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSYgY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKIHsKICAgICBz
dXNwZW5kSWZOZWVkZWQoKTsKQEAgLTQ4LDEwICs1MCw3MiBAQCBib29sIFNlcnZpY2VXb3JrZXJD
bGllbnRzOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKICAgICByZXR1
cm4gIWhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRz
OjpnZXRDb21wbGV0ZWQoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwg
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYgY2xp
ZW50RGF0YSwgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlUmVmZXJlbmNlKQoreworICAgIGF1dG8g
cHJvbWlzZSA9IG1fcGVuZGluZ1Byb21pc2VzLnRha2UocHJvbWlzZVJlZmVyZW5jZSk7CisgICAg
aWYgKCFwcm9taXNlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY2xpZW50RGF0YS5oYXNF
eGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLnZhbHVlKCktPnJlamVjdChjbGllbnREYXRh
LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBk
YXRhID0gY2xpZW50RGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBpZiAoIWRhdGEpIHsK
KyAgICAgICAgcHJvbWlzZS52YWx1ZSgpLT5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBwcm9taXNlLnZhbHVlKCktPnJl
c29sdmU8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJDbGllbnQ+PihTZXJ2aWNlV29ya2VyQ2xp
ZW50OjpnZXRPckNyZWF0ZShjb250ZXh0LCBpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEudmFsdWUo
KSkpKTsKK30KKworc3RhdGljIGlubGluZSBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPj4gaXNvbGF0ZWRFeGNlcHRpb25PckNsaWVudERhdGEoY29uc3Qg
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiB2YWx1
ZSkKK3sKKyAgICBpZiAodmFsdWUuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB2YWx1
ZS5leGNlcHRpb24oKS5pc29sYXRlZENvcHkoKTsKKworICAgIGF1dG8gY2xpZW50RGF0YSA9IHZh
bHVlLnJldHVyblZhbHVlKCk7CisgICAgaWYgKGNsaWVudERhdGEpCisgICAgICAgIGNsaWVudERh
dGEgPSBjbGllbnREYXRhLT5pc29sYXRlZENvcHkoKTsKKworICAgIHJldHVybiBXVEZNb3ZlKGNs
aWVudERhdGEpOworfQorCitzdHJ1Y3QgR2V0UmVxdWVzdFN0YXRlIHsKKyAgICBTZXJ2aWNlV29y
a2VyQ2xpZW50cyYgY2xpZW50czsKKyAgICBSZWY8QWN0aXZlRE9NT2JqZWN0OjpQZW5kaW5nQWN0
aXZpdHk8U2VydmljZVdvcmtlckNsaWVudHM+PiBwcm90ZWN0aW5nQ2xpZW50czsKKyAgICBEZWZl
cnJlZFByb21pc2UmIHByb21pc2U7CisgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcjsKK307CisKIHZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6OmdldChjb25zdCBTdHJpbmcm
IGlkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGlkKTsKLSAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiY2xpZW50cy5nZXQoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH0pOwor
ICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFj
b250ZXh0KSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2xpZW50SWRl
bnRpZmllciA9IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGlkKTsK
KyAgICBpZiAoIWNsaWVudElkZW50aWZpZXIpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYgc2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqY29udGV4dCk7Cisg
ICAgR2V0UmVxdWVzdFN0YXRlIHN0YXRlIHsgKnRoaXMsIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRo
aXMpLCBwcm9taXNlLCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkuaWRlbnRpZmll
cigpIH07CisKKyAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQoV1RGTW92ZShwcm9taXNlKSk7CisK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtzdGF0ZSA9IFdURk1vdmUoc3RhdGUpLCBjbGllbnRJZGVu
dGlmaWVyID0gY2xpZW50SWRlbnRpZmllci52YWx1ZSgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
YXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpOworICAgICAgICBjb25uZWN0aW9uLT5jbGllbnRGcm9tSWQoc3RhdGUuaWRlbnRpZmllciwg
Y2xpZW50SWRlbnRpZmllciwgW3N0YXRlID0gV1RGTW92ZShzdGF0ZSksIGNsaWVudElkZW50aWZp
ZXJdIChhdXRvJiYgY2xpZW50RGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzdGF0ZS5pZGVudGlm
aWVyLCBbc3RhdGUgPSBXVEZNb3ZlKHN0YXRlKSwgY2xpZW50SWRlbnRpZmllciwgY2xpZW50RGF0
YSA9IGlzb2xhdGVkRXhjZXB0aW9uT3JDbGllbnREYXRhKGNsaWVudERhdGEpXSAoYXV0byYpIG11
dGFibGUgeworICAgICAgICAgICAgICAgIHN0YXRlLmNsaWVudHMuZ2V0Q29tcGxldGVkKGNsaWVu
dElkZW50aWZpZXIsIFdURk1vdmUoY2xpZW50RGF0YSksIHN0YXRlLnByb21pc2UpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJD
bGllbnRzOjptYXRjaEFsbChjb25zdCBDbGllbnRRdWVyeU9wdGlvbnMmLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCkBAIC03MCw2ICsxMzQsMTEgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
Q2xpZW50czo6Y2xhaW0oUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIHByb21p
c2UtPnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJj
bGllbnRzLmNsYWltKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9KTsKIH0KIAordm9pZCBTZXJ2
aWNlV29ya2VyQ2xpZW50czo6c3RvcCgpCit7CisgICAgbV9wZW5kaW5nUHJvbWlzZXMuY2xlYXIo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudHMuaAppbmRleCA3NGJiYjdmMDRmMWExYzFiODQyYjBjODE4YmEzMWNm
OGEyOTdhYTUxLi41YWI3YWE3NGI3ODhlNDAwOGFhZmE0ZDFjNTI1NGJlOTJiMGNlZWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVu
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuaApAQCAtMjgsMTcgKzI4LDIxIEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
CiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9SZWYu
aD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZl
UmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERlZmVycmVkUHJv
bWlzZTsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcjsKK2NsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsKIAot
Y2xhc3MgU2VydmljZVdvcmtlckNsaWVudHMgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29y
a2VyQ2xpZW50cz4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QgeworY2xhc3MgU2VydmljZVdvcmtl
ckNsaWVudHMgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckNsaWVu
dHM+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNl
cnZpY2VXb3JrZXJDbGllbnRzPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkKKyAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnRzPiBjcmVhdGUoU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlJiBjb250ZXh0KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU2VydmljZVdvcmtlckNsaWVudHMoY29udGV4dCkpOwogICAgIH0KQEAgLTU0LDExICs1
OCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGFpbShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsK
IAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VyQ2xpZW50cyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jik7CisgICAgZXhwbGljaXQgU2VydmljZVdvcmtlckNsaWVudHMoU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlJik7CisKKyAgICB2b2lkIGdldENvbXBsZXRlZChTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllciwgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YT4+JiYsIERlZmVycmVkUHJvbWlzZSYpOwogCiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5h
bDsKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsKKworICAgIEhhc2hTZXQ8UmVmPERlZmVycmVkUHJv
bWlzZT4+IG1fcGVuZGluZ1Byb21pc2VzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCBlZGM3NGIxYzE1OTAxMGIxMGNlNTliZmY3NTA1YWE5
OTBkZWFkZGYxLi40MWE5ZjBhZDBmMWNkMjczOGJkOTUxMjk4MjlhOTQyNGJkOTUwOGZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTA2LDYgKzEwNiwxMiBAQCB2b2lkIFNXQ29udGV4dE1h
bmFnZXI6OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIH0pOwogfQogCit2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnBvc3RUYXNrVG9TZXJ2aWNl
V29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2smJiB0YXNrKQoreworICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2VyID0g
bV93b3JrZXJNYXAuZ2V0KGlkZW50aWZpZXIpKQorICAgICAgICBzZXJ2aWNlV29ya2VyLT50aHJl
YWQoKS5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggMmNmOGFiMzcwZjYy
NzZhZTk1ZWUxMGMzNjE0Yzg5ZDBkZDA5Y2VjMy4uOGFlMTVjZmZlNGZkOGI3OWY1NzIzMTdkNWRm
NTQ1ZGFjNDE2NWEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC01MSw2ICs1Miw5IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3b3Jr
ZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CisKKyAgICAgICAgdXNp
bmcgQ2xpZW50RnJvbUlkQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhj
ZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYpPjsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGNsaWVudEZyb21JZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIENsaWVudEZyb21JZENhbGxiYWNrJiYpID0g
MDsKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6
dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKQEAgLTYzLDYgKzY3LDggQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdFRhc2tUb1Nl
cnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2smJik7CisKIHByaXZhdGU6CiAgICAgU1dDb250ZXh0TWFuYWdlcigpID0gZGVmYXVs
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcAppbmRleCA2ZDU2NDg4ZjlmYTIzYzYwNzRlNDk3ZTUzOWI2ZjIwOGI2ODA0NjlhLi4w
OTA3NDNmNDliM2ZiZTc3ODcxOTQ2ZTQyMGE1N2Q3ZWRiZmY0Y2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMzA1LDYg
KzMwNSwxNiBAQCB2b2lkIFNXU2VydmVyOjp3b3JrZXJDb250ZXh0VGVybWluYXRlZChTV1NlcnZl
cldvcmtlciYgd29ya2VyKQogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwogfQog
CitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZlcjo6Y2xpZW50
RnJvbUlkKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllciBjbGllbnRJZGVudGlmaWVyKQoreworICAgIGF1dG8gY2xpZW50cyA9IG1fY2xpZW50
cy5nZXQob3JpZ2luKTsKKyAgICBhdXRvIHBvc2l0aW9uID0gY2xpZW50cy5maW5kTWF0Y2hpbmco
WyZdIChjb25zdCBhdXRvJiBjbGllbnQpIHsKKyAgICAgICAgcmV0dXJuIGNsaWVudElkZW50aWZp
ZXIgPT0gY2xpZW50LmlkZW50aWZpZXI7CisgICAgfSk7CisKKyAgICByZXR1cm4gKHBvc2l0aW9u
ICE9IG5vdEZvdW5kKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChjbGllbnRzW3Bvc2l0aW9uXS5kYXRh
KSA6IHN0ZDo6bnVsbG9wdDsKK30KKwogdm9pZCBTV1NlcnZlcjo6ZGlkUmVzb2x2ZVJlZ2lzdHJh
dGlvblByb21pc2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQogewogICAgIEFTU0VSVF9VTlVTRUQoY29u
bmVjdGlvbiwgbV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5o
CmluZGV4IDVmMzM4ZjZjMmE5N2I1MTAyMzAzZjA2ZTg5NWJiZDk3NmM0ODUxMGEuLjJiMjM4MjQz
M2YyMDZkYTcyYWQ1YTQyN2M4ODJmYjYxNTY1YTk3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTEzNSw2ICsxMzUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNXU2VydmVyV29ya2VyJiwgYm9vbCB3YXNT
dWNjZXNzZnVsKTsKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU1dTZXJ2ZXJXb3JrZXIm
KTsKICAgICB2b2lkIHdvcmtlckNvbnRleHRUZXJtaW5hdGVkKFNXU2VydmVyV29ya2VyJik7Cisg
ICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gY2xpZW50RnJvbUlkKGNv
bnN0IENsaWVudE9yaWdpbiYsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBiZTg1
YjM5ZjY2MWM2NjVlNGYxMTEwZTA0ZTRjYjQxYjU1Y2NmOTBhLi5lNjc3MGM3YWY1MzU5ZmY0MTYx
YjAyZTJhMWE4N2ZlYzU4ZDUwN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwCkBAIC0xMDgsNiArMTA4LDEyIEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpCiAg
ICAgICAgIHdvcmtlci0+Y29udGV4dFRlcm1pbmF0ZWQoKTsKIH0KIAordm9pZCBTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OmNsaWVudEZyb21JZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkKQoreworICAgIGlmIChhdXRvKiB3b3Jr
ZXIgPSBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSkKKyAgICAgICAgZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bigpLT5jbGllbnRGcm9tSWRDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHdvcmtlci0+Y2xp
ZW50RnJvbUlkKGNsaWVudElkKSwgZmFsc2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAppbmRleCA0YTE1MmYyMmI4MmFmMzNkZmNmNGYzZWE1NWVlZjU4MGY0
ZmRiNWViLi4wZjRiZWIwNzM0YTFhNGViNjNkYzkxNTM0MDQ3Y2M5MTA3M2ZiZTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTM0LDYgKzM0LDggQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1dTZXJ2ZXI7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNs
aWVudERhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBzdHJ1Y3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllcjsKIApAQCAtNDgsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZp
cmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNsaWVudEZyb21JZENvbXBsZXRlZCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpID0gMDsKIAogICAgIC8vIE1lc3NhZ2VzIGJhY2sg
ZnJvbSB0aGUgU1cgaG9zdCBwcm9jZXNzCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRD
b250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcj4mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKQEAgLTU2LDYgKzU5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpZW50RnJvbUlkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVz
dElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllcik7CiAKICAgICBzdGF0aWMgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBj
b25uZWN0aW9uRm9ySWRlbnRpZmllcihTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlm
aWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCAxZjBiMWRjZWM0YzQwNWU0N2Y2MWY4NjBmZjRh
MTA5ZmRhNDQ0ODBmLi5mMmU3NjVmNzMwMmQ4YzNmYWZiZmMyNGRiM2QyMjFiZmE1NzVkODJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcApAQCAtNjUsNiArNjUsMTQgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6
dGVybWluYXRlKCkKICAgICBtX3NlcnZlci50ZXJtaW5hdGVXb3JrZXIoKnRoaXMpOwogfQogCitj
b25zdCBDbGllbnRPcmlnaW4mIFNXU2VydmVyV29ya2VyOjpvcmlnaW4oKSBjb25zdAoreworICAg
IGlmICghbV9vcmlnaW4pCisgICAgICAgIG1fb3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgbV9yZWdp
c3RyYXRpb25LZXkudG9wT3JpZ2luKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5
T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9kYXRhLnNjcmlwdFVSTCkpIH07CisKKyAg
ICByZXR1cm4gKm1fb3JpZ2luOworfQorCiB2b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250
ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7
CiAgICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoam9iRGF0YUlkZW50aWZp
ZXIsICp0aGlzLCBtZXNzYWdlKTsKQEAgLTkwLDYgKzk4LDExIEBAIHZvaWQgU1dTZXJ2ZXJXb3Jr
ZXI6OmNvbnRleHRUZXJtaW5hdGVkKCkKICAgICBtX3NlcnZlci53b3JrZXJDb250ZXh0VGVybWlu
YXRlZCgqdGhpcyk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+
IFNXU2VydmVyV29ya2VyOjpjbGllbnRGcm9tSWQoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIgY2xpZW50SWQpCit7CisgICAgcmV0dXJuIG1fc2VydmVyLmNsaWVudEZyb21JZChvcmlnaW4o
KSwgY2xpZW50SWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggYzMwZDQ1OWZlNzNjZjk2ZTVk
MmYwNDZkMzMzYzkyNmU4N2M2MTg4NC4uOWNjNmYzOGVhNjlhYWRiYjI1ZDIyMTdkM2IyMTk5MDUz
ZWIyZDg3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMzYsMTAgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorc3RydWN0IENsaWVudE9yaWdpbjsKIGNsYXNzIFNXU2VydmVyOwogY2xhc3Mg
U1dTZXJ2ZXJSZWdpc3RyYXRpb247Ci1lbnVtIGNsYXNzIFdvcmtlclR5cGU7CitzdHJ1Y3QgU2Vy
dmljZVdvcmtlckNsaWVudERhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyOworZW51bSBjbGFzcyBX
b3JrZXJUeXBlOwogCiBjbGFzcyBTV1NlcnZlcldvcmtlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxTV1NlcnZlcldvcmtlcj4gewogcHVibGljOgpAQCAtNzMsMTAgKzc2LDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKICAgICB2
b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oKTsKICAgICB2b2lkIGNvbnRleHRUZXJtaW5hdGVkKCk7
CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gY2xpZW50RnJvbUlk
KFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTV1NlcnZlcldvcmtlciogZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKTsKIAogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJEYXRhJiBkYXRhKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4o
KSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2Vy
dmVyUmVnaXN0cmF0aW9uJiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKQEAgLTg3LDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29y
a2VyRGF0YSBtX2RhdGE7CiAgICAgU3RyaW5nIG1fc2NyaXB0OwogICAgIGJvb2wgbV9oYXNQZW5k
aW5nRXZlbnRzIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3Jp
Z2luPiBtX29yaWdpbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMjRlNGFk
YWUxYzJkOTM3OGE4M2YyNzE4ZDA5YTMyMzg4NjkyMjZmMC4uOTNhYjI0ZDUxYmE5NjNhMjNjNGRi
Yzg2ZTRlY2M2MzI0NzRiNWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTc2LDYgKzc2LDExIEBAIHZvaWQgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VyCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlRlcm1pbmF0ZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOwogfQogCit2b2lk
IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y2xpZW50RnJvbUlkQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiYgZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQoreworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbGllbnRGcm9tSWRDb21w
bGV0ZWQgeyByZXF1ZXN0SWRlbnRpZmllciwgZGF0YSwgaGFzU2VjdXJpdHlFcnJvciB9KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
aW5kZXggYjViODc0OTA2ZTFmYmNmNDVjYzI5M2M0Y2FhMTQ3YmMzZjQ2NzI5OS4uZWE5OTk5NzU0
MjA3MDM4YjA3YWE0MzhhNmNiMDQ0MDhmMzRkOTU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTksNiArNTksNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikgZmluYWw7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgY2xpZW50RnJvbUlk
Q29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJv
cikgZmluYWw7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2lwY0Nvbm5lY3Rpb247CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA4YjIzNDc4YjI2YTkwMGY2ODNkNzJkYTFlMGM0ZGU2
MmExOTI4MDkxLi5iMzRlNTIzMTZiMGQ1ZjkzNmVhYmYzYWIyY2U5MTkwMDRlODA2ZjE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uIHsKICAgICBEaWRGaW5pc2hBY3RpdmF0aW9uKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpOwogICAgIFNldFNlcnZpY2VXb3JrZXJI
YXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7CiAgICAgV29ya2VyVGVybWluYXRlZChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKKyAgICBDbGllbnRGcm9tSWQo
dWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcik7CiB9CiAKICNlbmRpZiAvLyBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5k
ZXggYzBjZWRhMTgxN2NlZjE1MTgxMzFlNmIyNDEwMmY3YTYyYTU4NGJlZi4uNDg5MGE4MzUxOTYx
YjVhMzdjZDdkMjQ2NjE2NmU2ZDJiZTJiMjkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNvbmZp
Z3VyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgog
CkBAIC0xOTQsNiArMTk1LDI0IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OndvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VyCiAgICAgbV9jb25u
ZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpXb3JrZXJUZXJtaW5hdGVkKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwg
MCk7CiB9CiAKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsaWVudEZyb21J
ZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgQ2xpZW50
RnJvbUlkQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvIHJlcXVlc3RJZGVudGlmaWVy
ID0gKyttX3ByZXZpb3VzUmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9jbGllbnRGcm9tSWRSZXF1
ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX2Nv
bm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OkNsaWVudEZyb21JZCB7IHJlcXVlc3RJZGVudGlmaWVyLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciB9LCAwKTsKK30KKwordm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xpZW50RnJvbUlkQ29tcGxldGVkKHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
PiYmIGNsaWVudERhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKK3sKKyAgICBpZiAoYXV0byBj
YWxsYmFjayA9IG1fY2xpZW50RnJvbUlkUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikp
IHsKKyAgICAgICAgaWYgKGhhc1NlY3VyaXR5RXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
KEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjbGllbnREYXRhKSk7CisgICAgfQorfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBjOWU2NWE0YWI4MzhiMDM2
MDE1NGI4NmIxNmU3N2MyMDY5ZGUyZWRmLi4zZTAyY2UzZTdjNDlkN2NiMTQxNjU5MjJjMzE3YmY2
YjljZmFmYTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTYxLDYgKzYx
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckhh
c1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpIGZp
bmFsOwogICAgIHZvaWQgd29ya2VyVGVybWluYXRlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllcikgZmluYWw7CisgICAgdm9pZCBjbGllbnRGcm9tSWQoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLCBD
bGllbnRGcm9tSWRDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAg
ICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSBmaW5hbDsKQEAg
LTcwLDEwICs3MSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVu
dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCB0ZXJtaW5hdGVX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgY2xpZW50
RnJvbUlkQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmLCBib29sIGhhc1NlY3VyaXR5RXJy
b3IpOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJv
Y2VzczsKICAgICB1aW50NjRfdCBtX3BhZ2VJRCB7IDAgfTsKICAgICB1aW50NjRfdCBtX3ByZXZp
b3VzU2VydmljZVdvcmtlcklEIHsgMCB9OworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ2xpZW50
RnJvbUlkQ2FsbGJhY2s+IG1fY2xpZW50RnJvbUlkUmVxdWVzdHM7CisgICAgdWludDY0X3QgbV9w
cmV2aW91c1JlcXVlc3RJZGVudGlmaWVyIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmlu
ZGV4IDczNmZkZjViNDcxNzliZTQwZWRhMTJjOWZjNmQ3MjY2MmMxZDdiYzQuLmJhZDhjNmVmZjdi
MzU4ZDViZmJhNmQxZmViMmQ5YjlkZmRhYTdjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yOSw2ICsyOSw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIHsKICAgICBGaXJlSW5zdGFsbEV2ZW50KFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgRmlyZUFjdGl2
YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICBUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKKyAgICBDbGllbnRGcm9tSWRDb21wbGV0ZWQodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0
SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YT4gZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZTg1
NmE4ZTcwYjQwOTYyYzNlZWQ1MjI3NDgyZTM5YzMwZTFkNzI5Li4xNDRlMjM3MDk0N2UwM2JhNjc2
MTg3OTExMGE3ZjE3MzE3NjRlNDg5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTEtMjkg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBo
dHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC13b3JrZXIuanM6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3Jr
ZXJjbGllbnRzLWdldC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy5odG1s
OiBBZGRlZC4KKwogMjAxNy0xMS0zMCAgTXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS10gRW5hYmxlIGFsbCB3cHQgdG91Y2gtZXZlbnRzIHRlc3RzLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlcnZp
Y2V3b3JrZXJjbGllbnRzLWdldC13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0LXdvcmtlci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hOTYzMjkzNDA4Yjg2OTFiZjRlYzEwNTgyNmMxYzRmMTYyNjRjY2QxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC13b3JrZXIuanMKQEAgLTAsMCArMSw0
MSBAQAordmFyIGNsaWVudCA9IG51bGw7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2Ui
LCBhc3luYyAoZXZlbnQpID0+IHsKKyAgICB0cnkgeworICAgICAgICB2YXIgY2xpZW50ID0gZXZl
bnQuc291cmNlOworCisgICAgICAgIGlmICghKGNsaWVudCBpbnN0YW5jZW9mIFdpbmRvd0NsaWVu
dCkpIHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogY2xpZW50
IHNvdXJjZSBpcyBub3QgYSBXaW5kb3dDbGllbnQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIHZhciByZXRyaWV2ZWRDbGllbnQgPSBhd2FpdCBzZWxmLmNsaWVu
dHMuZ2V0KGNsaWVudC5pZCk7CisgICAgICAgIGlmICghcmV0cmlldmVkQ2xpZW50KSB7CisgICAg
ICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIkZBSUw6IGRpZCBub3QgcmV0cmlldmUg
YW55IGNsaWVudCB0aHJvdWdoIHNlbGYuY2xpZW50cy5nZXQiKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXRyaWV2ZWRDbGllbnQuaWQgIT09IGNsaWVu
dC5pZCkgeworICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiBjbGll
bnQgaWQgaXMgZGlmZmVyZW50IGZyb20gcmV0cmlldmVkIGNsaWVudCBpZCB0aHJvdWdoIHNlbGYu
Y2xpZW50cy5nZXQ6ICIgKyBjbGllbnQuaWQgKyAiIC8gIiArIHJldHJpZXZlZENsaWVudC5pZCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAocmV0cmlldmVk
Q2xpZW50ICE9PSBjbGllbnQpIHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2Fn
ZSgiRkFJTDogY2xpZW50IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgcmV0cmlldmVkIHRocm91
Z2ggc2VsZi5jbGllbnRzLmdldCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgdmFyIGJhZElkcyA9IFtjbGllbnQuaWQgKyAiMCIsICIwLTAiLCAiMC0iLCAiLSIs
ICItMCJdOworICAgICAgICBmb3IgKGlkIGluIGJhZElkcykgeworICAgICAgICAgICAgcmV0cmll
dmVkQ2xpZW50ID0gYXdhaXQgc2VsZi5jbGllbnRzLmdldChpZCk7CisgICAgICAgICAgICBpZiAo
ISFyZXRyaWV2ZWRDbGllbnQpIHsKKyAgICAgICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1l
c3NhZ2UoIkZBSUw6IHJldHJpZXZlZCBjbGllbnQgd2l0aCBiYWQgaWQgIiArIGlkICsgIiBzaG91
bGQgYmUgbnVsbCIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiUEFTUyIpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiBy
ZWNlaXZlZCBleGNlcHRpb24gIiArIGUpOworICAgIH0KK30pOworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1n
ZXQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jN2YzNjZiMmEyYWNmNWE5YmVkNGRjZjJmZjY1NjM5MGNlNTRjNTMzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdv
cmtlcmNsaWVudHMtZ2V0Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFT
UyBUZXN0aW5nIGNsaWVudHMuZ2V0IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGll
bnRzLWdldC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliYmZiYTM4Y2NlZjdmMGQ5ZTY4MzdlODQ3
OWJiYjZmOTUyMWM2ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMuaHRtbApAQCAt
MCwwICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCitwcm9t
aXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNl
KChyZXNvbHZlKSA9PiB7CisgICAgICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCB0ZXN0LnN0ZXBfZnVuYygoZXZlbnQpID0+IHsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuZGF0YSwgIlBBU1MiKTsKKyAgICAgICAgICAgIHJlc29s
dmUoKTsKKyAgICAgICAgfSkpOworICAgIH0pOworCisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3
YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvc2VydmljZXdv
cmtlcmNsaWVudHMtZ2V0LXdvcmtlci5qcyIsIHsgc2NvcGUgOiAiL25vb25lIiB9KTsKKyAgICB2
YXIgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgaWYgKCF3b3JrZXIpCisg
ICAgICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5hY3RpdmU7CisgICAgd29ya2VyLnBvc3RNZXNz
YWdlKCJzdGFydCIpOworCisgICAgYXdhaXQgcHJvbWlzZTsKK30sICJUZXN0aW5nIGNsaWVudHMu
Z2V0Iik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328004</attachid>
            <date>2017-11-30 12:15:05 -0800</date>
            <delta_ts>2017-12-01 09:29:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180167-20171130121504.patch</filename>
            <type>text/plain</type>
            <size>35716</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ4ZjFmNjU0ZWMzOTJmMmE3NjFlZDNl
MjU2MDNhZDBiZWM0MGI1YmIuLmI4YmU4MGYwNTIzMmRhMzIxNDgwN2MxOTEzOTBhY2I0MmY0ZGM5
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTEtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RG
OjpTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdCBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisKIDIwMTctMTEtMjkgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdURiAvIGJtYWxsb2M6IGRvbid0IHdyaXRlIHRvIDB4YmJhZGJlZWYg
d2hlbiBBU0FOIGlzIGxvb2tpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkOTFhZWIyZDZjOTMyNjUwYzQ2NDAy
MWU3ZTMwNjk1YWFiMGQwMDU5Li5hODY3NDk0MmQyZjIyNWQ1OWMzYTk4ZGRiOGZkNDNiYWY5ZWIz
NmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTctMTEtMjkgIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5n
aXRodWIuaW8vU2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy5odG1sCisKKyAgICAgICAgSW1wbGVt
ZW50IGNsaWVudHMgZ2V0IGJ5IGhhdmluZyBzZXJ2aWNlIHdvcmtlciBjbGllbnRzIGRvIHRoZSBm
b2xsb3dpbmc6CisgICAgICAgIC0gR28gdG8gbWFpbiB0aHJlYWQgdG8gcXVlcnkgdGhlIFNXQ2xp
ZW50Q29ubmVjdGlvbiBmb3IgZ2V0dGluZyB0aGUgY2xpZW50LgorICAgICAgICAtIFNXQ2xpZW50
Q29ubmVjdGlvbiByZXF1ZXN0cyBpdCB0aHJvdWdoIElQQyB0byBTdG9yYWdlUHJvY2VzcyBTV1Nl
cnZlci4KKyAgICAgICAgLSBTV1NlcnZlciBsb29rcyBhdCBpdHMgY2xpZW50IG1hcCBhbmQgcmV0
dXJucyBjbGllbnQgZGF0YSBiYXNlZCBvbiB0aGUgZ2l2ZW4gaWRlbnRpZmllci4KKyAgICAgICAg
LSBTV0NsaWVudENvbm5lY3Rpb24gc2VuZHMgaXQgYmFjayB0byB0aGUgcmlnaHQgY2xpZW50cyBm
b3IgcmVzb2x2aW5nIHRoZSBwcm9taXNlLgorCisgICAgICAgIElkZW50aWZpZXIgaXMgcGFyc2Vk
IGF0IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgbGV2ZWwuCisKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpmcm9tU3RyaW5nKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudHM6OlNlcnZpY2VXb3JrZXJDbGllbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRzOjpnZXQpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudHM6OmNyZWF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5h
Z2VyOjpwb3N0VGFza1RvU2VydmljZVdvcmtlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmdldENsaWVu
dEZyb21JZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
Y2xpZW50RnJvbUlkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6Om9y
aWdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6Y2xpZW50RnJv
bUlkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6
CisKIDIwMTctMTEtMzAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtDb29yZEdyYXBoaWNzXSBNb3ZlIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBwYWlu
dGluZyBiZWhpbmQgTmljb3NpYTo6UGFpbnRpbmdFbmdpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNmRjN2U2Mzg3
N2NiNjc1ZGI5MzA4Yzg4MjcxNDMyMjI1Yjk4YWI4Yi4uN2QyNmQ1YWM4OTBiM2Q2YmM2NjU5YzM0
OTM0NTM3MTg3YWU5MDYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0xMS0yOSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNjbGllbnRzLWdldAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIElQQyBwbHVtYmVyeSBm
b3IgY2xpZW50RnJvbUlkIGJldHdlZW4gU2VydmljZVdvcmtlciBwcm9jZXNzIGFuZCBTdG9yYWdl
IHByb2Nlc3MuCisKKyAgICAgICAgKiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Y2xpZW50RnJvbUlkQ29tcGxldGVkKToKKyAgICAgICAg
KiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbGllbnRGcm9tSWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xpZW50RnJvbUlkQ29t
cGxldGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIwMTctMTEtMzAgIFphbiBEb2JlcnNl
ayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDb29yZEdyYXBoaWNzXSBNb3Zl
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBwYWludGluZyBiZWhpbmQgTmljb3NpYTo6UGFpbnRp
bmdFbmdpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNDhmNzhkZDRmODQxNzMxYzY2
NDk5NzQwODg2ODZmYmFhZDI1OGU0OS4uYzg4MTE4YjY2N2EzMjYwYjBhNWM0NWRhMjg3YmEyNThi
NmIyYmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CkBAIC0xNDYsNiArMTQ3LDcgQEAgcHVibGljOgogICAgIGludCB0b0ludCgp
IGNvbnN0OwogICAgIGludCB0b0ludChib29sJiBpc1ZhbGlkKSBjb25zdDsKICAgICBpbnQgdG9J
bnRTdHJpY3QoYm9vbCYgaXNWYWxpZCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gdG9VSW50NjRTdHJpY3QoKSBjb25zdDsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wmIGlzVmFs
aWQpIGNvbnN0OwogCiAgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZShjb25zdCBTdHJpbmdJbXBs
Jik7CkBAIC01MjMsNiArNTI1LDEzIEBAIGlubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnRTdHJp
Y3QoYm9vbCYgaXNWYWxpZCkgY29uc3QKICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0
KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwogfQogCitpbmxpbmUgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gU3RyaW5nVmlldzo6dG9VSW50NjRTdHJpY3QoKSBjb25zdAorewor
ICAgIGJvb2wgaXNWYWxpZDsKKyAgICB1aW50NjRfdCByZXN1bHQgPSBpczhCaXQoKSA/IGNoYXJh
Y3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpIDog
Y2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFs
aWQpOworICAgIHJldHVybiBpc1ZhbGlkID8gc3RkOjptYWtlX29wdGlvbmFsKHJlc3VsdCkgOiBz
dGQ6Om51bGxvcHQ7Cit9CisKIGlubGluZSBTdHJpbmcgU3RyaW5nVmlldzo6dG9TdHJpbmdXaXRo
b3V0Q29weWluZygpIGNvbnN0CiB7CiAgICAgaWYgKGlzOEJpdCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKaW5kZXggYzhhNGRkNmZhNDkwYTZlODRkNzk1NzUzYTYyOWUzMGQ1OWVlNThhYy4uZDJi
OTliZjI1ZTNjODEwMWQzODM4NTQ4ZTNjZDBiOTlkYWQ5MDk5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCkBAIC00Niw4ICs0Niw4IEBAIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB1bnNpZ25lZCBj
aGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sCiBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hh
ciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKIGludDY0X3Qg
Y2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0
KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTAp
OwotdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90
LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotdWludDY0X3QgY2hhcmFjdGVy
c1RvVUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIs
IGludCBiYXNlID0gMTApOworV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHVpbnQ2NF90IGNoYXJhY3Rl
cnNUb1VJbnQ2NFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRy
LCBpbnQgYmFzZSA9IDEwKTsKK1dURl9FWFBPUlRfU1RSSU5HX0FQSSB1aW50NjRfdCBjaGFyYWN0
ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0
ciwgaW50IGJhc2UgPSAxMCk7CiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29u
c3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiBp
bnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJv
b2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlm
aWVyLmgKaW5kZXggNjI4NTVkNTRiY2M3MDE5MTdkMWI4ZmIyNGEzOTc2M2RkM2FiNTZhOC4uNjJh
Yzg1ZTYwMDBhYzMwZGJjZWY3ZjUwZjU2OWNhZjdmYTc5OTJiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyLmgKQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyIHsKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgdG9T
dHJpbmcoKSBjb25zdCB7IHJldHVybiBTdHJpbmc6Om51bWJlcihzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllci50b1VJbnQ2NCgpKSArICItIiArICBTdHJpbmc6Om51bWJlcihjb250ZXh0SWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyPiBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtNTAsNiArNTEsMjMgQEAgaW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYg
YSwgY29uc3QgU2VydmljZVdvcmsKICAgICByZXR1cm4gYS5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciA9PSBiLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyICYmICBhLmNvbnRleHRJZGVudGlm
aWVyID09IGIuY29udGV4dElkZW50aWZpZXI7CiB9CiAKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyOworCisgICAgdW5zaWduZWQgY291bnRl
ciA9IDA7CisgICAgZm9yIChhdXRvIGl0ZW0gOiBTdHJpbmdWaWV3IHsgc3RyaW5nIH0uc3BsaXQo
Jy0nKSkgeworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBpdGVtLnRvVUludDY0U3RyaWN0KCk7
CisgICAgICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIGlmICghY291bnRlcisrKQorICAgICAgICAgICAgY2xpZW50SWRlbnRpZmll
ci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPihpZGVudGlmaWVyLnZhbHVlKCkpOworICAgICAg
ICBlbHNlIGlmIChjb3VudGVyID09IDIpCisgICAgICAgICAgICBjbGllbnRJZGVudGlmaWVyLmNv
bnRleHRJZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8RG9jdW1lbnRJZGVudGlmaWVy
VHlwZT4oaWRlbnRpZmllci52YWx1ZSgpKTsKKyAgICB9CisgICAgcmV0dXJuIChjb3VudGVyID09
IDIpID8gc3RkOjptYWtlX29wdGlvbmFsKFdURk1vdmUoY2xpZW50SWRlbnRpZmllcikpIDogc3Rk
OjpudWxsb3B0OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnRzLmNwcAppbmRleCBhMTQ1NTdlNmM0NDA4NzNkMTc3ZTdjOTZhZmFlYTI1OGM5ODMzYTBl
Li43NWM2YzA1ZjZlOTcyNTJkYzA1ZmIwNGQwYjJhNzFmNTdjODFmMDc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5j
cHAKQEAgLTI5LDEwICsyOSwxMiBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRzLmgi
CiAKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkpTU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNlcnZpY2VXb3JrZXJDbGllbnRzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQorU2Vydmlj
ZVdvcmtlckNsaWVudHM6OlNlcnZpY2VXb3JrZXJDbGllbnRzKFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSYgY29udGV4dCkKICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKIHsKICAgICBz
dXNwZW5kSWZOZWVkZWQoKTsKQEAgLTQ4LDEwICs1MCw3MyBAQCBib29sIFNlcnZpY2VXb3JrZXJD
bGllbnRzOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKICAgICByZXR1
cm4gIWhhc1BlbmRpbmdBY3Rpdml0eSgpOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRz
OjpnZXRDb21wbGV0ZWQoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllciwg
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiYgY2xp
ZW50RGF0YSwgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlUmVmZXJlbmNlKQoreworICAgIGF1dG8g
cHJvbWlzZSA9IG1fcGVuZGluZ1Byb21pc2VzLnRha2UocHJvbWlzZVJlZmVyZW5jZSk7CisgICAg
aWYgKCFwcm9taXNlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY2xpZW50RGF0YS5oYXNF
eGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLnZhbHVlKCktPnJlamVjdChjbGllbnREYXRh
LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBk
YXRhID0gY2xpZW50RGF0YS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBpZiAoIWRhdGEpIHsK
KyAgICAgICAgcHJvbWlzZS52YWx1ZSgpLT5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBwcm9taXNlLnZhbHVlKCktPnJl
c29sdmU8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJDbGllbnQ+PihTZXJ2aWNlV29ya2VyQ2xp
ZW50OjpnZXRPckNyZWF0ZShjb250ZXh0LCBpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEudmFsdWUo
KSkpKTsKK30KKworc3RhdGljIGlubGluZSBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPj4gaXNvbGF0ZWRFeGNlcHRpb25PckNsaWVudERhdGEoY29uc3Qg
RXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4+JiB2YWx1
ZSkKK3sKKyAgICBpZiAodmFsdWUuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB2YWx1
ZS5leGNlcHRpb24oKS5pc29sYXRlZENvcHkoKTsKKworICAgIGF1dG8gY2xpZW50RGF0YSA9IHZh
bHVlLnJldHVyblZhbHVlKCk7CisgICAgaWYgKGNsaWVudERhdGEpCisgICAgICAgIGNsaWVudERh
dGEgPSBjbGllbnREYXRhLT5pc29sYXRlZENvcHkoKTsKKworICAgIHJldHVybiBXVEZNb3ZlKGNs
aWVudERhdGEpOworfQorCitzdHJ1Y3QgR2V0UmVxdWVzdFN0YXRlIHsKKyAgICBTZXJ2aWNlV29y
a2VyQ2xpZW50cyYgY2xpZW50czsKKyAgICBSZWY8QWN0aXZlRE9NT2JqZWN0OjpQZW5kaW5nQWN0
aXZpdHk8U2VydmljZVdvcmtlckNsaWVudHM+PiBwcm90ZWN0aW5nQ2xpZW50czsKKyAgICBEZWZl
cnJlZFByb21pc2UmIHByb21pc2U7CisgICAgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcjsKK307CisKIHZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6OmdldChjb25zdCBTdHJpbmcm
IGlkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGlkKTsKLSAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiY2xpZW50cy5nZXQoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH0pOwor
ICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFj
b250ZXh0KSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3Rh
dGVFcnJvciB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmll
ciA9IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGlkKTsKKyAgICBp
ZiAoIWlkZW50aWZpZXIpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGF1dG8gY2xpZW50SWRlbnRpZmllciA9IGlkZW50aWZpZXIudmFs
dWUoKTsKKworICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRleHQpOworICAgIEdldFJlcXVlc3RTdGF0ZSBz
dGF0ZSB7ICp0aGlzLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSwgcHJvbWlzZSwgc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLmlkZW50aWZpZXIoKSB9OworCisgICAgbV9wZW5k
aW5nUHJvbWlzZXMuYWRkKFdURk1vdmUocHJvbWlzZSkpOworCisgICAgY2FsbE9uTWFpblRocmVh
ZChbc3RhdGUgPSBXVEZNb3ZlKHN0YXRlKSwgY2xpZW50SWRlbnRpZmllcl0gKCkgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LmNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29ubmVjdGlvbi0+Y2xpZW50RnJvbUlkKHN0YXRlLmlk
ZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIsIFtzdGF0ZSA9IFdURk1vdmUoc3RhdGUpLCBjbGll
bnRJZGVudGlmaWVyXSAoYXV0byYmIGNsaWVudERhdGEpIG11dGFibGUgeworICAgICAgICAgICAg
U1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc3Rh
dGUuaWRlbnRpZmllciwgW3N0YXRlID0gV1RGTW92ZShzdGF0ZSksIGNsaWVudElkZW50aWZpZXIs
IGRhdGEgPSBpc29sYXRlZEV4Y2VwdGlvbk9yQ2xpZW50RGF0YShjbGllbnREYXRhKV0gKGF1dG8m
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS5jbGllbnRzLmdldENvbXBsZXRlZChj
bGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpLCBzdGF0ZS5wcm9taXNlKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ2xp
ZW50czo6bWF0Y2hBbGwoY29uc3QgQ2xpZW50UXVlcnlPcHRpb25zJiwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQpAQCAtNzAsNiArMTM1LDExIEBAIHZvaWQgU2VydmljZVdvcmtlckNs
aWVudHM6OmNsYWltKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICBwcm9taXNl
LT5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiY2xp
ZW50cy5jbGFpbSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIikgfSk7CiB9CiAKK3ZvaWQgU2Vydmlj
ZVdvcmtlckNsaWVudHM6OnN0b3AoKQoreworICAgIG1fcGVuZGluZ1Byb21pc2VzLmNsZWFyKCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50cy5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnRzLmgKaW5kZXggNzRiYmI3ZjA0ZjFhMWMxYjg0MmIwYzgxOGJhMzFjZjhh
Mjk3YWE1MS4uNWFiN2FhNzRiNzg4ZTQwMDhhYWZhNGQxYzUyNTRiZTkyYjBjZWVjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnRzLmgKQEAgLTI4LDE3ICsyOCwyMSBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAog
I2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWZlcnJlZFByb21p
c2U7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXI7CitjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiAKLWNs
YXNzIFNlcnZpY2VXb3JrZXJDbGllbnRzIDogcHVibGljIFJlZkNvdW50ZWQ8U2VydmljZVdvcmtl
ckNsaWVudHM+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK2NsYXNzIFNlcnZpY2VXb3JrZXJD
bGllbnRzIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnRz
PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2
aWNlV29ya2VyQ2xpZW50cz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
CisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50cz4gY3JlYXRlKFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSYgY29udGV4dCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNlcnZpY2VXb3JrZXJDbGllbnRzKGNvbnRleHQpKTsKICAgICB9CkBAIC01NCwxMSArNTgs
MTYgQEAgcHVibGljOgogICAgIHZvaWQgY2xhaW0oUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAK
IHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU2VydmljZVdvcmtlckNsaWVudHMoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOworICAgIGV4cGxpY2l0IFNlcnZpY2VXb3JrZXJDbGllbnRzKFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSYpOworCisgICAgdm9pZCBnZXRDb21wbGV0ZWQoU2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckNsaWVudERhdGE+PiYmLCBEZWZlcnJlZFByb21pc2UmKTsKIAogICAgIC8vIEFjdGl2ZURPTU9i
amVjdC4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7
CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisKKyAgICBIYXNoU2V0PFJlZjxEZWZlcnJlZFByb21p
c2U+PiBtX3BlbmRpbmdQcm9taXNlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5jcHAKaW5kZXggZWRjNzRiMWMxNTkwMTBiMTBjZTU5YmZmNzUwNWFhOTkw
ZGVhZGRmMS4uNDFhOWYwYWQwZjFjZDI3MzhiZDk1MTI5ODI5YTk0MjRiZDk1MDhmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5jcHAKQEAgLTEwNiw2ICsxMDYsMTIgQEAgdm9pZCBTV0NvbnRleHRNYW5h
Z2VyOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICB9KTsKIH0KIAordm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpwb3N0VGFza1RvU2VydmljZVdv
cmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYgdGFzaykKK3sKKyAgICBpZiAoYXV0byogc2VydmljZVdvcmtlciA9IG1f
d29ya2VyTWFwLmdldChpZGVudGlmaWVyKSkKKyAgICAgICAgc2VydmljZVdvcmtlci0+dGhyZWFk
KCkucnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IDJjZjhhYjM3MGY2Mjc2
YWU5NWVlMTBjMzYxNGM4OWQwZGQwOWNlYzMuLjhhZTE1Y2ZmZTRmZDhiNzlmNTcyMzE3ZDVkZjU0
NWRhYzQxNjVhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgiCisjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTEsNiArNTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgYm9vbCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgd29ya2Vy
VGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOworCisgICAgICAgIHVzaW5n
IENsaWVudEZyb21JZENhbGxiYWNrID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2Vw
dGlvbk9yPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmKT47CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBjbGllbnRGcm9tSWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLCBDbGllbnRGcm9tSWRDYWxsYmFjayYmKSA9IDA7
CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlvbihzdGQ6OnVu
aXF1ZV9wdHI8Q29ubmVjdGlvbj4mJik7CkBAIC02Myw2ICs2Nyw4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RUYXNrVG9TZXJ2
aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrJiYpOworCiBwcml2YXRlOgogICAgIFNXQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1bHQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAKaW5kZXggNmQ1NjQ4OGY5ZmEyM2M2MDc0ZTQ5N2U1MzliNmYyMDhiNjgwNDY5YS4uMDkw
NzQzZjQ5YjNmYmU3Nzg3MTk0NmU0MjBhNTdkN2VkYmZmNGNkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTMwNSw2ICsz
MDUsMTYgQEAgdm9pZCBTV1NlcnZlcjo6d29ya2VyQ29udGV4dFRlcm1pbmF0ZWQoU1dTZXJ2ZXJX
b3JrZXImIHdvcmtlcikKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKIH0KIAor
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU1dTZXJ2ZXI6OmNsaWVudEZy
b21JZChjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbiwgU2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXIgY2xpZW50SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGNsaWVudHMgPSBtX2NsaWVudHMu
Z2V0KG9yaWdpbik7CisgICAgYXV0byBwb3NpdGlvbiA9IGNsaWVudHMuZmluZE1hdGNoaW5nKFsm
XSAoY29uc3QgYXV0byYgY2xpZW50KSB7CisgICAgICAgIHJldHVybiBjbGllbnRJZGVudGlmaWVy
ID09IGNsaWVudC5pZGVudGlmaWVyOworICAgIH0pOworCisgICAgcmV0dXJuIChwb3NpdGlvbiAh
PSBub3RGb3VuZCkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoY2xpZW50c1twb3NpdGlvbl0uZGF0YSkg
OiBzdGQ6Om51bGxvcHQ7Cit9CisKIHZvaWQgU1dTZXJ2ZXI6OmRpZFJlc29sdmVSZWdpc3RyYXRp
b25Qcm9taXNlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKIHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbm5l
Y3Rpb24sIG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApp
bmRleCA1ZjMzOGY2YzJhOTdiNTEwMjMwM2YwNmU4OTViYmQ5NzZjNDg1MTBhLi4yYjIzODI0MzNm
MjA2ZGE3MmFkNWE0MjdjODgyZmI2MTU2NWE5NzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xMzUsNiArMTM1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTV1NlcnZlcldvcmtlciYsIGJvb2wgd2FzU3Vj
Y2Vzc2Z1bCk7CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFNXU2VydmVyV29ya2VyJik7
CiAgICAgdm9pZCB3b3JrZXJDb250ZXh0VGVybWluYXRlZChTV1NlcnZlcldvcmtlciYpOworICAg
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGNsaWVudEZyb21JZChjb25z
dCBDbGllbnRPcmlnaW4mLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcik7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCk7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggYmU4NWIz
OWY2NjFjNjY1ZTRmMTExMGUwNGU0Y2I0MWI1NWNjZjkwYS4uZTY3NzBjN2FmNTM1OWZmNDE2MWIw
MmUyYTFhODdmZWM1OGQ1MDdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcApAQCAtMTA4LDYgKzEwOCwxMiBAQCB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6d29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aQogICAg
ICAgICB3b3JrZXItPmNvbnRleHRUZXJtaW5hdGVkKCk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpjbGllbnRGcm9tSWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZCkKK3sKKyAgICBpZiAoYXV0byogd29ya2Vy
ID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29y
a2VySWRlbnRpZmllcikpCisgICAgICAgIGdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24o
KS0+Y2xpZW50RnJvbUlkQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCB3b3JrZXItPmNsaWVu
dEZyb21JZChjbGllbnRJZCksIGZhbHNlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKaW5kZXggNGExNTJmMjJiODJhZjMzZGZjZjRmM2VhNTVlZWY1ODBmNGZk
YjVlYi4uMGY0YmViMDczNGExYTRlYjYzZGM5MTUzNDA0N2NjOTEwNzNmYmUwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0zNCw2ICszNCw4IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNXU2VydmVyOworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhOworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwogc3RydWN0IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXI7CiAKQEAgLTQ4LDYgKzUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaXJl
SW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBjbGllbnRGcm9tSWRDb21wbGV0ZWQodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+
JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSA9IDA7CiAKICAgICAvLyBNZXNzYWdlcyBiYWNrIGZy
b20gdGhlIFNXIGhvc3QgcHJvY2VzcwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NyaXB0Q29u
dGV4dEZhaWxlZFRvU3RhcnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXI+JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7CkBAIC01Niw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsaWVudEZyb21JZCh1aW50NjRfdCBjbGllbnRJZFJlcXVlc3RJ
ZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXIpOwogCiAgICAgc3RhdGljIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29u
bmVjdGlvbkZvcklkZW50aWZpZXIoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmll
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggMWYwYjFkY2VjNGM0MDVlNDdmNjFmODYwZmY0YTEw
OWZkYTQ0NDgwZi4uZjJlNzY1ZjczMDJkOGMzZmFmYmZjMjRkYjNkMjIxYmZhNTc1ZDgyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5jcHAKQEAgLTY1LDYgKzY1LDE0IEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRl
cm1pbmF0ZSgpCiAgICAgbV9zZXJ2ZXIudGVybWluYXRlV29ya2VyKCp0aGlzKTsKIH0KIAorY29u
c3QgQ2xpZW50T3JpZ2luJiBTV1NlcnZlcldvcmtlcjo6b3JpZ2luKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fb3JpZ2luKQorICAgICAgICBtX29yaWdpbiA9IENsaWVudE9yaWdpbiB7IG1fcmVnaXN0
cmF0aW9uS2V5LnRvcE9yaWdpbigpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9y
aWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fZGF0YS5zY3JpcHRVUkwpKSB9OworCisgICAg
cmV0dXJuICptX29yaWdpbjsKK30KKwogdm9pZCBTV1NlcnZlcldvcmtlcjo6c2NyaXB0Q29udGV4
dEZhaWxlZFRvU3RhcnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewog
ICAgIG1fc2VydmVyLnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGpvYkRhdGFJZGVudGlmaWVy
LCAqdGhpcywgbWVzc2FnZSk7CkBAIC05MCw2ICs5OCwxMSBAQCB2b2lkIFNXU2VydmVyV29ya2Vy
Ojpjb250ZXh0VGVybWluYXRlZCgpCiAgICAgbV9zZXJ2ZXIud29ya2VyQ29udGV4dFRlcm1pbmF0
ZWQoKnRoaXMpOwogfQogCitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBT
V1NlcnZlcldvcmtlcjo6Y2xpZW50RnJvbUlkKFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
IGNsaWVudElkKQoreworICAgIHJldHVybiBtX3NlcnZlci5jbGllbnRGcm9tSWQob3JpZ2luKCks
IGNsaWVudElkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IGMzMGQ0NTlmZTczY2Y5NmU1ZDJm
MDQ2ZDMzM2M5MjZlODdjNjE4ODQuLjljYzZmMzhlYTY5YWFkYmIyNWQyMjE3ZDNiMjE5OTA1M2Vi
MmQ4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTM2LDEwICszNiwxMyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK3N0cnVjdCBDbGllbnRPcmlnaW47CiBjbGFzcyBTV1NlcnZlcjsKIGNsYXNzIFNX
U2VydmVyUmVnaXN0cmF0aW9uOwotZW51bSBjbGFzcyBXb3JrZXJUeXBlOworc3RydWN0IFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhOworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
Owogc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcjsKK2VudW0gY2xhc3MgV29y
a2VyVHlwZTsKIAogY2xhc3MgU1dTZXJ2ZXJXb3JrZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U1dTZXJ2ZXJXb3JrZXI+IHsKIHB1YmxpYzoKQEAgLTczLDEwICs3NiwxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CiAgICAgdm9p
ZCBkaWRGaW5pc2hBY3RpdmF0aW9uKCk7CiAgICAgdm9pZCBjb250ZXh0VGVybWluYXRlZCgpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGNsaWVudEZyb21JZChT
ZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU1dTZXJ2ZXJXb3JrZXIqIGV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CiAKICAgICBjb25zdCBTZXJ2aWNlV29ya2VyRGF0YSYgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKCkg
Y29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZl
clJlZ2lzdHJhdGlvbiYsIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIsIGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CkBAIC04Nyw2ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtl
ckRhdGEgbV9kYXRhOwogICAgIFN0cmluZyBtX3NjcmlwdDsKICAgICBib29sIG1faGFzUGVuZGlu
Z0V2ZW50cyB7IGZhbHNlIH07CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdp
bj4gbV9vcmlnaW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDI0ZTRhZGFl
MWMyZDkzNzhhODNmMjcxOGQwOWEzMjM4ODY5MjI2ZjAuLjkzYWIyNGQ1MWJhOTYzYTIzYzRkYmM4
NmU0ZWNjNjMyNDc0YjVkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC03Niw2ICs3NiwxMSBAQCB2b2lkIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpUZXJtaW5hdGVXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKIH0KIAordm9pZCBX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmNsaWVudEZyb21JZENvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4mIGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKK3sKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xpZW50RnJvbUlkQ29tcGxl
dGVkIHsgcmVxdWVzdElkZW50aWZpZXIsIGRhdGEsIGhhc1NlY3VyaXR5RXJyb3IgfSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmlu
ZGV4IGI1Yjg3NDkwNmUxZmJjZjQ1Y2MyOTNjNGNhYTE0N2JjM2Y0NjcyOTkuLmVhOTk5OTc1NDIw
NzAzOGIwN2FhNDM4YTZjYjA0NDA4ZjM0ZDk1NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIpIGZpbmFsOwogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIGNsaWVudEZyb21JZENv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3Ip
IGZpbmFsOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9pcGNDb25uZWN0aW9uOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggOGIyMzQ3OGIyNmE5MDBmNjgzZDcyZGExZTBjNGRlNjJh
MTkyODA5MS4uYjM0ZTUyMzE2YjBkNWY5MzZlYWJmM2FiMmNlOTE5MDA0ZTgwNmYxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1N0
b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCkBAIC0zMSw2ICszMSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiB7CiAgICAgRGlkRmluaXNoQWN0aXZhdGlvbihXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKICAgICBTZXRTZXJ2aWNlV29ya2VySGFz
UGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
LCBib29sIGhhc1BlbmRpbmdFdmVudHMpOwogICAgIFdvcmtlclRlcm1pbmF0ZWQoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcik7CisgICAgQ2xpZW50RnJvbUlkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4
IGMwY2VkYTE4MTdjZWYxNTE4MTMxZTZiMjQxMDJmN2E2MmE1ODRiZWYuLjQ4OTBhODM1MTk2MWI1
YTM3Y2Q3ZDI0NjYxNjZlNmQyYmUyYjI5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25maWd1
cmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIApA
QCAtMTk0LDYgKzE5NSwyNCBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp3
b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcgogICAgIG1fY29ubmVj
dGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6V29ya2VyVGVybWluYXRlZChzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDAp
OwogfQogCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbGllbnRGcm9tSWQo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIENsaWVudEZy
b21JZENhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9
ICsrbV9wcmV2aW91c1JlcXVlc3RJZGVudGlmaWVyOworICAgIG1fY2xpZW50RnJvbUlkUmVxdWVz
dHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9jb25u
ZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpDbGllbnRGcm9tSWQgeyByZXF1ZXN0SWRlbnRpZmllciwgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZpZXIgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsaWVudEZyb21JZENvbXBsZXRlZCh1aW50NjRfdCBy
ZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4m
JiBjbGllbnREYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCit7CisgICAgaWYgKGF1dG8gY2Fs
bGJhY2sgPSBtX2NsaWVudEZyb21JZFJlcXVlc3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpKSB7
CisgICAgICAgIGlmIChoYXNTZWN1cml0eUVycm9yKSB7CisgICAgICAgICAgICBjYWxsYmFjayhF
eGNlcHRpb24geyBTZWN1cml0eUVycm9yIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoY2xpZW50RGF0YSkpOworICAgIH0KK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggYzllNjVhNGFiODM4YjAzNjAx
NTRiODZiMTZlNzdjMjA2OWRlMmVkZi4uM2UwMmNlM2U3YzQ5ZDdjYjE0MTY1OTIyYzMxN2JmNmI5
Y2ZhZmExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC02MSw2ICs2MSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQ
ZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSBmaW5h
bDsKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIpIGZpbmFsOworICAgIHZvaWQgY2xpZW50RnJvbUlkKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciwgQ2xp
ZW50RnJvbUlkQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICAvLyBJUEMgbWVzc2FnZXMuCiAgICAg
dm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZFdpdGhNZXNzYWdlKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7CkBAIC03
MCwxMCArNzEsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgdGVybWluYXRlV29y
a2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNsaWVudEZy
b21JZENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNTZWN1cml0eUVycm9y
KTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nl
c3M7CiAgICAgdWludDY0X3QgbV9wYWdlSUQgeyAwIH07CiAgICAgdWludDY0X3QgbV9wcmV2aW91
c1NlcnZpY2VXb3JrZXJJRCB7IDAgfTsKKworICAgIEhhc2hNYXA8dWludDY0X3QsIENsaWVudEZy
b21JZENhbGxiYWNrPiBtX2NsaWVudEZyb21JZFJlcXVlc3RzOworICAgIHVpbnQ2NF90IG1fcHJl
dmlvdXNSZXF1ZXN0SWRlbnRpZmllciB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRl
eCA3MzZmZGY1YjQ3MTc5YmU0MGVkYTEyYzlmYzZkNzI2NjJjMWQ3YmM0Li5iYWQ4YzZlZmY3YjM1
OGQ1YmZiYTZkMWZlYjJkOWI5ZGZkYWE3Y2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjksNiArMjksNyBAQCBtZXNzYWdlcyAtPiBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiB7CiAgICAgRmlyZUluc3RhbGxFdmVudChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEZpcmVBY3RpdmF0
ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAg
VGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCisgICAgQ2xpZW50RnJvbUlkQ29tcGxldGVkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+
IGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMGU4NTZh
OGU3MGI0MDk2MmMzZWVkNTIyNzQ4MmUzOWMzMGUxZDcyOS4uMTQ0ZTIzNzA5NDdlMDNiYTY3NjE4
NzkxMTBhN2YxNzMxNzY0ZTQ4OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTExLTI5ICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2NsaWVudHMtZ2V0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxNjcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL3Jlc291cmNlcy9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQtd29ya2VyLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2Vy
Y2xpZW50cy1nZXQuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMuaHRtbDog
QWRkZWQuCisKIDIwMTctMTEtMzAgIE1zMmdlciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIEVuYWJsZSBhbGwgd3B0IHRvdWNoLWV2ZW50cyB0ZXN0cy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zZXJ2aWNl
d29ya2VyY2xpZW50cy1nZXQtd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC13b3JrZXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTk2MzI5MzQwOGI4NjkxYmY0ZWMxMDU4MjZjMWM0ZjE2MjY0Y2NkMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jl
c291cmNlcy9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQtd29ya2VyLmpzCkBAIC0wLDAgKzEsNDEg
QEAKK3ZhciBjbGllbnQgPSBudWxsOworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwg
YXN5bmMgKGV2ZW50KSA9PiB7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIGNsaWVudCA9IGV2ZW50
LnNvdXJjZTsKKworICAgICAgICBpZiAoIShjbGllbnQgaW5zdGFuY2VvZiBXaW5kb3dDbGllbnQp
KSB7CisgICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIkZBSUw6IGNsaWVudCBz
b3VyY2UgaXMgbm90IGEgV2luZG93Q2xpZW50Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICB2YXIgcmV0cmlldmVkQ2xpZW50ID0gYXdhaXQgc2VsZi5jbGllbnRz
LmdldChjbGllbnQuaWQpOworICAgICAgICBpZiAoIXJldHJpZXZlZENsaWVudCkgeworICAgICAg
ICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiBkaWQgbm90IHJldHJpZXZlIGFu
eSBjbGllbnQgdGhyb3VnaCBzZWxmLmNsaWVudHMuZ2V0Iik7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBpZiAocmV0cmlldmVkQ2xpZW50LmlkICE9PSBjbGllbnQu
aWQpIHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogY2xpZW50
IGlkIGlzIGRpZmZlcmVudCBmcm9tIHJldHJpZXZlZCBjbGllbnQgaWQgdGhyb3VnaCBzZWxmLmNs
aWVudHMuZ2V0OiAiICsgY2xpZW50LmlkICsgIiAvICIgKyByZXRyaWV2ZWRDbGllbnQuaWQpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJldHJpZXZlZENs
aWVudCAhPT0gY2xpZW50KSB7CisgICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2Uo
IkZBSUw6IGNsaWVudCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIHJldHJpZXZlZCB0aHJvdWdo
IHNlbGYuY2xpZW50cy5nZXQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIHZhciBiYWRJZHMgPSBbY2xpZW50LmlkICsgIjAiLCAiMC0wIiwgIjAtIiwgIi0iLCAi
LTAiXTsKKyAgICAgICAgZm9yIChpZCBpbiBiYWRJZHMpIHsKKyAgICAgICAgICAgIHJldHJpZXZl
ZENsaWVudCA9IGF3YWl0IHNlbGYuY2xpZW50cy5nZXQoaWQpOworICAgICAgICAgICAgaWYgKCEh
cmV0cmlldmVkQ2xpZW50KSB7CisgICAgICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNz
YWdlKCJGQUlMOiByZXRyaWV2ZWQgY2xpZW50IHdpdGggYmFkIGlkICIgKyBpZCArICIgc2hvdWxk
IGJlIG51bGwiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlBBU1MiKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogcmVj
ZWl2ZWQgZXhjZXB0aW9uICIgKyBlKTsKKyAgICB9Cit9KTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzdmMzY2YjJhMmFjZjVhOWJlZDRkY2YyZmY2NTYzOTBjZTU0YzUzMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3Jr
ZXJjbGllbnRzLWdldC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1Mg
VGVzdGluZyBjbGllbnRzLmdldCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0Lmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50
cy1nZXQuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmJmYmEzOGNjZWY3ZjBkOWU2ODM3ZTg0Nzli
YmI2Zjk1MjFjNmU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0Lmh0dHBzLmh0bWwKQEAgLTAs
MCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKworcHJvbWlz
ZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgdmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSgo
cmVzb2x2ZSkgPT4geworICAgICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExp
c3RlbmVyKCJtZXNzYWdlIiwgdGVzdC5zdGVwX2Z1bmMoKGV2ZW50KSA9PiB7CisgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKGV2ZW50LmRhdGEsICJQQVNTIik7CisgICAgICAgICAgICByZXNvbHZl
KCk7CisgICAgICAgIH0pKTsKKyAgICB9KTsKKworICAgIHZhciByZWdpc3RyYXRpb24gPSBhd2Fp
dCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL3NlcnZpY2V3b3Jr
ZXJjbGllbnRzLWdldC13b3JrZXIuanMiLCB7IHNjb3BlIDogIi9ub29uZSIgfSk7CisgICAgdmFy
IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGlmICghd29ya2VyKQorICAg
ICAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uYWN0aXZlOworICAgIHdvcmtlci5wb3N0TWVzc2Fn
ZSgic3RhcnQiKTsKKworICAgIGF3YWl0IHByb21pc2U7Cit9LCAiVGVzdGluZyBjbGllbnRzLmdl
dCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328102</attachid>
            <date>2017-12-01 09:29:48 -0800</date>
            <delta_ts>2017-12-01 10:09:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180167-20171201092948.patch</filename>
            <type>text/plain</type>
            <size>36839</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjNGU1NWUxZTg3YmEyZTI4MTAwMGRh
MWU3YjEwMGQ5ZjNhZDQxZTkuLmM2NTM2NzEyZWUyMzA5MzhjZDFiOWY5MjQwYzI4ZDU4ZjA2Nzhh
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RG
OjpTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdCBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisKIDIwMTctMTEtMzAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjUzNjIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggODE5MWM2MTk0MGVjNzZhZTVhMWIxYzI2ZTAyMmFlYjViOTNiOTVlYy4uYWFi
NDU5ZTdlZThlYjEyM2UzMjI0MGQyYjQ5ZTU3YzNjMjE1ZDgzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQxIEBACisyMDE3LTExLTMwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIv
I2NsaWVudHMtZ2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODAxNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50
cy1nZXQuaHR0cHMuaHRtbAorCisgICAgICAgIEltcGxlbWVudCBjbGllbnRzIGdldCBieSBoYXZp
bmcgc2VydmljZSB3b3JrZXIgY2xpZW50cyBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAtIEdv
IHRvIG1haW4gdGhyZWFkIHRvIHF1ZXJ5IHRoZSBTV0NsaWVudENvbm5lY3Rpb24gZm9yIGdldHRp
bmcgdGhlIGNsaWVudC4KKyAgICAgICAgLSBTV0NsaWVudENvbm5lY3Rpb24gcmVxdWVzdHMgaXQg
dGhyb3VnaCBJUEMgdG8gU3RvcmFnZVByb2Nlc3MgU1dTZXJ2ZXIuCisgICAgICAgIC0gU1dTZXJ2
ZXIgbG9va3MgYXQgaXRzIGNsaWVudCBtYXAgYW5kIHJldHVybnMgY2xpZW50IGRhdGEgYmFzZWQg
b24gdGhlIGdpdmVuIGlkZW50aWZpZXIuCisgICAgICAgIC0gU1dDbGllbnRDb25uZWN0aW9uIHNl
bmRzIGl0IGJhY2sgdG8gdGhlIHJpZ2h0IGNsaWVudHMgZm9yIHJlc29sdmluZyB0aGUgcHJvbWlz
ZS4KKworICAgICAgICBJZGVudGlmaWVyIGlzIHBhcnNlZCBhdCBzZXJ2aWNlIHdvcmtlciBwcm9j
ZXNzIGxldmVsLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRz
OjpTZXJ2aWNlV29ya2VyQ2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50czo6Z2V0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRzOjpjcmVhdGUp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6cG9zdFRhc2tUb1NlcnZpY2VX
b3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpnZXRDbGllbnRGcm9tSWQpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6b3JpZ2luIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVy
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisK
IDIwMTctMTEtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgSW1wcm92ZSBmaWx0ZXIgbG9nZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwMDYxNDVmOTZjNzEwMDRl
M2FlMzkyY2RjMTZhOGFlMGMyMDMyM2NlLi45YTQxNjBhNjc3MGNkYzAwYTVkNTM0Y2U2MDVhZDM0
ZmZjZTdlNWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTExLTMwICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2NsaWVudHMtZ2V0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxNjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSVBDIHBsdW1iZXJ5IGZvciBjbGll
bnRGcm9tSWQgYmV0d2VlbiBTZXJ2aWNlV29ya2VyIHByb2Nlc3MgYW5kIFN0b3JhZ2UgcHJvY2Vz
cy4KKworICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpjbGllbnRGcm9tSWRDb21wbGV0ZWQpOgorICAgICAgICAqIFN0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6
CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmluZENsaWVudEJ5
SWRlbnRpZmllckNvbXBsZXRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorCiAyMDE3LTExLTMw
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29h
XSBXZWIgQXV0b21hdGlvbjogX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uIGxlYWsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNDhmNzhkZDRmODQxNzMxYzY2NDk5NzQwODg2
ODZmYmFhZDI1OGU0OS4uYzg4MTE4YjY2N2EzMjYwYjBhNWM0NWRhMjg3YmEyNThiNmIyYmQ1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxs
aW1pdHMuaD4KICNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC0xNDYsNiArMTQ3LDcgQEAgcHVibGljOgogICAgIGludCB0b0ludCgpIGNvbnN0Owog
ICAgIGludCB0b0ludChib29sJiBpc1ZhbGlkKSBjb25zdDsKICAgICBpbnQgdG9JbnRTdHJpY3Qo
Ym9vbCYgaXNWYWxpZCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdG9VSW50
NjRTdHJpY3QoKSBjb25zdDsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wmIGlzVmFsaWQpIGNvbnN0
OwogCiAgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZShjb25zdCBTdHJpbmdJbXBsJik7CkBAIC01
MjMsNiArNTI1LDEzIEBAIGlubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QoYm9vbCYg
aXNWYWxpZCkgY29uc3QKICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNoYXJhY3Rl
cnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwogfQogCitpbmxpbmUgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gU3RyaW5nVmlldzo6dG9VSW50NjRTdHJpY3QoKSBjb25zdAoreworICAgIGJvb2wg
aXNWYWxpZDsKKyAgICB1aW50NjRfdCByZXN1bHQgPSBpczhCaXQoKSA/IGNoYXJhY3RlcnNUb1VJ
bnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpIDogY2hhcmFjdGVy
c1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOworICAg
IHJldHVybiBpc1ZhbGlkID8gc3RkOjptYWtlX29wdGlvbmFsKHJlc3VsdCkgOiBzdGQ6Om51bGxv
cHQ7Cit9CisKIGlubGluZSBTdHJpbmcgU3RyaW5nVmlldzo6dG9TdHJpbmdXaXRob3V0Q29weWlu
ZygpIGNvbnN0CiB7CiAgICAgaWYgKGlzOEJpdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5k
ZXggYzhhNGRkNmZhNDkwYTZlODRkNzk1NzUzYTYyOWUzMGQ1OWVlNThhYy4uZDJiOTliZjI1ZTNj
ODEwMWQzODM4NTQ4ZTNjZDBiOTlkYWQ5MDk5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBA
IC00Niw4ICs0Niw4IEBAIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB1bnNpZ25lZCBjaGFyYWN0ZXJz
VG9VSW50U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sCiBXVEZfRVhQT1JUX1NUUklO
R19BUEkgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKIGludDY0X3QgY2hhcmFjdGVy
c1RvSW50NjRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwg
aW50IGJhc2UgPSAxMCk7CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IFVD
aGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotdWludDY0
X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBv
ayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0
U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNl
ID0gMTApOworV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2
NFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFz
ZSA9IDEwKTsKK1dURl9FWFBPUlRfU1RSSU5HX0FQSSB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50
NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJh
c2UgPSAxMCk7CiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgTENoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiBpbnRwdHJfdCBj
aGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgKaW5k
ZXggNjI4NTVkNTRiY2M3MDE5MTdkMWI4ZmIyNGEzOTc2M2RkM2FiNTZhOC4uZGI0ZDFiMTJhZTli
YTFjNzdkYzA3NjM3NzRkYjk1NjdhNzE4ZDNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
LmgKQEAgLTQwLDYgKzQwLDkgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
IHsKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBj
b25zdCB7IHJldHVybiBTdHJpbmc6Om51bWJlcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllci50
b1VJbnQ2NCgpKSArICItIiArICBTdHJpbmc6Om51bWJlcihjb250ZXh0SWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyPiBmcm9tU3RyaW5nKFN0cmluZ1ZpZXcpOworCisgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIudG9VSW50NjQoKSAmJiBj
b250ZXh0SWRlbnRpZmllci50b1VJbnQ2NCgpOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+
IGRlY29kZShEZWNvZGVyJik7CkBAIC01MCw2ICs1MywyMyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBhLCBjb25zdCBTZXJ2aWNl
V29yawogICAgIHJldHVybiBhLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID09IGIuc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgJiYgIGEuY29udGV4dElkZW50aWZpZXIgPT0gYi5jb250ZXh0
SWRlbnRpZmllcjsKIH0KIAoraW5saW5lIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXI+IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFN0
cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNs
aWVudElkZW50aWZpZXI7CisKKyAgICB1bnNpZ25lZCBjb3VudGVyID0gMDsKKyAgICBmb3IgKGF1
dG8gaXRlbSA6IHN0cmluZy5zcGxpdCgnLScpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9
IGl0ZW0udG9VSW50NjRTdHJpY3QoKTsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCFjb3VudGVyKyspCisgICAg
ICAgICAgICBjbGllbnRJZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID0gbWFr
ZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+KGlkZW50
aWZpZXIudmFsdWUoKSk7CisgICAgICAgIGVsc2UgaWYgKGNvdW50ZXIgPT0gMikKKyAgICAgICAg
ICAgIGNsaWVudElkZW50aWZpZXIuY29udGV4dElkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRp
ZmllcjxEb2N1bWVudElkZW50aWZpZXJUeXBlPihpZGVudGlmaWVyLnZhbHVlKCkpOworICAgIH0K
KyAgICByZXR1cm4gKGNvdW50ZXIgPT0gMikgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoV1RGTW92ZShj
bGllbnRJZGVudGlmaWVyKSkgOiBzdGQ6Om51bGxvcHQ7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCmluZGV4IGExNDU1N2U2YzQ0MDg3M2Qx
NzdlN2M5NmFmYWVhMjU4Yzk4MzNhMGUuLjQ2NmNkODlkYTUzYjk1ODZkNzBjMDIwYmE4NDVlYTFk
ZWYwY2Q2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcApAQCAtMjksMTUgKzI5LDIyIEBACiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckNsaWVudHMuaCIKIAogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCisjaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2Vy
dmljZVdvcmtlckNsaWVudHM6OlNlcnZpY2VXb3JrZXJDbGllbnRzKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpCitTZXJ2aWNlV29ya2VyQ2xpZW50czo6U2VydmljZVdvcmtlckNsaWVu
dHMoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2Jq
ZWN0KCZjb250ZXh0KQogewogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCitTZXJ2aWNlV29y
a2VyQ2xpZW50czo6flNlcnZpY2VXb3JrZXJDbGllbnRzKCkKK3sKKyAgICBjbGVhclBlbmRpbmdS
ZXF1ZXN0cygpOworfQorCiBjb25zdCBjaGFyKiBTZXJ2aWNlV29ya2VyQ2xpZW50czo6YWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICJTZXJ2aWNlV29ya2VyQ2xpZW50
cyI7CkBAIC00OCwxMCArNTUsNjMgQEAgYm9vbCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y2FuU3Vz
cGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuICFoYXNQZW5kaW5n
QWN0aXZpdHkoKTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6ZGlkRmluaXNoR2V0
UmVxdWVzdChTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBFeGNlcHRp
b25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPj4mJiBjbGllbnREYXRh
LCBEZWZlcnJlZFByb21pc2UqIHByb21pc2UpCit7CisgICAgYXV0byByZXF1ZXN0ID0gbV9wZW5k
aW5nUmVxdWVzdHMudGFrZShwcm9taXNlKTsKKyAgICBpZiAoIXJlcXVlc3QucHJvbWlzZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKGNsaWVudERhdGEuaGFzRXhjZXB0aW9uKCkpIHsKKyAg
ICAgICAgcmVxdWVzdC5wcm9taXNlLT5yZWplY3QoY2xpZW50RGF0YS5yZWxlYXNlRXhjZXB0aW9u
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gZGF0YSA9IGNsaWVudERhdGEu
cmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgaWYgKCFkYXRhKSB7CisgICAgICAgIHJlcXVlc3Qu
cHJvbWlzZS0+cmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYg
Y29udGV4dCA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CisgICAgcmVxdWVzdC5wcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFj
ZTxTZXJ2aWNlV29ya2VyQ2xpZW50Pj4oU2VydmljZVdvcmtlckNsaWVudDo6Z2V0T3JDcmVhdGUo
Y29udGV4dCwgaWRlbnRpZmllciwgV1RGTW92ZShkYXRhLnZhbHVlKCkpKSk7Cit9CisKK1NlcnZp
Y2VXb3JrZXJDbGllbnRzOjpSZXF1ZXN0U3RhdGU6OlJlcXVlc3RTdGF0ZShTZXJ2aWNlV29ya2Vy
Q2xpZW50cyogY2xpZW50cywgRGVmZXJyZWRQcm9taXNlKiBwcm9taXNlLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9jbGllbnRzKGNsaWVudHMpCisgICAgLCBt
X3Byb21pc2UocHJvbWlzZSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQor
CiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpnZXQoY29uc3QgU3RyaW5nJiBpZCwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIFVOVVNFRF9QQVJBTShpZCk7Ci0gICAg
cHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVy
YWwoImNsaWVudHMuZ2V0KCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9KTsKKyAgICBhdXRvKiBj
b250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkgewor
ICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhpZCk7CisgICAgaWYgKCFpZGVudGlm
aWVyIHx8ICFpZGVudGlmaWVyLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2
ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gY2xpZW50SWRlbnRpZmllciA9
IGlkZW50aWZpZXIudmFsdWUoKTsKKworICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRleHQpOworICAgIGF1
dG8gcHJvbWlzZVBvaW50ZXIgPSBwcm9taXNlLnB0cigpOworCisgICAgYXV0byBzdGF0ZSA9IGFk
b3B0UmVmKCpuZXcgUmVxdWVzdFN0YXRlIHsgdGhpcywgcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5pZGVudGlmaWVyKCkgfSk7CisgICAgbV9wZW5kaW5n
UmVxdWVzdHMuYWRkKHByb21pc2VQb2ludGVyLCBQZW5kaW5nUmVxdWVzdCB7IFdURk1vdmUocHJv
bWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBzdGF0ZS5jb3B5UmVmKCkgfSk7CisK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtzdGF0ZSA9IFdURk1vdmUoc3RhdGUpLCBjbGllbnRJZGVu
dGlmaWVyXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOworICAgICAgICBjb25uZWN0aW9uLT5m
aW5kQ2xpZW50QnlJZGVudGlmaWVyKHN0YXRlLT5tX2lkZW50aWZpZXIsIGNsaWVudElkZW50aWZp
ZXIsIFtzdGF0ZSA9IFdURk1vdmUoc3RhdGUpLCBjbGllbnRJZGVudGlmaWVyXSAoYXV0byYmIGNs
aWVudERhdGEpIG11dGFibGUgeworICAgICAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc3RhdGUtPm1faWRlbnRpZmllciwgW3N0YXRl
ID0gV1RGTW92ZShzdGF0ZSksIGNsaWVudElkZW50aWZpZXIsIGRhdGEgPSBjcm9zc1RocmVhZENv
cHkoY2xpZW50RGF0YSldIChhdXRvJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKHN0
YXRlLT5tX2NsaWVudHMpCisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5tX2NsaWVudHMtPmRp
ZEZpbmlzaEdldFJlcXVlc3QoY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShkYXRhKSwgc3RhdGUt
Pm1fcHJvbWlzZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAK
IHZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6Om1hdGNoQWxsKGNvbnN0IENsaWVudFF1ZXJ5T3B0
aW9ucyYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAgLTcwLDYgKzEzMCwxMyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpjbGFpbShSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCBBU0NJSUxpdGVyYWwoImNsaWVudHMuY2xhaW0oKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIp
IH0pOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpjbGVhclBlbmRpbmdSZXF1ZXN0
cygpCit7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9wZW5kaW5nUmVxdWVzdHMudmFsdWVz
KCkpCisgICAgICAgIHJlcXVlc3Quc3RhdGUtPm1fY2xpZW50cyA9IG51bGxwdHI7CisgICAgbV9w
ZW5kaW5nUmVxdWVzdHMuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaAppbmRleCA3NGJiYjdmMDRm
MWExYzFiODQyYjBjODE4YmEzMWNmOGEyOTdhYTUxLi4yNTBlMWM5YmM0YWY3MDBhY2E0MzNiZTIy
OTk5NDVhMTZkODMyMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaApAQCAtMjgsMjAgKzI4LDI2IEBACiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5o
IgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRGVmZXJyZWRQcm9taXNlOworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
Oworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOworY2xhc3MgU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlOwogCiBjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50cyA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnRzPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50cz4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29y
a2VyQ2xpZW50cz4gY3JlYXRlKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgY29udGV4dCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJDbGllbnRzKGNv
bnRleHQpKTsKICAgICB9CisgICAgflNlcnZpY2VXb3JrZXJDbGllbnRzKCk7CiAKICAgICBzdHJ1
Y3QgQ2xpZW50UXVlcnlPcHRpb25zIHsKICAgICAgICAgYm9vbCBpbmNsdWRlVW5jb250cm9sbGVk
IHsgZmFsc2UgfTsKQEAgLTU0LDExICs2MCwzMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGFpbShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTZXJ2aWNl
V29ya2VyQ2xpZW50cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgZXhwbGljaXQgU2Vy
dmljZVdvcmtlckNsaWVudHMoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJik7CisKKyAgICB2b2lk
IGRpZEZpbmlzaEdldFJlcXVlc3QoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIEV4Y2Vw
dGlvbk9yPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmLCBEZWZlcnJl
ZFByb21pc2UqKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWwg
eyBjbGVhclBlbmRpbmdSZXF1ZXN0cygpOyB9CisKKyAgICB2b2lkIGNsZWFyUGVuZGluZ1JlcXVl
c3RzKCk7CisKKyAgICBjbGFzcyBSZXF1ZXN0U3RhdGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8UmVxdWVzdFN0YXRlPiB7CisgICAgcHVibGljOgorICAgICAgICBSZXF1ZXN0U3RhdGUo
U2VydmljZVdvcmtlckNsaWVudHMqLCBEZWZlcnJlZFByb21pc2UqLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CisKKyAgICAgICAgU2VydmljZVdvcmtlckNsaWVudHMqIG1fY2xpZW50czsKKyAg
ICAgICAgRGVmZXJyZWRQcm9taXNlKiBtX3Byb21pc2U7CisgICAgICAgIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICB9OworCisgICAgc3RydWN0IFBlbmRpbmdSZXF1
ZXN0IHsKKyAgICAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gcHJvbWlzZTsKKyAgICAgICAg
UmVmUHRyPEFjdGl2ZURPTU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VXb3JrZXJDbGll
bnRzPj4gcHJvdGVjdGluZ0NsaWVudHM7CisgICAgICAgIFJlZlB0cjxSZXF1ZXN0U3RhdGU+IHN0
YXRlOworICAgIH07CisgICAgSGFzaE1hcDxEZWZlcnJlZFByb21pc2UqLCBQZW5kaW5nUmVxdWVz
dD4gbV9wZW5kaW5nUmVxdWVzdHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCmluZGV4IDEzNzVkM2QzOGQwOTgyYjM5MWUxMjMzMjc4YTNjMzk0Y2Rj
NDkzNjQuLjg5NDZjMjcwYmRiNmYzZGU5OTM2NWNhMTBiYWI1OTI0MmYzMGViYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCkBAIC0xMTIsNiArMTEyLDEyIEBAIHZvaWQgU1dDb250ZXh0TWFuYWdl
cjo6Zm9yRWFjaFNlcnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNl
cnZpCiAgICAgICAgIGFwcGx5KCp3b3JrZXJUaHJlYWQpOwogfQogCit2b2lkIFNXQ29udGV4dE1h
bmFnZXI6OnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQoreworICAgIGlm
IChhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJNYXAuZ2V0KGlkZW50aWZpZXIpKQorICAg
ICAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0
YXNrKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5h
Z2VyLmgKaW5kZXggZTJmMGU5ZTUwYjY5ZTZlNWIyYmE4NzFiODliYjUwNzFmODgxNDQ3MS4uOGEw
NjJmMzlhNjk2MTgyMGJjNjhlMWYzMGFmMmEwNDJmNTUyNzIxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSw2ICs1Miw5IEBAIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdv
cmtlcklkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFNlcnZpY2VXb3Jr
ZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSA9IDA7CisKKyAgICAgICAgdXNpbmcgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNr
ID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmKT47CisgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5k
Q2xpZW50QnlJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciwgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYpID0gMDsK
ICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5p
cXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKQEAgLTY1LDYgKzY5LDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBmb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
U2VydmljZVdvcmtlclRocmVhZFByb3h5Jik+Jik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYpOworCiBwcml2YXRlOgogICAgIFNXQ29udGV4dE1hbmFn
ZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggNmQ1NjQ4OGY5ZmEyM2M2MDc0ZTQ5N2U1MzliNmYy
MDhiNjgwNDY5YS4uNDY0YTQ5YWFkMWE2ZmQwOWI0ZjQ5MjU0ZTA2YzhiYmNhNWJiMGMwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKQEAgLTMwNSw2ICszMDUsMjAgQEAgdm9pZCBTV1NlcnZlcjo6d29ya2VyQ29udGV4dFRlcm1p
bmF0ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKIH0KIAorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU1dT
ZXJ2ZXI6OmZpbmRDbGllbnRCeUlkZW50aWZpZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4s
IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCit7CisgICAg
YXV0byBpdGVyYXRvciA9IG1fY2xpZW50cy5maW5kKG9yaWdpbik7CisgICAgaWYgKGl0ZXJhdG9y
ID09IG1fY2xpZW50cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IGF1dG8mIGNsaWVudHMgPSBpdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byBwb3NpdGlvbiA9IGNs
aWVudHMuZmluZE1hdGNoaW5nKFsmXSAoY29uc3QgYXV0byYgY2xpZW50KSB7CisgICAgICAgIHJl
dHVybiBjbGllbnRJZGVudGlmaWVyID09IGNsaWVudC5pZGVudGlmaWVyOworICAgIH0pOworCisg
ICAgcmV0dXJuIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoY2xp
ZW50c1twb3NpdGlvbl0uZGF0YSkgOiBzdGQ6Om51bGxvcHQ7Cit9CisKIHZvaWQgU1dTZXJ2ZXI6
OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVj
dGlvbi5pZGVudGlmaWVyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBiOGVkZTE3NWNlZmM4OWE4YmJlZTM4N2ZlYzBjZGJk
MjBkZDY4ZTNmLi5mNTJiOTMwZTkyMTQ2NzZlMjY4YjgzZjRlY2RhZWFkMTM0ODFmODg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBA
IC0xMzcsNiArMTM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25z
dCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTV1NlcnZl
cldvcmtlciYsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0
aW9uKFNXU2VydmVyV29ya2VyJik7CiAgICAgdm9pZCB3b3JrZXJDb250ZXh0VGVybWluYXRlZChT
V1NlcnZlcldvcmtlciYpOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERh
dGE+IGZpbmRDbGllbnRCeUlkZW50aWZpZXIoY29uc3QgQ2xpZW50T3JpZ2luJiwgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGJlODViMzlmNjYxYzY2NWU0ZjExMTBlMDRlNGNiNDFi
NTVjY2Y5MGEuLjczN2M3OGJhNTg3M2I2YWFiZmZkN2NmNjQxZjNjYzVjMjQwYzNlOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTEwOCw2ICsxMDgsMTIg
QEAgdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OndvcmtlclRlcm1pbmF0ZWQoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmkKICAgICAgICAgd29ya2VyLT5jb250ZXh0VGVybWlu
YXRlZCgpOwogfQogCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmluZENsaWVu
dEJ5SWRlbnRpZmllcih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkKQoreworICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtl
cjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkK
KyAgICAgICAgZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpLT5maW5kQ2xpZW50QnlJ
ZGVudGlmaWVyQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCB3b3JrZXItPmZpbmRDbGllbnRC
eUlkZW50aWZpZXIoY2xpZW50SWQpLCBmYWxzZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDVkYjhkMGE2NTM0YzcwN2NiMTA3NDQ2OTk0ZWRhMmY1
MTU4YzI1MGQuLjI2MWJjNmRmMWEzMThmMzcyOTQ0YTc2NDM0YzFlNWY1YzkzYjJiZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMzQsNiArMzQsOCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTV1NlcnZlcjsKK3N0cnVjdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjsKIHN0cnVj
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyOwogCkBAIC00OCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpID0gMDsKIAogICAgIC8vIE1l
c3NhZ2VzIGJhY2sgZnJvbSB0aGUgU1cgaG9zdCBwcm9jZXNzCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKQEAgLTU2LDYgKzU5LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2
ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllcih1
aW50NjRfdCBjbGllbnRJZFJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIpOwogCiAgICAgc3RhdGljIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiogY29ubmVjdGlvbkZvcklkZW50aWZpZXIoU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggMWYwYjFk
Y2VjNGM0MDVlNDdmNjFmODYwZmY0YTEwOWZkYTQ0NDgwZi4uMzdlNTM2NWIyZTYyMzg1ZGY4ZDk2
MzAxM2VkMDY1ZWY5ZjAxNTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTY1LDYgKzY1LDE0IEBA
IHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZSgpCiAgICAgbV9zZXJ2ZXIudGVybWluYXRl
V29ya2VyKCp0aGlzKTsKIH0KIAorY29uc3QgQ2xpZW50T3JpZ2luJiBTV1NlcnZlcldvcmtlcjo6
b3JpZ2luKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fb3JpZ2luKQorICAgICAgICBtX29yaWdpbiA9
IENsaWVudE9yaWdpbiB7IG1fcmVnaXN0cmF0aW9uS2V5LnRvcE9yaWdpbigpLCBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fZGF0
YS5zY3JpcHRVUkwpKSB9OworCisgICAgcmV0dXJuICptX29yaWdpbjsKK30KKwogdm9pZCBTV1Nl
cnZlcldvcmtlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3Qgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIG1fc2VydmVyLnNjcmlwdENvbnRleHRGYWlsZWRU
b1N0YXJ0KGpvYkRhdGFJZGVudGlmaWVyLCAqdGhpcywgbWVzc2FnZSk7CkBAIC05MCw2ICs5OCwx
MSBAQCB2b2lkIFNXU2VydmVyV29ya2VyOjpjb250ZXh0VGVybWluYXRlZCgpCiAgICAgbV9zZXJ2
ZXIud29ya2VyQ29udGV4dFRlcm1pbmF0ZWQoKnRoaXMpOwogfQogCitzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZlcldvcmtlcjo6ZmluZENsaWVudEJ5SWRlbnRp
ZmllcihTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZCkKK3sKKyAgICByZXR1
cm4gbV9zZXJ2ZXIuZmluZENsaWVudEJ5SWRlbnRpZmllcihvcmlnaW4oKSwgY2xpZW50SWQpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmgKaW5kZXggYWM4NjliNGVmMzE1MmVlMGFmMjU5NDEwODYzYWE3Y2Zl
MGRkNmM4Yy4uNjNiNGE3MDYyZGYwZTQ1YWUwZGNhMTBjNmRhMWI3Yzk3MzRkOTA1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaApAQCAtMzYsMTAgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3Ry
dWN0IENsaWVudE9yaWdpbjsKIGNsYXNzIFNXU2VydmVyOwogY2xhc3MgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb247Ci1lbnVtIGNsYXNzIFdvcmtlclR5cGU7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVu
dERhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyOworZW51bSBjbGFzcyBXb3JrZXJUeXBlOwogCiBj
bGFzcyBTV1NlcnZlcldvcmtlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNXU2VydmVyV29ya2VyPiB7
CiBwdWJsaWM6CkBAIC03MywxMCArNzYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNo
SW5zdGFsbChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
cj4mLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbigp
OwogICAgIHZvaWQgY29udGV4dFRlcm1pbmF0ZWQoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPiBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTV1NlcnZlcldv
cmtlciogZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKIAogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJEYXRhJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhOyB9CisgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9u
JiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
QEAgLTg3LDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBtX2RhdGE7
CiAgICAgU3RyaW5nIG1fc2NyaXB0OwogICAgIGJvb2wgbV9oYXNQZW5kaW5nRXZlbnRzIHsgZmFs
c2UgfTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBtX29yaWdpbjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMjRlNGFkYWUxYzJkOTM3OGE4M2Yy
NzE4ZDA5YTMyMzg4NjkyMjZmMC4uMGVjYjJjMDc0MzJjYWY1YzczZmQ1ZDQxMTQ4ZmI3YmRhZDVi
MzY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKQEAgLTc2LDYgKzc2LDExIEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VyCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVdv
cmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOwogfQogCit2b2lkIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6ZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4mIGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmluZENsaWVudEJ5SWRlbnRpZmll
ckNvbXBsZXRlZCB7IHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhLCBoYXNTZWN1cml0eUVycm9yIH0p
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaAppbmRleCBiNWI4NzQ5MDZlMWZiY2Y0NWNjMjkzYzRjYWExNDdiYzNmNDY3Mjk5Li44OWEw
ZGM5MjAxOTM5YTMxNGJhNGZhNjllODQ1Zjg1NzE2OTYyZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC01OSw2ICs1OSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBmaW5kQ2xp
ZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJvb2wg
aGFzU2VjdXJpdHlFcnJvcikgZmluYWw7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2lw
Y0Nvbm5lY3Rpb247CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA4YjIzNDc4YjI2YTkwMGY2
ODNkNzJkYTFlMGM0ZGU2MmExOTI4MDkxLi4wZWYwMTg4ZjE0MTk1NDM1ZDFiMDgzNmZlNzdkMzQ2
NjgyM2I2YzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDcgQEAgbWVzc2FnZXMg
LT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsKICAgICBEaWRGaW5pc2hBY3RpdmF0
aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpOwogICAgIFNl
dFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7CiAgICAgV29ya2VyVGVy
bWluYXRlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKKyAg
ICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZp
ZXIpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGMwY2VkYTE4MTdjZWYxNTE4MTMxZTZiMjQxMDJm
N2E2MmE1ODRiZWYuLmE4ZWVkMzE1MmJmZGQ0ZGFlOTk0YTUzMjNhOTMyOTZhMjlhYTlhYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25maWd1cmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIApAQCAtMTk0LDYgKzE5NSwyNCBAQCB2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcgogICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V29ya2VyVGVybWluYXRlZChz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOwogfQogCit2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvIHJlcXVlc3RJZGVudGlmaWVyID0gKyttX3ByZXZp
b3VzUmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9maW5kQ2xpZW50QnlJZGVudGlmaWVyUmVxdWVz
dHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9jb25u
ZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpGaW5kQ2xpZW50QnlJZGVudGlmaWVyIHsgcmVxdWVzdElkZW50aWZpZXIs
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyIH0sIDApOworfQorCit2
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVy
Q29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPiYmIGNsaWVudERhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikK
K3sKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fZmluZENsaWVudEJ5SWRlbnRpZmllclJlcXVl
c3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpKSB7CisgICAgICAgIGlmIChoYXNTZWN1cml0eUVy
cm9yKSB7CisgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH0p
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUoY2xpZW50RGF0YSkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKaW5kZXggYzllNjVhNGFiODM4YjAzNjAxNTRiODZiMTZlNzdjMjA2OWRlMmVkZi4uOGY5
YjQwODM4MmViNWZkMzZmMjAyNmI3ZTJkYWVjMTQ0ZjZjOWE4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCkBAIC02MSw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRG
aW5pc2hBY3RpdmF0aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsK
ICAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSBmaW5hbDsKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0
ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgZmlu
ZENsaWVudEJ5SWRlbnRpZmllcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIEZpbmRDbGllbnRCeUlkZW50aWZp
ZXJDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNl
cnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSBmaW5hbDsKQEAgLTcwLDEwICs3
MSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgZmluZENsaWVudEJ5SWRl
bnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNTZWN1cml0eUVy
cm9yKTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvU3RvcmFnZVBy
b2Nlc3M7CiAgICAgdWludDY0X3QgbV9wYWdlSUQgeyAwIH07CiAgICAgdWludDY0X3QgbV9wcmV2
aW91c1NlcnZpY2VXb3JrZXJJRCB7IDAgfTsKKworICAgIEhhc2hNYXA8dWludDY0X3QsIEZpbmRD
bGllbnRCeUlkZW50aWZpZXJDYWxsYmFjaz4gbV9maW5kQ2xpZW50QnlJZGVudGlmaWVyUmVxdWVz
dHM7CisgICAgdWludDY0X3QgbV9wcmV2aW91c1JlcXVlc3RJZGVudGlmaWVyIHsgMCB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDczNmZkZjViNDcxNzliZTQwZWRhMTJjOWZjNmQ3MjY2
MmMxZDdiYzQuLmViZjJiNGU0ZmY4MzdhZTg5YWEyMDU2M2E2NGZkZWYxNTRjNGJhMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yOSw2
ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIHsKICAg
ICBGaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgRmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllcikKICAgICBUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29t
cGxldGVkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlF
cnJvcikKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjBiOTJiNjc2MGRhNWRlMmRiMGQ2ZmMzZGRkYTQ2
NDUyZTg4YjBkOC4uODA1ZmM5YTk0ODc5NmMwYTYyOWViYWYwY2UwNzViNTQ0MjM3YzczOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTExLTMwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZp
Y2VXb3JrZXIvI2NsaWVudHMtZ2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODAxNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zZXJ2
aWNld29ya2VyY2xpZW50cy1nZXQtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2
aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMuaHRtbDogQWRkZWQuCisKIDIwMTctMTEtMzAgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSBm
aWx0ZXIgbG9nZ2luZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvcmVzb3VyY2VzL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC13b3JrZXIuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2VydmljZXdv
cmtlcmNsaWVudHMtZ2V0LXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTNiYmEyMzhhNmIyZThjYjIx
Njk1OWM3Njg1NmE2NjQ4OWMzZDY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdl
dC13b3JrZXIuanMKQEAgLTAsMCArMSw0MSBAQAordmFyIGNsaWVudCA9IG51bGw7CitzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBhc3luYyAoZXZlbnQpID0+IHsKKyAgICB0cnkgewor
ICAgICAgICB2YXIgY2xpZW50ID0gZXZlbnQuc291cmNlOworCisgICAgICAgIGlmICghKGNsaWVu
dCBpbnN0YW5jZW9mIFdpbmRvd0NsaWVudCkpIHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgiRkFJTDogY2xpZW50IHNvdXJjZSBpcyBub3QgYSBXaW5kb3dDbGllbnQiKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByZXRyaWV2ZWRD
bGllbnQgPSBhd2FpdCBzZWxmLmNsaWVudHMuZ2V0KGNsaWVudC5pZCk7CisgICAgICAgIGlmICgh
cmV0cmlldmVkQ2xpZW50KSB7CisgICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2Uo
IkZBSUw6IGRpZCBub3QgcmV0cmlldmUgYW55IGNsaWVudCB0aHJvdWdoIHNlbGYuY2xpZW50cy5n
ZXQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXRy
aWV2ZWRDbGllbnQuaWQgIT09IGNsaWVudC5pZCkgeworICAgICAgICAgICAgZXZlbnQuc291cmNl
LnBvc3RNZXNzYWdlKCJGQUlMOiBjbGllbnQgaWQgaXMgZGlmZmVyZW50IGZyb20gcmV0cmlldmVk
IGNsaWVudCBpZCB0aHJvdWdoIHNlbGYuY2xpZW50cy5nZXQ6ICIgKyBjbGllbnQuaWQgKyAiIC8g
IiArIHJldHJpZXZlZENsaWVudC5pZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAocmV0cmlldmVkQ2xpZW50ICE9PSBjbGllbnQpIHsKKyAgICAgICAgICAg
IGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogY2xpZW50IGlzIGRpZmZlcmVudCBmcm9t
IHRoZSBvbmUgcmV0cmlldmVkIHRocm91Z2ggc2VsZi5jbGllbnRzLmdldCIpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGJhZElkcyA9IFtjbGllbnQuaWQg
KyAiMCIsICIwLTAiLCAiMC0xIiwgIjEtMCIsICIwLSIsICItIiwgIi0wIl07CisgICAgICAgIGZv
ciAoaWQgaW4gYmFkSWRzKSB7CisgICAgICAgICAgICByZXRyaWV2ZWRDbGllbnQgPSBhd2FpdCBz
ZWxmLmNsaWVudHMuZ2V0KGlkKTsKKyAgICAgICAgICAgIGlmICghIXJldHJpZXZlZENsaWVudCkg
eworICAgICAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogcmV0cmll
dmVkIGNsaWVudCB3aXRoIGJhZCBpZCAiICsgaWQgKyAiIHNob3VsZCBiZSBudWxsIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
ZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJQQVNTIik7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIkZBSUw6IHJlY2VpdmVkIGV4Y2VwdGlvbiAi
ICsgZSk7CisgICAgfQorfSk7CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2Vy
Y2xpZW50cy1nZXQuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3ZjM2NmIyYTJhY2Y1
YTliZWQ0ZGNmMmZmNjU2MzkwY2U1NGM1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0
cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFRlc3RpbmcgY2xpZW50cy5n
ZXQgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0Lmh0dHBzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWJiZmJhMzhjY2VmN2YwZDllNjgzN2U4NDc5YmJiNmY5NTIxYzZlNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVz
dCkgPT4geworICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAg
ICAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IHRlc3Quc3RlcF9mdW5jKChldmVudCkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhl
dmVudC5kYXRhLCAiUEFTUyIpOworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9KSk7
CisgICAgfSk7CisKKyAgICB2YXIgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQtd29y
a2VyLmpzIiwgeyBzY29wZSA6ICIvbm9vbmUiIH0pOworICAgIHZhciB3b3JrZXIgPSByZWdpc3Ry
YXRpb24uaW5zdGFsbGluZzsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgd29ya2VyID0gcmVn
aXN0cmF0aW9uLmFjdGl2ZTsKKyAgICB3b3JrZXIucG9zdE1lc3NhZ2UoInN0YXJ0Iik7CisKKyAg
ICBhd2FpdCBwcm9taXNlOworfSwgIlRlc3RpbmcgY2xpZW50cy5nZXQiKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328112</attachid>
            <date>2017-12-01 10:09:48 -0800</date>
            <delta_ts>2017-12-01 12:50:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180167-20171201100947.patch</filename>
            <type>text/plain</type>
            <size>36839</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjNGU1NWUxZTg3YmEyZTI4MTAwMGRh
MWU3YjEwMGQ5ZjNhZDQxZTkuLmM2NTM2NzEyZWUyMzA5MzhjZDFiOWY5MjQwYzI4ZDU4ZjA2Nzhh
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RG
OjpTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdCBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisKIDIwMTctMTEtMzAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjUzNjIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggODE5MWM2MTk0MGVjNzZhZTVhMWIxYzI2ZTAyMmFlYjViOTNiOTVlYy4uYWFi
NDU5ZTdlZThlYjEyM2UzMjI0MGQyYjQ5ZTU3YzNjMjE1ZDgzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQxIEBACisyMDE3LTExLTMwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIv
I2NsaWVudHMtZ2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODAxNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50
cy1nZXQuaHR0cHMuaHRtbAorCisgICAgICAgIEltcGxlbWVudCBjbGllbnRzIGdldCBieSBoYXZp
bmcgc2VydmljZSB3b3JrZXIgY2xpZW50cyBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAtIEdv
IHRvIG1haW4gdGhyZWFkIHRvIHF1ZXJ5IHRoZSBTV0NsaWVudENvbm5lY3Rpb24gZm9yIGdldHRp
bmcgdGhlIGNsaWVudC4KKyAgICAgICAgLSBTV0NsaWVudENvbm5lY3Rpb24gcmVxdWVzdHMgaXQg
dGhyb3VnaCBJUEMgdG8gU3RvcmFnZVByb2Nlc3MgU1dTZXJ2ZXIuCisgICAgICAgIC0gU1dTZXJ2
ZXIgbG9va3MgYXQgaXRzIGNsaWVudCBtYXAgYW5kIHJldHVybnMgY2xpZW50IGRhdGEgYmFzZWQg
b24gdGhlIGdpdmVuIGlkZW50aWZpZXIuCisgICAgICAgIC0gU1dDbGllbnRDb25uZWN0aW9uIHNl
bmRzIGl0IGJhY2sgdG8gdGhlIHJpZ2h0IGNsaWVudHMgZm9yIHJlc29sdmluZyB0aGUgcHJvbWlz
ZS4KKworICAgICAgICBJZGVudGlmaWVyIGlzIHBhcnNlZCBhdCBzZXJ2aWNlIHdvcmtlciBwcm9j
ZXNzIGxldmVsLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllcjo6ZnJvbVN0cmluZyk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRz
OjpTZXJ2aWNlV29ya2VyQ2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50czo6Z2V0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNs
aWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRzOjpjcmVhdGUp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6cG9zdFRhc2tUb1NlcnZpY2VX
b3JrZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpnZXRDbGllbnRGcm9tSWQpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIp
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6b3JpZ2luIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVy
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisK
IDIwMTctMTEtMzAgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgSW1wcm92ZSBmaWx0ZXIgbG9nZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwMDYxNDVmOTZjNzEwMDRl
M2FlMzkyY2RjMTZhOGFlMGMyMDMyM2NlLi45YTQxNjBhNjc3MGNkYzAwYTVkNTM0Y2U2MDVhZDM0
ZmZjZTdlNWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTExLTMwICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93
M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2NsaWVudHMtZ2V0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxNjcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSVBDIHBsdW1iZXJ5IGZvciBjbGll
bnRGcm9tSWQgYmV0d2VlbiBTZXJ2aWNlV29ya2VyIHByb2Nlc3MgYW5kIFN0b3JhZ2UgcHJvY2Vz
cy4KKworICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpjbGllbnRGcm9tSWRDb21wbGV0ZWQpOgorICAgICAgICAqIFN0b3Jh
Z2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6
CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmluZENsaWVudEJ5
SWRlbnRpZmllckNvbXBsZXRlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorCiAyMDE3LTExLTMw
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29h
XSBXZWIgQXV0b21hdGlvbjogX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uIGxlYWsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNDhmNzhkZDRmODQxNzMxYzY2NDk5NzQwODg2
ODZmYmFhZDI1OGU0OS4uYzg4MTE4YjY2N2EzMjYwYjBhNWM0NWRhMjg3YmEyNThiNmIyYmQ1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxs
aW1pdHMuaD4KICNpbmNsdWRlIDx1bmljb2RlL3V0eXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC0xNDYsNiArMTQ3LDcgQEAgcHVibGljOgogICAgIGludCB0b0ludCgpIGNvbnN0Owog
ICAgIGludCB0b0ludChib29sJiBpc1ZhbGlkKSBjb25zdDsKICAgICBpbnQgdG9JbnRTdHJpY3Qo
Ym9vbCYgaXNWYWxpZCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdG9VSW50
NjRTdHJpY3QoKSBjb25zdDsKICAgICBmbG9hdCB0b0Zsb2F0KGJvb2wmIGlzVmFsaWQpIGNvbnN0
OwogCiAgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZShjb25zdCBTdHJpbmdJbXBsJik7CkBAIC01
MjMsNiArNTI1LDEzIEBAIGlubGluZSBpbnQgU3RyaW5nVmlldzo6dG9JbnRTdHJpY3QoYm9vbCYg
aXNWYWxpZCkgY29uc3QKICAgICByZXR1cm4gY2hhcmFjdGVyc1RvSW50U3RyaWN0KGNoYXJhY3Rl
cnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOwogfQogCitpbmxpbmUgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gU3RyaW5nVmlldzo6dG9VSW50NjRTdHJpY3QoKSBjb25zdAoreworICAgIGJvb2wg
aXNWYWxpZDsKKyAgICB1aW50NjRfdCByZXN1bHQgPSBpczhCaXQoKSA/IGNoYXJhY3RlcnNUb1VJ
bnQ2NFN0cmljdChjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCwgJmlzVmFsaWQpIDogY2hhcmFjdGVy
c1RvVUludDY0U3RyaWN0KGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgJmlzVmFsaWQpOworICAg
IHJldHVybiBpc1ZhbGlkID8gc3RkOjptYWtlX29wdGlvbmFsKHJlc3VsdCkgOiBzdGQ6Om51bGxv
cHQ7Cit9CisKIGlubGluZSBTdHJpbmcgU3RyaW5nVmlldzo6dG9TdHJpbmdXaXRob3V0Q29weWlu
ZygpIGNvbnN0CiB7CiAgICAgaWYgKGlzOEJpdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5k
ZXggYzhhNGRkNmZhNDkwYTZlODRkNzk1NzUzYTYyOWUzMGQ1OWVlNThhYy4uZDJiOTliZjI1ZTNj
ODEwMWQzODM4NTQ4ZTNjZDBiOTlkYWQ5MDk5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBA
IC00Niw4ICs0Niw4IEBAIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB1bnNpZ25lZCBjaGFyYWN0ZXJz
VG9VSW50U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sCiBXVEZfRVhQT1JUX1NUUklO
R19BUEkgdW5zaWduZWQgY2hhcmFjdGVyc1RvVUludFN0cmljdChjb25zdCBVQ2hhciosIHNpemVf
dCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKIGludDY0X3QgY2hhcmFjdGVy
c1RvSW50NjRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwg
aW50IGJhc2UgPSAxMCk7CiBpbnQ2NF90IGNoYXJhY3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IFVD
aGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotdWludDY0
X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBv
ayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwotdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0
U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNl
ID0gMTApOworV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2
NFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFz
ZSA9IDEwKTsKK1dURl9FWFBPUlRfU1RSSU5HX0FQSSB1aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50
NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJh
c2UgPSAxMCk7CiBpbnRwdHJfdCBjaGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgTENoYXIq
LCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiBpbnRwdHJfdCBj
aGFyYWN0ZXJzVG9JbnRQdHJTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0g
bnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgKaW5k
ZXggNjI4NTVkNTRiY2M3MDE5MTdkMWI4ZmIyNGEzOTc2M2RkM2FiNTZhOC4uZGI0ZDFiMTJhZTli
YTFjNzdkYzA3NjM3NzRkYjk1NjdhNzE4ZDNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
LmgKQEAgLTQwLDYgKzQwLDkgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
IHsKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBj
b25zdCB7IHJldHVybiBTdHJpbmc6Om51bWJlcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllci50
b1VJbnQ2NCgpKSArICItIiArICBTdHJpbmc6Om51bWJlcihjb250ZXh0SWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsgfQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyPiBmcm9tU3RyaW5nKFN0cmluZ1ZpZXcpOworCisgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIudG9VSW50NjQoKSAmJiBj
b250ZXh0SWRlbnRpZmllci50b1VJbnQ2NCgpOyB9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+
IGRlY29kZShEZWNvZGVyJik7CkBAIC01MCw2ICs1MywyMyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBhLCBjb25zdCBTZXJ2aWNl
V29yawogICAgIHJldHVybiBhLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID09IGIuc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgJiYgIGEuY29udGV4dElkZW50aWZpZXIgPT0gYi5jb250ZXh0
SWRlbnRpZmllcjsKIH0KIAoraW5saW5lIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXI+IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFN0
cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNs
aWVudElkZW50aWZpZXI7CisKKyAgICB1bnNpZ25lZCBjb3VudGVyID0gMDsKKyAgICBmb3IgKGF1
dG8gaXRlbSA6IHN0cmluZy5zcGxpdCgnLScpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9
IGl0ZW0udG9VSW50NjRTdHJpY3QoKTsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCFjb3VudGVyKyspCisgICAg
ICAgICAgICBjbGllbnRJZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID0gbWFr
ZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+KGlkZW50
aWZpZXIudmFsdWUoKSk7CisgICAgICAgIGVsc2UgaWYgKGNvdW50ZXIgPT0gMikKKyAgICAgICAg
ICAgIGNsaWVudElkZW50aWZpZXIuY29udGV4dElkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRp
ZmllcjxEb2N1bWVudElkZW50aWZpZXJUeXBlPihpZGVudGlmaWVyLnZhbHVlKCkpOworICAgIH0K
KyAgICByZXR1cm4gKGNvdW50ZXIgPT0gMikgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoV1RGTW92ZShj
bGllbnRJZGVudGlmaWVyKSkgOiBzdGQ6Om51bGxvcHQ7Cit9CisKIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCmluZGV4IGExNDU1N2U2YzQ0MDg3M2Qx
NzdlN2M5NmFmYWVhMjU4Yzk4MzNhMGUuLjQ2NmNkODlkYTUzYjk1ODZkNzBjMDIwYmE4NDVlYTFk
ZWYwY2Q2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcApAQCAtMjksMTUgKzI5LDIyIEBACiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlckNsaWVudHMuaCIKIAogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCisjaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2Vy
dmljZVdvcmtlckNsaWVudHM6OlNlcnZpY2VXb3JrZXJDbGllbnRzKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpCitTZXJ2aWNlV29ya2VyQ2xpZW50czo6U2VydmljZVdvcmtlckNsaWVu
dHMoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2Jq
ZWN0KCZjb250ZXh0KQogewogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQogCitTZXJ2aWNlV29y
a2VyQ2xpZW50czo6flNlcnZpY2VXb3JrZXJDbGllbnRzKCkKK3sKKyAgICBjbGVhclBlbmRpbmdS
ZXF1ZXN0cygpOworfQorCiBjb25zdCBjaGFyKiBTZXJ2aWNlV29ya2VyQ2xpZW50czo6YWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICJTZXJ2aWNlV29ya2VyQ2xpZW50
cyI7CkBAIC00OCwxMCArNTUsNjMgQEAgYm9vbCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y2FuU3Vz
cGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuICFoYXNQZW5kaW5n
QWN0aXZpdHkoKTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6ZGlkRmluaXNoR2V0
UmVxdWVzdChTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBFeGNlcHRp
b25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPj4mJiBjbGllbnREYXRh
LCBEZWZlcnJlZFByb21pc2UqIHByb21pc2UpCit7CisgICAgYXV0byByZXF1ZXN0ID0gbV9wZW5k
aW5nUmVxdWVzdHMudGFrZShwcm9taXNlKTsKKyAgICBpZiAoIXJlcXVlc3QucHJvbWlzZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKGNsaWVudERhdGEuaGFzRXhjZXB0aW9uKCkpIHsKKyAg
ICAgICAgcmVxdWVzdC5wcm9taXNlLT5yZWplY3QoY2xpZW50RGF0YS5yZWxlYXNlRXhjZXB0aW9u
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gZGF0YSA9IGNsaWVudERhdGEu
cmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgaWYgKCFkYXRhKSB7CisgICAgICAgIHJlcXVlc3Qu
cHJvbWlzZS0+cmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYg
Y29udGV4dCA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CisgICAgcmVxdWVzdC5wcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFj
ZTxTZXJ2aWNlV29ya2VyQ2xpZW50Pj4oU2VydmljZVdvcmtlckNsaWVudDo6Z2V0T3JDcmVhdGUo
Y29udGV4dCwgaWRlbnRpZmllciwgV1RGTW92ZShkYXRhLnZhbHVlKCkpKSk7Cit9CisKK1NlcnZp
Y2VXb3JrZXJDbGllbnRzOjpSZXF1ZXN0U3RhdGU6OlJlcXVlc3RTdGF0ZShTZXJ2aWNlV29ya2Vy
Q2xpZW50cyogY2xpZW50cywgRGVmZXJyZWRQcm9taXNlKiBwcm9taXNlLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9jbGllbnRzKGNsaWVudHMpCisgICAgLCBt
X3Byb21pc2UocHJvbWlzZSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQor
CiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpnZXQoY29uc3QgU3RyaW5nJiBpZCwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIFVOVVNFRF9QQVJBTShpZCk7Ci0gICAg
cHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVy
YWwoImNsaWVudHMuZ2V0KCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9KTsKKyAgICBhdXRvKiBj
b250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkgewor
ICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhpZCk7CisgICAgaWYgKCFpZGVudGlm
aWVyIHx8ICFpZGVudGlmaWVyLT5pc1ZhbGlkKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2
ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gY2xpZW50SWRlbnRpZmllciA9
IGlkZW50aWZpZXIudmFsdWUoKTsKKworICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRleHQpOworICAgIGF1
dG8gcHJvbWlzZVBvaW50ZXIgPSBwcm9taXNlLnB0cigpOworCisgICAgYXV0byBzdGF0ZSA9IGFk
b3B0UmVmKCpuZXcgUmVxdWVzdFN0YXRlIHsgdGhpcywgcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5pZGVudGlmaWVyKCkgfSk7CisgICAgbV9wZW5kaW5n
UmVxdWVzdHMuYWRkKHByb21pc2VQb2ludGVyLCBQZW5kaW5nUmVxdWVzdCB7IFdURk1vdmUocHJv
bWlzZSksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpLCBzdGF0ZS5jb3B5UmVmKCkgfSk7CisK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtzdGF0ZSA9IFdURk1vdmUoc3RhdGUpLCBjbGllbnRJZGVu
dGlmaWVyXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOworICAgICAgICBjb25uZWN0aW9uLT5m
aW5kQ2xpZW50QnlJZGVudGlmaWVyKHN0YXRlLT5tX2lkZW50aWZpZXIsIGNsaWVudElkZW50aWZp
ZXIsIFtzdGF0ZSA9IFdURk1vdmUoc3RhdGUpLCBjbGllbnRJZGVudGlmaWVyXSAoYXV0byYmIGNs
aWVudERhdGEpIG11dGFibGUgeworICAgICAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoc3RhdGUtPm1faWRlbnRpZmllciwgW3N0YXRl
ID0gV1RGTW92ZShzdGF0ZSksIGNsaWVudElkZW50aWZpZXIsIGRhdGEgPSBjcm9zc1RocmVhZENv
cHkoY2xpZW50RGF0YSldIChhdXRvJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKHN0
YXRlLT5tX2NsaWVudHMpCisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5tX2NsaWVudHMtPmRp
ZEZpbmlzaEdldFJlcXVlc3QoY2xpZW50SWRlbnRpZmllciwgV1RGTW92ZShkYXRhKSwgc3RhdGUt
Pm1fcHJvbWlzZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAK
IHZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6Om1hdGNoQWxsKGNvbnN0IENsaWVudFF1ZXJ5T3B0
aW9ucyYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAgLTcwLDYgKzEzMCwxMyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpjbGFpbShSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCBBU0NJSUxpdGVyYWwoImNsaWVudHMuY2xhaW0oKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIp
IH0pOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpjbGVhclBlbmRpbmdSZXF1ZXN0
cygpCit7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9wZW5kaW5nUmVxdWVzdHMudmFsdWVz
KCkpCisgICAgICAgIHJlcXVlc3Quc3RhdGUtPm1fY2xpZW50cyA9IG51bGxwdHI7CisgICAgbV9w
ZW5kaW5nUmVxdWVzdHMuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaAppbmRleCA3NGJiYjdmMDRm
MWExYzFiODQyYjBjODE4YmEzMWNmOGEyOTdhYTUxLi4yNTBlMWM5YmM0YWY3MDBhY2E0MzNiZTIy
OTk5NDVhMTZkODMyMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaApAQCAtMjgsMjAgKzI4LDI2IEBACiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5o
IgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRGVmZXJyZWRQcm9taXNlOworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
Oworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOworY2xhc3MgU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlOwogCiBjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50cyA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnRzPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50cz4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29y
a2VyQ2xpZW50cz4gY3JlYXRlKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgY29udGV4dCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJDbGllbnRzKGNv
bnRleHQpKTsKICAgICB9CisgICAgflNlcnZpY2VXb3JrZXJDbGllbnRzKCk7CiAKICAgICBzdHJ1
Y3QgQ2xpZW50UXVlcnlPcHRpb25zIHsKICAgICAgICAgYm9vbCBpbmNsdWRlVW5jb250cm9sbGVk
IHsgZmFsc2UgfTsKQEAgLTU0LDExICs2MCwzMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGFpbShS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTZXJ2aWNl
V29ya2VyQ2xpZW50cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgZXhwbGljaXQgU2Vy
dmljZVdvcmtlckNsaWVudHMoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJik7CisKKyAgICB2b2lk
IGRpZEZpbmlzaEdldFJlcXVlc3QoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIEV4Y2Vw
dGlvbk9yPHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmLCBEZWZlcnJl
ZFByb21pc2UqKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzdG9wKCkgZmluYWwg
eyBjbGVhclBlbmRpbmdSZXF1ZXN0cygpOyB9CisKKyAgICB2b2lkIGNsZWFyUGVuZGluZ1JlcXVl
c3RzKCk7CisKKyAgICBjbGFzcyBSZXF1ZXN0U3RhdGUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8UmVxdWVzdFN0YXRlPiB7CisgICAgcHVibGljOgorICAgICAgICBSZXF1ZXN0U3RhdGUo
U2VydmljZVdvcmtlckNsaWVudHMqLCBEZWZlcnJlZFByb21pc2UqLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CisKKyAgICAgICAgU2VydmljZVdvcmtlckNsaWVudHMqIG1fY2xpZW50czsKKyAg
ICAgICAgRGVmZXJyZWRQcm9taXNlKiBtX3Byb21pc2U7CisgICAgICAgIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKKyAgICB9OworCisgICAgc3RydWN0IFBlbmRpbmdSZXF1
ZXN0IHsKKyAgICAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gcHJvbWlzZTsKKyAgICAgICAg
UmVmUHRyPEFjdGl2ZURPTU9iamVjdDo6UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VXb3JrZXJDbGll
bnRzPj4gcHJvdGVjdGluZ0NsaWVudHM7CisgICAgICAgIFJlZlB0cjxSZXF1ZXN0U3RhdGU+IHN0
YXRlOworICAgIH07CisgICAgSGFzaE1hcDxEZWZlcnJlZFByb21pc2UqLCBQZW5kaW5nUmVxdWVz
dD4gbV9wZW5kaW5nUmVxdWVzdHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCmluZGV4IDEzNzVkM2QzOGQwOTgyYjM5MWUxMjMzMjc4YTNjMzk0Y2Rj
NDkzNjQuLjg5NDZjMjcwYmRiNmYzZGU5OTM2NWNhMTBiYWI1OTI0MmYzMGViYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCkBAIC0xMTIsNiArMTEyLDEyIEBAIHZvaWQgU1dDb250ZXh0TWFuYWdl
cjo6Zm9yRWFjaFNlcnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNl
cnZpCiAgICAgICAgIGFwcGx5KCp3b3JrZXJUaHJlYWQpOwogfQogCit2b2lkIFNXQ29udGV4dE1h
bmFnZXI6OnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQoreworICAgIGlm
IChhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJNYXAuZ2V0KGlkZW50aWZpZXIpKQorICAg
ICAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0
YXNrKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5h
Z2VyLmgKaW5kZXggZTJmMGU5ZTUwYjY5ZTZlNWIyYmE4NzFiODliYjUwNzFmODgxNDQ3MS4uOGEw
NjJmMzlhNjk2MTgyMGJjNjhlMWYzMGFmMmEwNDJmNTUyNzIxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MSw2ICs1Miw5IEBAIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdv
cmtlcklkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFNlcnZpY2VXb3Jr
ZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSA9IDA7CisKKyAgICAgICAgdXNpbmcgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNr
ID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmKT47CisgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5k
Q2xpZW50QnlJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciwgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYpID0gMDsK
ICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5p
cXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKQEAgLTY1LDYgKzY5LDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBmb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
U2VydmljZVdvcmtlclRocmVhZFByb3h5Jik+Jik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYpOworCiBwcml2YXRlOgogICAgIFNXQ29udGV4dE1hbmFn
ZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggNmQ1NjQ4OGY5ZmEyM2M2MDc0ZTQ5N2U1MzliNmYy
MDhiNjgwNDY5YS4uNDY0YTQ5YWFkMWE2ZmQwOWI0ZjQ5MjU0ZTA2YzhiYmNhNWJiMGMwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKQEAgLTMwNSw2ICszMDUsMjAgQEAgdm9pZCBTV1NlcnZlcjo6d29ya2VyQ29udGV4dFRlcm1p
bmF0ZWQoU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKIH0KIAorc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU1dT
ZXJ2ZXI6OmZpbmRDbGllbnRCeUlkZW50aWZpZXIoY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4s
IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIpCit7CisgICAg
YXV0byBpdGVyYXRvciA9IG1fY2xpZW50cy5maW5kKG9yaWdpbik7CisgICAgaWYgKGl0ZXJhdG9y
ID09IG1fY2xpZW50cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IGF1dG8mIGNsaWVudHMgPSBpdGVyYXRvci0+dmFsdWU7CisgICAgYXV0byBwb3NpdGlvbiA9IGNs
aWVudHMuZmluZE1hdGNoaW5nKFsmXSAoY29uc3QgYXV0byYgY2xpZW50KSB7CisgICAgICAgIHJl
dHVybiBjbGllbnRJZGVudGlmaWVyID09IGNsaWVudC5pZGVudGlmaWVyOworICAgIH0pOworCisg
ICAgcmV0dXJuIChwb3NpdGlvbiAhPSBub3RGb3VuZCkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoY2xp
ZW50c1twb3NpdGlvbl0uZGF0YSkgOiBzdGQ6Om51bGxvcHQ7Cit9CisKIHZvaWQgU1dTZXJ2ZXI6
OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKIHsKICAg
ICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVj
dGlvbi5pZGVudGlmaWVyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBiOGVkZTE3NWNlZmM4OWE4YmJlZTM4N2ZlYzBjZGJk
MjBkZDY4ZTNmLi5mNTJiOTMwZTkyMTQ2NzZlMjY4YjgzZjRlY2RhZWFkMTM0ODFmODg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBA
IC0xMzcsNiArMTM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25z
dCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTV1NlcnZl
cldvcmtlciYsIGJvb2wgd2FzU3VjY2Vzc2Z1bCk7CiAgICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0
aW9uKFNXU2VydmVyV29ya2VyJik7CiAgICAgdm9pZCB3b3JrZXJDb250ZXh0VGVybWluYXRlZChT
V1NlcnZlcldvcmtlciYpOworICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERh
dGE+IGZpbmRDbGllbnRCeUlkZW50aWZpZXIoY29uc3QgQ2xpZW50T3JpZ2luJiwgU2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGJlODViMzlmNjYxYzY2NWU0ZjExMTBlMDRlNGNiNDFi
NTVjY2Y5MGEuLjczN2M3OGJhNTg3M2I2YWFiZmZkN2NmNjQxZjNjYzVjMjQwYzNlOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTEwOCw2ICsxMDgsMTIg
QEAgdm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OndvcmtlclRlcm1pbmF0ZWQoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmkKICAgICAgICAgd29ya2VyLT5jb250ZXh0VGVybWlu
YXRlZCgpOwogfQogCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmluZENsaWVu
dEJ5SWRlbnRpZmllcih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyIGNsaWVudElkKQoreworICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtl
cjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkK
KyAgICAgICAgZ2xvYmFsU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbigpLT5maW5kQ2xpZW50QnlJ
ZGVudGlmaWVyQ29tcGxldGVkKHJlcXVlc3RJZGVudGlmaWVyLCB3b3JrZXItPmZpbmRDbGllbnRC
eUlkZW50aWZpZXIoY2xpZW50SWQpLCBmYWxzZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDVkYjhkMGE2NTM0YzcwN2NiMTA3NDQ2OTk0ZWRhMmY1
MTU4YzI1MGQuLjI2MWJjNmRmMWEzMThmMzcyOTQ0YTc2NDM0YzFlNWY1YzkzYjJiZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMzQsNiArMzQsOCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTV1NlcnZlcjsKK3N0cnVjdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YTsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjsKIHN0cnVj
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyOwogCkBAIC00OCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpID0gMDsKIAogICAgIC8vIE1l
c3NhZ2VzIGJhY2sgZnJvbSB0aGUgU1cgaG9zdCBwcm9jZXNzCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKQEAgLTU2LDYgKzU5LDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2
ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdvcmtlclRlcm1pbmF0ZWQoU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllcih1
aW50NjRfdCBjbGllbnRJZFJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIpOwogCiAgICAgc3RhdGljIFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiogY29ubmVjdGlvbkZvcklkZW50aWZpZXIoU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggMWYwYjFk
Y2VjNGM0MDVlNDdmNjFmODYwZmY0YTEwOWZkYTQ0NDgwZi4uMzdlNTM2NWIyZTYyMzg1ZGY4ZDk2
MzAxM2VkMDY1ZWY5ZjAxNTdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTY1LDYgKzY1LDE0IEBA
IHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZSgpCiAgICAgbV9zZXJ2ZXIudGVybWluYXRl
V29ya2VyKCp0aGlzKTsKIH0KIAorY29uc3QgQ2xpZW50T3JpZ2luJiBTV1NlcnZlcldvcmtlcjo6
b3JpZ2luKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fb3JpZ2luKQorICAgICAgICBtX29yaWdpbiA9
IENsaWVudE9yaWdpbiB7IG1fcmVnaXN0cmF0aW9uS2V5LnRvcE9yaWdpbigpLCBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fZGF0
YS5zY3JpcHRVUkwpKSB9OworCisgICAgcmV0dXJuICptX29yaWdpbjsKK30KKwogdm9pZCBTV1Nl
cnZlcldvcmtlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3Qgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIG1fc2VydmVyLnNjcmlwdENvbnRleHRGYWlsZWRU
b1N0YXJ0KGpvYkRhdGFJZGVudGlmaWVyLCAqdGhpcywgbWVzc2FnZSk7CkBAIC05MCw2ICs5OCwx
MSBAQCB2b2lkIFNXU2VydmVyV29ya2VyOjpjb250ZXh0VGVybWluYXRlZCgpCiAgICAgbV9zZXJ2
ZXIud29ya2VyQ29udGV4dFRlcm1pbmF0ZWQoKnRoaXMpOwogfQogCitzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZlcldvcmtlcjo6ZmluZENsaWVudEJ5SWRlbnRp
ZmllcihTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZCkKK3sKKyAgICByZXR1
cm4gbV9zZXJ2ZXIuZmluZENsaWVudEJ5SWRlbnRpZmllcihvcmlnaW4oKSwgY2xpZW50SWQpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmgKaW5kZXggYWM4NjliNGVmMzE1MmVlMGFmMjU5NDEwODYzYWE3Y2Zl
MGRkNmM4Yy4uNjNiNGE3MDYyZGYwZTQ1YWUwZGNhMTBjNmRhMWI3Yzk3MzRkOTA1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaApAQCAtMzYsMTAgKzM2LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3Ry
dWN0IENsaWVudE9yaWdpbjsKIGNsYXNzIFNXU2VydmVyOwogY2xhc3MgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb247Ci1lbnVtIGNsYXNzIFdvcmtlclR5cGU7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVu
dERhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyOworZW51bSBjbGFzcyBXb3JrZXJUeXBlOwogCiBj
bGFzcyBTV1NlcnZlcldvcmtlciA6IHB1YmxpYyBSZWZDb3VudGVkPFNXU2VydmVyV29ya2VyPiB7
CiBwdWJsaWM6CkBAIC03MywxMCArNzYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNo
SW5zdGFsbChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
cj4mLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwogICAgIHZvaWQgZGlkRmluaXNoQWN0aXZhdGlvbigp
OwogICAgIHZvaWQgY29udGV4dFRlcm1pbmF0ZWQoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPiBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTV1NlcnZlcldv
cmtlciogZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKIAogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJEYXRhJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhOyB9CisgICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdDsKIAogcHJp
dmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9u
JiwgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
QEAgLTg3LDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBtX2RhdGE7
CiAgICAgU3RyaW5nIG1fc2NyaXB0OwogICAgIGJvb2wgbV9oYXNQZW5kaW5nRXZlbnRzIHsgZmFs
c2UgfTsKKyAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Q2xpZW50T3JpZ2luPiBtX29yaWdpbjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMjRlNGFkYWUxYzJkOTM3OGE4M2Yy
NzE4ZDA5YTMyMzg4NjkyMjZmMC4uMGVjYjJjMDc0MzJjYWY1YzczZmQ1ZDQxMTQ4ZmI3YmRhZDVi
MzY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKQEAgLTc2LDYgKzc2LDExIEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VyCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVdv
cmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOwogfQogCit2b2lkIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6ZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4mIGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmluZENsaWVudEJ5SWRlbnRpZmll
ckNvbXBsZXRlZCB7IHJlcXVlc3RJZGVudGlmaWVyLCBkYXRhLCBoYXNTZWN1cml0eUVycm9yIH0p
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
U3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaAppbmRleCBiNWI4NzQ5MDZlMWZiY2Y0NWNjMjkzYzRjYWExNDdiYzNmNDY3Mjk5Li44OWEw
ZGM5MjAxOTM5YTMxNGJhNGZhNjllODQ1Zjg1NzE2OTYyZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC01OSw2ICs1OSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBmaW5kQ2xp
ZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJvb2wg
aGFzU2VjdXJpdHlFcnJvcikgZmluYWw7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2lw
Y0Nvbm5lY3Rpb247CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA4YjIzNDc4YjI2YTkwMGY2
ODNkNzJkYTFlMGM0ZGU2MmExOTI4MDkxLi4wZWYwMTg4ZjE0MTk1NDM1ZDFiMDgzNmZlNzdkMzQ2
NjgyM2I2YzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDcgQEAgbWVzc2FnZXMg
LT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIHsKICAgICBEaWRGaW5pc2hBY3RpdmF0
aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpOwogICAgIFNl
dFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7CiAgICAgV29ya2VyVGVy
bWluYXRlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKKyAg
ICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZp
ZXIpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGMwY2VkYTE4MTdjZWYxNTE4MTMxZTZiMjQxMDJm
N2E2MmE1ODRiZWYuLmE4ZWVkMzE1MmJmZGQ0ZGFlOTk0YTUzMjNhOTMyOTZhMjlhYTlhYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25maWd1cmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KIApAQCAtMTk0LDYgKzE5NSwyNCBAQCB2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcgogICAgIG1fY29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6V29ya2VyVGVybWluYXRlZChz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciksIDApOwogfQogCit2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyLCBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvIHJlcXVlc3RJZGVudGlmaWVyID0gKyttX3ByZXZp
b3VzUmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9maW5kQ2xpZW50QnlJZGVudGlmaWVyUmVxdWVz
dHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9jb25u
ZWN0aW9uVG9TdG9yYWdlUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpGaW5kQ2xpZW50QnlJZGVudGlmaWVyIHsgcmVxdWVzdElkZW50aWZpZXIs
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyIH0sIDApOworfQorCit2
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVy
Q29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPiYmIGNsaWVudERhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikK
K3sKKyAgICBpZiAoYXV0byBjYWxsYmFjayA9IG1fZmluZENsaWVudEJ5SWRlbnRpZmllclJlcXVl
c3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpKSB7CisgICAgICAgIGlmIChoYXNTZWN1cml0eUVy
cm9yKSB7CisgICAgICAgICAgICBjYWxsYmFjayhFeGNlcHRpb24geyBTZWN1cml0eUVycm9yIH0p
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUoY2xpZW50RGF0YSkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKaW5kZXggYzllNjVhNGFiODM4YjAzNjAxNTRiODZiMTZlNzdjMjA2OWRlMmVkZi4uOGY5
YjQwODM4MmViNWZkMzZmMjAyNmI3ZTJkYWVjMTQ0ZjZjOWE4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCkBAIC02MSw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRG
aW5pc2hBY3RpdmF0aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsK
ICAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQZW5kaW5nRXZlbnRzKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSBmaW5hbDsKICAgICB2b2lkIHdvcmtlclRlcm1pbmF0
ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgZmlu
ZENsaWVudEJ5SWRlbnRpZmllcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIsIEZpbmRDbGllbnRCeUlkZW50aWZp
ZXJDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNl
cnZpY2VXb3JrZXJTdGFydGVkV2l0aE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBleGNlcHRpb25NZXNzYWdlKSBmaW5hbDsKQEAgLTcwLDEwICs3
MSwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgIHZvaWQgZmluZENsaWVudEJ5SWRl
bnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNTZWN1cml0eUVy
cm9yKTsKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvU3RvcmFnZVBy
b2Nlc3M7CiAgICAgdWludDY0X3QgbV9wYWdlSUQgeyAwIH07CiAgICAgdWludDY0X3QgbV9wcmV2
aW91c1NlcnZpY2VXb3JrZXJJRCB7IDAgfTsKKworICAgIEhhc2hNYXA8dWludDY0X3QsIEZpbmRD
bGllbnRCeUlkZW50aWZpZXJDYWxsYmFjaz4gbV9maW5kQ2xpZW50QnlJZGVudGlmaWVyUmVxdWVz
dHM7CisgICAgdWludDY0X3QgbV9wcmV2aW91c1JlcXVlc3RJZGVudGlmaWVyIHsgMCB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDczNmZkZjViNDcxNzliZTQwZWRhMTJjOWZjNmQ3MjY2
MmMxZDdiYzQuLmViZjJiNGU0ZmY4MzdhZTg5YWEyMDU2M2E2NGZkZWYxNTRjNGJhMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yOSw2
ICsyOSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIHsKICAg
ICBGaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgRmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllcikKICAgICBUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29t
cGxldGVkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlF
cnJvcikKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjBiOTJiNjc2MGRhNWRlMmRiMGQ2ZmMzZGRkYTQ2
NDUyZTg4YjBkOC4uODA1ZmM5YTk0ODc5NmMwYTYyOWViYWYwY2UwNzViNTQ0MjM3YzczOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTExLTMwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZp
Y2VXb3JrZXIvI2NsaWVudHMtZ2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODAxNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zZXJ2
aWNld29ya2VyY2xpZW50cy1nZXQtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2
aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMuaHRtbDogQWRkZWQuCisKIDIwMTctMTEtMzAgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSBm
aWx0ZXIgbG9nZ2luZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvcmVzb3VyY2VzL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC13b3JrZXIuanMgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2VydmljZXdv
cmtlcmNsaWVudHMtZ2V0LXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTNiYmEyMzhhNmIyZThjYjIx
Njk1OWM3Njg1NmE2NjQ4OWMzZDY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdl
dC13b3JrZXIuanMKQEAgLTAsMCArMSw0MSBAQAordmFyIGNsaWVudCA9IG51bGw7CitzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBhc3luYyAoZXZlbnQpID0+IHsKKyAgICB0cnkgewor
ICAgICAgICB2YXIgY2xpZW50ID0gZXZlbnQuc291cmNlOworCisgICAgICAgIGlmICghKGNsaWVu
dCBpbnN0YW5jZW9mIFdpbmRvd0NsaWVudCkpIHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgiRkFJTDogY2xpZW50IHNvdXJjZSBpcyBub3QgYSBXaW5kb3dDbGllbnQiKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByZXRyaWV2ZWRD
bGllbnQgPSBhd2FpdCBzZWxmLmNsaWVudHMuZ2V0KGNsaWVudC5pZCk7CisgICAgICAgIGlmICgh
cmV0cmlldmVkQ2xpZW50KSB7CisgICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2Uo
IkZBSUw6IGRpZCBub3QgcmV0cmlldmUgYW55IGNsaWVudCB0aHJvdWdoIHNlbGYuY2xpZW50cy5n
ZXQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXRy
aWV2ZWRDbGllbnQuaWQgIT09IGNsaWVudC5pZCkgeworICAgICAgICAgICAgZXZlbnQuc291cmNl
LnBvc3RNZXNzYWdlKCJGQUlMOiBjbGllbnQgaWQgaXMgZGlmZmVyZW50IGZyb20gcmV0cmlldmVk
IGNsaWVudCBpZCB0aHJvdWdoIHNlbGYuY2xpZW50cy5nZXQ6ICIgKyBjbGllbnQuaWQgKyAiIC8g
IiArIHJldHJpZXZlZENsaWVudC5pZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAocmV0cmlldmVkQ2xpZW50ICE9PSBjbGllbnQpIHsKKyAgICAgICAgICAg
IGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogY2xpZW50IGlzIGRpZmZlcmVudCBmcm9t
IHRoZSBvbmUgcmV0cmlldmVkIHRocm91Z2ggc2VsZi5jbGllbnRzLmdldCIpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGJhZElkcyA9IFtjbGllbnQuaWQg
KyAiMCIsICIwLTAiLCAiMC0xIiwgIjEtMCIsICIwLSIsICItIiwgIi0wIl07CisgICAgICAgIGZv
ciAoaWQgaW4gYmFkSWRzKSB7CisgICAgICAgICAgICByZXRyaWV2ZWRDbGllbnQgPSBhd2FpdCBz
ZWxmLmNsaWVudHMuZ2V0KGlkKTsKKyAgICAgICAgICAgIGlmICghIXJldHJpZXZlZENsaWVudCkg
eworICAgICAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogcmV0cmll
dmVkIGNsaWVudCB3aXRoIGJhZCBpZCAiICsgaWQgKyAiIHNob3VsZCBiZSBudWxsIik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
ZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJQQVNTIik7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIkZBSUw6IHJlY2VpdmVkIGV4Y2VwdGlvbiAi
ICsgZSk7CisgICAgfQorfSk7CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2Vy
Y2xpZW50cy1nZXQuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3ZjM2NmIyYTJhY2Y1
YTliZWQ0ZGNmMmZmNjU2MzkwY2U1NGM1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0
cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIFRlc3RpbmcgY2xpZW50cy5n
ZXQgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0Lmh0dHBzLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOWJiZmJhMzhjY2VmN2YwZDllNjgzN2U4NDc5YmJiNmY5NTIxYzZlNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVz
dCkgPT4geworICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAg
ICAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IHRlc3Quc3RlcF9mdW5jKChldmVudCkgPT4geworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhl
dmVudC5kYXRhLCAiUEFTUyIpOworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9KSk7
CisgICAgfSk7CisKKyAgICB2YXIgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQtd29y
a2VyLmpzIiwgeyBzY29wZSA6ICIvbm9vbmUiIH0pOworICAgIHZhciB3b3JrZXIgPSByZWdpc3Ry
YXRpb24uaW5zdGFsbGluZzsKKyAgICBpZiAoIXdvcmtlcikKKyAgICAgICAgd29ya2VyID0gcmVn
aXN0cmF0aW9uLmFjdGl2ZTsKKyAgICB3b3JrZXIucG9zdE1lc3NhZ2UoInN0YXJ0Iik7CisKKyAg
ICBhd2FpdCBwcm9taXNlOworfSwgIlRlc3RpbmcgY2xpZW50cy5nZXQiKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328138</attachid>
            <date>2017-12-01 12:50:43 -0800</date>
            <delta_ts>2017-12-01 14:44:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180167-20171201125042.patch</filename>
            <type>text/plain</type>
            <size>37641</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJjNGU1NWUxZTg3YmEyZTI4MTAwMGRh
MWU3YjEwMGQ5ZjNhZDQxZTkuLmM2NTM2NzEyZWUyMzA5MzhjZDFiOWY5MjQwYzI4ZDU4ZjA2Nzhh
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RG
OjpTdHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdCBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisKIDIwMTctMTEtMzAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjUzNjIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggODE5MWM2MTk0MGVjNzZhZTVhMWIxYzI2ZTAyMmFlYjViOTNiOTVlYy4uYzky
N2U5ODBhMzhkZjVmODA4NTFiY2VmODQ1N2IwYWViMTUyYjllZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ0IEBACisyMDE3LTExLTMwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIv
I2NsaWVudHMtZ2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODAxNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0OiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50
cy1nZXQuaHR0cHMuaHRtbAorCisgICAgICAgIEltcGxlbWVudCBjbGllbnRzIGdldCBieSBoYXZp
bmcgc2VydmljZSB3b3JrZXIgY2xpZW50cyBkbyB0aGUgZm9sbG93aW5nOgorICAgICAgICAtIEdv
IHRvIG1haW4gdGhyZWFkIHRvIHF1ZXJ5IHRoZSBTV0NsaWVudENvbm5lY3Rpb24gZm9yIGdldHRp
bmcgdGhlIGNsaWVudC4KKyAgICAgICAgLSBTV0NsaWVudENvbm5lY3Rpb24gcmVxdWVzdHMgaXQg
dGhyb3VnaCBJUEMgdG8gU3RvcmFnZVByb2Nlc3MgU1dTZXJ2ZXIuCisgICAgICAgIC0gU1dTZXJ2
ZXIgbG9va3MgYXQgaXRzIGNsaWVudCBtYXAgYW5kIHJldHVybnMgY2xpZW50IGRhdGEgYmFzZWQg
b24gdGhlIGdpdmVuIGlkZW50aWZpZXIuCisgICAgICAgIC0gU1dDbGllbnRDb25uZWN0aW9uIHNl
bmRzIGl0IGJhY2sgdG8gdGhlIHJpZ2h0IGNsaWVudHMgZm9yIHJlc29sdmluZyB0aGUgcHJvbWlz
ZS4KKworICAgICAgICBJZGVudGlmaWVyIGlzIHBhcnNlZCBhdCBzZXJ2aWNlIHdvcmtlciBwcm9j
ZXNzIGxldmVsLgorCisgICAgICAgIE1hZGUgU2VydmljZVdvcmtlckNsaWVudHMgbm8gbG9uZ2Vy
IGFuIEFjdGl2ZURPTU9iamVjdCBzaW5jZSBpdCBpcyBvd25lZCBieSBTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUKKyAgICAgICAgYW5kIGlzIG9ubHkgZXhwb3NlZCBpbiBzZXJ2aWNlIHdvcmtlcnMu
CisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHM6OlNlcnZpY2VX
b3JrZXJDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRzOjpn
ZXQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHM6OmNyZWF0ZSk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpwb3N0VGFza1RvU2VydmljZVdvcmtlcik6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXI6OmdldENsaWVudEZyb21JZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmluZENsaWVudEJ5SWRlbnRpZmllcik6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpvcmlnaW4gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmZpbmRDbGllbnRCeUlkZW50aWZpZXIpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxNy0xMS0z
MCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBy
b3ZlIGZpbHRlciBsb2dnaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwNjE0NWY5NmM3MTAwNGUzYWUzOTJjZGMx
NmE4YWUwYzIwMzIzY2UuLjlhNDE2MGE2NzcwY2RjMDBhNWQ1MzRjZTYwNWFkMzRmZmNlN2U1YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIu
aW8vU2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBJUEMgcGx1bWJlcnkgZm9yIGNsaWVudEZyb21JZCBi
ZXR3ZWVuIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyBhbmQgU3RvcmFnZSBwcm9jZXNzLgorCisgICAg
ICAgICogU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OmNsaWVudEZyb21JZENvbXBsZXRlZCk6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAg
KiBTdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6ZmluZENsaWVudEJ5SWRlbnRpZmllcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVy
Q29tcGxldGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIwMTctMTEtMzAgIEpvc2VwaCBQ
ZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFdlYiBBdXRv
bWF0aW9uOiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24gbGVhawpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaAppbmRleCA0OGY3OGRkNGY4NDE3MzFjNjY0OTk3NDA4ODY4NmZiYWFkMjU4
ZTQ5Li5jODgxMThiNjY3YTMyNjBiMGE1YzQ1ZGEyODdiYTI1OGI2YjJiZDViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPGxpbWl0cy5oPgog
I2luY2x1ZGUgPHVuaWNvZGUvdXR5cGVzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTE0
Niw2ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgaW50IHRvSW50KCkgY29uc3Q7CiAgICAgaW50IHRv
SW50KGJvb2wmIGlzVmFsaWQpIGNvbnN0OwogICAgIGludCB0b0ludFN0cmljdChib29sJiBpc1Zh
bGlkKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB0b1VJbnQ2NFN0cmljdCgp
IGNvbnN0OwogICAgIGZsb2F0IHRvRmxvYXQoYm9vbCYgaXNWYWxpZCkgY29uc3Q7CiAKICAgICBz
dGF0aWMgdm9pZCBpbnZhbGlkYXRlKGNvbnN0IFN0cmluZ0ltcGwmKTsKQEAgLTUyMyw2ICs1MjUs
MTMgQEAgaW5saW5lIGludCBTdHJpbmdWaWV3Ojp0b0ludFN0cmljdChib29sJiBpc1ZhbGlkKSBj
b25zdAogICAgIHJldHVybiBjaGFyYWN0ZXJzVG9JbnRTdHJpY3QoY2hhcmFjdGVyczE2KCksIG1f
bGVuZ3RoLCAmaXNWYWxpZCk7CiB9CiAKK2lubGluZSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBT
dHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdCgpIGNvbnN0Cit7CisgICAgYm9vbCBpc1ZhbGlkOwor
ICAgIHVpbnQ2NF90IHJlc3VsdCA9IGlzOEJpdCgpID8gY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0
KGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCkgOiBjaGFyYWN0ZXJzVG9VSW50NjRT
dHJpY3QoY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoLCAmaXNWYWxpZCk7CisgICAgcmV0dXJuIGlz
VmFsaWQgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwocmVzdWx0KSA6IHN0ZDo6bnVsbG9wdDsKK30KKwog
aW5saW5lIFN0cmluZyBTdHJpbmdWaWV3Ojp0b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkgY29uc3QK
IHsKICAgICBpZiAoaXM4Qml0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBjOGE0ZGQ2
ZmE0OTBhNmU4NGQ3OTU3NTNhNjI5ZTMwZDU5ZWU1OGFjLi5kMmI5OWJmMjVlM2M4MTAxZDM4Mzg1
NDhlM2NkMGI5OWRhZDkwOTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTQ2LDggKzQ2
LDggQEAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJp
Y3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wKIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB1bnNp
Z25lZCBjaGFyYWN0ZXJzVG9VSW50U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBv
ayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0
cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9
IDEwKTsKIGludDY0X3QgY2hhcmFjdGVyc1RvSW50NjRTdHJpY3QoY29uc3QgVUNoYXIqLCBzaXpl
X3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7Ci11aW50NjRfdCBjaGFyYWN0
ZXJzVG9VSW50NjRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0
ciwgaW50IGJhc2UgPSAxMCk7Ci11aW50NjRfdCBjaGFyYWN0ZXJzVG9VSW50NjRTdHJpY3QoY29u
c3QgVUNoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CitX
VEZfRVhQT1JUX1NUUklOR19BUEkgdWludDY0X3QgY2hhcmFjdGVyc1RvVUludDY0U3RyaWN0KGNv
bnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwor
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChj
b25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsK
IGludHB0cl90IGNoYXJhY3RlcnNUb0ludFB0clN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwg
Ym9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKIGludHB0cl90IGNoYXJhY3RlcnNU
b0ludFB0clN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBp
bnQgYmFzZSA9IDEwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaAppbmRleCA2Mjg1NWQ1
NGJjYzcwMTkxN2QxYjhmYjI0YTM5NzYzZGQzYWI1NmE4Li4wZDBlOTJlYjMyNWY1NTU1MTIwZGU5
M2Q4YTY1ZjUxN2ExOWJkNzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaApAQCAtNDAs
NiArNDAsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgewogICAgIHVu
c2lnbmVkIGhhc2goKSBjb25zdDsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0
dXJuIFN0cmluZzo6bnVtYmVyKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLnRvVUludDY0KCkp
ICsgIi0iICsgIFN0cmluZzo6bnVtYmVyKGNvbnRleHRJZGVudGlmaWVyLnRvVUludDY0KCkpOyB9
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+
IGZyb21TdHJpbmcoU3RyaW5nVmlldyk7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+IGRlY29k
ZShEZWNvZGVyJik7CkBAIC01MCw2ICs1MSwyMyBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBhLCBjb25zdCBTZXJ2aWNlV29yawog
ICAgIHJldHVybiBhLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyID09IGIuc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIgJiYgIGEuY29udGV4dElkZW50aWZpZXIgPT0gYi5jb250ZXh0SWRlbnRp
ZmllcjsKIH0KIAoraW5saW5lIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXI+IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFN0cmluZ1Zp
ZXcgc3RyaW5nKQoreworICAgIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElk
ZW50aWZpZXI7CisKKyAgICB1bnNpZ25lZCBjb3VudGVyID0gMDsKKyAgICBmb3IgKGF1dG8gaXRl
bSA6IHN0cmluZy5zcGxpdCgnLScpKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGl0ZW0u
dG9VSW50NjRTdHJpY3QoKTsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyIHx8ICEqaWRlbnRpZmll
cikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmICghY291bnRl
cisrKQorICAgICAgICAgICAgY2xpZW50SWRlbnRpZmllci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJU
eXBlPihpZGVudGlmaWVyLnZhbHVlKCkpOworICAgICAgICBlbHNlIGlmIChjb3VudGVyID09IDIp
CisgICAgICAgICAgICBjbGllbnRJZGVudGlmaWVyLmNvbnRleHRJZGVudGlmaWVyID0gbWFrZU9i
amVjdElkZW50aWZpZXI8RG9jdW1lbnRJZGVudGlmaWVyVHlwZT4oaWRlbnRpZmllci52YWx1ZSgp
KTsKKyAgICB9CisgICAgcmV0dXJuIChjb3VudGVyID09IDIpID8gc3RkOjptYWtlX29wdGlvbmFs
KFdURk1vdmUoY2xpZW50SWRlbnRpZmllcikpIDogc3RkOjpudWxsb3B0OworfQorCiB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAppbmRleCBhMTQ1NTdl
NmM0NDA4NzNkMTc3ZTdjOTZhZmFlYTI1OGM5ODMzYTBlLi5hNGViYzdhMzE4MDU1YjIwZjhmZjM3
ZjRjYTE5MzAyMDAxMDAwMGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKQEAgLTI5LDI5ICsyOSw0OSBAQAog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRzLmgiCiAKICNpbmNsdWRlICJKU0RPTVByb21p
c2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkpTU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVNlcnZpY2VXb3JrZXJDbGllbnRzOjpTZXJ2aWNlV29ya2VyQ2xpZW50cyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0
KQorc3RhdGljIGlubGluZSB2b2lkIGRpZEZpbmlzaEdldFJlcXVlc3QoU2VydmljZVdvcmtlckds
b2JhbFNjb3BlJiBzY29wZSwgRGVmZXJyZWRQcm9taXNlJiBwcm9taXNlLCBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyLCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPj4mJiBjbGllbnREYXRhKQogewotICAgIHN1c3BlbmRJZk5l
ZWRlZCgpOwotfQorICAgIGlmIChjbGllbnREYXRhLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAg
IHByb21pc2UucmVqZWN0KGNsaWVudERhdGEucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBhdXRvIGRhdGEgPSBjbGllbnREYXRhLnJlbGVhc2VSZXR1cm5W
YWx1ZSgpOworICAgIGlmICghZGF0YSkgeworICAgICAgICBwcm9taXNlLnJlc29sdmUoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KIAotY29uc3QgY2hhciogU2VydmljZVdvcmtlckNsaWVudHM6
OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAotewotICAgIHJldHVybiAiU2VydmljZVdvcmtl
ckNsaWVudHMiOworICAgIHByb21pc2UucmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtl
ckNsaWVudD4+KFNlcnZpY2VXb3JrZXJDbGllbnQ6OmdldE9yQ3JlYXRlKHNjb3BlLCBpZGVudGlm
aWVyLCBXVEZNb3ZlKGRhdGEudmFsdWUoKSkpKTsKIH0KIAotYm9vbCBTZXJ2aWNlV29ya2VyQ2xp
ZW50czo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit2b2lkIFNlcnZp
Y2VXb3JrZXJDbGllbnRzOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiBpZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIHJl
dHVybiAhaGFzUGVuZGluZ0FjdGl2aXR5KCk7Ci19CisgICAgYXV0byBpZGVudGlmaWVyID0gU2Vy
dmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6OmZyb21TdHJpbmcoaWQpOworICAgIGlmICghaWRl
bnRpZmllcikgeworICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgYXV0byBjbGllbnRJZGVudGlmaWVyID0gaWRlbnRpZmllci52YWx1ZSgpOwog
Ci12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpnZXQoY29uc3QgU3RyaW5nJiBpZCwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQotewotICAgIFVOVVNFRF9QQVJBTShpZCk7Ci0gICAg
cHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVy
YWwoImNsaWVudHMuZ2V0KCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9KTsKKyAgICBhdXRvIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KS50aHJlYWQoKS5pZGVudGlmaWVyKCk7CisKKyAgICBhdXRvIHByb21pc2VQb2lu
dGVyID0gcHJvbWlzZS5wdHIoKTsKKyAgICBtX3BlbmRpbmdQcm9taXNlcy5hZGQocHJvbWlzZVBv
aW50ZXIsIFdURk1vdmUocHJvbWlzZSkpOworCisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlz
ZVBvaW50ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVyXSAoKSB7
CisgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LmNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29ubmVjdGlvbi0+ZmluZENsaWVudEJ5SWRlbnRpZmll
cihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciwgW3Byb21pc2VQb2lu
dGVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllcl0gKGF1dG8mJiBj
bGllbnREYXRhKSB7CisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5w
b3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2VQ
b2ludGVyLCBjbGllbnRJZGVudGlmaWVyLCBkYXRhID0gY3Jvc3NUaHJlYWRDb3B5KGNsaWVudERh
dGEpXSAoYXV0byYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8g
cHJvbWlzZSA9IGNvbnRleHQuY2xpZW50cygpLm1fcGVuZGluZ1Byb21pc2VzLnRha2UocHJvbWlz
ZVBvaW50ZXIpKQorICAgICAgICAgICAgICAgICAgICBkaWRGaW5pc2hHZXRSZXF1ZXN0KGNvbnRl
eHQsICpwcm9taXNlLCBjbGllbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ2xp
ZW50czo6bWF0Y2hBbGwoY29uc3QgQ2xpZW50UXVlcnlPcHRpb25zJiwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudHMuaAppbmRleCA3NGJiYjdmMDRmMWExYzFiODQyYjBjODE4
YmEzMWNmOGEyOTdhYTUxLi45Y2FjMGY2ZGY3MWNhZmM2MTdkZjc3MWVlMTY0ZGMwODAxOGE4Y2M2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudHMuaApAQCAtMjcsMjAgKzI3LDIzIEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyQ2xpZW50VHlwZS5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRGVmZXJyZWRQcm9taXNlOworY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKK3N0cnVj
dCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjsKIAotY2xhc3MgU2VydmljZVdvcmtlckNs
aWVudHMgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyQ2xpZW50cz4sIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QgeworY2xhc3MgU2VydmljZVdvcmtlckNsaWVudHMgOiBwdWJsaWMgUmVm
Q291bnRlZDxTZXJ2aWNlV29ya2VyQ2xpZW50cz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
U2VydmljZVdvcmtlckNsaWVudHM+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KQorICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckNsaWVudHM+IGNyZWF0ZSgpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyQ2xpZW50cyhjb250
ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJDbGllbnRz
KTsKICAgICB9CiAKICAgICBzdHJ1Y3QgQ2xpZW50UXVlcnlPcHRpb25zIHsKQEAgLTQ4LDE3ICs1
MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHR5cGUgeyBT
ZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93IH07CiAgICAgfTsKIAotICAgIHZvaWQgZ2V0
KGNvbnN0IFN0cmluZyYgaWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgZ2V0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIGlkLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmKTsKICAgICB2b2lkIG1hdGNoQWxsKGNvbnN0IENsaWVudFF1ZXJ5T3B0aW9ucyYs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgb3BlbldpbmRvdyhjb25zdCBTdHJp
bmcmIHVybCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCBjbGFpbShSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgU2VydmljZVdvcmtlckNsaWVu
dHMoKSA9IGRlZmF1bHQ7CiAKLSAgICAvLyBBY3RpdmVET01PYmplY3QuCi0gICAgY29uc3QgY2hh
ciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgY2FuU3VzcGVu
ZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOworICAgIEhhc2hNYXA8RGVmZXJy
ZWRQcm9taXNlKiwgUmVmPERlZmVycmVkUHJvbWlzZT4+IG1fcGVuZGluZ1Byb21pc2VzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5pZGwKaW5kZXggNjUyOTNhMGUyZjA0
YTE4NmMyZjk4OTVlM2M5ODM3MjdlZWYwZjM1NC4uNDhhMjA4MjVhOTAzNWZjNjlmMDc2OTg0YmQ4
ZGEwOGI3ODdmNTE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnRzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaWRsCkBAIC0yOCwxMCArMjgsMTEgQEAKICAgICBF
bmFibGVkQXRSdW50aW1lPVNlcnZpY2VXb3JrZXIsCiAgICAgRXhwb3NlZD1TZXJ2aWNlV29ya2Vy
LAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbCwKKyAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogICAgIEludGVyZmFjZU5hbWU9Q2xpZW50cywKIF0gaW50ZXJmYWNlIFNlcnZpY2VX
b3JrZXJDbGllbnRzIHsKICAgICAvLyBUaGUgb2JqZWN0cyByZXR1cm5lZCB3aWxsIGJlIG5ldyBp
bnN0YW5jZXMgZXZlcnkgdGltZQotICAgIFtOZXdPYmplY3RdIFByb21pc2U8YW55PiBnZXQoRE9N
U3RyaW5nIGlkKTsKKyAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0XSBQcm9taXNlPGFueT4gZ2V0KERPTVN0cmluZyBpZCk7CiAgICAgW05ld09iamVjdF0gUHJv
bWlzZTxzZXF1ZW5jZTxDbGllbnQ+PiBtYXRjaEFsbChvcHRpb25hbCBDbGllbnRRdWVyeU9wdGlv
bnMgb3B0aW9ucyk7CiAgICAgW05ld09iamVjdF0gUHJvbWlzZTxXaW5kb3dDbGllbnQ/PiBvcGVu
V2luZG93KFVTVlN0cmluZyB1cmwpOwogICAgIFtOZXdPYmplY3RdIFByb21pc2U8dm9pZD4gY2xh
aW0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggMjlmMDNiYTliMDcwNThhNDBmZDRlODll
MmE2OTJmNzMwYjgzYjQzNS4uMGYyMzBjMjZkNzYwYTE3MzU2MDdhYzNhMzgyNTIzODUxMDk4NjU3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXQKICAgICA6IFdvcmtlckdsb2JhbFNjb3BlKHVybCwgaWRlbnRpZmllciwgdXNl
ckFnZW50LCBpc09ubGluZSwgdGhyZWFkLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY3ksIFdURk1vdmUodG9wT3JpZ2luKSwgdGltZU9yaWdpbiwgY29ubmVjdGlvblBy
b3h5LCBzb2NrZXRQcm92aWRlciwgc2Vzc2lvbklEKQogICAgICwgbV9jb250ZXh0RGF0YShjcm9z
c1RocmVhZENvcHkoZGF0YSkpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uOjpnZXRPckNyZWF0ZSgqdGhpcywgbmF2aWdhdG9yKCkuc2VydmljZVdvcmtlcigp
LCBXVEZNb3ZlKG1fY29udGV4dERhdGEucmVnaXN0cmF0aW9uKSkpCi0gICAgLCBtX2NsaWVudHMo
U2VydmljZVdvcmtlckNsaWVudHM6OmNyZWF0ZSgqdGhpcykpCisgICAgLCBtX2NsaWVudHMoU2Vy
dmljZVdvcmtlckNsaWVudHM6OmNyZWF0ZSgpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3Bw
CmluZGV4IDEzNzVkM2QzOGQwOTgyYjM5MWUxMjMzMjc4YTNjMzk0Y2RjNDkzNjQuLjBlN2JkY2E2
MjMxNzhlNzFjN2I4ZmMwOTJmYzE3Zjk2NWE1OTM1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogI2luY2x1ZGUg
IlNXQ29udGV4dE1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTExMiw2ICsxMTMsMTUgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2Vy
Ojpmb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2Vy
dmkKICAgICAgICAgYXBwbHkoKndvcmtlclRocmVhZCk7CiB9CiAKK3ZvaWQgU1dDb250ZXh0TWFu
YWdlcjo6cG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYpPiYm
IHRhc2spCit7CisgICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQo
aWRlbnRpZmllcikpIHsKKyAgICAgICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucnVuTG9vcCgp
LnBvc3RUYXNrKFt0YXNrID0gV1RGTW92ZSh0YXNrKV0gKGF1dG8mIGNvbnRleHQpIHsKKyAgICAg
ICAgICAgIHRhc2soZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSk7
CisgICAgICAgIH0pOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NX
Q29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBlMmYwZTllNTBiNjllNmU1YjJiYTg3MWI4OWJiNTA3
MWY4ODE0NDcxLi4wMWI4MGMyODU3YmI5M2I1YjgyZTE3ZjMzNTdkZDZlNjZkMzc0YWE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5oCkBAIC0zMCwxMiArMzAsMTQgQEAKICNpbmNsdWRlICJFeGNlcHRpb25P
ci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElk
ZW50aWZpZXI7CitjbGFzcyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU7CiAKIGNsYXNzIFNXQ29u
dGV4dE1hbmFnZXIgewogcHVibGljOgpAQCAtNTEsNiArNTMsOSBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2
ZW50cyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCkgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgd29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOworCisg
ICAgICAgIHVzaW5nIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayA9IFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhPj4mJik+OworICAgICAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRp
ZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIsIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayYmKSA9IDA7CiAgICAgfTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVj
dGlvbj4mJik7CkBAIC02NSw2ICs3MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9yRWFjaFNl
cnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eSYpPiYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0VGFza1RvU2Vy
dmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV1RGOjpGdW5jdGlvbjx2b2lkKFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSYpPiYmKTsKKwogcHJpdmF0ZToKICAgICBTV0NvbnRleHRN
YW5hZ2VyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDZkNTY0ODhmOWZhMjNjNjA3NGU0OTdlNTM5
YjZmMjA4YjY4MDQ2OWEuLjQ2NGE0OWFhZDFhNmZkMDliNGY0OTI1NGUwNmM4YmJjYTViYjBjMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwCkBAIC0zMDUsNiArMzA1LDIwIEBAIHZvaWQgU1dTZXJ2ZXI6OndvcmtlckNvbnRleHRU
ZXJtaW5hdGVkKFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCiAgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+
IFNXU2VydmVyOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvbnN0IENsaWVudE9yaWdpbiYgb3Jp
Z2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVyKQorewor
ICAgIGF1dG8gaXRlcmF0b3IgPSBtX2NsaWVudHMuZmluZChvcmlnaW4pOworICAgIGlmIChpdGVy
YXRvciA9PSBtX2NsaWVudHMuZW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBhdXRvJiBjbGllbnRzID0gaXRlcmF0b3ItPnZhbHVlOworICAgIGF1dG8gcG9zaXRpb24g
PSBjbGllbnRzLmZpbmRNYXRjaGluZyhbJl0gKGNvbnN0IGF1dG8mIGNsaWVudCkgeworICAgICAg
ICByZXR1cm4gY2xpZW50SWRlbnRpZmllciA9PSBjbGllbnQuaWRlbnRpZmllcjsKKyAgICB9KTsK
KworICAgIHJldHVybiAocG9zaXRpb24gIT0gbm90Rm91bmQpID8gc3RkOjptYWtlX29wdGlvbmFs
KGNsaWVudHNbcG9zaXRpb25dLmRhdGEpIDogc3RkOjpudWxsb3B0OworfQorCiB2b2lkIFNXU2Vy
dmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCBtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNv
bm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggYjhlZGUxNzVjZWZjODlhOGJiZWUzODdmZWMw
Y2RiZDIwZGQ2OGUzZi4uZjUyYjkzMGU5MjE0Njc2ZTI2OGI4M2Y0ZWNkYWVhZDEzNDgxZjg4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
aApAQCAtMTM3LDYgKzEzNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgU1dT
ZXJ2ZXJXb3JrZXImLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwogICAgIHZvaWQgZGlkRmluaXNoQWN0
aXZhdGlvbihTV1NlcnZlcldvcmtlciYpOwogICAgIHZvaWQgd29ya2VyQ29udGV4dFRlcm1pbmF0
ZWQoU1dTZXJ2ZXJXb3JrZXImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKGNvbnN0IENsaWVudE9yaWdpbiYsIFNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBiZTg1YjM5ZjY2MWM2NjVlNGYxMTEwZTA0ZTRj
YjQxYjU1Y2NmOTBhLi43MzdjNzhiYTU4NzNiNmFhYmZmZDdjZjY0MWYzY2M1YzI0MGMzZTlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xMDgsNiArMTA4
LDEyIEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp3b3JrZXJUZXJtaW5hdGVk
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpCiAgICAgICAgIHdvcmtlci0+Y29udGV4dFRl
cm1pbmF0ZWQoKTsKIH0KIAordm9pZCBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRD
bGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllciBjbGllbnRJZCkKK3sKKyAgICBpZiAoYXV0byogd29ya2VyID0gU1dTZXJ2ZXJX
b3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikpCisgICAgICAgIGdsb2JhbFNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24oKS0+ZmluZENsaWVu
dEJ5SWRlbnRpZmllckNvbXBsZXRlZChyZXF1ZXN0SWRlbnRpZmllciwgd29ya2VyLT5maW5kQ2xp
ZW50QnlJZGVudGlmaWVyKGNsaWVudElkKSwgZmFsc2UpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA1ZGI4ZDBhNjUzNGM3MDdjYjEwNzQ0Njk5NGVk
YTJmNTE1OGMyNTBkLi4yNjFiYzZkZjFhMzE4ZjM3Mjk0NGE3NjQzNGMxZTVmNWM5M2IyYmU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTM0LDYgKzM0LDggQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1dTZXJ2ZXI7CitzdHJ1Y3QgU2VydmljZVdv
cmtlckNsaWVudERhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBz
dHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcjsKIApAQCAtNDgsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSA9IDA7CiAKICAgICAv
LyBNZXNzYWdlcyBiYWNrIGZyb20gdGhlIFNXIGhvc3QgcHJvY2VzcwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3Qgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CkBAIC01Niw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRp
bmdFdmVudHMoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZp
ZXIodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyKTsKIAogICAgIHN0YXRpYyBTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbm5lY3Rpb25Gb3JJZGVudGlmaWVyKFNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDFm
MGIxZGNlYzRjNDA1ZTQ3ZjYxZjg2MGZmNGExMDlmZGE0NDQ4MGYuLjM3ZTUzNjViMmU2MjM4NWRm
OGQ5NjMwMTNlZDA2NWVmOWYwMTU3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC02NSw2ICs2NSwx
NCBAQCB2b2lkIFNXU2VydmVyV29ya2VyOjp0ZXJtaW5hdGUoKQogICAgIG1fc2VydmVyLnRlcm1p
bmF0ZVdvcmtlcigqdGhpcyk7CiB9CiAKK2NvbnN0IENsaWVudE9yaWdpbiYgU1dTZXJ2ZXJXb3Jr
ZXI6Om9yaWdpbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX29yaWdpbikKKyAgICAgICAgbV9vcmln
aW4gPSBDbGllbnRPcmlnaW4geyBtX3JlZ2lzdHJhdGlvbktleS50b3BPcmlnaW4oKSwgU2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSht
X2RhdGEuc2NyaXB0VVJMKSkgfTsKKworICAgIHJldHVybiAqbV9vcmlnaW47Cit9CisKIHZvaWQg
U1dTZXJ2ZXJXb3JrZXI6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBtX3NlcnZlci5zY3JpcHRDb250ZXh0RmFp
bGVkVG9TdGFydChqb2JEYXRhSWRlbnRpZmllciwgKnRoaXMsIG1lc3NhZ2UpOwpAQCAtOTAsNiAr
OTgsMTEgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6Y29udGV4dFRlcm1pbmF0ZWQoKQogICAgIG1f
c2VydmVyLndvcmtlckNvbnRleHRUZXJtaW5hdGVkKCp0aGlzKTsKIH0KIAorc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU1dTZXJ2ZXJXb3JrZXI6OmZpbmRDbGllbnRCeUlk
ZW50aWZpZXIoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50SWQpCit7CisgICAg
cmV0dXJuIG1fc2VydmVyLmZpbmRDbGllbnRCeUlkZW50aWZpZXIob3JpZ2luKCksIGNsaWVudElk
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IGFjODY5YjRlZjMxNTJlZTBhZjI1OTQxMDg2M2Fh
N2NmZTBkZDZjOGMuLjYzYjRhNzA2MmRmMGU0NWFlMGRjYTEwYzZkYTFiN2M5NzM0ZDkwNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmgKQEAgLTM2LDEwICszNiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K3N0cnVjdCBDbGllbnRPcmlnaW47CiBjbGFzcyBTV1NlcnZlcjsKIGNsYXNzIFNXU2VydmVyUmVn
aXN0cmF0aW9uOwotZW51bSBjbGFzcyBXb3JrZXJUeXBlOworc3RydWN0IFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhOworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwogc3RydWN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcjsKK2VudW0gY2xhc3MgV29ya2VyVHlwZTsK
IAogY2xhc3MgU1dTZXJ2ZXJXb3JrZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTV1NlcnZlcldvcmtl
cj4gewogcHVibGljOgpAQCAtNzMsMTAgKzc2LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZp
bmlzaEluc3RhbGwoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXI+JiwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRp
b24oKTsKICAgICB2b2lkIGNvbnRleHRUZXJtaW5hdGVkKCk7CisgICAgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gZmluZENsaWVudEJ5SWRlbnRpZmllcihTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU1dTZXJ2
ZXJXb3JrZXIqIGV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CiAKICAgICBjb25zdCBTZXJ2aWNlV29ya2VyRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YTsgfQorICAgIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJh
dGlvbiYsIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7CkBAIC04Nyw2ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckRhdGEgbV9k
YXRhOwogICAgIFN0cmluZyBtX3NjcmlwdDsKICAgICBib29sIG1faGFzUGVuZGluZ0V2ZW50cyB7
IGZhbHNlIH07CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gbV9vcmln
aW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDI0ZTRhZGFlMWMyZDkzNzhh
ODNmMjcxOGQwOWEzMjM4ODY5MjI2ZjAuLjBlY2IyYzA3NDMyY2FmNWM3M2ZkNWQ0MTE0OGZiN2Jk
YWQ1YjM2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwCkBAIC03Niw2ICs3NiwxMSBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcgog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5h
dGVXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKIH0KIAordm9pZCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckNsaWVudERhdGE+JiBkYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCit7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpbmRDbGllbnRCeUlkZW50
aWZpZXJDb21wbGV0ZWQgeyByZXF1ZXN0SWRlbnRpZmllciwgZGF0YSwgaGFzU2VjdXJpdHlFcnJv
ciB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKaW5kZXggYjViODc0OTA2ZTFmYmNmNDVjYzI5M2M0Y2FhMTQ3YmMzZjQ2NzI5OS4u
ODlhMGRjOTIwMTkzOWEzMTRiYTRmYTY5ZTg0NWY4NTcxNjk2MmVlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTksNiArNTksNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3Jr
ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgZmlu
ZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
Y29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mLCBi
b29sIGhhc1NlY3VyaXR5RXJyb3IpIGZpbmFsOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4g
bV9pcGNDb25uZWN0aW9uOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggOGIyMzQ3OGIyNmE5
MDBmNjgzZDcyZGExZTBjNGRlNjJhMTkyODA5MS4uMGVmMDE4OGYxNDE5NTQzNWQxYjA4MzZmZTc3
ZDM0NjY4MjNiNmM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMSw2ICszMSw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiB7CiAgICAgRGlkRmluaXNoQWN0
aXZhdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKTsKICAg
ICBTZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVudHMpOwogICAgIFdvcmtl
clRlcm1pbmF0ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcik7
CisgICAgRmluZENsaWVudEJ5SWRlbnRpZmllcih1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVu
dGlmaWVyKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCBjMGNlZGExODE3Y2VmMTUxODEzMWU2YjI0
MTAyZjdhNjJhNTg0YmVmLi5hOGVlZDMxNTJiZmRkNGRhZTk5NGE1MzIzYTkzMjk2YTI5YWE5YWFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC00OCw2ICs0OCw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ29uZmlndXJhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAKQEAgLTE5NCw2ICsxOTUsMjQgQEAgdm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6d29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXIKICAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OldvcmtlclRlcm1pbmF0
ZWQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpLCAwKTsKIH0KIAordm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6ZmluZENsaWVudEJ5SWRlbnRpZmllcihXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllciwgRmluZENsaWVudEJ5SWRlbnRpZmllckNh
bGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgYXV0byByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9w
cmV2aW91c1JlcXVlc3RJZGVudGlmaWVyOworICAgIG1fZmluZENsaWVudEJ5SWRlbnRpZmllclJl
cXVlc3RzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIG1f
Y29ubmVjdGlvblRvU3RvcmFnZVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6RmluZENsaWVudEJ5SWRlbnRpZmllciB7IHJlcXVlc3RJZGVudGlm
aWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY2xpZW50SWRlbnRpZmllciB9LCAwKTsKK30K
Kwordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmluZENsaWVudEJ5SWRlbnRp
ZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiBjbGllbnREYXRhLCBib29sIGhhc1NlY3VyaXR5RXJy
b3IpCit7CisgICAgaWYgKGF1dG8gY2FsbGJhY2sgPSBtX2ZpbmRDbGllbnRCeUlkZW50aWZpZXJS
ZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKSkgeworICAgICAgICBpZiAoaGFzU2VjdXJp
dHlFcnJvcikgeworICAgICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJv
ciB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKGNsaWVudERhdGEpKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCmluZGV4IGM5ZTY1YTRhYjgzOGIwMzYwMTU0Yjg2YjE2ZTc3YzIwNjlkZTJlZGYu
LjhmOWI0MDgzODJlYjVmZDM2ZjIwMjZiN2UyZGFlYzE0NGY2YzlhODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtNjEsNiArNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkRmluaXNoQWN0aXZhdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmlu
YWw7CiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VySGFzUGVuZGluZ0V2ZW50cyhXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCkgZmluYWw7CiAgICAgdm9pZCB3b3JrZXJUZXJt
aW5hdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lk
IGZpbmRDbGllbnRCeUlkZW50aWZpZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLCBGaW5kQ2xpZW50QnlJZGVu
dGlmaWVyQ2FsbGJhY2smJikgZmluYWw7CiAKICAgICAvLyBJUEMgbWVzc2FnZXMuCiAgICAgdm9p
ZCBzZXJ2aWNlV29ya2VyU3RhcnRlZFdpdGhNZXNzYWdlKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7CkBAIC03MCwx
MCArNzEsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgdGVybWluYXRlV29ya2Vy
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZpbmRDbGllbnRC
eUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJvb2wgaGFzU2VjdXJp
dHlFcnJvcik7CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub1N0b3Jh
Z2VQcm9jZXNzOwogICAgIHVpbnQ2NF90IG1fcGFnZUlEIHsgMCB9OwogICAgIHVpbnQ2NF90IG1f
cHJldmlvdXNTZXJ2aWNlV29ya2VySUQgeyAwIH07CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBG
aW5kQ2xpZW50QnlJZGVudGlmaWVyQ2FsbGJhY2s+IG1fZmluZENsaWVudEJ5SWRlbnRpZmllclJl
cXVlc3RzOworICAgIHVpbnQ2NF90IG1fcHJldmlvdXNSZXF1ZXN0SWRlbnRpZmllciB7IDAgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCA3MzZmZGY1YjQ3MTc5YmU0MGVkYTEyYzlmYzZk
NzI2NjJjMWQ3YmM0Li5lYmYyYjRlNGZmODM3YWU4OWFhMjA1NjNhNjRmZGVmMTU0YzRiYTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAt
MjksNiArMjksNyBAQCBtZXNzYWdlcyAtPiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiB7
CiAgICAgRmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIEZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgRmluZENsaWVudEJ5SWRlbnRpZmll
ckNvbXBsZXRlZCh1aW50NjRfdCBjbGllbnRJZFJlcXVlc3RJZGVudGlmaWVyLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBkYXRhLCBib29sIGhhc1NlY3Vy
aXR5RXJyb3IpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYwYjkyYjY3NjBkYTVkZTJkYjBkNmZjM2Rk
ZGE0NjQ1MmU4OGIwZDguLjgwNWZjOWE5NDg3OTZjMGE2MjllYmFmMGNlMDc1YjU0NDIzN2M3Mzkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0xMS0zMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9T
ZXJ2aWNlV29ya2VyLyNjbGllbnRzLWdldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMTY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMv
c2VydmljZXdvcmtlcmNsaWVudHMtZ2V0LXdvcmtlci5qczogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0Lmh0dHBzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
c2VydmljZXdvcmtlcmNsaWVudHMtZ2V0Lmh0dHBzLmh0bWw6IEFkZGVkLgorCiAyMDE3LTExLTMw
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEltcHJv
dmUgZmlsdGVyIGxvZ2dpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29y
a2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQtd29ya2VyLmpz
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlcnZp
Y2V3b3JrZXJjbGllbnRzLWdldC13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2EzYmJhMjM4YTZiMmU4
Y2IyMTY5NTljNzY4NTZhNjY0ODljM2Q2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zZXJ2aWNld29ya2VyY2xpZW50
cy1nZXQtd29ya2VyLmpzCkBAIC0wLDAgKzEsNDEgQEAKK3ZhciBjbGllbnQgPSBudWxsOworc2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgdHJ5
IHsKKyAgICAgICAgdmFyIGNsaWVudCA9IGV2ZW50LnNvdXJjZTsKKworICAgICAgICBpZiAoIShj
bGllbnQgaW5zdGFuY2VvZiBXaW5kb3dDbGllbnQpKSB7CisgICAgICAgICAgICBldmVudC5zb3Vy
Y2UucG9zdE1lc3NhZ2UoIkZBSUw6IGNsaWVudCBzb3VyY2UgaXMgbm90IGEgV2luZG93Q2xpZW50
Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgcmV0cmll
dmVkQ2xpZW50ID0gYXdhaXQgc2VsZi5jbGllbnRzLmdldChjbGllbnQuaWQpOworICAgICAgICBp
ZiAoIXJldHJpZXZlZENsaWVudCkgeworICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNz
YWdlKCJGQUlMOiBkaWQgbm90IHJldHJpZXZlIGFueSBjbGllbnQgdGhyb3VnaCBzZWxmLmNsaWVu
dHMuZ2V0Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAo
cmV0cmlldmVkQ2xpZW50LmlkICE9PSBjbGllbnQuaWQpIHsKKyAgICAgICAgICAgIGV2ZW50LnNv
dXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogY2xpZW50IGlkIGlzIGRpZmZlcmVudCBmcm9tIHJldHJp
ZXZlZCBjbGllbnQgaWQgdGhyb3VnaCBzZWxmLmNsaWVudHMuZ2V0OiAiICsgY2xpZW50LmlkICsg
IiAvICIgKyByZXRyaWV2ZWRDbGllbnQuaWQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHJldHJpZXZlZENsaWVudCAhPT0gY2xpZW50KSB7CisgICAgICAg
ICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIkZBSUw6IGNsaWVudCBpcyBkaWZmZXJlbnQg
ZnJvbSB0aGUgb25lIHJldHJpZXZlZCB0aHJvdWdoIHNlbGYuY2xpZW50cy5nZXQiKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBiYWRJZHMgPSBbY2xpZW50
LmlkICsgIjAiLCAiMC0wIiwgIjAtMSIsICIxLTAiLCAiMC0iLCAiLSIsICItMCJdOworICAgICAg
ICBmb3IgKGlkIGluIGJhZElkcykgeworICAgICAgICAgICAgcmV0cmlldmVkQ2xpZW50ID0gYXdh
aXQgc2VsZi5jbGllbnRzLmdldChpZCk7CisgICAgICAgICAgICBpZiAoISFyZXRyaWV2ZWRDbGll
bnQpIHsKKyAgICAgICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIkZBSUw6IHJl
dHJpZXZlZCBjbGllbnQgd2l0aCBiYWQgaWQgIiArIGlkICsgIiBzaG91bGQgYmUgbnVsbCIpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiUEFTUyIpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiByZWNlaXZlZCBleGNlcHRp
b24gIiArIGUpOworICAgIH0KK30pOworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdv
cmtlcmNsaWVudHMtZ2V0Lmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2YzNjZiMmEy
YWNmNWE5YmVkNGRjZjJmZjY1NjM5MGNlNTRjNTMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0
Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBUZXN0aW5nIGNsaWVu
dHMuZ2V0IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjliYmZiYTM4Y2NlZjdmMGQ5ZTY4MzdlODQ3OWJiYjZmOTUyMWM2ZTcK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMuaHRtbApAQCAtMCwwICsxLDI3IEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorCitwcm9taXNlX3Rlc3QoYXN5bmMg
KHRlc3QpID0+IHsKKyAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7
CisgICAgICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCB0ZXN0LnN0ZXBfZnVuYygoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoZXZlbnQuZGF0YSwgIlBBU1MiKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAg
fSkpOworICAgIH0pOworCisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJyZXNvdXJjZXMvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0
LXdvcmtlci5qcyIsIHsgc2NvcGUgOiAiL25vb25lIiB9KTsKKyAgICB2YXIgd29ya2VyID0gcmVn
aXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgaWYgKCF3b3JrZXIpCisgICAgICAgIHdvcmtlciA9
IHJlZ2lzdHJhdGlvbi5hY3RpdmU7CisgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJzdGFydCIpOwor
CisgICAgYXdhaXQgcHJvbWlzZTsKK30sICJUZXN0aW5nIGNsaWVudHMuZ2V0Iik7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328161</attachid>
            <date>2017-12-01 14:45:00 -0800</date>
            <delta_ts>2017-12-01 16:00:47 -0800</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-180167-20171201144459.patch</filename>
            <type>text/plain</type>
            <size>38071</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQyYWI2ZGRkNTFjZGIwNzFiZjM4NWIy
MzhiMzExYjZiNDJmOTU1MjcuLjRiMzYwMTIyNjkwZjc3YzI2YWU4NWY0NDEyMWM2NmU3NzJkYmY1
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jY2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1
bWV6LgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RGOjpT
dHJpbmdWaWV3Ojp0b1VJbnQ2NFN0cmljdCBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvV1RG
U3RyaW5nLmg6CisKIDIwMTctMTItMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBJbnRlcm5hbHMudGVybWluYXRlU2VydmljZVdvcmtlciwgYW5kIHRo
ZSBhYmlsaXR5IHRvIHJlc3RhcnQgc2VydmljZSB3b3JrZXJzIGZvciBwb3N0TWVzc2FnZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBiODY4NzgwMDE1YzlkNTkxNzY0ZTc4NDNlNmZkNGUxMzM3MGNhYzM1Li42MmM2
NjZhMjRlZGE1YzVmNmY3ZjJkMGNmNDA0MWYxNDUxYjE4Zjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDQgQEAKKzIwMTctMTItMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8j
Y2xpZW50cy1nZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MDE2NworCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAg
IFRlc3Q6IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdl
dC5odHRwcy5odG1sCisKKyAgICAgICAgSW1wbGVtZW50IGNsaWVudHMgZ2V0IGJ5IGhhdmluZyBz
ZXJ2aWNlIHdvcmtlciBjbGllbnRzIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIC0gR28gdG8g
bWFpbiB0aHJlYWQgdG8gcXVlcnkgdGhlIFNXQ2xpZW50Q29ubmVjdGlvbiBmb3IgZ2V0dGluZyB0
aGUgY2xpZW50LgorICAgICAgICAtIFNXQ2xpZW50Q29ubmVjdGlvbiByZXF1ZXN0cyBpdCB0aHJv
dWdoIElQQyB0byBTdG9yYWdlUHJvY2VzcyBTV1NlcnZlci4KKyAgICAgICAgLSBTV1NlcnZlciBs
b29rcyBhdCBpdHMgY2xpZW50IG1hcCBhbmQgcmV0dXJucyBjbGllbnQgZGF0YSBiYXNlZCBvbiB0
aGUgZ2l2ZW4gaWRlbnRpZmllci4KKyAgICAgICAgLSBTV0NsaWVudENvbm5lY3Rpb24gc2VuZHMg
aXQgYmFjayB0byB0aGUgcmlnaHQgY2xpZW50cyBmb3IgcmVzb2x2aW5nIHRoZSBwcm9taXNlLgor
CisgICAgICAgIElkZW50aWZpZXIgaXMgcGFyc2VkIGF0IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3Mg
bGV2ZWwuCisKKyAgICAgICAgTWFkZSBTZXJ2aWNlV29ya2VyQ2xpZW50cyBubyBsb25nZXIgYW4g
QWN0aXZlRE9NT2JqZWN0IHNpbmNlIGl0IGlzIG93bmVkIGJ5IFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZQorICAgICAgICBhbmQgaXMgb25seSBleHBvc2VkIGluIHNlcnZpY2Ugd29ya2Vycy4KKwor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6OmZyb21T
dHJpbmcpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50czo6U2VydmljZVdvcmtl
ckNsaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHM6OmdldCk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y3JlYXRlKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTV1NlcnZlcjo6Z2V0Q2xpZW50RnJvbUlkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6Om9yaWdpbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcldvcmtlcjo6ZmluZENsaWVudEJ5SWRlbnRpZmllcik6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDE3LTEyLTAxICBE
ZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRlbXB0ZWQgYnVpbGQg
Zml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAzMGIwOWZkYjNjZTM5MDlhMTIyOGY4MzE2OTlmNGNlM2QyNGM4NThl
Li42ODYyMTVjOGE4YTc4YzIxNDAxZDY1Nzg4OTYyZWQ2NTZkYzE3MmZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIyIEBACisyMDE3LTEyLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3Jr
ZXIvI2NsaWVudHMtZ2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODAxNjcKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAg
ICAgICBBZGQgSVBDIHBsdW1iZXJ5IGZvciBjbGllbnRGcm9tSWQgYmV0d2VlbiBTZXJ2aWNlV29y
a2VyIHByb2Nlc3MgYW5kIFN0b3JhZ2UgcHJvY2Vzcy4KKworICAgICAgICAqIFN0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpjbGllbnRGcm9t
SWRDb21wbGV0ZWQpOgorICAgICAgICAqIFN0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OmZpbmRDbGllbnRCeUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6ZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOgorCiAyMDE3LTEyLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgSW50ZXJuYWxzLnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXIs
IGFuZCB0aGUgYWJpbGl0eSB0byByZXN0YXJ0IHNlcnZpY2Ugd29ya2VycyBmb3IgcG9zdE1lc3Nh
Z2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDQ4Zjc4ZGQ0Zjg0MTczMWM2NjQ5OTc0
MDg4Njg2ZmJhYWQyNThlNDkuLmM4ODExOGI2NjdhMzI2MGIwYTVjNDVkYTI4N2JhMjU4YjZiMmJk
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpAQCAtMTQ2LDYgKzE0Nyw3IEBAIHB1YmxpYzoKICAgICBpbnQgdG9JbnQoKSBjb25z
dDsKICAgICBpbnQgdG9JbnQoYm9vbCYgaXNWYWxpZCkgY29uc3Q7CiAgICAgaW50IHRvSW50U3Ry
aWN0KGJvb2wmIGlzVmFsaWQpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHRv
VUludDY0U3RyaWN0KCkgY29uc3Q7CiAgICAgZmxvYXQgdG9GbG9hdChib29sJiBpc1ZhbGlkKSBj
b25zdDsKIAogICAgIHN0YXRpYyB2b2lkIGludmFsaWRhdGUoY29uc3QgU3RyaW5nSW1wbCYpOwpA
QCAtNTIzLDYgKzUyNSwxMyBAQCBpbmxpbmUgaW50IFN0cmluZ1ZpZXc6OnRvSW50U3RyaWN0KGJv
b2wmIGlzVmFsaWQpIGNvbnN0CiAgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludFN0cmljdChjaGFy
YWN0ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsKIH0KIAoraW5saW5lIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IFN0cmluZ1ZpZXc6OnRvVUludDY0U3RyaWN0KCkgY29uc3QKK3sKKyAgICBi
b29sIGlzVmFsaWQ7CisgICAgdWludDY0X3QgcmVzdWx0ID0gaXM4Qml0KCkgPyBjaGFyYWN0ZXJz
VG9VSW50NjRTdHJpY3QoY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKSA6IGNoYXJh
Y3RlcnNUb1VJbnQ2NFN0cmljdChjaGFyYWN0ZXJzMTYoKSwgbV9sZW5ndGgsICZpc1ZhbGlkKTsK
KyAgICByZXR1cm4gaXNWYWxpZCA/IHN0ZDo6bWFrZV9vcHRpb25hbChyZXN1bHQpIDogc3RkOjpu
dWxsb3B0OworfQorCiBpbmxpbmUgU3RyaW5nIFN0cmluZ1ZpZXc6OnRvU3RyaW5nV2l0aG91dENv
cHlpbmcoKSBjb25zdAogewogICAgIGlmIChpczhCaXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5o
CmluZGV4IGM4YTRkZDZmYTQ5MGE2ZTg0ZDc5NTc1M2E2MjllMzBkNTllZTU4YWMuLmQyYjk5YmYy
NWUzYzgxMDFkMzgzODU0OGUzY2QwYjk5ZGFkOTA5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aApAQCAtNDYsOCArNDYsOCBAQCBXVEZfRVhQT1JUX1NUUklOR19BUEkgdW5zaWduZWQgY2hhcmFj
dGVyc1RvVUludFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9vbAogV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHVuc2lnbmVkIGNoYXJhY3RlcnNUb1VJbnRTdHJpY3QoY29uc3QgVUNoYXIqLCBz
aXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50IGJhc2UgPSAxMCk7CiBpbnQ2NF90IGNoYXJh
Y3RlcnNUb0ludDY0U3RyaWN0KGNvbnN0IExDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxw
dHIsIGludCBiYXNlID0gMTApOwogaW50NjRfdCBjaGFyYWN0ZXJzVG9JbnQ2NFN0cmljdChjb25z
dCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLXVp
bnQ2NF90IGNoYXJhY3RlcnNUb1VJbnQ2NFN0cmljdChjb25zdCBMQ2hhciosIHNpemVfdCwgYm9v
bCogb2sgPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKTsKLXVpbnQ2NF90IGNoYXJhY3RlcnNUb1VJ
bnQ2NFN0cmljdChjb25zdCBVQ2hhciosIHNpemVfdCwgYm9vbCogb2sgPSBudWxscHRyLCBpbnQg
YmFzZSA9IDEwKTsKK1dURl9FWFBPUlRfU1RSSU5HX0FQSSB1aW50NjRfdCBjaGFyYWN0ZXJzVG9V
SW50NjRTdHJpY3QoY29uc3QgTENoYXIqLCBzaXplX3QsIGJvb2wqIG9rID0gbnVsbHB0ciwgaW50
IGJhc2UgPSAxMCk7CitXVEZfRVhQT1JUX1NUUklOR19BUEkgdWludDY0X3QgY2hhcmFjdGVyc1Rv
VUludDY0U3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGlu
dCBiYXNlID0gMTApOwogaW50cHRyX3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IExD
aGFyKiwgc2l6ZV90LCBib29sKiBvayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwogaW50cHRy
X3QgY2hhcmFjdGVyc1RvSW50UHRyU3RyaWN0KGNvbnN0IFVDaGFyKiwgc2l6ZV90LCBib29sKiBv
ayA9IG51bGxwdHIsIGludCBiYXNlID0gMTApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5o
CmluZGV4IDYyODU1ZDU0YmNjNzAxOTE3ZDFiOGZiMjRhMzk3NjNkZDNhYjU2YTguLjBkMGU5MmVi
MzI1ZjU1NTUxMjBkZTkzZDhhNjVmNTE3YTE5YmQ3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
Zmllci5oCkBAIC00MCw2ICs0MCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRp
ZmllciB7CiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0OwogCiAgICAgU3RyaW5nIHRvU3RyaW5n
KCkgY29uc3QgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoc2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIudG9VSW50NjQoKSkgKyAiLSIgKyAgU3RyaW5nOjpudW1iZXIoY29udGV4dElkZW50aWZpZXIu
dG9VSW50NjQoKSk7IH0KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllcj4gZnJvbVN0cmluZyhTdHJpbmdWaWV3KTsKIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKQEAgLTUwLDYgKzUxLDIzIEBAIGlubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGEsIGNvbnN0
IFNlcnZpY2VXb3JrCiAgICAgcmV0dXJuIGEuc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgPT0g
Yi5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciAmJiAgYS5jb250ZXh0SWRlbnRpZmllciA9PSBi
LmNvbnRleHRJZGVudGlmaWVyOwogfQogCitpbmxpbmUgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllcj4gU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI6OmZyb21T
dHJpbmcoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgU2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXIgY2xpZW50SWRlbnRpZmllcjsKKworICAgIHVuc2lnbmVkIGNvdW50ZXIgPSAwOworICAg
IGZvciAoYXV0byBpdGVtIDogc3RyaW5nLnNwbGl0KCctJykpIHsKKyAgICAgICAgYXV0byBpZGVu
dGlmaWVyID0gaXRlbS50b1VJbnQ2NFN0cmljdCgpOworICAgICAgICBpZiAoIWlkZW50aWZpZXIg
fHwgISppZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgaWYgKCFjb3VudGVyKyspCisgICAgICAgICAgICBjbGllbnRJZGVudGlmaWVyLnNlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllclR5cGU+KGlkZW50aWZpZXIudmFsdWUoKSk7CisgICAgICAgIGVsc2UgaWYg
KGNvdW50ZXIgPT0gMikKKyAgICAgICAgICAgIGNsaWVudElkZW50aWZpZXIuY29udGV4dElkZW50
aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxEb2N1bWVudElkZW50aWZpZXJUeXBlPihpZGVu
dGlmaWVyLnZhbHVlKCkpOworICAgIH0KKyAgICByZXR1cm4gKGNvdW50ZXIgPT0gMikgPyBzdGQ6
Om1ha2Vfb3B0aW9uYWwoV1RGTW92ZShjbGllbnRJZGVudGlmaWVyKSkgOiBzdGQ6Om51bGxvcHQ7
Cit9CisKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3Bw
CmluZGV4IGExNDU1N2U2YzQ0MDg3M2QxNzdlN2M5NmFmYWVhMjU4Yzk4MzNhMGUuLmE0ZWJjN2Ez
MTgwNTViMjBmOGZmMzdmNGNhMTkzMDIwMDEwMDAwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcApAQCAtMjks
MjkgKzI5LDQ5IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudHMuaCIKIAogI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCisjaW5jbHVkZSAiSlNTZXJ2aWNlV29ya2VyV2lu
ZG93Q2xpZW50LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotU2VydmljZVdvcmtlckNsaWVudHM6OlNlcnZpY2VXb3JrZXJD
bGllbnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCi0gICAgOiBBY3RpdmVET01P
YmplY3QoJmNvbnRleHQpCitzdGF0aWMgaW5saW5lIHZvaWQgZGlkRmluaXNoR2V0UmVxdWVzdChT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlLCBEZWZlcnJlZFByb21pc2UmIHByb21pc2Us
IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZXIsIEV4Y2VwdGlvbk9yPHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmIGNsaWVudERhdGEpCiB7Ci0g
ICAgc3VzcGVuZElmTmVlZGVkKCk7Ci19CisgICAgaWYgKGNsaWVudERhdGEuaGFzRXhjZXB0aW9u
KCkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoY2xpZW50RGF0YS5yZWxlYXNlRXhjZXB0aW9u
KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gZGF0YSA9IGNsaWVudERhdGEu
cmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgaWYgKCFkYXRhKSB7CisgICAgICAgIHByb21pc2Uu
cmVzb2x2ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQogCi1jb25zdCBjaGFyKiBTZXJ2aWNl
V29ya2VyQ2xpZW50czo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
ICJTZXJ2aWNlV29ya2VyQ2xpZW50cyI7CisgICAgcHJvbWlzZS5yZXNvbHZlPElETEludGVyZmFj
ZTxTZXJ2aWNlV29ya2VyQ2xpZW50Pj4oU2VydmljZVdvcmtlckNsaWVudDo6Z2V0T3JDcmVhdGUo
c2NvcGUsIGlkZW50aWZpZXIsIFdURk1vdmUoZGF0YS52YWx1ZSgpKSkpOwogfQogCi1ib29sIFNl
cnZpY2VXb3JrZXJDbGllbnRzOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29u
c3QKK3ZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGlkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCiB7Ci0gICAgcmV0dXJuICFoYXNQZW5kaW5nQWN0aXZpdHkoKTsKLX0KKyAgICBhdXRvIGlk
ZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhpZCk7
CisgICAgaWYgKCFpZGVudGlmaWVyKSB7CisgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSBpZGVudGlm
aWVyLnZhbHVlKCk7CiAKLXZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6OmdldChjb25zdCBTdHJp
bmcmIGlkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCi17Ci0gICAgVU5VU0VEX1BB
UkFNKGlkKTsKLSAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiY2xpZW50cy5nZXQoKSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH0p
OworICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBkb3duY2FzdDxTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRocmVhZCgpLmlkZW50aWZpZXIoKTsKKworICAgIGF1
dG8gcHJvbWlzZVBvaW50ZXIgPSBwcm9taXNlLnB0cigpOworICAgIG1fcGVuZGluZ1Byb21pc2Vz
LmFkZChwcm9taXNlUG9pbnRlciwgV1RGTW92ZShwcm9taXNlKSk7CisKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm9taXNlUG9pbnRlciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNsaWVudElk
ZW50aWZpZXJdICgpIHsKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOworICAgICAgICBjb25uZWN0aW9uLT5maW5kQ2xp
ZW50QnlJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlmaWVy
LCBbcHJvbWlzZVBvaW50ZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjbGllbnRJZGVudGlm
aWVyXSAoYXV0byYmIGNsaWVudERhdGEpIHsKKyAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBbcHJvbWlzZVBvaW50ZXIsIGNsaWVudElkZW50aWZpZXIsIGRhdGEgPSBjcm9zc1RocmVh
ZENvcHkoY2xpZW50RGF0YSldIChhdXRvJiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICBpZiAoYXV0byBwcm9taXNlID0gY29udGV4dC5jbGllbnRzKCkubV9wZW5kaW5nUHJvbWlz
ZXMudGFrZShwcm9taXNlUG9pbnRlcikpCisgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaEdl
dFJlcXVlc3QoY29udGV4dCwgKnByb21pc2UsIGNsaWVudElkZW50aWZpZXIsIFdURk1vdmUoZGF0
YSkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJDbGllbnRzOjptYXRjaEFsbChjb25zdCBDbGllbnRRdWVyeU9wdGlvbnMmLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5oCmluZGV4IDc0YmJiN2YwNGYx
YTFjMWI4NDJiMGM4MThiYTMxY2Y4YTI5N2FhNTEuLjljYWMwZjZkZjcxY2FmYzYxN2RmNzcxZWUx
NjRkYzA4MDE4YThjYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5oCkBAIC0yNywyMCArMjcsMjMgQEAKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKIAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtl
cklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWZlcnJlZFByb21pc2U7
CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Oworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhOworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwogCi1jbGFzcyBT
ZXJ2aWNlV29ya2VyQ2xpZW50cyA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGll
bnRzPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitjbGFzcyBTZXJ2aWNlV29ya2VyQ2xpZW50
cyA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcnZpY2VXb3JrZXJDbGllbnRzPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50cz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50cz4g
Y3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3Jr
ZXJDbGllbnRzKGNvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Vydmlj
ZVdvcmtlckNsaWVudHMpOwogICAgIH0KIAogICAgIHN0cnVjdCBDbGllbnRRdWVyeU9wdGlvbnMg
ewpAQCAtNDgsMTcgKzUxLDE1IEBAIHB1YmxpYzoKICAgICAgICAgU2VydmljZVdvcmtlckNsaWVu
dFR5cGUgdHlwZSB7IFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXaW5kb3cgfTsKICAgICB9Owog
Ci0gICAgdm9pZCBnZXQoY29uc3QgU3RyaW5nJiBpZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7
CisgICAgdm9pZCBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgaWQs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgbWF0Y2hBbGwoY29uc3QgQ2xpZW50
UXVlcnlPcHRpb25zJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCBvcGVuV2lu
ZG93KGNvbnN0IFN0cmluZyYgdXJsLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lk
IGNsYWltKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0
IFNlcnZpY2VXb3JrZXJDbGllbnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBTZXJ2
aWNlV29ya2VyQ2xpZW50cygpID0gZGVmYXVsdDsKIAotICAgIC8vIEFjdGl2ZURPTU9iamVjdC4K
LSAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7Ci0gICAg
Ym9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CisgICAg
SGFzaE1hcDxEZWZlcnJlZFByb21pc2UqLCBSZWY8RGVmZXJyZWRQcm9taXNlPj4gbV9wZW5kaW5n
UHJvbWlzZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmlkbAppbmRl
eCA2NTI5M2EwZTJmMDRhMTg2YzJmOTg5NWUzYzk4MzcyN2VlZjBmMzU0Li40OGEyMDgyNWE5MDM1
ZmM2OWYwNzY5ODRiZDhkYTA4Yjc4N2Y1MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5pZGwKQEAgLTI4LDEwICsy
OCwxMSBAQAogICAgIEVuYWJsZWRBdFJ1bnRpbWU9U2VydmljZVdvcmtlciwKICAgICBFeHBvc2Vk
PVNlcnZpY2VXb3JrZXIsCiAgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsLAorICAgIEltcGxl
bWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAgSW50ZXJmYWNlTmFtZT1DbGllbnRzLAogXSBpbnRl
cmZhY2UgU2VydmljZVdvcmtlckNsaWVudHMgewogICAgIC8vIFRoZSBvYmplY3RzIHJldHVybmVk
IHdpbGwgYmUgbmV3IGluc3RhbmNlcyBldmVyeSB0aW1lCi0gICAgW05ld09iamVjdF0gUHJvbWlz
ZTxhbnk+IGdldChET01TdHJpbmcgaWQpOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8YW55PiBnZXQoRE9NU3RyaW5nIGlkKTsKICAgICBb
TmV3T2JqZWN0XSBQcm9taXNlPHNlcXVlbmNlPENsaWVudD4+IG1hdGNoQWxsKG9wdGlvbmFsIENs
aWVudFF1ZXJ5T3B0aW9ucyBvcHRpb25zKTsKICAgICBbTmV3T2JqZWN0XSBQcm9taXNlPFdpbmRv
d0NsaWVudD8+IG9wZW5XaW5kb3coVVNWU3RyaW5nIHVybCk7CiAgICAgW05ld09iamVjdF0gUHJv
bWlzZTx2b2lkPiBjbGFpbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAyOWYwM2JhOWIw
NzA1OGE0MGZkNGU4OWUyYTY5MmY3MzBiODNiNDM1Li4wZjIzMGMyNmQ3NjBhMTczNTYwN2FjM2Ez
ODI1MjM4NTEwOTg2NTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNDIsNyArNDIsNyBA
QCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShjb25z
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdAogICAgIDogV29ya2VyR2xvYmFsU2NvcGUodXJsLCBp
ZGVudGlmaWVyLCB1c2VyQWdlbnQsIGlzT25saW5lLCB0aHJlYWQsIHNob3VsZEJ5cGFzc01haW5X
b3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgV1RGTW92ZSh0b3BPcmlnaW4pLCB0aW1lT3JpZ2lu
LCBjb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBzZXNzaW9uSUQpCiAgICAgLCBtX2Nv
bnRleHREYXRhKGNyb3NzVGhyZWFkQ29weShkYXRhKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKCp0aGlzLCBuYXZpZ2F0b3IoKS5z
ZXJ2aWNlV29ya2VyKCksIFdURk1vdmUobV9jb250ZXh0RGF0YS5yZWdpc3RyYXRpb24pKSkKLSAg
ICAsIG1fY2xpZW50cyhTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y3JlYXRlKCp0aGlzKSkKKyAgICAs
IG1fY2xpZW50cyhTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y3JlYXRlKCkpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5jcHAKaW5kZXggYWQzYTU3MDc3MjY0Yjg4OGViYjg4NTQ0NmM1MWMzMjZmMzJk
YjI5NC4uOGMyNzYxZDE5MWU5MDdmZDIwMDQwZmUwMmExMzlmMTc3YTU4MjZkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAjaW5jbHVkZSAiU1dDb250ZXh0TWFuYWdlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI0LDYgKzEyNSwxNSBAQCB2b2lkIFNX
Q29udGV4dE1hbmFnZXI6OmZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFdURjo6RnVu
Y3Rpb248dm9pZChTZXJ2aQogICAgICAgICBhcHBseSgqd29ya2VyVGhyZWFkKTsKIH0KIAordm9p
ZCBTV0NvbnRleHRNYW5hZ2VyOjpwb3N0VGFza1RvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckds
b2JhbFNjb3BlJik+JiYgdGFzaykKK3sKKyAgICBpZiAoYXV0byogc2VydmljZVdvcmtlciA9IG1f
d29ya2VyTWFwLmdldChpZGVudGlmaWVyKSkgeworICAgICAgICBzZXJ2aWNlV29ya2VyLT50aHJl
YWQoKS5ydW5Mb29wKCkucG9zdFRhc2soW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXSAoYXV0byYgY29u
dGV4dCkgeworICAgICAgICAgICAgdGFzayhkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGU+KGNvbnRleHQpKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IDE3MTMxMTU4NzA2ODRlNTRh
OTQwNmEwM2M1NzRkMDU0MGMxOGFiZDEuLjdiMGU4YTY3NDAxY2I0NjcyNmE0YTgwNDhkZmIzMWY2
M2E5YmM4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTMwLDEyICszMCwxNCBAQAogI2luY2x1
ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIHN0cnVjdCBTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllcjsKK2NsYXNzIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTsK
IAogY2xhc3MgU1dDb250ZXh0TWFuYWdlciB7CiBwdWJsaWM6CkBAIC01MSw2ICs1Myw5IEBAIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oU2VydmljZVdv
cmtlcklkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFNlcnZpY2VXb3Jr
ZXJIYXNQZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJUZXJtaW5hdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSA9IDA7CisKKyAgICAgICAgdXNpbmcgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNr
ID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckNsaWVudERhdGE+PiYmKT47CisgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5k
Q2xpZW50QnlJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciwgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYpID0gMDsK
ICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5p
cXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKQEAgLTY1LDYgKzcwLDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBmb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
U2VydmljZVdvcmtlclRocmVhZFByb3h5Jik+Jik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJik+JiYpOworCiBwcml2YXRlOgog
ICAgIFNXQ29udGV4dE1hbmFnZXIoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZDc3NDUzYjA3NjFj
NzgzODk1ODQ0YzI3ZTY2NjRjOGQyYjJhYjI5NS4uMGMzN2UyZDk5MjZkNmFlYjFmMDNkYzA5ZWIz
NDIzZWM3MWJjMTMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTMxMiw2ICszMTIsMjAgQEAgdm9pZCBTV1NlcnZlcjo6
ZGlkRmluaXNoQWN0aXZhdGlvbihTV1NlcnZlcldvcmtlciYgd29ya2VyKQogICAgICAgICBTV1Nl
cnZlckpvYlF1ZXVlOjpkaWRGaW5pc2hBY3RpdmF0aW9uKCpyZWdpc3RyYXRpb24sIHdvcmtlci5p
ZGVudGlmaWVyKCkpOwogfQogCitzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
PiBTV1NlcnZlcjo6ZmluZENsaWVudEJ5SWRlbnRpZmllcihjb25zdCBDbGllbnRPcmlnaW4mIG9y
aWdpbiwgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50SWRlbnRpZmllcikKK3sK
KyAgICBhdXRvIGl0ZXJhdG9yID0gbV9jbGllbnRzLmZpbmQob3JpZ2luKTsKKyAgICBpZiAoaXRl
cmF0b3IgPT0gbV9jbGllbnRzLmVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgYXV0byYgY2xpZW50cyA9IGl0ZXJhdG9yLT52YWx1ZTsKKyAgICBhdXRvIHBvc2l0aW9u
ID0gY2xpZW50cy5maW5kTWF0Y2hpbmcoWyZdIChjb25zdCBhdXRvJiBjbGllbnQpIHsKKyAgICAg
ICAgcmV0dXJuIGNsaWVudElkZW50aWZpZXIgPT0gY2xpZW50LmlkZW50aWZpZXI7CisgICAgfSk7
CisKKyAgICByZXR1cm4gKHBvc2l0aW9uICE9IG5vdEZvdW5kKSA/IHN0ZDo6bWFrZV9vcHRpb25h
bChjbGllbnRzW3Bvc2l0aW9uXS5kYXRhKSA6IHN0ZDo6bnVsbG9wdDsKK30KKwogdm9pZCBTV1Nl
cnZlcjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQog
ewogICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9jb25uZWN0aW9ucy5jb250YWlucyhj
b25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IGNhYjg2MzFiZmQyNDUzNTJmYmUyNWRmMmVl
OGIwOGRhMTcyOGE1ZjguLjhiYTg5NzQ0ZTA2N2NiMWU5NDVlMTJhNDEzMGExNTAyZGIyOGNmMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmgKQEAgLTEzOCw2ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxs
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNX
U2VydmVyV29ya2VyJiwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKICAgICB2b2lkIGRpZEZpbmlzaEFj
dGl2YXRpb24oU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIHdvcmtlckNvbnRleHRUZXJtaW5h
dGVkKFNXU2VydmVyV29ya2VyJik7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4gZmluZENsaWVudEJ5SWRlbnRpZmllcihjb25zdCBDbGllbnRPcmlnaW4mLCBTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25DcmVhdGVkKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggYmU4NWIzOWY2NjFjNjY1ZTRmMTExMGUwNGU0
Y2I0MWI1NWNjZjkwYS4uNzM3Yzc4YmE1ODczYjZhYWJmZmQ3Y2Y2NDFmM2NjNWMyNDBjM2U5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTA4LDYgKzEw
OCwxMiBAQCB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6d29ya2VyVGVybWluYXRl
ZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aQogICAgICAgICB3b3JrZXItPmNvbnRleHRU
ZXJtaW5hdGVkKCk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaW5k
Q2xpZW50QnlJZGVudGlmaWVyKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVu
dElkZW50aWZpZXIgY2xpZW50SWQpCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVy
V29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpKQorICAgICAgICBnbG9iYWxTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKCktPmZpbmRDbGll
bnRCeUlkZW50aWZpZXJDb21wbGV0ZWQocmVxdWVzdElkZW50aWZpZXIsIHdvcmtlci0+ZmluZENs
aWVudEJ5SWRlbnRpZmllcihjbGllbnRJZCksIGZhbHNlKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggMWExYTdmNjdjNzhjMDg0MmZlNDcwNGZmYTRm
NTEyZWU2NWM3Yzk1ZS4uNDczNjRjOTQzODBlNmY3NzNjNmZiNzZmMTFiNjllYmNiNzI0NjI4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0zNCw2ICszNCw4IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNXU2VydmVyOworc3RydWN0IFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhOworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwog
c3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXI7CiAKQEAgLTQ5LDYgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29t
cGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikgPSAwOwogCiAg
ICAgLy8gTWVzc2FnZXMgYmFjayBmcm9tIHRoZSBTVyBob3N0IHByb2Nlc3MKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwpAQCAtNTcsNiArNjAsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNlcnZpY2VXb3JrZXJIYXNQ
ZW5kaW5nRXZlbnRzKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGhhc1BlbmRpbmdFdmVu
dHMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd29ya2VyVGVybWluYXRlZChTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50QnlJZGVu
dGlmaWVyKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcik7CiAKICAgICBzdGF0aWMg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb25uZWN0aW9uRm9ySWRlbnRpZmllcihTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25JZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRl
eCA1NThjZjU0MGUzZWRjNDcyNDU3MTEwZjk0NDVmNDI0MjA2MTA5NjRkLi5iY2Y5NmRjMThlMDU5
OTNhZjVlYTI3YjA2NjEwYzVlM2UyMDVhZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtNzMsNiAr
NzMsMTQgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRlKCkKICAgICBtX3NlcnZlci50
ZXJtaW5hdGVXb3JrZXIoKnRoaXMpOwogfQogCitjb25zdCBDbGllbnRPcmlnaW4mIFNXU2VydmVy
V29ya2VyOjpvcmlnaW4oKSBjb25zdAoreworICAgIGlmICghbV9vcmlnaW4pCisgICAgICAgIG1f
b3JpZ2luID0gQ2xpZW50T3JpZ2luIHsgbV9yZWdpc3RyYXRpb25LZXkudG9wT3JpZ2luKCksIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUobV9kYXRhLnNjcmlwdFVSTCkpIH07CisKKyAgICByZXR1cm4gKm1fb3JpZ2luOworfQorCiB2
b2lkIFNXU2VydmVyV29ya2VyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mIGpvYkRhdGFJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4
dEZhaWxlZFRvU3RhcnQoam9iRGF0YUlkZW50aWZpZXIsICp0aGlzLCBtZXNzYWdlKTsKQEAgLTk4
LDYgKzEwNiwxMSBAQCB2b2lkIFNXU2VydmVyV29ya2VyOjpjb250ZXh0VGVybWluYXRlZCgpCiAg
ICAgbV9zZXJ2ZXIud29ya2VyQ29udGV4dFRlcm1pbmF0ZWQoKnRoaXMpOwogfQogCitzdGQ6Om9w
dGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTV1NlcnZlcldvcmtlcjo6ZmluZENsaWVu
dEJ5SWRlbnRpZmllcihTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZCkKK3sK
KyAgICByZXR1cm4gbV9zZXJ2ZXIuZmluZENsaWVudEJ5SWRlbnRpZmllcihvcmlnaW4oKSwgY2xp
ZW50SWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggN2Y1NmQzNzMxOWE1OTJkM2Q2N2I1YWE2
NmY1MGI2ZDBiZjAzNGNlNy4uZGY1MWY4Zjg3NWY5ZGMyNzM0OTdmZTI3ZWEzMzlhMTU2MzNmMmI0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuaApAQCAtMzYsMTEgKzM2LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorc3RydWN0IENsaWVudE9yaWdpbjsKIGNsYXNzIFNXU2VydmVyOwogY2xhc3MgU1dTZXJ2
ZXJSZWdpc3RyYXRpb247Ci1lbnVtIGNsYXNzIFdvcmtlclR5cGU7CitzdHJ1Y3QgU2VydmljZVdv
cmtlckNsaWVudERhdGE7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBz
dHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcjsKK2VudW0gY2xhc3MgV29ya2VyVHlwZTsKIAogY2xhc3MgU1dTZXJ2ZXJX
b3JrZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTV1NlcnZlcldvcmtlcj4gewogcHVibGljOgpAQCAt
ODMsMTEgKzg2LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3Qg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgYm9vbCB3YXNT
dWNjZXNzZnVsKTsKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oKTsKICAgICB2b2lkIGNv
bnRleHRUZXJtaW5hdGVkKCk7CisgICAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4gZmluZENsaWVudEJ5SWRlbnRpZmllcihTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU1dTZXJ2ZXJXb3JrZXIqIGV4aXN0aW5n
V29ya2VyRm9ySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKICAgICBjb25z
dCBTZXJ2aWNlV29ya2VyRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAg
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSgpIGNvbnN0OworICAgIGNvbnN0
IENsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJX
b3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIFNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBX
b3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CkBAIC05OSw2ICsxMDQsNyBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBtX3NjcmlwdDsKICAgICBib29sIG1faGFzUGVuZGluZ0V2ZW50
cyB7IGZhbHNlIH07CiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpOb3RSdW5uaW5nIH07Cisg
ICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPENsaWVudE9yaWdpbj4gbV9vcmlnaW47CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGU1ZGNlZTJjMjZlODlhYjU2N2Y0NTliMmY0ZWEw
OTE0MjdmODY2MWUuLjFiYjFjODhkZTc2NDZhN2I2M2Q2ZjljNWNkOWFkMWEwZDU0YzZhMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CkBAIC04MSw2ICs4MSwxMSBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcgogICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdv
cmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciksIE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlcjo6UmVwbHkoKSk7CiB9CiAKK3ZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29t
cGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPiYgZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaW5kQ2xp
ZW50QnlJZGVudGlmaWVyQ29tcGxldGVkIHsgcmVxdWVzdElkZW50aWZpZXIsIGRhdGEsIGhhc1Nl
Y3VyaXR5RXJyb3IgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdl
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDZjYTBjMDMyYWM1NWY0OWVmMmE2NTAyMWYwY2ZiNTdk
NDRmMzAxN2UuLjkxNzJlM2Y2YjA1M2VjYjZhMmM0Mzc0OTBiMDM4ZjYyNjQ5NzQwZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTYw
LDYgKzYwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtl
cihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBzeW5j
VGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsK
KyAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSBmaW5hbDsKIAogICAgIFJlZjxJUEM6
OkNvbm5lY3Rpb24+IG1faXBjQ29ubmVjdGlvbjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4
IDhiMjM0NzhiMjZhOTAwZjY4M2Q3MmRhMWUwYzRkZTYyYTE5MjgwOTEuLjBlZjAxODhmMTQxOTU0
MzVkMWIwODM2ZmU3N2QzNDY2ODIzYjZjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzEsNiAr
MzEsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gewogICAg
IERpZEZpbmlzaEFjdGl2YXRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRl
bnRpZmllcik7CiAgICAgU2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVudHMoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBoYXNQZW5kaW5nRXZlbnRz
KTsKICAgICBXb3JrZXJUZXJtaW5hdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpOworICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXIodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXIgY2xpZW50SWRlbnRpZmllcik7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNTg2MmRhNTkwOWQ0
OTlkYjQ2OWM5OWZlNjdhODIwNTI2NmMwYjEzNy4uZmQ2NTZjNWNlNWY3ZWEwOWYwZDYwMDg3Yjg3
MDFmOTBmMGEyM2I4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAt
NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNvbmZpZ3VyYXRpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdv
cmtlckNsaWVudERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogCkBAIC0yMDEsNiArMjAy
LDI0IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OndvcmtlclRlcm1pbmF0
ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VyCiAgICAgbV9jb25uZWN0aW9uVG9TdG9yYWdl
UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpX
b3JrZXJUZXJtaW5hdGVkKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgMCk7CiB9CiAKK3ZvaWQg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpbmRDbGllbnRCeUlkZW50aWZpZXIoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkZW50aWZpZXIsIEZpbmRDbGllbnRC
eUlkZW50aWZpZXJDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGF1dG8gcmVxdWVzdElkZW50
aWZpZXIgPSArK21fcHJldmlvdXNSZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBtX2ZpbmRDbGllbnRC
eUlkZW50aWZpZXJSZXF1ZXN0cy5hZGQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJh
Y2spKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OkZpbmRDbGllbnRCeUlkZW50aWZpZXIgeyBy
ZXF1ZXN0SWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNsaWVudElkZW50aWZp
ZXIgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpbmRD
bGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYgY2xpZW50RGF0YSwgYm9vbCBo
YXNTZWN1cml0eUVycm9yKQoreworICAgIGlmIChhdXRvIGNhbGxiYWNrID0gbV9maW5kQ2xpZW50
QnlJZGVudGlmaWVyUmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRpZmllcikpIHsKKyAgICAgICAg
aWYgKGhhc1NlY3VyaXR5RXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbiB7
IFNlY3VyaXR5RXJyb3IgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShjbGllbnREYXRhKSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBlYzFiMDI5OWE4OTFiZmI4NWE4OGI1NWQ2NTEx
ZDY0NGVjM2E2ZTAyLi41OTdkYTRlY2UzNmNhMDhmY2UyNmE3MjcxNzRhMzFkZTY2ZjkxNDNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEZpbmlzaEFjdGl2YXRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgc2V0U2VydmljZVdvcmtlckhhc1BlbmRpbmdFdmVu
dHMoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpIGZpbmFsOwogICAgIHZv
aWQgd29ya2VyVGVybWluYXRlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmlu
YWw7CisgICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciwgRmlu
ZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgLy8gSVBDIG1lc3Nh
Z2VzLgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWRXaXRoTWVzc2FnZShzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZp
bmFsOwpAQCAtNzMsMTAgKzc0LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVF
dmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCB0ZXJtaW5h
dGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgc3lu
Y1Rlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPE1l
c3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtl
cjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21w
bGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcik7CiAKICAg
ICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzOwogICAg
IHVpbnQ2NF90IG1fcGFnZUlEIHsgMCB9OwogICAgIHVpbnQ2NF90IG1fcHJldmlvdXNTZXJ2aWNl
V29ya2VySUQgeyAwIH07CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBGaW5kQ2xpZW50QnlJZGVu
dGlmaWVyQ2FsbGJhY2s+IG1fZmluZENsaWVudEJ5SWRlbnRpZmllclJlcXVlc3RzOworICAgIHVp
bnQ2NF90IG1fcHJldmlvdXNSZXF1ZXN0SWRlbnRpZmllciB7IDAgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgppbmRleCBjOGFjN2Q3NzI5YzMzOTlmY2NmNDc1OWJhNmI4Y2VjNTcyMmU1ZGI0Li43
YTE3MTVlMzZlN2Y2MjNkNzJhZGZlMjJjZDI2MjY4Zjc4OTIwMDcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzAsNiArMzAsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiB7CiAgICAgRmlyZUFjdGl2
YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICBUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKICAgICBTeW5jVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpIC0+ICgpIERlbGF5ZWQKKyAgICBGaW5kQ2xpZW50QnlJZGVudGlm
aWVyQ29tcGxldGVkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRhdGEsIGJvb2wgaGFzU2Vj
dXJpdHlFcnJvcikKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWZhOWRmY2MwMzFlYTQyODkwNTZkNDAy
ODFjZmM1ODRjZjUxZTc5NC4uYzBjZDI3MmQyMDZhZmZjMjNlMjhkYmU3ZDNhYWMzNmFkMDNhZmVj
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTEyLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L1NlcnZpY2VXb3JrZXIvI2NsaWVudHMtZ2V0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxNjcKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBE
dW1lei4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9z
ZXJ2aWNld29ya2VyY2xpZW50cy1nZXQtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9z
ZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMuaHRtbDogQWRkZWQuCisKIDIwMTctMTItMDEg
IFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIFRl
c3RFeHBlY3RhdGlvbnMgZm9yIHZhcmlvdXMgZWRpdGluZyB0ZXN0cyBvbiBpT1MuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2Vy
dmljZXdvcmtlcmNsaWVudHMtZ2V0LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zZXJ2aWNld29ya2VyY2xpZW50cy1nZXQtd29ya2Vy
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNhM2JiYTIzOGE2YjJlOGNiMjE2OTU5Yzc2ODU2YTY2NDg5YzNkNjQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vydmlj
ZS9yZXNvdXJjZXMvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0LXdvcmtlci5qcwpAQCAtMCwwICsx
LDQxIEBACit2YXIgY2xpZW50ID0gbnVsbDsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2Fn
ZSIsIGFzeW5jIChldmVudCkgPT4geworICAgIHRyeSB7CisgICAgICAgIHZhciBjbGllbnQgPSBl
dmVudC5zb3VyY2U7CisKKyAgICAgICAgaWYgKCEoY2xpZW50IGluc3RhbmNlb2YgV2luZG93Q2xp
ZW50KSkgeworICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiBjbGll
bnQgc291cmNlIGlzIG5vdCBhIFdpbmRvd0NsaWVudCIpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIHJldHJpZXZlZENsaWVudCA9IGF3YWl0IHNlbGYuY2xp
ZW50cy5nZXQoY2xpZW50LmlkKTsKKyAgICAgICAgaWYgKCFyZXRyaWV2ZWRDbGllbnQpIHsKKyAg
ICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiRkFJTDogZGlkIG5vdCByZXRyaWV2
ZSBhbnkgY2xpZW50IHRocm91Z2ggc2VsZi5jbGllbnRzLmdldCIpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJldHJpZXZlZENsaWVudC5pZCAhPT0gY2xp
ZW50LmlkKSB7CisgICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIkZBSUw6IGNs
aWVudCBpZCBpcyBkaWZmZXJlbnQgZnJvbSByZXRyaWV2ZWQgY2xpZW50IGlkIHRocm91Z2ggc2Vs
Zi5jbGllbnRzLmdldDogIiArIGNsaWVudC5pZCArICIgLyAiICsgcmV0cmlldmVkQ2xpZW50Lmlk
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXRyaWV2
ZWRDbGllbnQgIT09IGNsaWVudCkgeworICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNz
YWdlKCJGQUlMOiBjbGllbnQgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9uZSByZXRyaWV2ZWQgdGhy
b3VnaCBzZWxmLmNsaWVudHMuZ2V0Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICB2YXIgYmFkSWRzID0gW2NsaWVudC5pZCArICIwIiwgIjAtMCIsICIwLTEiLCAi
MS0wIiwgIjAtIiwgIi0iLCAiLTAiXTsKKyAgICAgICAgZm9yIChpZCBpbiBiYWRJZHMpIHsKKyAg
ICAgICAgICAgIHJldHJpZXZlZENsaWVudCA9IGF3YWl0IHNlbGYuY2xpZW50cy5nZXQoaWQpOwor
ICAgICAgICAgICAgaWYgKCEhcmV0cmlldmVkQ2xpZW50KSB7CisgICAgICAgICAgICAgICAgZXZl
bnQuc291cmNlLnBvc3RNZXNzYWdlKCJGQUlMOiByZXRyaWV2ZWQgY2xpZW50IHdpdGggYmFkIGlk
ICIgKyBpZCArICIgc2hvdWxkIGJlIG51bGwiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3Nh
Z2UoIlBBU1MiKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0
TWVzc2FnZSgiRkFJTDogcmVjZWl2ZWQgZXhjZXB0aW9uICIgKyBlKTsKKyAgICB9Cit9KTsKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2Vydmlj
ZXdvcmtlcmNsaWVudHMtZ2V0Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdmMzY2YjJhMmFjZjVhOWJlZDRkY2YyZmY2NTYzOTBjZTU0
YzUzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzIEBACisKK1BBU1MgVGVzdGluZyBjbGllbnRzLmdldCAKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMt
Z2V0Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9z
ZXJ2aWNld29ya2VyY2xpZW50cy1nZXQuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YmJmYmEzOGNj
ZWY3ZjBkOWU2ODM3ZTg0NzliYmI2Zjk1MjFjNmU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VydmljZXdvcmtlcmNsaWVudHMtZ2V0
Lmh0dHBzLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdD4KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgdmFyIHByb21p
c2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworICAgICAgICBuYXZpZ2F0b3Iuc2Vydmlj
ZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGVzdC5zdGVwX2Z1bmMoKGV2ZW50
KSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LmRhdGEsICJQQVNTIik7Cisg
ICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0pKTsKKyAgICB9KTsKKworICAgIHZhciBy
ZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVz
b3VyY2VzL3NlcnZpY2V3b3JrZXJjbGllbnRzLWdldC13b3JrZXIuanMiLCB7IHNjb3BlIDogIi9u
b29uZSIgfSk7CisgICAgdmFyIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAg
IGlmICghd29ya2VyKQorICAgICAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uYWN0aXZlOworICAg
IHdvcmtlci5wb3N0TWVzc2FnZSgic3RhcnQiKTsKKworICAgIGF3YWl0IHByb21pc2U7Cit9LCAi
VGVzdGluZyBjbGllbnRzLmdldCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>