<?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>231070</bug_id>
          
          <creation_ts>2021-10-01 03:38:29 -0700</creation_ts>
          <short_desc>Implement https://w3c.github.io/push-api/#receiving-a-push-message</short_desc>
          <delta_ts>2021-10-06 07:11:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</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>
          <dependson>231008</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>cedric</cc>
    
    <cc>dvpdiner2</cc>
    
    <cc>nham</cc>
    
    <cc>tomac</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1799226</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-01 03:38:29 -0700</bug_when>
    <thetext>Implement https://w3c.github.io/push-api/#receiving-a-push-message</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799227</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-01 03:38:54 -0700</bug_when>
    <thetext>&lt;rdar://problem/83759574&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799229</commentid>
    <comment_count>2</comment_count>
      <attachid>439838</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-01 03:44:28 -0700</bug_when>
    <thetext>Created attachment 439838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799834</commentid>
    <comment_count>3</comment_count>
      <attachid>439999</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-03 01:22:58 -0700</bug_when>
    <thetext>Created attachment 439999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800499</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-05 03:37:53 -0700</bug_when>
    <thetext>Ping review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800548</commentid>
    <comment_count>5</comment_count>
      <attachid>439999</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-05 07:21:52 -0700</bug_when>
    <thetext>Comment on attachment 439999
Patch

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

&gt; Source/WebCore/workers/service/server/SWServer.h:225
&gt; +    enum class ShouldSkipEvent { No, Yes };

: bool

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2539
&gt; +        data = Vector&lt;uint8_t&gt; { ipcData-&gt;data(), ipcData-&gt;size()  };

nit: extra space before }

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:400
&gt; +    void processPushMessage(PAL::SessionID, const std::optional&lt;IPC::DataReference&gt;&amp;, URL&amp;&amp;, CompletionHandler&lt;void(bool)&gt;&amp;&amp;);

Would be good to not omit the bool parameter name as it is not obvious.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:110
&gt; +void WebSWServerToContextConnection::firePushEvent(WebCore::ServiceWorkerIdentifier serviceWorkerIdentifier, const std::optional&lt;Vector&lt;uint8_t&gt;&gt;&amp; data, CompletionHandler&lt;void(bool)&gt;&amp;&amp; callback)

Would be good to not omit the bool parameter name as it is not obvious.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:756
&gt; +        data = Span&lt;const uint8_t&gt; { reinterpret_cast&lt;const uint8_t*&gt;(message.bytes), message.length };

It doesn&apos;t look safe to wrap the provided NSData into a Span and do stuff asynchronously. The lifetime of the NSData* is controller by the caller (client) and it may be destroyed right after this call, leaving your Span invalid.
We should be using a SharedBuffer, not a Span IMO. A SharedBuffer can wrap a NSData and does not actually copy the data either.

The current code might be safe depending on how long you hold on to the Span but it is fragile at best.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:108
&gt; +-(void)_processPushMessage:(NSData*) data registration:(NSURL *)registration completionHandler:(void(^)(bool))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

nit: extra space before data.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PushAPI.mm:126
&gt; +    done = false;

duplicate statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800983</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-06 00:36:35 -0700</bug_when>
    <thetext>Thanks, will update accordingly.

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:756
&gt; &gt; +        data = Span&lt;const uint8_t&gt; { reinterpret_cast&lt;const uint8_t*&gt;(message.bytes), message.length };
&gt; 
&gt; It doesn&apos;t look safe to wrap the provided NSData into a Span and do stuff
&gt; asynchronously. The lifetime of the NSData* is controller by the caller
&gt; (client) and it may be destroyed right after this call, leaving your Span
&gt; invalid.
&gt; We should be using a SharedBuffer, not a Span IMO. A SharedBuffer can wrap a
&gt; NSData and does not actually copy the data either.
&gt; 
&gt; The current code might be safe depending on how long you hold on to the Span
&gt; but it is fragile at best.

I think the assumption with Span&lt;const uint8_t&gt; is that it must be used synchronously.
I can pass a const uint8_t*/size_t set of parameters if that is clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800984</commentid>
    <comment_count>7</comment_count>
      <attachid>440342</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-06 00:40:29 -0700</bug_when>
    <thetext>Created attachment 440342
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801013</commentid>
    <comment_count>8</comment_count>
      <attachid>440350</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-10-06 03:14:55 -0700</bug_when>
    <thetext>Created attachment 440350
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801017</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-06 04:26:41 -0700</bug_when>
    <thetext>Committed r283613 (242565@main): &lt;https://commits.webkit.org/242565@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440350.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1801047</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-06 07:11:25 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #6)
&gt; Thanks, will update accordingly.
&gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:756
&gt; &gt; &gt; +        data = Span&lt;const uint8_t&gt; { reinterpret_cast&lt;const uint8_t*&gt;(message.bytes), message.length };
&gt; &gt; 
&gt; &gt; It doesn&apos;t look safe to wrap the provided NSData into a Span and do stuff
&gt; &gt; asynchronously. The lifetime of the NSData* is controller by the caller
&gt; &gt; (client) and it may be destroyed right after this call, leaving your Span
&gt; &gt; invalid.
&gt; &gt; We should be using a SharedBuffer, not a Span IMO. A SharedBuffer can wrap a
&gt; &gt; NSData and does not actually copy the data either.
&gt; &gt; 
&gt; &gt; The current code might be safe depending on how long you hold on to the Span
&gt; &gt; but it is fragile at best.
&gt; 
&gt; I think the assumption with Span&lt;const uint8_t&gt; is that it must be used
&gt; synchronously.
&gt; I can pass a const uint8_t*/size_t set of parameters if that is clearer.

A SharedBuffer has zero cost and is a safer type.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439838</attachid>
            <date>2021-10-01 03:44:28 -0700</date>
            <delta_ts>2021-10-03 01:22:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231070-20211001124426.patch</filename>
            <type>text/plain</type>
            <size>32392</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRlNzNhN2VhYmY5OGI1
ODE4ZTA0NzlkNDRiZWY0NDk3MmRmMDQ1Ny4uODkzZTI1MWEzN2YyMjljOWM4MWZjZjkyNTZkNmYw
ZjczNDg4MjgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEwLTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3B1c2gtYXBpLyNyZWNlaXZpbmctYS1wdXNoLW1lc3NhZ2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA3MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODM3NTk1NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGZpcmluZyBhIGZ1bmN0aW9uYWwgZXZlbnQg
YW5kIHB1c2ggbWVzc2FnZSBzcGVjaWFsaXphdGlvbi4KKyAgICAgICAgQ292ZXJlZCBieSBBUEkg
dGVzdC4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorCiAy
MDIxLTEwLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIHB1c2ggZXZlbnQgaGFuZGxl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAzNmI5MjVkZTUzOTQyOGUwNjBhYmNmNmE0Y2M5ODQzMGU2ZjY2MjZiLi45
ZjIwMjYzMTBkNDAxNWNhYmIzNzcxNDgwM2I2NGIyYzM5NjRjMjdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI5IEBACisyMDIxLTEwLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3B1c2gtYXBpLyNyZWNl
aXZpbmctYS1wdXNoLW1lc3NhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTA3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM3NTk1NzQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlbXBv
cmFyeSBTUEkgaW4gV0tXZWJzaXRlRGF0YVN0b3JlIHRvIGFsbG93IHB1c2hpbmcgbWVzc2FnZXMg
dG8gc2VydmljZSB3b3JrZXJzLgorICAgICAgICBJdCB0YWtlcyBhIGNvbXBsZXRpb24gaGFuZGxl
ciB0byBjaGVjayB3aGV0aGVyIHRoZSBtZXNzYWdlIGlzIGFja25vd2xlZGdlZCBvciBub3QuCisg
ICAgICAgIElEIG9mIHRoZSBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb24gaXMgdGhlIHJlZ2lz
dHJhdGlvbiBzY29wZSBmb3Igbm93LgorICAgICAgICBUaGlzIHBhdGNoIGRvZXMgbm90IGhhbmRs
ZSB0aGUgY2FzZSB3aGVyZSB0aGUgc2VydmljZSB3b3JrZXIgaGFzIG5vIGNsaWVudCwgdGhpcyB3
aWxsIGJlIGRlYWx0IHdpdGggYXMgYSBmb2xsb3ctdXAuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW46CisKIDIwMjEtMDktMjkgIEFkYSBDaGFuICA8YWRhLmNoYW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtXZWJYUl0gSG9sZCBhIGZvcmVncm91bmQgYXNzZXJ0aW9uIGZvciB0aGUgZHVy
YXRpb24gb2YgdGhlIGltbWVyc2l2ZSBzZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGUyMDViODVlNzYzMGZmOWQ3
ZDI0YTZhMGNhZWFmZWI2MzUwYjgwMjAuLmRkNDgxMzMyM2QxNzlkMDFkMjhiZWUwZTI3ZjY5YmYw
ZGJiMmRmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNDYsNiArMTQ2LDE0IEBAIHZvaWQgU1dTZXJ2ZXI6OndoZW5J
bXBvcnRJc0NvbXBsZXRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCiAg
ICAgbV9pbXBvcnRDb21wbGV0ZWRDYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsK
IH0KIAordm9pZCBTV1NlcnZlcjo6d2hlbkltcG9ydElzQ29tcGxldGVkSWZOZWVkZWQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQoreworICAgIGlmIChtX2ltcG9ydENvbXBs
ZXRlZCkgeworICAgICAgICBjYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IHdoZW5JbXBvcnRJc0NvbXBsZXRlZChXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CiAKIHZvaWQgU1dT
ZXJ2ZXI6OnJlZ2lzdHJhdGlvblN0b3JlRGF0YWJhc2VGYWlsZWRUb09wZW4oKQogewpAQCAtMTE3
MSw2ICsxMTc5LDgxIEBAIHZvaWQgU1dTZXJ2ZXI6OnNvZnRVcGRhdGUoU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24mIHJlZ2lzdHJhdGlvbikKICAgICBzY2hlZHVsZUpvYihXVEZNb3ZlKGpvYkRhdGEpKTsK
IH0KIAordm9pZCBTV1NlcnZlcjo6cHJvY2Vzc1B1c2hNZXNzYWdlKHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiYmIGRhdGEsIFVSTCYmIHJlZ2lzdHJhdGlvblVSTCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICB3aGVuSW1wb3J0SXNDb21wbGV0
ZWRJZk5lZWRlZChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgZGF0YSA9IFdU
Rk1vdmUoZGF0YSksIHJlZ2lzdHJhdGlvblVSTCA9IFdURk1vdmUocmVnaXN0cmF0aW9uVVJMKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykgeworICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRh
Ojpmcm9tVVJMKHJlZ2lzdHJhdGlvblVSTCk7CisgICAgICAgIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5IHsgV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKHJlZ2lz
dHJhdGlvblVSTCkgfTsKKyAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3Njb3BlVG9SZWdp
c3RyYXRpb25NYXAuZ2V0KHJlZ2lzdHJhdGlvbktleSk7CisgICAgICAgIGlmICghcmVnaXN0cmF0
aW9uKSB7CisgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGF1dG8qIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi0+YWN0aXZl
V29ya2VyKCk7CisgICAgICAgIGlmICghd29ya2VyKSB7CisgICAgICAgICAgICBjYWxsYmFjayh0
cnVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1F
OiB0cnkgdG8gZG8gZGVjcnlwdGlvbiBpZiBmYWlsaW5nLCB3ZSBwcm9iYWJseSB3YW50IHRvIGRp
c2NhcmQgdGhlIG1lc3NhZ2UgaW4gdGhhdCBjYXNlLgorICAgICAgICBmaXJlRnVuY3Rpb25hbEV2
ZW50KCpyZWdpc3RyYXRpb24sIFtzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHdvcmtlci0+aWRl
bnRpZmllcigpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oYXV0byYmIGNvbm5lY3Rpb25PclN0YXR1cykgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoIWNvbm5lY3Rpb25PclN0YXR1cy5oYXNfdmFsdWUoKSkgeworICAgICAgICAgICAgICAgIGNh
bGxiYWNrKGNvbm5lY3Rpb25PclN0YXR1cy5lcnJvcigpID09IFNob3VsZFNraXBFdmVudDo6WWVz
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBj
b25uZWN0aW9uT3JTdGF0dXMudmFsdWUoKS0+ZmlyZVB1c2hFdmVudChzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgZGF0YSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICB9KTsKKyAgICB9KTsK
K30KKworLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2ZpcmUtZnVuY3Rp
b25hbC1ldmVudC1hbGdvcml0aG0sIGp1c3QgZm9yIHB1c2ggcmlnaHQgbm93Lgordm9pZCBTV1Nl
cnZlcjo6ZmlyZUZ1bmN0aW9uYWxFdmVudChTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0
aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiosIFNob3VsZFNraXBFdmVudD4pPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8qIHdv
cmtlciA9IHJlZ2lzdHJhdGlvbi5hY3RpdmVXb3JrZXIoKTsKKyAgICBpZiAoIXdvcmtlcikgewor
ICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChTaG91bGRTa2lwRXZlbnQ6OlllcykpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IHdlIHNob3VsZCBjaGVjayB3
aGV0aGVyIHdlIGNhbiBza2lwIHRoZSBldmVudCBhbmQgaWYgc2tpcHBpbmcgZG8gYSBzb2Z0LXVw
ZGF0ZS4KKworICAgIHdvcmtlci0+d2hlbkFjdGl2YXRlZChbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVnaXN0cmF0aW9u
SWRlbnRpZmllciA9IHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCksIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCldKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVj
dGVkKFNob3VsZFNraXBFdmVudDo6Tm8pKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGlmICghc3VjY2VzcykgeworICAgICAgICAgICAgaWYgKGF1dG8qIHJlZ2lz
dHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9ucy5nZXQocmVnaXN0cmF0aW9uSWRlbnRpZmllcikpCisg
ICAgICAgICAgICAgICAgc29mdFVwZGF0ZSgqcmVnaXN0cmF0aW9uKTsKKyAgICAgICAgICAgIGNh
bGxiYWNrKG1ha2VVbmV4cGVjdGVkKFNob3VsZFNraXBFdmVudDo6Tm8pKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8qIHdvcmtlciA9IHdvcmtlckJ5SUQo
c2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgICAgICBpZiAoIXdvcmtlcikgeworICAgICAg
ICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoU2hvdWxkU2tpcEV2ZW50OjpObykpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF3b3JrZXItPmNvbnRl
eHRDb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbih3b3Jr
ZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworCisgICAgICAgIHJ1blNlcnZpY2VXb3JrZXJJZk5l
Y2Vzc2FyeShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlm
ICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5l
eHBlY3RlZChTaG91bGRTa2lwRXZlbnQ6Ok5vKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsbGJhY2soY29udGV4dENvbm5lY3Rpb24pOwor
ICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDI3NTlkODI5NDQ0ZmRmMTkwNWVjZjYz
YzJmNTI3YmI2ODlhNDhlOWMuLjkwMzExZTk4ODU0NDI3Y2JjM2FlNDY2NmY0OTM5NTllNDNhMDQ4
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmgKQEAgLTIyMCw2ICsyMjAsMTEgQEAgcHVibGljOgogCiAgICAgTGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQgY2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwcm9j
ZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYsIFVSTCYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKworICAgIGVudW0gY2xhc3MgU2hvdWxk
U2tpcEV2ZW50IHsgTm8sIFllcyB9OworICAgIHZvaWQgZmlyZUZ1bmN0aW9uYWxFdmVudChTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uKiwgU2hvdWxkU2tpcEV2ZW50Pik+JiYpOworCiBwcml2YXRl
OgogICAgIHZvaWQgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4sIFNlcnZpY2VXb3JrZXJKb2JUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKIApAQCAtMjQ2LDYgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250ZXh0
Q29ubmVjdGlvbkNyZWF0ZWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CiAKICAgICB2
b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhjb25zdCBDbGllbnRPcmlnaW4m
LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CisgICAgdm9pZCB3aGVuSW1wb3J0SXND
b21wbGV0ZWRJZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgSGFz
aE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVj
dGlvbj4+IG1fY29ubmVjdGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5LCBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9zY29wZVRvUmVnaXN0cmF0
aW9uTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggOTNiMWRk
NTIxNjczMWM5ODY2MmVlNGViMWVkZjYxN2IxYThjYzVlOC4uMjIxZDg2N2E2YWI2ZWQ0MzVhYTRk
NDNjZmRkYzEzMDhkZTE1MDYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2ZVNj
cmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNjcmlwdEJ1ZmZlciYs
IGNvbnN0IEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
bWF0Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZlY3Rv
cjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGZpcmVQ
dXNoRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2sp
ID0gMDsKIAogICAgIC8vIE1lc3NhZ2VzIGJhY2sgZnJvbSB0aGUgU1cgaG9zdCBwcm9jZXNzCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBz
dGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4mLCBTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMmRiOGNiY2VhY2RhZGQx
ZDcxYzA5ZDEwMTVlYTg5ODYwM2I5YjYyOS4uMDFiMGZiODkwM2IzN2YyODA0YWE3OTQzMTk1YzRl
OTcyOGFiY2I4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKQEAgLTI1MzEsNiArMjUzMSwxNCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjph
ZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgcHJv
YwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYgaXBjRGF0YSwgVVJMJiYgcmVnaXN0cmF0aW9u
VVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkYXRhOworICAgIGlmIChpcGNEYXRhKQorICAg
ICAgICBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+IHsgaXBjRGF0YS0+ZGF0YSgpLCBpcGNEYXRhLT5z
aXplKCkgIH07CisgICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkucHJvY2Vzc1B1c2hN
ZXNzYWdlKFdURk1vdmUoZGF0YSksIFdURk1vdmUocmVnaXN0cmF0aW9uVVJMKSwgV1RGTW92ZShj
YWxsYmFjaykpOworfQogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3Qg
Y3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4pPiYmIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDdlMGMxOTkyYzJlMDRlMmJm
Y2QzOGI5MjJjOGNmNGU4N2U1ZDRmYTEuLjFkMGE1YWY2ODc0MTczMWE2OTI4NDdjNGYzOTE0MjQ2
YzIwYzA1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKQEAgLTM5Niw2ICszOTYsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBmdHBFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9mdHBFbmFibGVkOyB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCisgICAgdm9pZCBwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYsIFVSTCYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMjJlYTk3M2Q0OTUzYzQ4Mjg3MzZjMmMz
MDZhMzY2YzFhNmRhZTg0OS4uYjlhZDc1NmQ4ZThkNjEwN2RhODNmNDI4MmE1ZDYzNjA3NzFhZDgy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yMDMsNCArMjAzLDggQEAgbWVzc2FnZXMgLT4gTmV0d29y
a1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShDRlBSRUZTX0RJUkVDVF9NT0RF
KQogICAgIE5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChTdHJpbmcgZG9tYWluLCBTdHJpbmcga2V5
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZW5jb2RlZFZhbHVlKQogI2VuZGlmCisKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgUHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGRhdGEsIFVSTCBy
ZWdpc3RyYXRpb25VUkwpIC0+IChib29sIGRpZFN1Y2NlZWQpIEFzeW5jCisjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5k
ZXggZDk4ZGViMmQ3ZTZjNGU5YTA0MGY2ZDliZjY4NTgyMWZiZGZhZTA3Ni4uZjJjMjdhYTRhNGU2
YWVhODRjNTc0ZGRhYzc0MTkxYjc0YzU4NjA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTEwNyw2ICsxMDcsMTQgQEAgdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHMKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6RmlyZUFjdGl2YXRlRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIp
KTsKIH0KIAordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpcmVQdXNoRXZl
bnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYgZGF0YSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPElQ
Qzo6RGF0YVJlZmVyZW5jZT4gaXBjRGF0YTsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgaXBjRGF0
YSA9IElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07Cisg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6RmlyZVB1c2hFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgaXBjRGF0YSksIFdU
Rk1vdmUoY2FsbGJhY2spKTsKK30KKwogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6VGVybWluYXRlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggNWNk
MTZhMDgyNGI4NGRiNWZiODVlOGZkNzI3ZGFlZTY5MTVlMWRmMS4uOWFlYTc2N2Y1MmI4MzAxNzkz
M2NmOTRmYjM4NDkwMDkwNjYwMjg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtOTMsNiArOTMsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpIGZpbmFsOwogICAgIHZvaWQgZmluZENs
aWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mLCBib29s
IGhhc1NlY3VyaXR5RXJyb3IpIGZpbmFsOwogICAgIHZvaWQgbWF0Y2hBbGxDb21wbGV0ZWQodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YT4mKSBmaW5hbDsKKyAgICB2b2lkIGZpcmVQdXNoRXZlbnQoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogCiAgICAgdm9p
ZCBjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpIGZpbmFsOwogICAgIHZvaWQgdGVybWluYXRl
RHVlVG9VbnJlc3BvbnNpdmVuZXNzKCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA3YjA5ZTVh
NTUxNzM5MzNkYmNlNjJjNDZlNzk1NTE2ZDE3ZjFiNWRjLi40Yjk1YWQ1ZDM1NzFiYjBkNTllYzMz
YmVmMjQ1YWZiZjFkMjkxOWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTc0OCw0ICs3NDgsMTYgQEAg
c3RhdGljIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiB0b1dlYnNpdGVEYXRhUmVj
b3JkcyhOU0FycmF5ICpkYXRhUmVjb3IKICAgICB9KTsKIH0KIAorLSh2b2lkKV9wcm9jZXNzUHVz
aE1lc3NhZ2U6KE5TRGF0YSopIG1lc3NhZ2UgcmVnaXN0cmF0aW9uOihOU1VSTCAqKXJlZ2lzdHJh
dGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShib29sKSljb21wbGV0aW9uSGFuZGxlcgor
eworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBzdGQ6Om9wdGlvbmFsPFNwYW48Y29u
c3QgdWludDhfdD4+IGRhdGE7CisgICAgaWYgKG1lc3NhZ2UpCisgICAgICAgIGRhdGEgPSBTcGFu
PGNvbnN0IHVpbnQ4X3Q+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWVzc2Fn
ZS5ieXRlcyksIG1lc3NhZ2UubGVuZ3RoIH07CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5ldHdv
cmtQcm9jZXNzKCkucHJvY2Vzc1B1c2hNZXNzYWdlKF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9u
SUQoKSwgZGF0YSwgcmVnaXN0cmF0aW9uLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBzdWNjZWVkZWQpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3VjY2VlZGVkKTsKKyAgICB9KTsKKyNlbmRpZgorfQorCiBAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCBhOWRiZjE1MjFkNjdhMTQ0NTYwYWZhZDYyNDUzYzU2
NWY1N2MyMzU0Li4yOTFiZDhhNzdkZTI0OTg5MjI1NzIwNmY3NGE5YzQzMTRmYzc1MWFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTEwNSw2ICsxMDUsOCBAQCB0eXBlZGVmIE5TX09Q
VElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogKyAo
Qk9PTClfZGVmYXVsdE5ldHdvcmtQcm9jZXNzRXhpc3RzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTIuMCksIGlvcygxNS4wKSk7CiAtICh2b2lkKV9jb3VudE5vbkRlZmF1bHRTZXNzaW9uU2V0czoo
dm9pZCheKShzaXplX3QpKWNvbXBsZXRpb25IYW5kbGVyOwogCistKHZvaWQpX3Byb2Nlc3NQdXNo
TWVzc2FnZTooTlNEYXRhKikgZGF0YSByZWdpc3RyYXRpb246KE5TVVJMICopcmVnaXN0cmF0aW9u
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKGJvb2wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBlbmQK
IAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1OTBmYjk1NzE5NGQ5
YWQxZGQ1YjNhMzY0M2YyOTExYWU4MGEwMTk1Li5hYmZjZWNlMDdmM2ZmODhmNmUxZTU4YTM0N2Zh
NDFiNDFjYzgxZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE2MTgsNiArMTYxOCwxNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEV4Y2VlZE1lbW9yeUxpbWl0KCkKIH0KICNlbmRpZgog
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpw
cm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6Om9wdGlvbmFs
PFNwYW48Y29uc3QgdWludDhfdD4+IGRhdGEsIGNvbnN0IFVSTCYgcmVnaXN0cmF0aW9uVVJMLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIHN0ZDo6b3B0
aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBpcGNEYXRhOworICAgIGlmIChkYXRhKQorICAgICAg
ICBpcGNEYXRhID0gSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXpl
KCkgfTsKKyAgICAvLyBWYWxpZGF0ZSB3ZSB0YWtlIGEgYmFja2dyb3VuZCBwcm9jZXNzIGFzc2Vy
dGlvbiB1bnRpbCB3ZSBnZXQgYW4gYW5zd2VyLgorICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NQdXNoTWVzc2FnZSB7IHNlc3Npb25JRCwgaXBj
RGF0YSwgcmVnaXN0cmF0aW9uVVJMIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKyNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5k
ZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAxNDQ4ZTZkOWVkODEzZDY3MjMyNDdjMzJk
ODZmOTQ5ZjkwNmY5NmRiLi4wY2E3YTdiOGRmNDAwZDI4ODA5Y2FkZDNhZmIzMTBkMTE0MTdiOGJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaApAQCAtMjY4LDYgKzI2OCwxMCBAQCBwdWJsaWM6CiAgICAgeHBjX29iamVj
dF90IHhwY0VuZHBvaW50TWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kcG9pbnRNZXNzYWdl
LmdldCgpOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lk
IHByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxTcGFuPGNv
bnN0IHVpbnQ4X3Q+PiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCBkZWY5ODE2NTkw
ZTdjMTc4MmQxNDhiY2I3ZTc5OTI5YjBiYTdmZDcxLi40MTRiY2I1MjVjZjA5NWQ3MWE0ZGRlZmNk
YzhkZjdlOTYxNGVhZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBA
IC0yNzEsNiArMjcxLDE0IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZp
cmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkCiAgICAgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuZmlyZUFjdGl2YXRlRXZlbnQoaWRlbnRpZmllcik7CiB9CiAK
K3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVQdXNoRXZlbnQoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRh
dGFSZWZlcmVuY2U+JiBpcGNEYXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNh
bGxiYWNrKQoreworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkYXRhOworICAg
IGlmIChpcGNEYXRhKQorICAgICAgICBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+IHsgaXBjRGF0YS0+
ZGF0YSgpLCBpcGNEYXRhLT5zaXplKCkgIH07CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuZmlyZVB1c2hFdmVudChpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7Cit9CisKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRlcm1p
bmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBT
V0NvbnRleHRNYW5hZ2VyOjp3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIG51bGxwdHIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggZGRkMDhkMjk4YzA2NTRhYWRhMzMzZjAy
MTdiYmFiMTc4NjY4ZTJkNi4uNWY4Y2YzMmQxMjc0ZTc3MGI3MjRiZjQ1MTNiZDcwYzg2YTlhZDEz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyVHlwZXMuaCIKICNp
bmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbi5oIgpAQCAtOTUsNiArOTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGlu
YXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSk7CiAgICAgdm9pZCBm
aXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICB2
b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
KyAgICB2b2lkIGZpcmVQdXNoRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAm
JiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImJiwgSGFzaE1h
cDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAyNWFjMTM2
ODhjNzhkOTM0YzQyZDQzNDhmN2JhYTg0ZjNkYTI1NmE4Li4xNTRmYWJkMzU0OTZlYmNmYmExNWI3
MmNiNWE3YWI1ZWQ3Mzc3OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgpAQCAtMzEsNiArMzEsOCBAQCBtZXNzYWdlcyAtPiBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICAgICBQb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklk
ZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdl
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhIHNvdXJjZURhdGEpCiAgICAgRmly
ZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIEZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCisgICAgRmlyZVB1c2hFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0
YSkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYworCiAgICAgVGVybWluYXRlV29ya2VyKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgRGlkU2F2ZVNjcmlwdHNUb0Rpc2so
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciBzY3JpcHQsIEhhc2hNYXA8VVJMLCBXZWJDb3JlOjpTY3Jp
cHRCdWZmZXI+IGltcG9ydGVkU2NyaXB0cyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDBiZDI5OGU5ODkxODg3NzExNDgzYzk1Nzg0MGZmMDY0
ZWU3YzdjYS4uZWUzNmEzYmIyMWFjMzE3ODIyOTFmYWJkNTczYmM5MDIzOGZhZjA1OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIxLTEwLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3B1c2gtYXBpLyNyZWNlaXZpbmct
YS1wdXNoLW1lc3NhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMTA3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM3NTk1NzQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW06IEFkZGVkLgorCiAyMDIxLTA5
LTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVGVybWluYXRlIFBDTSBkYWVtb24gYmVmb3JlIGFuZCBhZnRlciB1bml0IHRlc3QgdGhhdCB1
c2VzIGl0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVlMTYwYTE3OWJiZjQ2Y2ExZjhjYzZm
Yzc2MmQ0N2ZiOWI0Zjg1ZTcuLjMzOTA3ZWRhMjJjZjFiMmE2YjcwYWNhNThiNjkxMjI1MzU0MDgx
N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNTksNiArMjU5LDcgQEAKIAkJNDE4MUM2
MkQyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM2MkMyNTVB
ODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICovOyB9Owog
CQk0MTg0OEY0NDI0ODkxODc5MDAwRTI1ODggLyogb3Blbi13aW5kb3ctd2l0aC1maWxlLXVybC13
aXRoLWhvc3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTg0OEY0MzI0ODkxODE1MDAwRTI1ODggLyogb3Blbi13aW5kb3ctd2l0aC1m
aWxlLXVybC13aXRoLWhvc3QuaHRtbCAqLzsgfTsKIAkJNDE4ODJGMDMyMTAxMEMwRDAwMkZGMjg4
IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE4ODJGMDIyMTAxMEE3MDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJt
aW5nLm1tICovOyB9OworCQk0MThGQ0JENjI3MDcwNjYxMDBGOTZFQ0EgLyogUHVzaEFQSS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEZDQkQ1Mjcw
NzA2NjEwMEY5NkVDQSAvKiBQdXNoQVBJLm1tICovOyB9OwogCQk0MUU2N0E4NTI1RDE2RTgzMDA3
QjBBNEMgLyogU1RVTk1lc3NhZ2VQYXJzaW5nVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU2N0E4NDI1RDE2RTgzMDA3QjBBNEMgLyogU1RV
Tk1lc3NhZ2VQYXJzaW5nVGVzdC5jcHAgKi87IH07CiAJCTQ0MDc3QkIxMjMxNDRCNTAwMDE3OUUy
RCAvKiBEYXRhRGV0ZWN0b3JzVGVzdElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MDc3QkIwMjMxNDQ5RDIwMDE3OUUyRCAvKiBEYXRhRGV0ZWN0
b3JzVGVzdElPUy5tbSAqLzsgfTsKIAkJNDQzM0EzOTYyMDgwNDQxNDAwOTFFRDU3IC8qIFN5bmNo
cm9ub3VzVGltZW91dFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQzM0EzOTUyMDgwNDQxMzAwOTFFRDU3IC8qIFN5bmNocm9ub3VzVGltZW91
dFRlc3RzLm1tICovOyB9OwpAQCAtMjA5Miw2ICsyMDkzLDcgQEAKIAkJNDE4MUM2MkMyNTVBODkx
MTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODQ4RjQzMjQ4OTE4MTUwMDBFMjU4
OCAvKiBvcGVuLXdpbmRvdy13aXRoLWZpbGUtdXJsLXdpdGgtaG9zdC5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gIm9wZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0aC1ob3N0Lmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg4MkYwMjIxMDEwQTcwMDAyRkYy
ODggLyogUHJvY2Vzc1ByZVdhcm1pbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQcm9jZXNzUHJlV2FybWluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDE4RkNCRDUyNzA3MDY2MTAwRjk2RUNBIC8qIFB1c2hBUEkubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQdXNoQVBJLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTk3M0I1QzFBRjIyODc1MDA2QzdCMzYgLyogU2hhcmVkQnVmZmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZEJ1ZmZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkFGNEUyMjVBQzlEQjgwMEQ4MkYzMiAv
KiBnZXRVc2VyTWVkaWEyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBnZXRVc2Vy
TWVkaWEyLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTY3QTg0MjVEMTZF
ODMwMDdCMEE0QyAvKiBTVFVOTWVzc2FnZVBhcnNpbmdUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNUVU5NZXNzYWdlUGFyc2luZ1Rlc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzU4OSw2ICszNTkxLDcgQEAKIAkJCQk1MThDMTE1MjIw
NUIwNEY5MDAxRkY0QUUgLyogUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gKi8sCiAJCQkJNTc5
OEUyQUYxQ0FGNUMyODAwQzVDQkEwIC8qIFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tICovLAog
CQkJCTVDRkFDRjY0MjI2RkQxRkIwMDU2QzdEMCAvKiBQcm94eS5tbSAqLywKKwkJCQk0MThGQ0JE
NTI3MDcwNjYxMDBGOTZFQ0EgLyogUHVzaEFQSS5tbSAqLywKIAkJCQlBMUM0RkI2QzFCQUNDRTUw
MDAzNzQyRDAgLyogUXVpY2tMb29rLm1tICovLAogCQkJCTJEMkZFOEQ3MjMxNUYwNkQwMEIyRTlD
OSAvKiBSZWxvYWRXaXRoRGlmZmVyaW5nSW5pdGlhbFNjYWxlLm1tICovLAogCQkJCTFBNEY4MUQw
MUJERkZEQ0YwMDRFNjcyRSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovLApAQCAtNTc2MSw2
ICs1NzY0LDcgQEAKIAkJCQk3QzgzRTBDMTFEMEE2NTJGMDBGRUJDRjMgLyogUHJvdmlzaW9uYWxV
UkxOb3RDaGFuZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0ZBQ0Y2NTIyNkZEMkRDMDA1NkM3
RDAgLyogUHJveHkubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNDFBMUUzNDIxNkZGREJDMDA3ODlF
MEEgLyogUHVibGljU3VmZml4LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxOEZDQkQ2MjcwNzA2
NjEwMEY5NkVDQSAvKiBQdXNoQVBJLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzIxRDBB
NjUzNTAwRkVCQ0YzIC8qIFF1aWNrTG9vay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZCNEU4NjFD
MjIyMEE1NTIwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0YwRDFBNDExQUU2MDA0NDdDNEMgLyogUmVsb2FkUGFnZUFmdGVyQ3Jhc2guY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1B1c2hBUEkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1B1c2hBUEkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjU2NTg3MWQ1NGY4YjhjN2FkODYyZjNiMWM0OTQz
MWFlMTkwMTIwNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHVzaEFQSS5tbQpAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCisjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KKworc3Rh
dGljIGJvb2wgZG9uZTsKK3N0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNzYWdlOworCitAaW50ZXJm
YWNlIFB1c2hBUElNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgOiBOU09iamVjdCA8
V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFB1c2hBUElN
ZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250
cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBk
aWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQoreworICAg
IEVYUEVDVF9XS19TVFJFUShtZXNzYWdlLmJvZHksIGV4cGVjdGVkTWVzc2FnZSk7CisgICAgZG9u
ZSA9IHRydWU7Cit9CitAZW5kCisKKy8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgbWVzc2FnZSBk
ZWNyeXB0aW9uLgorc3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgK
KzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIHdpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzLnN3LnBvc3RNZXNzYWdlKG1zZyk7Cit9CisKK2NvbnN0IGNoYW5uZWwgPSBuZXcg
TWVzc2FnZUNoYW5uZWwoKTsKK2NoYW5uZWwucG9ydDEub25tZXNzYWdlID0gKGV2ZW50KSA9PiBs
b2coZXZlbnQuZGF0YSk7CisKK25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cu
anMnKS50aGVuKChyZWdpc3RyYXRpb24pID0+IHsKKyAgICBpZiAocmVnaXN0cmF0aW9uLmFjdGl2
ZSkgeworICAgICAgICByZWdpc3RyYXRpb24uYWN0aXZlLnBvc3RNZXNzYWdlKHtwb3J0OiBjaGFu
bmVsLnBvcnQyfSwgW2NoYW5uZWwucG9ydDJdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICB3b3JrZXIuYWRkRXZlbnRM
aXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHdvcmtlci5z
dGF0ZSA9PSAnYWN0aXZhdGVkJykKKyAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7cG9y
dDogY2hhbm5lbC5wb3J0Mn0sIFtjaGFubmVsLnBvcnQyXSk7CisgICAgfSk7Cit9KS5jYXRjaChm
dW5jdGlvbihlcnJvcikgeworICAgIGxvZygiUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAiICsg
ZXJyb3IpOworfSk7Cis8L3NjcmlwdD4KKylTV1JFU09VUkNFIjsKKworc3RhdGljIGNvbnN0IGNo
YXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorbGV0IHBvcnQ7CitzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKKyAgICBwb3J0ID0gZXZlbnQuZGF0YS5w
b3J0OworICAgIHBvcnQucG9zdE1lc3NhZ2UoIlJlYWR5Iik7Cit9KTsKK3NlbGYuYWRkRXZlbnRM
aXN0ZW5lcigicHVzaCIsIChldmVudCkgPT4geworICAgIHRyeSB7CisgICAgICAgIGlmICghZXZl
bnQuZGF0YSkgeworICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVjZWl2ZWQ6IG51bGwg
ZGF0YSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0IHZh
bHVlID0gZXZlbnQuZGF0YS50ZXh0KCk7CisgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoIlJlY2Vp
dmVkOiAiICsgdmFsdWUpOworICAgICAgICBpZiAodmFsdWUgIT0gJ1N3ZWV0IFBvdGF0b2VzJykK
KyAgICAgICAgICAgIGV2ZW50LndhaXRVbnRpbChQcm9taXNlLnJlamVjdCgnSSB3YW50IHN3ZWV0
IHBvdGF0b2VzJykpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcG9ydC5wb3N0TWVzc2Fn
ZSgiR290IGV4Y2VwdGlvbiAiICsgZSk7CisgICAgfQorfSk7CispU1dSRVNPVVJDRSI7CisKK3N0
YXRpYyBib29sIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBwdXNo
TWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKK1RFU1QoUHVzaEFQSSwgZmlyZVB1c2hFdmVudCkK
K3sKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8i
LCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwgc2NyaXB0Qnl0ZXMgfSB9CisgICAgfSwg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHApOworCisgICAgW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKwor
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1B1
c2hBUElNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgYWxsb2NdIGluaXRdKTsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdl
SGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKKworICAgIFtbY29uZmln
dXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50
UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFs
c2U7CisKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiUmVhZHkiOworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGRvbmUgPSBmYWxz
ZTsKKyAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IGZhbHNlOworICAgIHB1c2hNZXNzYWdlU3Vj
Y2Vzc2Z1bCA9IGZhbHNlOworICAgIE5TU3RyaW5nICptZXNzYWdlID0gQCJTd2VldCBQb3RhdG9l
cyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlJlY2VpdmVkOiBTd2VldCBQb3RhdG9lcyI7Cisg
ICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6
W21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHJlZ2lzdHJh
dGlvbjpbc2VydmVyLnJlcXVlc3QoKSBVUkxdIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1
bHQpIHsKKyAgICAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gcmVzdWx0OworICAgICAgICBw
dXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcHVzaE1l
c3NhZ2VQcm9jZXNzZWQpOworICAgIEVYUEVDVF9UUlVFKHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCk7
CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsK
KyAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKKyAgICBtZXNzYWdlID0gQCJSb3R0
ZW4gUG90YXRvZXMiOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJSZWNlaXZlZDogUm90dGVuIFBv
dGF0b2VzIjsKKyAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3Byb2Nlc3NQ
dXNoTWVzc2FnZTpbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z10gcmVnaXN0cmF0aW9uOltzZXJ2ZXIucmVxdWVzdCgpIFVSTF0gY29tcGxldGlvbkhhbmRsZXI6
Xihib29sIHJlc3VsdCkgeworICAgICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSByZXN1bHQ7
CisgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZwdXNoTWVzc2FnZVByb2Nlc3NlZCk7CisgICAgRVhQRUNUX0ZBTFNFKHB1c2hNZXNzYWdl
U3VjY2Vzc2Z1bCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439999</attachid>
            <date>2021-10-03 01:22:58 -0700</date>
            <delta_ts>2021-10-06 00:40:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231070-20211003102257.patch</filename>
            <type>text/plain</type>
            <size>32565</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDhjYjBlODRiM2QzOGU5
MzQ5ZWJlYTUwODA5OTgwNjM2ZGMwZWJjZi4uNjBjMWI3NDJlN2FjZTBhODhjNWMwODdiN2JlOWQ5
ZWEzNDE1OGFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEwLTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3B1c2gtYXBpLyNyZWNlaXZpbmctYS1wdXNoLW1lc3NhZ2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA3MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODM3NTk1NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IGZpcmluZyBhIGZ1bmN0aW9uYWwgZXZlbnQg
YW5kIHB1c2ggbWVzc2FnZSBzcGVjaWFsaXphdGlvbi4KKyAgICAgICAgQ292ZXJlZCBieSBBUEkg
dGVzdC4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorCiAy
MDIxLTEwLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgc3VwcG9ydCBmb3IgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIHB1c2ggZXZlbnQgaGFuZGxl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAzNmI5MjVkZTUzOTQyOGUwNjBhYmNmNmE0Y2M5ODQzMGU2ZjY2MjZiLi44
ZWEwYzNmOTVkMjZkZTU0M2FjNjNlZjA0MGI1NmRjMDIyMTIwY2E5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMyIEBACisyMDIxLTEwLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3B1c2gtYXBpLyNyZWNl
aXZpbmctYS1wdXNoLW1lc3NhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTA3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM3NTk1NzQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlbXBv
cmFyeSBTUEkgaW4gV0tXZWJzaXRlRGF0YVN0b3JlIHRvIGFsbG93IHB1c2hpbmcgbWVzc2FnZXMg
dG8gc2VydmljZSB3b3JrZXJzLgorICAgICAgICBJdCB0YWtlcyBhIGNvbXBsZXRpb24gaGFuZGxl
ciB0byBjaGVjayB3aGV0aGVyIHRoZSBtZXNzYWdlIGlzIGFja25vd2xlZGdlZCBvciBub3QuCisg
ICAgICAgIFRoZSBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb24gaXMgaWRlbnRpZmllZCBieSBp
dHMgc2NvcGUgZm9yIG5vdy4KKyAgICAgICAgQSBmZXcgYWRkaXRpb25hbCB0aGluZ3MgbWlnaHQg
bmVlZCB0byBiZSBkb25lOgorICAgICAgICAtIFRoZSBjYXNlIHdoZXJlIHRoZSBzZXJ2aWNlIHdv
cmtlciBpcyBsYXVuY2hlZCB3aXRoIG5vIGNsaWVudC4KKyAgICAgICAgLSBIYW5kbGluZyBvZiBi
YWNrZ3JvdW5kIGFzc2VydGlvbnMsIGVzcGVjaWFsbHkgaWYgc2VydmljZSB3b3JrZXIgaGFzIG5v
IGNsaWVudC4KKyAgICAgICAgLSBPcHRpbWl6YXRpb25zOiBza2lwIGV2ZW50cywgb3B0aW1pemF0
aW9uIG9mIG5ldHdvcmsgcHJvY2VzcyBsYXVuY2ggYnkgb25seSBsb2FkaW5nIHRoZSBzZXJ2aWNl
IHdvcmtlciByZWdpc3RyYXRpb25zIG9mIGFuIG9yaWdpbi4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbjoKKwogMjAyMS0wOS0yOSAgQWRhIENoYW4gIDxhZGEuY2hhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYlhSXSBIb2xkIGEgZm9yZWdyb3VuZCBhc3NlcnRpb24gZm9yIHRoZSBk
dXJhdGlvbiBvZiB0aGUgaW1tZXJzaXZlIHNlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZTIwNWI4NWU3NjMwZmY5
ZDdkMjRhNmEwY2FlYWZlYjYzNTBiODAyMC4uZGQ0ODEzMzIzZDE3OWQwMWQyOGJlZTBlMjdmNjli
ZjBkYmIyZGZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5jcHAKQEAgLTE0Niw2ICsxNDYsMTQgQEAgdm9pZCBTV1NlcnZlcjo6d2hl
bkltcG9ydElzQ29tcGxldGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykK
ICAgICBtX2ltcG9ydENvbXBsZXRlZENhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykp
OwogfQogCit2b2lkIFNXU2VydmVyOjp3aGVuSW1wb3J0SXNDb21wbGV0ZWRJZk5lZWRlZChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKG1faW1wb3J0Q29t
cGxldGVkKSB7CisgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgd2hlbkltcG9ydElzQ29tcGxldGVkKFdURk1vdmUoY2FsbGJhY2spKTsKK30KIAogdm9pZCBT
V1NlcnZlcjo6cmVnaXN0cmF0aW9uU3RvcmVEYXRhYmFzZUZhaWxlZFRvT3BlbigpCiB7CkBAIC0x
MTcxLDYgKzExNzksODEgQEAgdm9pZCBTV1NlcnZlcjo6c29mdFVwZGF0ZShTV1NlcnZlclJlZ2lz
dHJhdGlvbiYgcmVnaXN0cmF0aW9uKQogICAgIHNjaGVkdWxlSm9iKFdURk1vdmUoam9iRGF0YSkp
OwogfQogCit2b2lkIFNXU2VydmVyOjpwcm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+JiYgZGF0YSwgVVJMJiYgcmVnaXN0cmF0aW9uVVJMLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIHdoZW5JbXBvcnRJc0NvbXBs
ZXRlZElmTmVlZGVkKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBkYXRhID0g
V1RGTW92ZShkYXRhKSwgcmVnaXN0cmF0aW9uVVJMID0gV1RGTW92ZShyZWdpc3RyYXRpb25VUkwp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgeworICAgICAgICBpZiAo
IXdlYWtUaGlzKSB7CisgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21VUkwocmVnaXN0cmF0aW9uVVJMKTsKKyAgICAgICAgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSByZWdpc3RyYXRpb25LZXkgeyBXVEZNb3ZlKG9yaWdpbiksIFdURk1vdmUocmVn
aXN0cmF0aW9uVVJMKSB9OworICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1fc2NvcGVUb1Jl
Z2lzdHJhdGlvbk1hcC5nZXQocmVnaXN0cmF0aW9uS2V5KTsKKyAgICAgICAgaWYgKCFyZWdpc3Ry
YXRpb24pIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgYXV0byogd29ya2VyID0gcmVnaXN0cmF0aW9uLT5hY3Rp
dmVXb3JrZXIoKTsKKyAgICAgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
KHRydWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gRklY
TUU6IHRyeSB0byBkbyBkZWNyeXB0aW9uIGlmIGZhaWxpbmcsIHdlIHByb2JhYmx5IHdhbnQgdG8g
ZGlzY2FyZCB0aGUgbWVzc2FnZSBpbiB0aGF0IGNhc2UuCisgICAgICAgIGZpcmVGdW5jdGlvbmFs
RXZlbnQoKnJlZ2lzdHJhdGlvbiwgW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5p
ZGVudGlmaWVyKCksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShhdXRvJiYgY29ubmVjdGlvbk9yU3RhdHVzKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGlmICghY29ubmVjdGlvbk9yU3RhdHVzLmhhc192YWx1ZSgpKSB7CisgICAgICAgICAgICAgICAg
Y2FsbGJhY2soY29ubmVjdGlvbk9yU3RhdHVzLmVycm9yKCkgPT0gU2hvdWxkU2tpcEV2ZW50OjpZ
ZXMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGNvbm5lY3Rpb25PclN0YXR1cy52YWx1ZSgpLT5maXJlUHVzaEV2ZW50KHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIH0pOworICAgIH0p
OworfQorCisvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jZmlyZS1mdW5j
dGlvbmFsLWV2ZW50LWFsZ29yaXRobSwganVzdCBmb3IgcHVzaCByaWdodCBub3cuCit2b2lkIFNX
U2VydmVyOjpmaXJlRnVuY3Rpb25hbEV2ZW50KFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3Ry
YXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uKiwgU2hvdWxkU2tpcEV2ZW50Pik+JiYgY2FsbGJhY2spCit7CisgICAgYXV0byog
d29ya2VyID0gcmVnaXN0cmF0aW9uLmFjdGl2ZVdvcmtlcigpOworICAgIGlmICghd29ya2VyKSB7
CisgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKFNob3VsZFNraXBFdmVudDo6WWVzKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkIGNoZWNr
IHdoZXRoZXIgd2UgY2FuIHNraXAgdGhlIGV2ZW50IGFuZCBpZiBza2lwcGluZyBkbyBhIHNvZnQt
dXBkYXRlLgorCisgICAgd29ya2VyLT53aGVuQWN0aXZhdGVkKFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZWdpc3RyYXRp
b25JZGVudGlmaWVyID0gcmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSwgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIgPSB3b3JrZXItPmlkZW50aWZpZXIoKV0oYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhw
ZWN0ZWQoU2hvdWxkU2tpcEV2ZW50OjpObykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICBpZiAoYXV0byogcmVn
aXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChyZWdpc3RyYXRpb25JZGVudGlmaWVyKSkK
KyAgICAgICAgICAgICAgICBzb2Z0VXBkYXRlKCpyZWdpc3RyYXRpb24pOworICAgICAgICAgICAg
Y2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoU2hvdWxkU2tpcEV2ZW50OjpObykpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byogd29ya2VyID0gd29ya2VyQnlJ
RChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgICAgIGlmICghd29ya2VyKSB7CisgICAg
ICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChTaG91bGRTa2lwRXZlbnQ6Ok5vKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXdvcmtlci0+Y29u
dGV4dENvbm5lY3Rpb24oKSkKKyAgICAgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHdv
cmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisKKyAgICAgICAgcnVuU2VydmljZVdvcmtlcklm
TmVjZXNzYXJ5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oYXV0byogY29udGV4dENvbm5lY3Rpb24pIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKCFjb250ZXh0Q29ubmVjdGlvbikgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VV
bmV4cGVjdGVkKFNob3VsZFNraXBFdmVudDo6Tm8pKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYWxsYmFjayhjb250ZXh0Q29ubmVjdGlvbik7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggMjc1OWQ4Mjk0NDRmZGYxOTA1ZWNm
NjNjMmY1MjdiYjY4OWE0OGU5Yy4uOTAzMTFlOTg4NTQ0MjdjYmMzYWU0NjY2ZjQ5Mzk1OWU0M2Ew
NDgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaApAQCAtMjIwLDYgKzIyMCwxMSBAQCBwdWJsaWM6CiAKICAgICBMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBy
b2Nlc3NQdXNoTWVzc2FnZShzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiwgVVJMJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAgZW51bSBjbGFzcyBTaG91
bGRTa2lwRXZlbnQgeyBObywgWWVzIH07CisgICAgdm9pZCBmaXJlRnVuY3Rpb25hbEV2ZW50KFNX
U2VydmVyUmVnaXN0cmF0aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24qLCBTaG91bGRTa2lwRXZlbnQ+KT4mJik7CisKIHByaXZh
dGU6CiAgICAgdm9pZCB2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiwgU2VydmljZVdvcmtlckpvYlR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogCkBAIC0yNDYsNiArMjUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnRl
eHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKIAogICAg
IHZvaWQgdXBkYXRlQXBwSW5pdGlhdGVkVmFsdWVGb3JXb3JrZXJzKGNvbnN0IENsaWVudE9yaWdp
biYsIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKKyAgICB2b2lkIHdoZW5JbXBvcnRJ
c0NvbXBsZXRlZElmTmVlZGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBI
YXNoTWFwPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDb25u
ZWN0aW9uPj4gbV9jb25uZWN0aW9uczsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXksIFdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3Njb3BlVG9SZWdpc3Ry
YXRpb25NYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA5M2Ix
ZGQ1MjE2NzMxYzk4NjYyZWU0ZWIxZWRmNjE3YjFhOGNjNWU4Li4yMjFkODY3YTZhYjZlZDQzNWFh
NGQ0M2NmZGRjMTMwOGRlMTUwNjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTYXZl
U2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2NyaXB0QnVmZmVy
JiwgY29uc3QgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mIGltcG9ydGVkU2NyaXB0cykgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVj
dG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmly
ZVB1c2hFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFj
aykgPSAwOwogCiAgICAgLy8gTWVzc2FnZXMgYmFjayBmcm9tIHRoZSBTVyBob3N0IHByb2Nlc3MK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAyZGI4Y2JjZWFjZGFk
ZDFkNzFjMDlkMTAxNWVhODk4NjAzYjliNjI5Li4wMWIwZmI4OTAzYjM3ZjI4MDRhYTc5NDMxOTVj
NGU5NzI4YWJjYjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcApAQCAtMjUzMSw2ICsyNTMxLDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBw
cm9jCiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlKTsKIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vz
czo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qgc3Rk
OjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBpcGNEYXRhLCBVUkwmJiByZWdpc3RyYXRp
b25VUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRhdGE7CisgICAgaWYgKGlwY0RhdGEpCisg
ICAgICAgIGRhdGEgPSBWZWN0b3I8dWludDhfdD4geyBpcGNEYXRhLT5kYXRhKCksIGlwY0RhdGEt
PnNpemUoKSAgfTsKKyAgICBzd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5wcm9jZXNzUHVz
aE1lc3NhZ2UoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShyZWdpc3RyYXRpb25VUkwpLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50NjRf
dCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90Pik+JiYgY2FsbGJhY2spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggN2UwYzE5OTJjMmUwNGUy
YmZjZDM4YjkyMmM4Y2Y0ZTg3ZTVkNGZhMS4uMWQwYTVhZjY4NzQxNzMxYTY5Mjg0N2M0ZjM5MTQy
NDZjMjBjMDUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaApAQCAtMzk2LDYgKzM5NiwxMCBAQCBwdWJsaWM6CiAKICAgICBib29sIGZ0cEVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2Z0cEVuYWJsZWQ7IH0KIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKyAgICB2b2lkIHByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgY29u
c3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiwgVVJMJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyMmVhOTczZDQ5NTNjNDgyODczNmMy
YzMwNmEzNjZjMWE2ZGFlODQ5Li5iOWFkNzU2ZDhlOGQ2MTA3ZGE4M2Y0MjgyYTVkNjM2MDc3MWFk
ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIwMyw0ICsyMDMsOCBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKENGUFJFRlNfRElSRUNUX01P
REUpCiAgICAgTm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKFN0cmluZyBkb21haW4sIFN0cmluZyBr
ZXksIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlbmNvZGVkVmFsdWUpCiAjZW5kaWYKKworI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBQcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YSwgVVJM
IHJlZ2lzdHJhdGlvblVSTCkgLT4gKGJvb2wgZGlkU3VjY2VlZCkgQXN5bmMKKyNlbmRpZgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApp
bmRleCBkOThkZWIyZDdlNmM0ZTlhMDQwZjZkOWJmNjg1ODIxZmJkZmFlMDc2Li5mMmMyN2FhNGE0
ZTZhZWE4NGM1NzRkZGFjNzQxOTFiNzRjNTg2MDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTA3LDYgKzEwNywxNCBAQCB2
b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmlyZUFjdGl2YXRlRXZlbnQoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgcwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpGaXJlQWN0aXZhdGVFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikpOwogfQogCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmlyZVB1c2hF
dmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiBkYXRhLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIHN0ZDo6b3B0aW9uYWw8
SVBDOjpEYXRhUmVmZXJlbmNlPiBpcGNEYXRhOworICAgIGlmIChkYXRhKQorICAgICAgICBpcGNE
YXRhID0gSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpGaXJlUHVzaEV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBpcGNEYXRhKSwg
V1RGTW92ZShjYWxsYmFjaykpOworfQorCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKQogewogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpUZXJtaW5hdGVXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA1
Y2QxNmEwODI0Yjg0ZGI1ZmI4NWU4ZmQ3MjdkYWVlNjkxNWUxZGYxLi45YWVhNzY3ZjUyYjgzMDE3
OTMzY2Y5NGZiMzg0OTAwOTA2NjAyODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC05Myw2ICs5Myw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJiwgY29uc3QgSGFzaE1hcDxVUkwsIFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlcj4mIGltcG9ydGVkU2NyaXB0cykgZmluYWw7CiAgICAgdm9pZCBmaW5k
Q2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJv
b2wgaGFzU2VjdXJpdHlFcnJvcikgZmluYWw7CiAgICAgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnREYXRhPiYpIGZpbmFsOworICAgIHZvaWQgZmlyZVB1c2hFdmVudChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAKICAgICB2
b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5h
dGVEdWVUb1VucmVzcG9uc2l2ZW5lc3MoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDdiMDll
NWE1NTE3MzkzM2RiY2U2MmM0NmU3OTU1MTZkMTdmMWI1ZGMuLjRiOTVhZDVkMzU3MWJiMGQ1OWVj
MzNiZWYyNDVhZmJmMWQyOTE5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNzQ4LDQgKzc0OCwxNiBA
QCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0ZURhdGFS
ZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogICAgIH0pOwogfQogCistKHZvaWQpX3Byb2Nlc3NQ
dXNoTWVzc2FnZTooTlNEYXRhKikgbWVzc2FnZSByZWdpc3RyYXRpb246KE5TVVJMICopcmVnaXN0
cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKGJvb2wpKWNvbXBsZXRpb25IYW5kbGVy
Cit7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHN0ZDo6b3B0aW9uYWw8U3Bhbjxj
b25zdCB1aW50OF90Pj4gZGF0YTsKKyAgICBpZiAobWVzc2FnZSkKKyAgICAgICAgZGF0YSA9IFNw
YW48Y29uc3QgdWludDhfdD4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtZXNz
YWdlLmJ5dGVzKSwgbWVzc2FnZS5sZW5ndGggfTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+bmV0
d29ya1Byb2Nlc3MoKS5wcm9jZXNzUHVzaE1lc3NhZ2UoX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Np
b25JRCgpLCBkYXRhLCByZWdpc3RyYXRpb24sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHN1Y2NlZWRlZCkgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdWNjZWVkZWQpOworICAgIH0pOworI2VuZGlmCit9CisKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IGE5ZGJmMTUyMWQ2N2ExNDQ1NjBhZmFkNjI0NTNj
NTY1ZjU3YzIzNTQuLjI5MWJkOGE3N2RlMjQ5ODkyMjU3MjA2Zjc0YTljNDMxNGZjNzUxYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHR5cGVkZWYgTlNf
T1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAr
IChCT09MKV9kZWZhdWx0TmV0d29ya1Byb2Nlc3NFeGlzdHMgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX2NvdW50Tm9uRGVmYXVsdFNlc3Npb25TZXRz
Oih2b2lkKF4pKHNpemVfdCkpY29tcGxldGlvbkhhbmRsZXI7CiAKKy0odm9pZClfcHJvY2Vzc1B1
c2hNZXNzYWdlOihOU0RhdGEqKSBkYXRhIHJlZ2lzdHJhdGlvbjooTlNVUkwgKilyZWdpc3RyYXRp
b24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoYm9vbCkpY29tcGxldGlvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVu
ZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDU5MGZiOTU3MTk0
ZDlhZDFkZDViM2EzNjQzZjI5MTFhZTgwYTAxOTUuLjJkNjg0ZDY1ZDQ1Njc1OTI0MGM4MDNjMDNi
NDE2MjEyZDFjOTA0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTYxOCw2ICsxNjE4LDE2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRXhjZWVkTWVtb3J5TGltaXQoKQogfQogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6b3B0aW9u
YWw8U3Bhbjxjb25zdCB1aW50OF90Pj4gZGF0YSwgY29uc3QgVVJMJiByZWdpc3RyYXRpb25VUkws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgc3RkOjpv
cHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGlwY0RhdGE7CisgICAgaWYgKGRhdGEpCisgICAg
ICAgIGlwY0RhdGEgPSBJUEM6OkRhdGFSZWZlcmVuY2UgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSB9OworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlByb2Nlc3NQdXNoTWVzc2FnZSB7IHNlc3Npb25JRCwgaXBjRGF0YSwgcmVnaXN0cmF0aW9uVVJM
IH0sIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAppbmRleCAxNDQ4ZTZkOWVkODEzZDY3MjMyNDdjMzJkODZmOTQ5ZjkwNmY5NmRiLi4wY2E3
YTdiOGRmNDAwZDI4ODA5Y2FkZDNhZmIzMTBkMTE0MTdiOGJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjY4
LDYgKzI2OCwxMCBAQCBwdWJsaWM6CiAgICAgeHBjX29iamVjdF90IHhwY0VuZHBvaW50TWVzc2Fn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kcG9pbnRNZXNzYWdlLmdldCgpOyB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIHByb2Nlc3NQdXNoTWVzc2FnZShQ
QUw6OlNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxTcGFuPGNvbnN0IHVpbnQ4X3Q+PiwgY29uc3Qg
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCBkZWY5ODE2NTkwZTdjMTc4MmQxNDhiY2I3ZTc5OTI5
YjBiYTdmZDcxLi40MTRiY2I1MjVjZjA5NWQ3MWE0ZGRlZmNkYzhkZjdlOTYxNGVhZWVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0yNzEsNiArMjcxLDE0IEBAIHZv
aWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkCiAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
ZmlyZUFjdGl2YXRlRXZlbnQoaWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OmZpcmVQdXNoRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBpcGNEYXRh
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkYXRhOworICAgIGlmIChpcGNEYXRhKQorICAgICAg
ICBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+IHsgaXBjRGF0YS0+ZGF0YSgpLCBpcGNEYXRhLT5zaXpl
KCkgIH07CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuZmlyZVB1c2hFdmVudChp
ZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIHZvaWQg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBTV0NvbnRleHRNYW5hZ2VyOjp3b3Jr
ZXJUZXJtaW5hdGlvblRpbWVvdXQsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKaW5kZXggZGRkMDhkMjk4YzA2NTRhYWRhMzMzZjAyMTdiYmFiMTc4NjY4ZTJkNi4uNWY4
Y2YzMmQxMjc0ZTc3MGI3MjRiZjQ1MTNiZDcwYzg2YTlhZDEzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJJZGVudGlmaWVyVHlwZXMuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIgpAQCAtOTUsNiAr
OTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JD
bGllbnREYXRhJiYgc291cmNlRGF0YSk7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICB2b2lkIGZpcmVQdXNoRXZl
bnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SVBDOjpEYXRhUmVmZXJlbmNlPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
ICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKICAg
ICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAyNWFjMTM2ODhjNzhkOTM0YzQyZDQzNDhmN2Jh
YTg0ZjNkYTI1NmE4Li4xNTRmYWJkMzU0OTZlYmNmYmExNWI3MmNiNWE3YWI1ZWQ3Mzc3OTZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAt
MzEsNiArMzEsOCBAQCBtZXNzYWdlcyAtPiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBO
b3RSZWZDb3VudGVkIHsKICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyT3JDbGllbnREYXRhIHNvdXJjZURhdGEpCiAgICAgRmlyZUluc3RhbGxFdmVudChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEZpcmVBY3RpdmF0ZUV2
ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgRmly
ZVB1c2hFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBz
dGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YSkgLT4gKGJvb2wgcmVzdWx0KSBB
c3luYworCiAgICAgVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgRGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZl
ciBzY3JpcHQsIEhhc2hNYXA8VVJMLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGltcG9ydGVkU2Ny
aXB0cyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNDBiZDI5OGU5ODkxODg3NzExNDgzYzk1Nzg0MGZmMDY0ZWU3YzdjYS4uZWUzNmEzYmIyMWFj
MzE3ODIyOTFmYWJkNTczYmM5MDIzOGZhZjA1OCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEwLTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3B1c2gtYXBpLyNyZWNlaXZpbmctYS1wdXNoLW1lc3NhZ2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA3MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODM3NTk1NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1B1c2hBUEkubW06IEFkZGVkLgorCiAyMDIxLTA5LTI5ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVGVybWluYXRlIFBDTSBkYWVt
b24gYmVmb3JlIGFuZCBhZnRlciB1bml0IHRlc3QgdGhhdCB1c2VzIGl0CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGVlMTYwYTE3OWJiZjQ2Y2ExZjhjYzZmYzc2MmQ0N2ZiOWI0Zjg1ZTcuLjMz
OTA3ZWRhMjJjZjFiMmE2YjcwYWNhNThiNjkxMjI1MzU0MDgxN2UgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yNTksNiArMjU5LDcgQEAKIAkJNDE4MUM2MkQyNTVBODkxMTAwQUVCMEZGIC8q
IFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4MUM2MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0
cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICovOyB9OwogCQk0MTg0OEY0NDI0ODkxODc5MDAw
RTI1ODggLyogb3Blbi13aW5kb3ctd2l0aC1maWxlLXVybC13aXRoLWhvc3QuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg0OEY0MzI0
ODkxODE1MDAwRTI1ODggLyogb3Blbi13aW5kb3ctd2l0aC1maWxlLXVybC13aXRoLWhvc3QuaHRt
bCAqLzsgfTsKIAkJNDE4ODJGMDMyMTAxMEMwRDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5n
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4ODJG
MDIyMTAxMEE3MDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tICovOyB9OworCQk0MThG
Q0JENjI3MDcwNjYxMDBGOTZFQ0EgLyogUHVzaEFQSS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOEZDQkQ1MjcwNzA2NjEwMEY5NkVDQSAvKiBQdXNo
QVBJLm1tICovOyB9OwogCQk0MUU2N0E4NTI1RDE2RTgzMDA3QjBBNEMgLyogU1RVTk1lc3NhZ2VQ
YXJzaW5nVGVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0MUU2N0E4NDI1RDE2RTgzMDA3QjBBNEMgLyogU1RVTk1lc3NhZ2VQYXJzaW5nVGVzdC5j
cHAgKi87IH07CiAJCTQ0MDc3QkIxMjMxNDRCNTAwMDE3OUUyRCAvKiBEYXRhRGV0ZWN0b3JzVGVz
dElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0
MDc3QkIwMjMxNDQ5RDIwMDE3OUUyRCAvKiBEYXRhRGV0ZWN0b3JzVGVzdElPUy5tbSAqLzsgfTsK
IAkJNDQzM0EzOTYyMDgwNDQxNDAwOTFFRDU3IC8qIFN5bmNocm9ub3VzVGltZW91dFRlc3RzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQzM0EzOTUy
MDgwNDQxMzAwOTFFRDU3IC8qIFN5bmNocm9ub3VzVGltZW91dFRlc3RzLm1tICovOyB9OwpAQCAt
MjA5Miw2ICsyMDkzLDcgQEAKIAkJNDE4MUM2MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNG
cmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJUZXN0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxODQ4RjQzMjQ4OTE4MTUwMDBFMjU4OCAvKiBvcGVuLXdpbmRvdy13aXRo
LWZpbGUtdXJsLXdpdGgtaG9zdC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm9w
ZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0aC1ob3N0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MTg4MkYwMjIxMDEwQTcwMDAyRkYyODggLyogUHJvY2Vzc1ByZVdhcm1p
bmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzUHJl
V2FybWluZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE4RkNCRDUyNzA3MDY2
MTAwRjk2RUNBIC8qIFB1c2hBUEkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQdXNoQVBJLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTk3M0I1
QzFBRjIyODc1MDA2QzdCMzYgLyogU2hhcmVkQnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZEJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQxQkFGNEUyMjVBQzlEQjgwMEQ4MkYzMiAvKiBnZXRVc2VyTWVkaWEyLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBnZXRVc2VyTWVkaWEyLmh0bWw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTY3QTg0MjVEMTZFODMwMDdCMEE0QyAvKiBTVFVOTWVz
c2FnZVBhcnNpbmdUZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNUVU5NZXNzYWdlUGFyc2luZ1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzU4OSw2ICszNTkxLDcgQEAKIAkJCQk1MThDMTE1MjIwNUIwNEY5MDAxRkY0QUUgLyogUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gKi8sCiAJCQkJNTc5OEUyQUYxQ0FGNUMyODAwQzVDQkEw
IC8qIFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tICovLAogCQkJCTVDRkFDRjY0MjI2RkQxRkIw
MDU2QzdEMCAvKiBQcm94eS5tbSAqLywKKwkJCQk0MThGQ0JENTI3MDcwNjYxMDBGOTZFQ0EgLyog
UHVzaEFQSS5tbSAqLywKIAkJCQlBMUM0RkI2QzFCQUNDRTUwMDAzNzQyRDAgLyogUXVpY2tMb29r
Lm1tICovLAogCQkJCTJEMkZFOEQ3MjMxNUYwNkQwMEIyRTlDOSAvKiBSZWxvYWRXaXRoRGlmZmVy
aW5nSW5pdGlhbFNjYWxlLm1tICovLAogCQkJCTFBNEY4MUQwMUJERkZEQ0YwMDRFNjcyRSAvKiBS
ZW1vdGVPYmplY3RSZWdpc3RyeS5oICovLApAQCAtNTc2MSw2ICs1NzY0LDcgQEAKIAkJCQk3Qzgz
RTBDMTFEMEE2NTJGMDBGRUJDRjMgLyogUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1Q0ZBQ0Y2NTIyNkZEMkRDMDA1NkM3RDAgLyogUHJveHkubW0gaW4gU291
cmNlcyAqLywKIAkJCQkwNDFBMUUzNDIxNkZGREJDMDA3ODlFMEEgLyogUHVibGljU3VmZml4LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTQxOEZDQkQ2MjcwNzA2NjEwMEY5NkVDQSAvKiBQdXNoQVBJ
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQzIxRDBBNjUzNTAwRkVCQ0YzIC8qIFF1aWNr
TG9vay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTZCNEU4NjFDMjIyMEE1NTIwMDIyRjM4OSAvKiBS
ZWdpc3RyYWJsZURvbWFpbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwRDFBNDExQUU2
MDA0NDdDNEMgLyogUmVsb2FkUGFnZUFmdGVyQ3Jhc2guY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzc5OGMxYjllNDY3Yzg4N2JmNjFmYWM5Y2RhZGZiNGUwMjAwYjA4ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5t
bQpAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisj
aW1wb3J0ICJIVFRQU2VydmVyLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2lt
cG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KKworc3RhdGljIGJvb2wgZG9uZTsKK3N0YXRp
YyBTdHJpbmcgZXhwZWN0ZWRNZXNzYWdlOworCitAaW50ZXJmYWNlIFB1c2hBUElNZXNzYWdlSGFu
ZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxl
cj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFB1c2hBUElNZXNzYWdlSGFuZGxlcldpdGhFeHBl
Y3RlZE1lc3NhZ2UKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50
Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2Fn
ZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQoreworICAgIEVYUEVDVF9XS19TVFJFUShtZXNz
YWdlLmJvZHksIGV4cGVjdGVkTWVzc2FnZSk7CisgICAgZG9uZSA9IHRydWU7Cit9CitAZW5kCisK
Ky8vIEZJWE1FOiBVcGRhdGUgdGhlIHRlc3QgdG8gZG8gc3Vic2NyaXB0aW9uIGJlZm9yZSBwdXNo
aW5nIG1lc3NhZ2UuCitzdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNF
KAorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAgd2luZG93LndlYmtpdC5tZXNz
YWdlSGFuZGxlcnMuc3cucG9zdE1lc3NhZ2UobXNnKTsKK30KKworY29uc3QgY2hhbm5lbCA9IG5l
dyBNZXNzYWdlQ2hhbm5lbCgpOworY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+
IGxvZyhldmVudC5kYXRhKTsKKworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9z
dy5qcycpLnRoZW4oKHJlZ2lzdHJhdGlvbikgPT4geworICAgIGlmIChyZWdpc3RyYXRpb24uYWN0
aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2Uoe3BvcnQ6IGNo
YW5uZWwucG9ydDJ9LCBbY2hhbm5lbC5wb3J0Ml0pOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIHdvcmtlci5hZGRFdmVu
dExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAod29ya2Vy
LnN0YXRlID09ICdhY3RpdmF0ZWQnKQorICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtw
b3J0OiBjaGFubmVsLnBvcnQyfSwgW2NoYW5uZWwucG9ydDJdKTsKKyAgICB9KTsKK30pLmNhdGNo
KGZ1bmN0aW9uKGVycm9yKSB7CisgICAgbG9nKCJSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICIg
KyBlcnJvcik7Cit9KTsKKzwvc2NyaXB0PgorKVNXUkVTT1VSQ0UiOworCitzdGF0aWMgY29uc3Qg
Y2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitsZXQgcG9ydDsKK3NlbGYuYWRkRXZl
bnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4geworICAgIHBvcnQgPSBldmVudC5kYXRh
LnBvcnQ7CisgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVhZHkiKTsKK30pOworc2VsZi5hZGRFdmVu
dExpc3RlbmVyKCJwdXNoIiwgKGV2ZW50KSA9PiB7CisgICAgdHJ5IHsKKyAgICAgICAgaWYgKCFl
dmVudC5kYXRhKSB7CisgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKCJSZWNlaXZlZDogbnVs
bCBkYXRhIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29uc3Qg
dmFsdWUgPSBldmVudC5kYXRhLnRleHQoKTsKKyAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVj
ZWl2ZWQ6ICIgKyB2YWx1ZSk7CisgICAgICAgIGlmICh2YWx1ZSAhPSAnU3dlZXQgUG90YXRvZXMn
KQorICAgICAgICAgICAgZXZlbnQud2FpdFVudGlsKFByb21pc2UucmVqZWN0KCdJIHdhbnQgc3dl
ZXQgcG90YXRvZXMnKSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBwb3J0LnBvc3RNZXNz
YWdlKCJHb3QgZXhjZXB0aW9uICIgKyBlKTsKKyAgICB9Cit9KTsKKylTV1JFU09VUkNFIjsKKwor
c3RhdGljIGJvb2wgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHB1
c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNlOworVEVTVChQdXNoQVBJLCBmaXJlUHVzaEV2ZW50
KQoreworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAi
LyIsIHsgbWFpbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1U
eXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBzY3JpcHRCeXRlcyB9IH0KKyAgICB9
LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7CisKKyAgICBbV0tX
ZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwor
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtb
UHVzaEFQSU1lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5pdF0pOwor
ICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOworCisgICAgW1tjb25m
aWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVE
YXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3Rh
bnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBm
YWxzZTsKKworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJSZWFkeSI7CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgZG9uZSA9IGZh
bHNlOworICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gZmFsc2U7CisgICAgcHVzaE1lc3NhZ2VT
dWNjZXNzZnVsID0gZmFsc2U7CisgICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBAIlN3ZWV0IFBvdGF0
b2VzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiUmVjZWl2ZWQ6IFN3ZWV0IFBvdGF0b2VzIjsK
KyAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3Byb2Nlc3NQdXNoTWVzc2Fn
ZTpbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gcmVnaXN0
cmF0aW9uOltzZXJ2ZXIucmVxdWVzdCgpIFVSTF0gY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJl
c3VsdCkgeworICAgICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSByZXN1bHQ7CisgICAgICAg
IHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwdXNo
TWVzc2FnZVByb2Nlc3NlZCk7CisgICAgRVhQRUNUX1RSVUUocHVzaE1lc3NhZ2VTdWNjZXNzZnVs
KTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IGZhbHNl
OworICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNlOworICAgIG1lc3NhZ2UgPSBAIlJv
dHRlbiBQb3RhdG9lcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlJlY2VpdmVkOiBSb3R0ZW4g
UG90YXRvZXMiOworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vz
c1B1c2hNZXNzYWdlOlttZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXSByZWdpc3RyYXRpb246W3NlcnZlci5yZXF1ZXN0KCkgVVJMXSBjb21wbGV0aW9uSGFuZGxl
cjpeKGJvb2wgcmVzdWx0KSB7CisgICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3Vs
dDsKKyAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnB1c2hNZXNzYWdlUHJvY2Vzc2VkKTsKKyAgICBFWFBFQ1RfRkFMU0UocHVzaE1lc3Nh
Z2VTdWNjZXNzZnVsKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440342</attachid>
            <date>2021-10-06 00:40:29 -0700</date>
            <delta_ts>2021-10-06 03:14:49 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-231070-20211006094027.patch</filename>
            <type>text/plain</type>
            <size>32466</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTllODNhOGJmYzkyZTcw
ZDMzOTNjMGQwNzlhYjg5N2FjNjMzMjEyMC4uYzA1NWJmNzFmZjJmZjRmMzYwNmEzMmU1NDZjODNk
M2Y4YzE4ZjMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEwLTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3B1c2gtYXBpLyNyZWNlaXZpbmctYS1wdXNoLW1lc3NhZ2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA3MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODM3NTk1NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMg
RHVtZXouCisKKyAgICAgICAgSW1wbGVtZW50IGZpcmluZyBhIGZ1bmN0aW9uYWwgZXZlbnQgYW5k
IHB1c2ggbWVzc2FnZSBzcGVjaWFsaXphdGlvbi4KKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVz
dC4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorCiAyMDIx
LTEwLTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1w
bGlmeSBCYXNlQXVkaW9TaGFyZWRVbml0IGNsaWVudCBtYW5hZ2VtZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlm
YjFjZjFkMjY1NzAwZTQ4MmE0OTM3MDgyNDczMTNjNjAyYmNmOTYuLmUzNmExMzIxMTU1NWZhNTI2
NzRhZjUzNzZlMjU0ZDYyMzY1MTllMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjEt
MTAtMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxl
bWVudCBodHRwczovL3czYy5naXRodWIuaW8vcHVzaC1hcGkvI3JlY2VpdmluZy1hLXB1c2gtbWVz
c2FnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMx
MDcwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84Mzc1OTU3ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBBZGQgdGVtcG9yYXJ5IFNQSSBpbiBXS1dlYnNp
dGVEYXRhU3RvcmUgdG8gYWxsb3cgcHVzaGluZyBtZXNzYWdlcyB0byBzZXJ2aWNlIHdvcmtlcnMu
CisgICAgICAgIEl0IHRha2VzIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIGNoZWNrIHdoZXRoZXIg
dGhlIG1lc3NhZ2UgaXMgYWNrbm93bGVkZ2VkIG9yIG5vdC4KKyAgICAgICAgVGhlIHNlcnZpY2Ug
d29ya2VyIHJlZ2lzdHJhdGlvbiBpcyBpZGVudGlmaWVkIGJ5IGl0cyBzY29wZSBmb3Igbm93Lgor
ICAgICAgICBBIGZldyBhZGRpdGlvbmFsIHRoaW5ncyBtaWdodCBuZWVkIHRvIGJlIGRvbmU6Cisg
ICAgICAgIC0gVGhlIGNhc2Ugd2hlcmUgdGhlIHNlcnZpY2Ugd29ya2VyIGlzIGxhdW5jaGVkIHdp
dGggbm8gY2xpZW50LgorICAgICAgICAtIEhhbmRsaW5nIG9mIGJhY2tncm91bmQgYXNzZXJ0aW9u
cywgZXNwZWNpYWxseSBpZiBzZXJ2aWNlIHdvcmtlciBoYXMgbm8gY2xpZW50LgorICAgICAgICAt
IE9wdGltaXphdGlvbnM6IHNraXAgZXZlbnRzLCBvcHRpbWl6YXRpb24gb2YgbmV0d29yayBwcm9j
ZXNzIGxhdW5jaCBieSBvbmx5IGxvYWRpbmcgdGhlIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlv
bnMgb2YgYW4gb3JpZ2luLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorCiAyMDIx
LTEwLTA0ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CiAKICAgICAgICAgVm9y
YmlzIGRlY29kZXIgY2FuJ3QgYmUgaW5zdGFudGlhdGVkIC0gZm9sbG93IHVwIG9uIEJ1ZyAyMzA3
NDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAKaW5kZXggM2RhMDQ0MmQ5ZjNlMGVhOTM0MjUwNzM0YWMwOGZlZGQ1NThhMzU3Mi4uNmJj
YmY3MDQxYWY4NDk0MGUwMTIzMDMwYWE2ZGNmN2NkMzliOGQ5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE0Niw2ICsx
NDYsMTQgQEAgdm9pZCBTV1NlcnZlcjo6d2hlbkltcG9ydElzQ29tcGxldGVkKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKICAgICBtX2ltcG9ydENvbXBsZXRlZENhbGxiYWNr
cy5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwogfQogCit2b2lkIFNXU2VydmVyOjp3aGVuSW1w
b3J0SXNDb21wbGV0ZWRJZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJh
Y2spCit7CisgICAgaWYgKG1faW1wb3J0Q29tcGxldGVkKSB7CisgICAgICAgIGNhbGxiYWNrKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgd2hlbkltcG9ydElzQ29tcGxldGVkKFdURk1v
dmUoY2FsbGJhY2spKTsKK30KIAogdm9pZCBTV1NlcnZlcjo6cmVnaXN0cmF0aW9uU3RvcmVEYXRh
YmFzZUZhaWxlZFRvT3BlbigpCiB7CkBAIC0xMTc1LDYgKzExODMsODAgQEAgdm9pZCBTV1NlcnZl
cjo6c29mdFVwZGF0ZShTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQogICAgIHNj
aGVkdWxlSm9iKFdURk1vdmUoam9iRGF0YSkpOwogfQogCit2b2lkIFNXU2VydmVyOjpwcm9jZXNz
UHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiYgZGF0YSwgVVJMJiYg
cmVnaXN0cmF0aW9uVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNr
KQoreworICAgIHdoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVlZGVkKFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgcmVnaXN0cmF0aW9uVVJM
ID0gV1RGTW92ZShyZWdpc3RyYXRpb25VUkwpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CisgICAgICAgICAgICBjYWxs
YmFjayhmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgYXV0
byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwocmVnaXN0cmF0aW9uVVJMKTsK
KyAgICAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXkgeyBX
VEZNb3ZlKG9yaWdpbiksIFdURk1vdmUocmVnaXN0cmF0aW9uVVJMKSB9OworICAgICAgICBhdXRv
IHJlZ2lzdHJhdGlvbiA9IG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5nZXQocmVnaXN0cmF0aW9u
S2V5KTsKKyAgICAgICAgaWYgKCFyZWdpc3RyYXRpb24pIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
KHRydWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byog
d29ya2VyID0gcmVnaXN0cmF0aW9uLT5hY3RpdmVXb3JrZXIoKTsKKyAgICAgICAgaWYgKCF3b3Jr
ZXIpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgZmlyZUZ1bmN0aW9uYWxFdmVudCgqcmVnaXN0cmF0aW9uLCBb
c2VydmljZVdvcmtlcklkZW50aWZpZXIgPSB3b3JrZXItPmlkZW50aWZpZXIoKSwgZGF0YSA9IFdU
Rk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBjb25uZWN0
aW9uT3JTdGF0dXMpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKCFjb25uZWN0aW9uT3JTdGF0
dXMuaGFzX3ZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhjb25uZWN0aW9uT3JT
dGF0dXMuZXJyb3IoKSA9PSBTaG91bGRTa2lwRXZlbnQ6Olllcyk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29ubmVjdGlvbk9yU3RhdHVzLnZh
bHVlKCktPmZpcmVQdXNoRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGRhdGEsIFdURk1v
dmUoY2FsbGJhY2spKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKKy8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNmaXJlLWZ1bmN0aW9uYWwtZXZlbnQtYWxnb3JpdGht
LCBqdXN0IGZvciBwdXNoIHJpZ2h0IG5vdy4KK3ZvaWQgU1dTZXJ2ZXI6OmZpcmVGdW5jdGlvbmFs
RXZlbnQoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qLCBTaG91bGRTa2lw
RXZlbnQ+KT4mJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSByZWdpc3RyYXRpb24u
YWN0aXZlV29ya2VyKCk7CisgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAgY2FsbGJhY2sobWFr
ZVVuZXhwZWN0ZWQoU2hvdWxkU2tpcEV2ZW50OjpZZXMpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgY2hlY2sgd2hldGhlciB3ZSBjYW4gc2tpcCB0
aGUgZXZlbnQgYW5kIGlmIHNraXBwaW5nIGRvIGEgc29mdC11cGRhdGUuCisKKyAgICB3b3JrZXIt
PndoZW5BY3RpdmF0ZWQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIgPSByZWdpc3Ry
YXRpb24uaWRlbnRpZmllcigpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHdvcmtlci0+aWRl
bnRpZmllcigpXShib29sIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlz
KSB7CisgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChTaG91bGRTa2lwRXZlbnQ6
Ok5vKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXN1
Y2Nlc3MpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJh
dGlvbnMuZ2V0KHJlZ2lzdHJhdGlvbklkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIHNvZnRV
cGRhdGUoKnJlZ2lzdHJhdGlvbik7CisgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3Rl
ZChTaG91bGRTa2lwRXZlbnQ6Ok5vKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBhdXRvKiB3b3JrZXIgPSB3b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKKyAgICAgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VV
bmV4cGVjdGVkKFNob3VsZFNraXBFdmVudDo6Tm8pKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghd29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpKQorICAg
ICAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24od29ya2VyLT5yZWdpc3RyYWJsZURvbWFp
bigpKTsKKworICAgICAgICBydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnkoc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvKiBjb250ZXh0
Q29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9u
KSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoU2hvdWxkU2tpcEV2
ZW50OjpObykpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNhbGxiYWNrKGNvbnRleHRDb25uZWN0aW9uKTsKKyAgICAgICAgfSk7CisgICAgfSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaAppbmRleCAyNzU5ZDgyOTQ0NGZkZjE5MDVlY2Y2M2MyZjUyN2JiNjg5YTQ4ZTljLi40
MGNmYmQ5OWVlNDY1NjA3NTMyNWQzMjc2YWQ2YzQ4YTlhOGI0ZDI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0yMjAsNiArMjIw
LDExIEBAIHB1YmxpYzoKIAogICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGNsaWVu
dElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmLCBVUkwmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CisKKyAgICBlbnVtIGNsYXNzIFNob3VsZFNraXBFdmVudCA6IGJvb2wgeyBO
bywgWWVzIH07CisgICAgdm9pZCBmaXJlRnVuY3Rpb25hbEV2ZW50KFNXU2VydmVyUmVnaXN0cmF0
aW9uJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24qLCBTaG91bGRTa2lwRXZlbnQ+KT4mJik7CisKIHByaXZhdGU6CiAgICAgdm9pZCB2
YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgU2Vy
dmljZVdvcmtlckpvYlR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCkBA
IC0yNDYsNiArMjUxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnRleHRDb25uZWN0aW9uQ3Jl
YXRlZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKIAogICAgIHZvaWQgdXBkYXRlQXBw
SW5pdGlhdGVkVmFsdWVGb3JXb3JrZXJzKGNvbnN0IENsaWVudE9yaWdpbiYsIExhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKTsKKyAgICB2b2lkIHdoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVl
ZGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBIYXNoTWFwPFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPj4gbV9jb25u
ZWN0aW9uczsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIFdlYWtQ
dHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA5M2IxZGQ1MjE2NzMxYzk4NjYy
ZWU0ZWIxZWRmNjE3YjFhOGNjNWU4Li4yMjFkODY3YTZhYjZlZDQzNWFhNGQ0M2NmZGRjMTMwOGRl
MTUwNjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTYwLDYg
KzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgSGFzaE1h
cDxVUkwsIFNjcmlwdEJ1ZmZlcj4mIGltcG9ydGVkU2NyaXB0cykgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVu
dGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJv
b2wgaGFzU2VjdXJpdHlFcnJvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBtYXRjaEFsbENvbXBs
ZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZVB1c2hFdmVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykgPSAwOwogCiAgICAg
Ly8gTWVzc2FnZXMgYmFjayBmcm9tIHRoZSBTVyBob3N0IHByb2Nlc3MKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAzYjY4YzczNzk0MTk3MTFiOWMwODMyMWU5MGMz
MzlmYmRkOWUwYWZmLi42N2NlZWRjMGJlZDMxNjkxNjA3OGQyMjM2NDQwOWRmNTAzNjY0ZGNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtMjUzMSw2ICsyNTMxLDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFNlcnZpY2VXb3Jr
ZXJTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBwcm9jCiAgICAgaWYgKGFk
ZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVy
bWFuZW50bHkoaGFuZGxlKTsKIH0KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hN
ZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6
OkRhdGFSZWZlcmVuY2U+JiBpcGNEYXRhLCBVUkwmJiByZWdpc3RyYXRpb25VUkwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGRhdGE7CisgICAgaWYgKGlwY0RhdGEpCisgICAgICAgIGRhdGEgPSBW
ZWN0b3I8dWludDhfdD4geyBpcGNEYXRhLT5kYXRhKCksIGlwY0RhdGEtPnNpemUoKSB9OworICAg
IHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLnByb2Nlc3NQdXNoTWVzc2FnZShXVEZNb3Zl
KGRhdGEpLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvblVSTCksIFdURk1vdmUoY2FsbGJhY2spKTsKK30K
ICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDbGll
bnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgcXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1
aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+KT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA3ZWU3OTFhZDk4ZWNmNDdiYzk4M2RjNmI3NDNkM2Zj
ZDU3ZmZhNmNmLi40MGVjYWFiNzdhNjk5MDQwODdhMWViMzA2NDc5ZDk0NTkxN2ZmODAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zOTcs
NiArMzk3LDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgZnRwRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZnRwRW5hYmxlZDsgfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZv
aWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBzdGQ6Om9wdGlvbmFs
PElQQzo6RGF0YVJlZmVyZW5jZT4mLCBVUkwmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDgyY2RjM2Y1YWE3MWEyMGE5Y2QxNzBlN2VlNjNhMjgwZjA1NzNl
OWMuLmNkYjA1MjVlODExY2I2ZGVlZjFjYzc2OWJiZjVmN2Q5MTI4YmEzYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtMjA0LDQgKzIwNCw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoQ0ZQUkVGU19ESVJFQ1RfTU9ERSkKICAgICBOb3RpZnlQ
cmVmZXJlbmNlc0NoYW5nZWQoU3RyaW5nIGRvbWFpbiwgU3RyaW5nIGtleSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGVuY29kZWRWYWx1ZSkKICNlbmRpZgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQorICAgIFByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0
ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBkYXRhLCBVUkwgcmVnaXN0cmF0aW9uVVJM
KSAtPiAoYm9vbCBkaWRTdWNjZWVkKSBBc3luYworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGQ5OGRlYjJkN2U2
YzRlOWEwNDBmNmQ5YmY2ODU4MjFmYmRmYWUwNzYuLmYyYzI3YWE0YTRlNmFlYTg0YzU3NGRkYWM3
NDE5MWI3NGM1ODYwN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xMDcsNiArMTA3LDE0IEBAIHZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OkZpcmVBY3RpdmF0ZUV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7CiB9CiAKK3ZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlUHVzaEV2ZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mIGRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVu
Y2U+IGlwY0RhdGE7CisgICAgaWYgKGRhdGEpCisgICAgICAgIGlwY0RhdGEgPSBJUEM6OkRhdGFS
ZWZlcmVuY2UgeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OworICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpcmVQdXNo
RXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGlwY0RhdGEpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7Cit9CisKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVX
b3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiB7
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1p
bmF0ZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDVjZDE2YTA4MjRiODRkYjVm
Yjg1ZThmZDcyN2RhZWU2OTE1ZTFkZjEuLjlhZWE3NjdmNTJiODMwMTc5MzNjZjk0ZmIzODQ5MDA5
MDY2MDI4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKQEAgLTkzLDYgKzkzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNhdmVTY3Jp
cHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpTY3JpcHRCdWZmZXImLCBjb25zdCBIYXNoTWFwPFVSTCwgV2ViQ29yZTo6U2NyaXB0QnVmZmVy
PiYgaW1wb3J0ZWRTY3JpcHRzKSBmaW5hbDsKICAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZp
ZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVy
cm9yKSBmaW5hbDsKICAgICB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+
JikgZmluYWw7CisgICAgdm9pZCBmaXJlUHVzaEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgY29ubmVjdGlvbklz
Tm9Mb25nZXJOZWVkZWQoKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25z
aXZlbmVzcygpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggN2IwOWU1YTU1MTczOTMzZGJjZTYy
YzQ2ZTc5NTUxNmQxN2YxYjVkYy4uOTg2MDhiOWYzMjllMWVjN2U3MmFmOTQzYzc2YjZjMjE0NWI5
NjYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC03NDgsNCArNzQ4LDE2IEBAIHN0YXRpYyBWZWN0b3I8
V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAq
ZGF0YVJlY29yCiAgICAgfSk7CiB9CiAKKy0odm9pZClfcHJvY2Vzc1B1c2hNZXNzYWdlOihOU0Rh
dGEqKSBtZXNzYWdlIHJlZ2lzdHJhdGlvbjooTlNVUkwgKilyZWdpc3RyYXRpb24gY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQoXikoYm9vbCB3YXNQcm9jZXNzZWQpKWNvbXBsZXRpb25IYW5kbGVyCit7
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHN0ZDo6b3B0aW9uYWw8U3Bhbjxjb25z
dCB1aW50OF90Pj4gZGF0YTsKKyAgICBpZiAobWVzc2FnZSkKKyAgICAgICAgZGF0YSA9IFNwYW48
Y29uc3QgdWludDhfdD4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtZXNzYWdl
LmJ5dGVzKSwgbWVzc2FnZS5sZW5ndGggfTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+bmV0d29y
a1Byb2Nlc3MoKS5wcm9jZXNzUHVzaE1lc3NhZ2UoX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25J
RCgpLCBkYXRhLCByZWdpc3RyYXRpb24sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHdhc1Byb2Nlc3NlZCkgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih3YXNQcm9jZXNzZWQpOworICAgIH0pOworI2VuZGlmCit9CisKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IGE5ZGJmMTUyMWQ2N2ExNDQ1NjBhZmFkNjI0
NTNjNTY1ZjU3YzIzNTQuLjY1NDFiOGQ0NDRhZjJkYjA5N2UxZDRiZmRiOWEyZGUzODczMjM0NmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHR5cGVkZWYg
TlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7
CiArIChCT09MKV9kZWZhdWx0TmV0d29ya1Byb2Nlc3NFeGlzdHMgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX2NvdW50Tm9uRGVmYXVsdFNlc3Npb25T
ZXRzOih2b2lkKF4pKHNpemVfdCkpY29tcGxldGlvbkhhbmRsZXI7CiAKKy0odm9pZClfcHJvY2Vz
c1B1c2hNZXNzYWdlOihOU0RhdGEqKWRhdGEgcmVnaXN0cmF0aW9uOihOU1VSTCAqKXJlZ2lzdHJh
dGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShib29sKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBA
ZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggODRjYmJkYzY1
YWJhYWZjN2I1ZGE0YjcwMzhkNGNmMjA0NTEzYWU4Ny4uYzRiODAwYmUzNzkyNGQ0MDk3NGNiZGFk
ZTk3ZTBmNzI0ZTc5NTE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNjMxLDYgKzE2MzEsMTYgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRFeGNlZWRNZW1vcnlMaW1pdCgpCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpvcHRp
b25hbDxTcGFuPGNvbnN0IHVpbnQ4X3Q+PiBkYXRhLCBjb25zdCBVUkwmIHJlZ2lzdHJhdGlvblVS
TCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc1Byb2Nlc3NlZCk+JiYgY2FsbGJhY2sp
Cit7CisgICAgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGlwY0RhdGE7CisgICAg
aWYgKGRhdGEpCisgICAgICAgIGlwY0RhdGEgPSBJUEM6OkRhdGFSZWZlcmVuY2UgeyBkYXRhLT5k
YXRhKCksIGRhdGEtPnNpemUoKSB9OworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NQdXNoTWVzc2FnZSB7IHNlc3Npb25JRCwgaXBjRGF0YSwg
cmVnaXN0cmF0aW9uVVJMIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKyNlbmRpZiAvLyBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTUVT
U0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAzYjk1Mjc3MGIwYjc4NjYzMmY0N2EwM2VkYjY1NThi
Y2Q1ZmI2MjQ2Li42NzdlMTBjYzdhM2I4ZTEwYzY4NDZjYjg0N2JiMGU5ODEwZDkwZWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtMjcxLDYgKzI3MSwxMCBAQCBwdWJsaWM6CiAgICAgeHBjX29iamVjdF90IHhw
Y0VuZHBvaW50TWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kcG9pbnRNZXNzYWdlLmdldCgp
OyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIHByb2Nl
c3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxTcGFuPGNvbnN0IHVp
bnQ4X3Q+PiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc1Byb2Nl
c3NlZCk+JiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTmV0d29ya1Byb2Nl
c3NQcm94eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggZGVm
OTgxNjU5MGU3YzE3ODJkMTQ4YmNiN2U3OTkyOWIwYmE3ZmQ3MS4uZGFjNjYyZTc5MmQ5MTcyOGYw
NjdjYjM1YjY4MzY0N2JmNmUyYWU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcApAQCAtMjcxLDYgKzI3MSwxNCBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZAogICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVBY3RpdmF0ZUV2ZW50KGlkZW50aWZpZXIp
OwogfQogCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpmaXJlUHVzaEV2ZW50
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SVBDOjpEYXRhUmVmZXJlbmNlPiYgaXBjRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjYWxsYmFjaykKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGF0
YTsKKyAgICBpZiAoaXBjRGF0YSkKKyAgICAgICAgZGF0YSA9IFZlY3Rvcjx1aW50OF90PiB7IGlw
Y0RhdGEtPmRhdGEoKSwgaXBjRGF0YS0+c2l6ZSgpIH07CisgICAgU1dDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkuZmlyZVB1c2hFdmVudChpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogewog
ICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlm
aWVyLCBTV0NvbnRleHRNYW5hZ2VyOjp3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIG51bGxwdHIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggZGRkMDhkMjk4YzA2NTRhYWRh
MzMzZjAyMTdiYmFiMTc4NjY4ZTJkNi4uNWY4Y2YzMmQxMjc0ZTc3MGI3MjRiZjQ1MTNiZDcwYzg2
YTlhZDEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyVHlwZXMu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbi5oIgpAQCAtOTUsNiArOTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
ZGVzdGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYm
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSk7CiAgICAg
dm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKKyAgICB2b2lkIGZpcmVQdXNoRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09V
UkNFKSAmJiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImJiwg
SGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAy
NWFjMTM2ODhjNzhkOTM0YzQyZDQzNDhmN2JhYTg0ZjNkYTI1NmE4Li4xNTRmYWJkMzU0OTZlYmNm
YmExNWI3MmNiNWE3YWI1ZWQ3Mzc3OTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzEsNiArMzEsOCBAQCBtZXNzYWdlcyAtPiBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICAgICBQb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5h
dGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBt
ZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhIHNvdXJjZURhdGEpCiAg
ICAgRmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIEZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCisgICAgRmlyZVB1c2hFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5j
ZT4gZGF0YSkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYworCiAgICAgVGVybWluYXRlV29ya2VyKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAjaWYgRU5BQkxFKFNI
QVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAgRGlkU2F2ZVNjcmlwdHNU
b0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciBzY3JpcHQsIEhhc2hNYXA8VVJMLCBXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI+IGltcG9ydGVkU2NyaXB0cyk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDUzZTdhZTFhNjJjMzc0MjVlNmRhYWY4NjVi
NWUwNjZlNTdiYTc0Mi4uZTY3MmZkZmZhNmE4NDIxMGJmNzVlYzI2NDEwMDNjY2MwNTY5OGNiYSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIxLTEwLTA2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3B1c2gtYXBpLyNyZWNl
aXZpbmctYS1wdXNoLW1lc3NhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTA3MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM3NTk1NzQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW06IEFkZGVkLgorCiAyMDIx
LTEwLTAzICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgV1RG
OjpSZXRhaW5QdHI8PiBhbGxvd3MgYXNzaWdubWVudCBvZiB0d28gcG9pbnRlciB0eXBlcyB0aGF0
IGFyZSBub3QgYXNzaWduYWJsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNDM3NGNlNjUx
OWI1ZTA5MGNjMDk4NDg2MzNhOGYyZDE4NmNiZTMxLi40MDAzNjc0ZjQ1MTY1NDc4Y2MwNzNiYWI2
NzU0ZWYzNjEyYWMzMzAyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjU5LDYgKzI1OSw3
IEBACiAJCTQxODFDNjJEMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1l
clRlc3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQxODFDNjJDMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3Rz
LmNwcCAqLzsgfTsKIAkJNDE4NDhGNDQyNDg5MTg3OTAwMEUyNTg4IC8qIG9wZW4td2luZG93LXdp
dGgtZmlsZS11cmwtd2l0aC1ob3N0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4NDhGNDMyNDg5MTgxNTAwMEUyNTg4IC8qIG9wZW4t
d2luZG93LXdpdGgtZmlsZS11cmwtd2l0aC1ob3N0Lmh0bWwgKi87IH07CiAJCTQxODgyRjAzMjEw
MTBDMEQwMDJGRjI4OCAvKiBQcm9jZXNzUHJlV2FybWluZy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODgyRjAyMjEwMTBBNzAwMDJGRjI4OCAvKiBQ
cm9jZXNzUHJlV2FybWluZy5tbSAqLzsgfTsKKwkJNDE4RkNCRDYyNzA3MDY2MTAwRjk2RUNBIC8q
IFB1c2hBUEkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MThGQ0JENTI3MDcwNjYxMDBGOTZFQ0EgLyogUHVzaEFQSS5tbSAqLzsgfTsKIAkJNDFFNjdB
ODUyNUQxNkU4MzAwN0IwQTRDIC8qIFNUVU5NZXNzYWdlUGFyc2luZ1Rlc3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDFFNjdBODQyNUQxNkU4MzAw
N0IwQTRDIC8qIFNUVU5NZXNzYWdlUGFyc2luZ1Rlc3QuY3BwICovOyB9OwogCQk0NDA3N0JCMTIz
MTQ0QjUwMDAxNzlFMkQgLyogRGF0YURldGVjdG9yc1Rlc3RJT1MubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDA3N0JCMDIzMTQ0OUQyMDAxNzlFMkQg
LyogRGF0YURldGVjdG9yc1Rlc3RJT1MubW0gKi87IH07CiAJCTQ0MzNBMzk2MjA4MDQ0MTQwMDkx
RUQ1NyAvKiBTeW5jaHJvbm91c1RpbWVvdXRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MzNBMzk1MjA4MDQ0MTMwMDkxRUQ1NyAvKiBTeW5j
aHJvbm91c1RpbWVvdXRUZXN0cy5tbSAqLzsgfTsKQEAgLTIwOTQsNiArMjA5NSw3IEBACiAJCTQx
ODFDNjJDMjU1QTg5MTEwMEFFQjBGRiAvKiBSVENSdHBTRnJhbWVUcmFuc2Zvcm1lclRlc3RzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFNGcmFtZVRyYW5z
Zm9ybWVyVGVzdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg0OEY0MzI0
ODkxODE1MDAwRTI1ODggLyogb3Blbi13aW5kb3ctd2l0aC1maWxlLXVybC13aXRoLWhvc3QuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJvcGVuLXdpbmRvdy13aXRoLWZpbGUtdXJs
LXdpdGgtaG9zdC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4ODJGMDIy
MTAxMEE3MDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc1ByZVdhcm1pbmcubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQxOEZDQkQ1MjcwNzA2NjEwMEY5NkVDQSAvKiBQdXNoQVBJLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHVzaEFQSS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE5NzNCNUMxQUYyMjg3NTAwNkM3QjM2IC8qIFNo
YXJlZEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFy
ZWRCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUJBRjRFMjI1QUM5
REI4MDBEODJGMzIgLyogZ2V0VXNlck1lZGlhMi5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gZ2V0VXNlck1lZGlhMi5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
MUU2N0E4NDI1RDE2RTgzMDA3QjBBNEMgLyogU1RVTk1lc3NhZ2VQYXJzaW5nVGVzdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVFVOTWVzc2FnZVBhcnNpbmdUZXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1OTMsNiArMzU5NSw3IEBACiAJ
CQkJNTE4QzExNTIyMDVCMDRGOTAwMUZGNEFFIC8qIFByb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
ICovLAogCQkJCTU3OThFMkFGMUNBRjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5vdENo
YW5nZS5tbSAqLywKIAkJCQk1Q0ZBQ0Y2NDIyNkZEMUZCMDA1NkM3RDAgLyogUHJveHkubW0gKi8s
CisJCQkJNDE4RkNCRDUyNzA3MDY2MTAwRjk2RUNBIC8qIFB1c2hBUEkubW0gKi8sCiAJCQkJQTFD
NEZCNkMxQkFDQ0U1MDAwMzc0MkQwIC8qIFF1aWNrTG9vay5tbSAqLywKIAkJCQkyRDJGRThENzIz
MTVGMDZEMDBCMkU5QzkgLyogUmVsb2FkV2l0aERpZmZlcmluZ0luaXRpYWxTY2FsZS5tbSAqLywK
IAkJCQkxQTRGODFEMDFCREZGRENGMDA0RTY3MkUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCAq
LywKQEAgLTU3NjksNiArNTc3Miw3IEBACiAJCQkJN0M4M0UwQzExRDBBNjUyRjAwRkVCQ0YzIC8q
IFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNGQUNGNjUy
MjZGRDJEQzAwNTZDN0QwIC8qIFByb3h5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDQxQTFFMzQy
MTZGRkRCQzAwNzg5RTBBIC8qIFB1YmxpY1N1ZmZpeC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0
MThGQ0JENjI3MDcwNjYxMDBGOTZFQ0EgLyogUHVzaEFQSS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODNFMEMyMUQwQTY1MzUwMEZFQkNGMyAvKiBRdWlja0xvb2subW0gaW4gU291cmNlcyAqLywK
IAkJCQk2QjRFODYxQzIyMjBBNTUyMDAyMkYzODkgLyogUmVnaXN0cmFibGVEb21haW4uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMEQxQTQxMUFFNjAwNDQ3QzRDIC8qIFJlbG9hZFBhZ2VB
ZnRlckNyYXNoLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzMjYyYTc4MDY2MmE0NzZh
YzBkMWUzNDZlZDRjYmY0MDBjY2Y3NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KQEAgLTAsMCArMSwxNTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiSFRUUFNlcnZlci5oIgor
I2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQg
IlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg+CisKK3N0YXRpYyBib29sIGRvbmU7CitzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2Fn
ZTsKKworQGludGVyZmFjZSBQdXNoQVBJTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdl
IDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBQdXNoQVBJTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlCistICh2b2lkKXVz
ZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVu
dENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1l
c3NhZ2UKK3sKKyAgICBFWFBFQ1RfV0tfU1RSRVEobWVzc2FnZS5ib2R5LCBleHBlY3RlZE1lc3Nh
Z2UpOworICAgIGRvbmUgPSB0cnVlOworfQorQGVuZAorCisvLyBGSVhNRTogVXBkYXRlIHRoZSB0
ZXN0IHRvIGRvIHN1YnNjcmlwdGlvbiBiZWZvcmUgcHVzaGluZyBtZXNzYWdlLgorc3RhdGljIGNv
bnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKKzxzY3JpcHQ+CitmdW5jdGlvbiBs
b2cobXNnKQoreworICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnN3LnBvc3RNZXNz
YWdlKG1zZyk7Cit9CisKK2NvbnN0IGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKK2No
YW5uZWwucG9ydDEub25tZXNzYWdlID0gKGV2ZW50KSA9PiBsb2coZXZlbnQuZGF0YSk7CisKK25h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKChyZWdpc3RyYXRp
b24pID0+IHsKKyAgICBpZiAocmVnaXN0cmF0aW9uLmFjdGl2ZSkgeworICAgICAgICByZWdpc3Ry
YXRpb24uYWN0aXZlLnBvc3RNZXNzYWdlKHtwb3J0OiBjaGFubmVsLnBvcnQyfSwgW2NoYW5uZWwu
cG9ydDJdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB3b3JrZXIgPSByZWdpc3RyYXRp
b24uaW5zdGFsbGluZzsKKyAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2Un
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykK
KyAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7cG9ydDogY2hhbm5lbC5wb3J0Mn0sIFtj
aGFubmVsLnBvcnQyXSk7CisgICAgfSk7Cit9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAg
IGxvZygiUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAiICsgZXJyb3IpOworfSk7Cis8L3Njcmlw
dD4KKylTV1JFU09VUkNFIjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJT
V1JFU09VUkNFKAorbGV0IHBvcnQ7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAo
ZXZlbnQpID0+IHsKKyAgICBwb3J0ID0gZXZlbnQuZGF0YS5wb3J0OworICAgIHBvcnQucG9zdE1l
c3NhZ2UoIlJlYWR5Iik7Cit9KTsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigicHVzaCIsIChldmVu
dCkgPT4geworICAgIHRyeSB7CisgICAgICAgIGlmICghZXZlbnQuZGF0YSkgeworICAgICAgICAg
ICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVjZWl2ZWQ6IG51bGwgZGF0YSIpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuZGF0YS50ZXh0
KCk7CisgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoIlJlY2VpdmVkOiAiICsgdmFsdWUpOworICAg
ICAgICBpZiAodmFsdWUgIT0gJ1N3ZWV0IFBvdGF0b2VzJykKKyAgICAgICAgICAgIGV2ZW50Lndh
aXRVbnRpbChQcm9taXNlLnJlamVjdCgnSSB3YW50IHN3ZWV0IHBvdGF0b2VzJykpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiR290IGV4Y2VwdGlvbiAiICsg
ZSk7CisgICAgfQorfSk7CispU1dSRVNPVVJDRSI7CisKK3N0YXRpYyBib29sIHB1c2hNZXNzYWdl
UHJvY2Vzc2VkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBm
YWxzZTsKK1RFU1QoUHVzaEFQSSwgZmlyZVB1c2hFdmVudCkKK3sKKyAgICBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IG1haW5CeXRlcyB9IH0sCisg
ICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0IiB9fSwgc2NyaXB0Qnl0ZXMgfSB9CisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHApOworCisgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dX
ZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAg
ICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1B1c2hBUElNZXNzYWdlSGFuZGxlcldp
dGhFeHBlY3RlZE1lc3NhZ2UgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNl
ckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxl
ci5nZXQoKSBuYW1lOkAic3ciXTsKKworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0
b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRh
VHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRs
ZXI6XigpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBleHBlY3RlZE1l
c3NhZ2UgPSAiUmVhZHkiOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3QoKV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
CisgICAgZG9uZSA9IGZhbHNlOworICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gZmFsc2U7Cisg
ICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gZmFsc2U7CisgICAgTlNTdHJpbmcgKm1lc3NhZ2Ug
PSBAIlN3ZWV0IFBvdGF0b2VzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiUmVjZWl2ZWQ6IFN3
ZWV0IFBvdGF0b2VzIjsKKyAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3By
b2Nlc3NQdXNoTWVzc2FnZTpbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10gcmVnaXN0cmF0aW9uOltzZXJ2ZXIucmVxdWVzdCgpIFVSTF0gY29tcGxldGlvbkhh
bmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBy
ZXN1bHQ7CisgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZwdXNoTWVzc2FnZVByb2Nlc3NlZCk7CisgICAgRVhQRUNUX1RSVUUocHVzaE1l
c3NhZ2VTdWNjZXNzZnVsKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBwdXNoTWVzc2FnZVBy
b2Nlc3NlZCA9IGZhbHNlOworICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNlOworICAg
IG1lc3NhZ2UgPSBAIlJvdHRlbiBQb3RhdG9lcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlJl
Y2VpdmVkOiBSb3R0ZW4gUG90YXRvZXMiOworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0
YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOlttZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSByZWdpc3RyYXRpb246W3NlcnZlci5yZXF1ZXN0KCkgVVJMXSBj
b21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CisgICAgICAgIHB1c2hNZXNzYWdlU3Vj
Y2Vzc2Z1bCA9IHJlc3VsdDsKKyAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnB1c2hNZXNzYWdlUHJvY2Vzc2VkKTsKKyAgICBFWFBFQ1Rf
RkFMU0UocHVzaE1lc3NhZ2VTdWNjZXNzZnVsKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440350</attachid>
            <date>2021-10-06 03:14:55 -0700</date>
            <delta_ts>2021-10-06 04:26:43 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-231070-20211006121453.patch</filename>
            <type>text/plain</type>
            <size>32633</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFjYTY4ZjkxMmFkYmFj
NTBiMzFhOWU4MTZlMGRiNzVhMmQ5YmFhYS4uMGUyYzNkMTVkN2Y5YjBlN2M1ZjBiMDI4MGNlZTY1
MjI4ZmRhZmNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEwLTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3B1c2gtYXBpLyNyZWNlaXZpbmctYS1wdXNoLW1lc3NhZ2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA3MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODM3NTk1NzQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMg
RHVtZXouCisKKyAgICAgICAgSW1wbGVtZW50IGZpcmluZyBhIGZ1bmN0aW9uYWwgZXZlbnQgYW5k
IHB1c2ggbWVzc2FnZSBzcGVjaWFsaXphdGlvbi4KKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVz
dC4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorCiAyMDIx
LTEwLTA2ICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbTVNFXVtHU3RyZWFtZXJdIEhvbm9yIE1QNCBlZGl0IGxpc3RzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYzYzY3
MGYyZjllMTFjZDViNGIxNmY1MmQ1NDI3YTNjNTU0MDUwZjkuLjIyNmYwZTFhMDY2YzJkMGY1MmQ1
OThkNjI3MzZhZjc0MzkzZWZmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMjEtMTAt
MDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCBodHRwczovL3czYy5naXRodWIuaW8vcHVzaC1hcGkvI3JlY2VpdmluZy1hLXB1c2gtbWVzc2Fn
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDcw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84Mzc1OTU3ND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBDaHJpcyBEdW1lei4KKworICAgICAgICBBZGQgdGVtcG9yYXJ5IFNQSSBpbiBXS1dlYnNpdGVE
YXRhU3RvcmUgdG8gYWxsb3cgcHVzaGluZyBtZXNzYWdlcyB0byBzZXJ2aWNlIHdvcmtlcnMuCisg
ICAgICAgIEl0IHRha2VzIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIGNoZWNrIHdoZXRoZXIgdGhl
IG1lc3NhZ2UgaXMgYWNrbm93bGVkZ2VkIG9yIG5vdC4KKyAgICAgICAgVGhlIHNlcnZpY2Ugd29y
a2VyIHJlZ2lzdHJhdGlvbiBpcyBpZGVudGlmaWVkIGJ5IGl0cyBzY29wZSBmb3Igbm93LgorICAg
ICAgICBBIGZldyBhZGRpdGlvbmFsIHRoaW5ncyBtaWdodCBuZWVkIHRvIGJlIGRvbmU6CisgICAg
ICAgIC0gVGhlIGNhc2Ugd2hlcmUgdGhlIHNlcnZpY2Ugd29ya2VyIGlzIGxhdW5jaGVkIHdpdGgg
bm8gY2xpZW50LgorICAgICAgICAtIEhhbmRsaW5nIG9mIGJhY2tncm91bmQgYXNzZXJ0aW9ucywg
ZXNwZWNpYWxseSBpZiBzZXJ2aWNlIHdvcmtlciBoYXMgbm8gY2xpZW50LgorICAgICAgICAtIE9w
dGltaXphdGlvbnM6IHNraXAgZXZlbnRzLCBvcHRpbWl6YXRpb24gb2YgbmV0d29yayBwcm9jZXNz
IGxhdW5jaCBieSBvbmx5IGxvYWRpbmcgdGhlIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbnMg
b2YgYW4gb3JpZ2luLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmUubW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorCiAyMDIxLTEw
LTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtCdWlsZC10
aW1lIHBlcmZdIEZvcndhcmQgZGVjbGFyZSBKUyBUeXBlZEFycmF5cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCBjNWJlZDA1
ZGQxOTY4ZDliOGQ5NzJhNGYwYmMyMzEyMjRjZDM1N2MxLi5jNGY2OGU0ZGY2NzkxOWQwYTMyNGU1
ZGUzMTQyNjQzNjNkN2Q1MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTQ2LDYgKzE0NiwxNCBAQCB2b2lkIFNXU2Vy
dmVyOjp3aGVuSW1wb3J0SXNDb21wbGV0ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNh
bGxiYWNrKQogICAgIG1faW1wb3J0Q29tcGxldGVkQ2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNh
bGxiYWNrKSk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXI6OndoZW5JbXBvcnRJc0NvbXBsZXRlZElmTmVl
ZGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAobV9p
bXBvcnRDb21wbGV0ZWQpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICB3aGVuSW1wb3J0SXNDb21wbGV0ZWQoV1RGTW92ZShjYWxsYmFjaykpOworfQog
CiB2b2lkIFNXU2VydmVyOjpyZWdpc3RyYXRpb25TdG9yZURhdGFiYXNlRmFpbGVkVG9PcGVuKCkK
IHsKQEAgLTExODUsNiArMTE5Myw4MCBAQCB2b2lkIFNXU2VydmVyOjpzb2Z0VXBkYXRlKFNXU2Vy
dmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiAgICAgc2NoZWR1bGVKb2IoV1RGTW92ZShq
b2JEYXRhKSk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXI6OnByb2Nlc3NQdXNoTWVzc2FnZShzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiBkYXRhLCBVUkwmJiByZWdpc3RyYXRpb25VUkwsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgd2hlbkltcG9y
dElzQ29tcGxldGVkSWZOZWVkZWQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyks
IGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCByZWdpc3RyYXRpb25VUkwgPSBXVEZNb3ZlKHJlZ2lzdHJh
dGlvblVSTCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5
T3JpZ2luRGF0YTo6ZnJvbVVSTChyZWdpc3RyYXRpb25VUkwpOworICAgICAgICBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSB7IFdURk1vdmUob3JpZ2luKSwgV1RG
TW92ZShyZWdpc3RyYXRpb25VUkwpIH07CisgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gbV9z
Y29wZVRvUmVnaXN0cmF0aW9uTWFwLmdldChyZWdpc3RyYXRpb25LZXkpOworICAgICAgICBpZiAo
IXJlZ2lzdHJhdGlvbikgeworICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvKiB3b3JrZXIgPSByZWdpc3RyYXRp
b24tPmFjdGl2ZVdvcmtlcigpOworICAgICAgICBpZiAoIXdvcmtlcikgeworICAgICAgICAgICAg
Y2FsbGJhY2sodHJ1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBmaXJlRnVuY3Rpb25hbEV2ZW50KCpyZWdpc3RyYXRpb24sIFtzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciA9IHdvcmtlci0+aWRlbnRpZmllcigpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGNvbm5lY3Rpb25PclN0YXR1cykgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoIWNvbm5lY3Rpb25PclN0YXR1cy5oYXNfdmFsdWUoKSkgewor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNvbm5lY3Rpb25PclN0YXR1cy5lcnJvcigpID09IFNo
b3VsZFNraXBFdmVudDo6WWVzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjb25uZWN0aW9uT3JTdGF0dXMudmFsdWUoKS0+ZmlyZVB1c2hFdmVu
dChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZGF0YSwgV1RGTW92ZShjYWxsYmFjaykpOworICAg
ICAgICB9KTsKKyAgICB9KTsKK30KKworLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VX
b3JrZXIvI2ZpcmUtZnVuY3Rpb25hbC1ldmVudC1hbGdvcml0aG0sIGp1c3QgZm9yIHB1c2ggcmln
aHQgbm93Lgordm9pZCBTV1NlcnZlcjo6ZmlyZUZ1bmN0aW9uYWxFdmVudChTV1NlcnZlclJlZ2lz
dHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiosIFNob3VsZFNraXBFdmVudD4pPiYmIGNhbGxiYWNr
KQoreworICAgIGF1dG8qIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5hY3RpdmVXb3JrZXIoKTsKKyAg
ICBpZiAoIXdvcmtlcikgeworICAgICAgICBjYWxsYmFjayhtYWtlVW5leHBlY3RlZChTaG91bGRT
a2lwRXZlbnQ6OlllcykpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6
IHdlIHNob3VsZCBjaGVjayB3aGV0aGVyIHdlIGNhbiBza2lwIHRoZSBldmVudCBhbmQgaWYgc2tp
cHBpbmcgZG8gYSBzb2Z0LXVwZGF0ZS4KKworICAgIHdvcmtlci0+d2hlbkFjdGl2YXRlZChbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCks
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCldKGJvb2wgc3Vj
Y2VzcykgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAgIGNh
bGxiYWNrKG1ha2VVbmV4cGVjdGVkKFNob3VsZFNraXBFdmVudDo6Tm8pKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghc3VjY2VzcykgeworICAgICAgICAg
ICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9ucy5nZXQocmVnaXN0cmF0
aW9uSWRlbnRpZmllcikpCisgICAgICAgICAgICAgICAgc29mdFVwZGF0ZSgqcmVnaXN0cmF0aW9u
KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKG1ha2VVbmV4cGVjdGVkKFNob3VsZFNraXBFdmVudDo6
Tm8pKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8qIHdv
cmtlciA9IHdvcmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgICAgICBpZiAo
IXdvcmtlcikgeworICAgICAgICAgICAgY2FsbGJhY2sobWFrZVVuZXhwZWN0ZWQoU2hvdWxkU2tp
cEV2ZW50OjpObykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKCF3b3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCkpCisgICAgICAgICAgICBjcmVhdGVDb250
ZXh0Q29ubmVjdGlvbih3b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCksIHdvcmtlci0+c2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkpOworCisgICAgICAgIHJ1blNlcnZpY2VXb3JrZXJJZk5l
Y2Vzc2FyeShzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlm
ICghY29udGV4dENvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhtYWtlVW5l
eHBlY3RlZChTaG91bGRTa2lwRXZlbnQ6Ok5vKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsbGJhY2soY29udGV4dENvbm5lY3Rpb24pOwor
ICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDhhOGQ0NjhkYzljYjdjYjIwYzlmYTkx
ZDAxZTA1NzBiOTgyZGYxMTQuLjBhYzMxNjcyMmFkOGY4MWUzYmUyNTRlMGFhNDc0MDhmNTlhZTg3
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmgKQEAgLTIyMSw2ICsyMjEsMTEgQEAgcHVibGljOgogICAgIExhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkIGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY29u
c3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICBib29sIHNob3VsZFJ1blNlcnZpY2VXb3JrZXJz
T25NYWluVGhyZWFkRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUnVuU2Vydmlj
ZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nOyB9CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHByb2Nlc3NQdXNoTWVzc2FnZShzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4mJiwg
VVJMJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworCisgICAgZW51bSBjbGFz
cyBTaG91bGRTa2lwRXZlbnQgOiBib29sIHsgTm8sIFllcyB9OworICAgIHZvaWQgZmlyZUZ1bmN0
aW9uYWxFdmVudChTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiwgU2hvdWxkU2tpcEV2ZW50Pik+
JiYpOworCiBwcml2YXRlOgogICAgIHZvaWQgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJKb2JUeXBlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIApAQCAtMjQ3LDYgKzI1Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJik7CiAKICAgICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhjb25z
dCBDbGllbnRPcmlnaW4mLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CisgICAgdm9p
ZCB3aGVuSW1wb3J0SXNDb21wbGV0ZWRJZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogCiAgICAgSGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5LCBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9z
Y29wZVRvUmVnaXN0cmF0aW9uTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKaW5kZXggODA4MmU5N2E1MmIwZjc4ODEyYTVmY2ZlYzMwN2ZmMTY1ZjkwNGIyNi4uNTIzNTU3
MzI3ODYzMGY3ODAzM2VkZWU5ODRhOWZjMDU1OWM0ZGQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiBpbXBvcnRl
ZFNjcmlwdHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgbWF0Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGZpcmVQdXNoRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY2FsbGJhY2spID0gMDsKIAogICAgIC8vIE1lc3NhZ2VzIGJhY2sgZnJvbSB0aGUgU1cg
aG9zdCBwcm9jZXNzCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVk
VG9TdGFydChjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
cj4mLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXgg
YjM5MjAwODk0ZjkwNDVhODQxYWNiNzk3NGI2NGI5ODE5OTdmMTNlMy4uMjVmZjExYmMyODA5MmUy
NWVjMjFhZTYyYWJkMTc4OGI5MGRiYTcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI1MTYsNiArMjUxNiwxNCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjphZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGJvb2wgcHJvYwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KGhhbmRsZSk7CiB9CisKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYgaXBjRGF0YSwgVVJM
JiYgcmVnaXN0cmF0aW9uVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxi
YWNrKQoreworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkYXRhOworICAgIGlm
IChpcGNEYXRhKQorICAgICAgICBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+IHsgaXBjRGF0YS0+ZGF0
YSgpLCBpcGNEYXRhLT5zaXplKCkgfTsKKyAgICBzd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklE
KS5wcm9jZXNzUHVzaE1lc3NhZ2UoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShyZWdpc3RyYXRpb25V
UkwpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHF1
b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90Pik+JiYgY2FsbGJhY2spCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNDMy
ZDRmYjNmZTVjZDgzY2IyZmEwZjliNjIxNTI1YTVjNzVkMDJmMy4uZTAyY2JkZjc4MDMxOGRiZDJm
YTBiMjA4Yzg2MDI4NjZkZmJjYTIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzk2LDYgKzM5NiwxMCBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGZ0cEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Z0cEVuYWJsZWQ7IH0KIAorI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIHByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNl
c3Npb25JRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiwgVVJMJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiNGEzMGYyZDU1
Njk5NDM0NGMwNDY1MDViOWMyN2Q0MmZlNDJiZWIzLi5jMDY2MWVjNTc0NmFmMzZmMzZjZTAzZWRl
ZjAyZGNlNjY4OTBhNzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIwNCw0ICsyMDQsOCBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKENGUFJF
RlNfRElSRUNUX01PREUpCiAgICAgTm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKFN0cmluZyBkb21h
aW4sIFN0cmluZyBrZXksIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBlbmNvZGVkVmFsdWUpCiAjZW5k
aWYKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBQcm9jZXNzUHVzaE1lc3NhZ2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5j
ZT4gZGF0YSwgVVJMIHJlZ2lzdHJhdGlvblVSTCkgLT4gKGJvb2wgZGlkU3VjY2VlZCkgQXN5bmMK
KyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcAppbmRleCBkOTJmMzI3YTEyNTFjM2RhYTk4ZjU1NmE2MTZjYTg4YzkwOTkwMWU3
Li5lMDg5NDRiYzMxYjNjM2ZjZTgwMTQ3Y2ZlZWZlMjljZTgwYzg1MWNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTA3LDYg
KzEwNywxNCBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmlyZUFjdGl2
YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgcwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaXJlQWN0aXZhdGVFdmVudChzZXJ2aWNlV29y
a2VySWRlbnRpZmllcikpOwogfQogCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6ZmlyZVB1c2hFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+JiBk
YXRhLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIHN0
ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBpcGNEYXRhOworICAgIGlmIChkYXRhKQor
ICAgICAgICBpcGNEYXRhID0gSVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkgfTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpGaXJlUHVzaEV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBpcGNEYXRhKSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCiB2b2lkIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogewogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVXb3JrZXIoc2VydmljZVdvcmtlcklkZW50
aWZpZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaAppbmRleCA3ZjZiZjYxMThkNGM3OTVjMzU5NjJkNTVhYWRmNTZkODNlMmRmYjhhLi4wNTcz
YmY2NDYzM2M1YmU1MDE0YThkY2JiM2Q3ODIxYzk1NzE5YmMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC05Myw2ICs5Myw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJiwgY29uc3QgSGFzaE1h
cDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4mIGltcG9ydGVkU2NyaXB0cykgZmluYWw7CiAg
ICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJ
ZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikgZmluYWw7CiAgICAgdm9pZCBtYXRjaEFs
bENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYpIGZpbmFsOworICAgIHZvaWQgZmlyZVB1c2hF
dmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmlu
YWw7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkgZmluYWw7CiAgICAg
dm9pZCB0ZXJtaW5hdGVEdWVUb1VucmVzcG9uc2l2ZW5lc3MoKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CmluZGV4IDQxYWIyZDA3NWJlM2ZhM2Q3ZDlhYzRlZWNlY2IzNzBkZTNiZjlkMjYuLmVjN2NkNTVj
ZWNmYWE3ODA3OGQwNTgzNzlmY2Y2OTk5OTQzMmEyMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNzUz
LDQgKzc1MywxNiBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRv
V2Vic2l0ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogICAgIH0pOwogfQogCistKHZv
aWQpX3Byb2Nlc3NQdXNoTWVzc2FnZTooTlNEYXRhKikgbWVzc2FnZSByZWdpc3RyYXRpb246KE5T
VVJMICopcmVnaXN0cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKGJvb2wgd2FzUHJv
Y2Vzc2VkKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
KyAgICBzdGQ6Om9wdGlvbmFsPFNwYW48Y29uc3QgdWludDhfdD4+IGRhdGE7CisgICAgaWYgKG1l
c3NhZ2UpCisgICAgICAgIGRhdGEgPSBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4obWVzc2FnZS5ieXRlcyksIG1lc3NhZ2UubGVuZ3RoIH07Cisg
ICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkucHJvY2Vzc1B1c2hNZXNzYWdl
KF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgZGF0YSwgcmVnaXN0cmF0aW9uLCBbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB3
YXNQcm9jZXNzZWQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2FzUHJvY2Vzc2VkKTsK
KyAgICB9KTsKKyNlbmRpZgorfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRl
eCBlNzVmYzZhMjM4MWY2MTliMGU3MDgwNDBmZjQ5YzNhNTQwYWNlODc5Li5lM2U1NTU4ZDU1YmNk
MDY4Y2FmOWI3Yjk5MzI3YmE0NjhjZTJkZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgK
QEAgLTEwNiw2ICsxMDYsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vi
c2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogKyAoQk9PTClfZGVmYXVsdE5ldHdvcmtQcm9j
ZXNzRXhpc3RzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CiAtICh2
b2lkKV9jb3VudE5vbkRlZmF1bHRTZXNzaW9uU2V0czoodm9pZCheKShzaXplX3QpKWNvbXBsZXRp
b25IYW5kbGVyOwogCistKHZvaWQpX3Byb2Nlc3NQdXNoTWVzc2FnZTooTlNEYXRhKilkYXRhIHJl
Z2lzdHJhdGlvbjooTlNVUkwgKilyZWdpc3RyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoYm9vbCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IGZkM2E1NDI3N2ZlYTI3NzMzZjliNzMxOWI0ZTA2OGUzN2EzYmZm
ZGIuLjAwZDI4NDA3ZmQ3NjA5YzZhMTgyMjU1Yzg4ZTc4YjhkMDY4MTAxOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcApAQCAtMTYzMSw2ICsxNjMxLDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlk
RXhjZWVkTWVtb3J5TGltaXQoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8U3Bhbjxjb25zdCB1aW50OF90Pj4gZGF0
YSwgY29uc3QgVVJMJiByZWdpc3RyYXRpb25VUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCB3YXNQcm9jZXNzZWQpPiYmIGNhbGxiYWNrKQoreworICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpE
YXRhUmVmZXJlbmNlPiBpcGNEYXRhOworICAgIGlmIChkYXRhKQorICAgICAgICBpcGNEYXRhID0g
SVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfTsKKyAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9jZXNzUHVzaE1l
c3NhZ2UgeyBzZXNzaW9uSUQsIGlwY0RhdGEsIHJlZ2lzdHJhdGlvblVSTCB9LCBXVEZNb3ZlKGNh
bGxiYWNrKSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggN2Fl
NmU5ZWEzMDJjYjdmNzcwM2Y4NTU4MzU1MTZlZGQ2NTFkZjE0ZC4uNzgwNmI3MmMyODMyNmI1YWY2
M2MxMGY1MWZhODlmMzZkZGRkOTc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTI3MSw2ICsyNzEsMTAgQEAg
cHVibGljOgogICAgIHhwY19vYmplY3RfdCB4cGNFbmRwb2ludE1lc3NhZ2UoKSBjb25zdCB7IHJl
dHVybiBtX2VuZHBvaW50TWVzc2FnZS5nZXQoKTsgfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisgICAgdm9pZCBwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQs
IHN0ZDo6b3B0aW9uYWw8U3Bhbjxjb25zdCB1aW50OF90Pj4sIGNvbnN0IFVSTCYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCB3YXNQcm9jZXNzZWQpPiYmKTsKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IE5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDMwOWFlOWU0ZDIyZGIyYzNjYzgzZDU5NmU2ZDgyZjk3
N2VhOGQxMDMuLjRlYjgwZGQwZTBiMjA5NGI5MzJjZjMzNTYwNTkyZWU5ZDkxOTAyNTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTI3Miw2ICsyNzIsMTQgQEAgdm9p
ZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZUFjdGl2YXRlRXZlbnQoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgaWQKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5m
aXJlQWN0aXZhdGVFdmVudChpZGVudGlmaWVyKTsKIH0KIAordm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6ZmlyZVB1c2hFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mIGlwY0RhdGEs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRhdGE7CisgICAgaWYgKGlwY0RhdGEpCisgICAgICAg
IGRhdGEgPSBWZWN0b3I8dWludDhfdD4geyBpcGNEYXRhLT5kYXRhKCksIGlwY0RhdGEtPnNpemUo
KSB9OworICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVQdXNoRXZlbnQoaWRl
bnRpZmllciwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCiB2b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS50ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllciwgU1dDb250ZXh0TWFuYWdlcjo6d29ya2Vy
VGVybWluYXRpb25UaW1lb3V0LCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oCmluZGV4IDQ3NjUyMGZhMjBiOWYwMDZkMzQ1OTBjZWQ5YmI2M2UxODU2NjhjMzkuLjlkOGIy
N2UwYzViYzYwM2I2MzY0NzhlNTNhNjYwZWM0MmNjMmI1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSAiSWRlbnRpZmllclR5cGVzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSAiTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCIKQEAgLTk1LDYgKzk2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV2ViQ29y
ZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xp
ZW50RGF0YSYmIHNvdXJjZURhdGEpOwogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgdm9pZCBmaXJlUHVzaEV2ZW50
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBzdGQ6Om9wdGlvbmFsPElQ
Qzo6RGF0YVJlZmVyZW5jZT4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCiAgICAg
dm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJiYsIEhhc2hNYXA8VVJMLCBXZWJDb3JlOjpTY3JpcHRC
dWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggMjVhYzEzNjg4Yzc4ZDkzNGM0MmQ0MzQ4ZjdiYWE4
NGYzZGEyNTZhOC4uMTU0ZmFiZDM1NDk2ZWJjZmJhMTViNzJjYjVhN2FiNWVkNzM3Nzk2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMx
LDYgKzMxLDggQEAgbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90
UmVmQ291bnRlZCB7CiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29y
ZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtl
ck9yQ2xpZW50RGF0YSBzb3VyY2VEYXRhKQogICAgIEZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBGaXJlQWN0aXZhdGVFdmVu
dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIEZpcmVQ
dXNoRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc3Rk
OjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGRhdGEpIC0+IChib29sIHJlc3VsdCkgQXN5
bmMKKwogICAgIFRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyKQogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JN
KENPQ09BKQogICAgIERpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXIg
c2NyaXB0LCBIYXNoTWFwPFVSTCwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBpbXBvcnRlZFNjcmlw
dHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDgxYTM3YjdjMWQyZTM1NGNiZmViODdjODUxNWNmM2RiOTUyYzBlZjYuLjcwNTNhNmNjNGJkYjdh
Njk1MDE5YmJiODZmZWVjMWRjYTg2NGEyZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMC0wNiAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby9wdXNoLWFwaS8jcmVjZWl2aW5nLWEtcHVzaC1tZXNzYWdlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzEwNzAKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzgzNzU5NTc0PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1
bWV6LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9QdXNoQVBJLm1tOiBBZGRlZC4KKwogMjAyMS0xMC0wNiAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBUZXN0SlNDIGluY29y
cmVjdGx5IGV4cGVjdHMgZ2FyYmFnZSBjb2xsZWN0b3IgdG8gY29sbGVjdCB2YXJpYWJsZXMgc3Rp
bGwgb24gdGhlIHN0YWNrCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY5ZGRjZDBiMGZkMjlk
MDEwODBjZjU2OGUwNjRiMjNiNGFmMmViZDQuLmFjN2JmZGYyZTY2ZmI4MzI5YWJkNWNiYWUyY2Jm
MTI1M2MxZTY4MmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjAsNiArMjYwLDcgQEAK
IAkJNDE4MUM2MkQyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVz
dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4
MUM2MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3Bw
ICovOyB9OwogCQk0MTg0OEY0NDI0ODkxODc5MDAwRTI1ODggLyogb3Blbi13aW5kb3ctd2l0aC1m
aWxlLXVybC13aXRoLWhvc3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg0OEY0MzI0ODkxODE1MDAwRTI1ODggLyogb3Blbi13aW5k
b3ctd2l0aC1maWxlLXVybC13aXRoLWhvc3QuaHRtbCAqLzsgfTsKIAkJNDE4ODJGMDMyMTAxMEMw
RDAwMkZGMjg4IC8qIFByb2Nlc3NQcmVXYXJtaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4ODJGMDIyMTAxMEE3MDAwMkZGMjg4IC8qIFByb2Nl
c3NQcmVXYXJtaW5nLm1tICovOyB9OworCQk0MThGQ0JENjI3MDcwNjYxMDBGOTZFQ0EgLyogUHVz
aEFQSS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
OEZDQkQ1MjcwNzA2NjEwMEY5NkVDQSAvKiBQdXNoQVBJLm1tICovOyB9OwogCQk0MUU2N0E4NTI1
RDE2RTgzMDA3QjBBNEMgLyogU1RVTk1lc3NhZ2VQYXJzaW5nVGVzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MUU2N0E4NDI1RDE2RTgzMDA3QjBB
NEMgLyogU1RVTk1lc3NhZ2VQYXJzaW5nVGVzdC5jcHAgKi87IH07CiAJCTQ0MDc3QkIxMjMxNDRC
NTAwMDE3OUUyRCAvKiBEYXRhRGV0ZWN0b3JzVGVzdElPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MDc3QkIwMjMxNDQ5RDIwMDE3OUUyRCAvKiBE
YXRhRGV0ZWN0b3JzVGVzdElPUy5tbSAqLzsgfTsKIAkJNDQzM0EzOTYyMDgwNDQxNDAwOTFFRDU3
IC8qIFN5bmNocm9ub3VzVGltZW91dFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDQzM0EzOTUyMDgwNDQxMzAwOTFFRDU3IC8qIFN5bmNocm9u
b3VzVGltZW91dFRlc3RzLm1tICovOyB9OwpAQCAtMjEwMCw2ICsyMTAxLDcgQEAKIAkJNDE4MUM2
MkMyNTVBODkxMTAwQUVCMEZGIC8qIFJUQ1J0cFNGcmFtZVRyYW5zZm9ybWVyVGVzdHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwU0ZyYW1lVHJhbnNmb3Jt
ZXJUZXN0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODQ4RjQzMjQ4OTE4
MTUwMDBFMjU4OCAvKiBvcGVuLXdpbmRvdy13aXRoLWZpbGUtdXJsLXdpdGgtaG9zdC5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm9wZW4td2luZG93LXdpdGgtZmlsZS11cmwtd2l0
aC1ob3N0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg4MkYwMjIxMDEw
QTcwMDAyRkYyODggLyogUHJvY2Vzc1ByZVdhcm1pbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzUHJlV2FybWluZy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDE4RkNCRDUyNzA3MDY2MTAwRjk2RUNBIC8qIFB1c2hBUEkubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQdXNoQVBJLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTk3M0I1QzFBRjIyODc1MDA2QzdCMzYgLyogU2hhcmVk
QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZEJ1
ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQkFGNEUyMjVBQzlEQjgw
MEQ4MkYzMiAvKiBnZXRVc2VyTWVkaWEyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSBnZXRVc2VyTWVkaWEyLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTY3
QTg0MjVEMTZFODMwMDdCMEE0QyAvKiBTVFVOTWVzc2FnZVBhcnNpbmdUZXN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNUVU5NZXNzYWdlUGFyc2luZ1Rlc3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzYwMyw2ICszNjA1LDcgQEAKIAkJCQk1
MThDMTE1MjIwNUIwNEY5MDAxRkY0QUUgLyogUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gKi8s
CiAJCQkJNTc5OEUyQUYxQ0FGNUMyODAwQzVDQkEwIC8qIFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdl
Lm1tICovLAogCQkJCTVDRkFDRjY0MjI2RkQxRkIwMDU2QzdEMCAvKiBQcm94eS5tbSAqLywKKwkJ
CQk0MThGQ0JENTI3MDcwNjYxMDBGOTZFQ0EgLyogUHVzaEFQSS5tbSAqLywKIAkJCQlBMUM0RkI2
QzFCQUNDRTUwMDAzNzQyRDAgLyogUXVpY2tMb29rLm1tICovLAogCQkJCTJEMkZFOEQ3MjMxNUYw
NkQwMEIyRTlDOSAvKiBSZWxvYWRXaXRoRGlmZmVyaW5nSW5pdGlhbFNjYWxlLm1tICovLAogCQkJ
CTFBNEY4MUQwMUJERkZEQ0YwMDRFNjcyRSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeS5oICovLApA
QCAtNTc3OCw2ICs1NzgxLDcgQEAKIAkJCQk3QzgzRTBDMTFEMEE2NTJGMDBGRUJDRjMgLyogUHJv
dmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0ZBQ0Y2NTIyNkZE
MkRDMDA1NkM3RDAgLyogUHJveHkubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNDFBMUUzNDIxNkZG
REJDMDA3ODlFMEEgLyogUHVibGljU3VmZml4LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxOEZD
QkQ2MjcwNzA2NjEwMEY5NkVDQSAvKiBQdXNoQVBJLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0UwQzIxRDBBNjUzNTAwRkVCQ0YzIC8qIFF1aWNrTG9vay5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTZCNEU4NjFDMjIyMEE1NTIwMDIyRjM4OSAvKiBSZWdpc3RyYWJsZURvbWFpbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0YwRDFBNDExQUU2MDA0NDdDNEMgLyogUmVsb2FkUGFnZUFmdGVy
Q3Jhc2guY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1B1c2hBUEkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTMyNjJhNzgwNjYyYTQ3NmFjMGQx
ZTM0NmVkNGNiZjQwMGNjZjc1NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbQpAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCisjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUu
aD4KKworc3RhdGljIGJvb2wgZG9uZTsKK3N0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNzYWdlOwor
CitAaW50ZXJmYWNlIFB1c2hBUElNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgOiBO
U09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFB1c2hBUElNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UKKy0gKHZvaWQpdXNlckNv
bnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29u
dHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2Fn
ZQoreworICAgIEVYUEVDVF9XS19TVFJFUShtZXNzYWdlLmJvZHksIGV4cGVjdGVkTWVzc2FnZSk7
CisgICAgZG9uZSA9IHRydWU7Cit9CitAZW5kCisKKy8vIEZJWE1FOiBVcGRhdGUgdGhlIHRlc3Qg
dG8gZG8gc3Vic2NyaXB0aW9uIGJlZm9yZSBwdXNoaW5nIG1lc3NhZ2UuCitzdGF0aWMgY29uc3Qg
Y2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyht
c2cpCit7CisgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuc3cucG9zdE1lc3NhZ2Uo
bXNnKTsKK30KKworY29uc3QgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworY2hhbm5l
bC5wb3J0MS5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IGxvZyhldmVudC5kYXRhKTsKKworbmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oKHJlZ2lzdHJhdGlvbikg
PT4geworICAgIGlmIChyZWdpc3RyYXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlv
bi5hY3RpdmUucG9zdE1lc3NhZ2Uoe3BvcnQ6IGNoYW5uZWwucG9ydDJ9LCBbY2hhbm5lbC5wb3J0
Ml0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5p
bnN0YWxsaW5nOworICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1
bmN0aW9uKCkgeworICAgICAgICBpZiAod29ya2VyLnN0YXRlID09ICdhY3RpdmF0ZWQnKQorICAg
ICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtwb3J0OiBjaGFubmVsLnBvcnQyfSwgW2NoYW5u
ZWwucG9ydDJdKTsKKyAgICB9KTsKK30pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgbG9n
KCJSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICIgKyBlcnJvcik7Cit9KTsKKzwvc2NyaXB0Pgor
KVNXUkVTT1VSQ0UiOworCitzdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVT
T1VSQ0UoCitsZXQgcG9ydDsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVu
dCkgPT4geworICAgIHBvcnQgPSBldmVudC5kYXRhLnBvcnQ7CisgICAgcG9ydC5wb3N0TWVzc2Fn
ZSgiUmVhZHkiKTsKK30pOworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwgKGV2ZW50KSA9
PiB7CisgICAgdHJ5IHsKKyAgICAgICAgaWYgKCFldmVudC5kYXRhKSB7CisgICAgICAgICAgICBw
b3J0LnBvc3RNZXNzYWdlKCJSZWNlaXZlZDogbnVsbCBkYXRhIik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgdmFsdWUgPSBldmVudC5kYXRhLnRleHQoKTsK
KyAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVjZWl2ZWQ6ICIgKyB2YWx1ZSk7CisgICAgICAg
IGlmICh2YWx1ZSAhPSAnU3dlZXQgUG90YXRvZXMnKQorICAgICAgICAgICAgZXZlbnQud2FpdFVu
dGlsKFByb21pc2UucmVqZWN0KCdJIHdhbnQgc3dlZXQgcG90YXRvZXMnKSk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKCJHb3QgZXhjZXB0aW9uICIgKyBlKTsK
KyAgICB9Cit9KTsKKylTV1JFU09VUkNFIjsKKworc3RhdGljIGJvb2wgcHVzaE1lc3NhZ2VQcm9j
ZXNzZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNl
OworVEVTVChQdXNoQVBJLCBmaXJlUHVzaEV2ZW50KQoreworICAgIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfSwKKyAgICAg
ICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiIH19LCBzY3JpcHRCeXRlcyB9IH0KKyAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cCk7CisKKyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNp
dGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1
dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUHVzaEFQSU1lc3NhZ2VIYW5kbGVyV2l0aEV4
cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdl
dCgpIG5hbWU6QCJzdyJdOworCisgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVd
IHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBl
c10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpe
KCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGV4cGVjdGVkTWVzc2Fn
ZSA9ICJSZWFkeSI7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIu
cmVxdWVzdCgpXTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAg
ICBkb25lID0gZmFsc2U7CisgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsKKyAgICBw
dXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKKyAgICBOU1N0cmluZyAqbWVzc2FnZSA9IEAi
U3dlZXQgUG90YXRvZXMiOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJSZWNlaXZlZDogU3dlZXQg
UG90YXRvZXMiOworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vz
c1B1c2hNZXNzYWdlOlttZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXSByZWdpc3RyYXRpb246W3NlcnZlci5yZXF1ZXN0KCkgVVJMXSBjb21wbGV0aW9uSGFuZGxl
cjpeKGJvb2wgcmVzdWx0KSB7CisgICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3Vs
dDsKKyAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnB1c2hNZXNzYWdlUHJvY2Vzc2VkKTsKKyAgICBFWFBFQ1RfVFJVRShwdXNoTWVzc2Fn
ZVN1Y2Nlc3NmdWwpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIHB1c2hNZXNzYWdlUHJvY2Vz
c2VkID0gZmFsc2U7CisgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gZmFsc2U7CisgICAgbWVz
c2FnZSA9IEAiUm90dGVuIFBvdGF0b2VzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiUmVjZWl2
ZWQ6IFJvdHRlbiBQb3RhdG9lcyI7CisgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3Rv
cmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6W21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddIHJlZ2lzdHJhdGlvbjpbc2VydmVyLnJlcXVlc3QoKSBVUkxdIGNvbXBs
ZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsKKyAgICAgICAgcHVzaE1lc3NhZ2VTdWNjZXNz
ZnVsID0gcmVzdWx0OworICAgICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmcHVzaE1lc3NhZ2VQcm9jZXNzZWQpOworICAgIEVYUEVDVF9GQUxT
RShwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwpOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>