<?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>229465</bug_id>
          
          <creation_ts>2021-08-24 13:47:39 -0700</creation_ts>
          <short_desc>[WK2] Reuse the same network load when process-swapping on resource response due to COOP</short_desc>
          <delta_ts>2021-08-27 11:09:07 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>229203</dependson>
          <blocked>228755</blocked>
    
    <blocked>229559</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>hi</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>mkwst</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1786911</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-24 13:47:39 -0700</bug_when>
    <thetext>Reuse the same network load when process-swapping on resource response due to COOP, to avoid going to the server a second time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786912</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-24 13:48:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/82307611&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786946</commentid>
    <comment_count>2</comment_count>
      <attachid>436334</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-24 14:43:24 -0700</bug_when>
    <thetext>Created attachment 436334
API Test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787195</commentid>
    <comment_count>3</comment_count>
      <attachid>436399</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-25 10:06:58 -0700</bug_when>
    <thetext>Created attachment 436399
WIP patch

Does not support custom scheme handlers and there are issues with service workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787272</commentid>
    <comment_count>4</comment_count>
      <attachid>436414</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-25 13:25:45 -0700</bug_when>
    <thetext>Created attachment 436414
WIP patch

Should take care of service worker issues.

Still need to support scheme handlers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787283</commentid>
    <comment_count>5</comment_count>
      <attachid>436417</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-25 13:38:40 -0700</bug_when>
    <thetext>Created attachment 436417
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787343</commentid>
    <comment_count>6</comment_count>
      <attachid>436430</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-25 15:06:56 -0700</bug_when>
    <thetext>Created attachment 436430
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787362</commentid>
    <comment_count>7</comment_count>
      <attachid>436432</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-25 15:50:24 -0700</bug_when>
    <thetext>Created attachment 436432
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787373</commentid>
    <comment_count>8</comment_count>
      <attachid>436436</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-25 16:31:48 -0700</bug_when>
    <thetext>Created attachment 436436
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787594</commentid>
    <comment_count>9</comment_count>
      <attachid>436511</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-26 08:01:44 -0700</bug_when>
    <thetext>Created attachment 436511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787747</commentid>
    <comment_count>10</comment_count>
      <attachid>436511</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-26 12:44:39 -0700</bug_when>
    <thetext>Comment on attachment 436511
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:1286
&gt; +    return m_networkResourceLoaders.take(resourceLoadIdentifier);

What about if resourceLoadIdentifier is the empty or deleted value? Which level prevents that from happening?

Same question about other places we do hash table access with identifiers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787748</commentid>
    <comment_count>11</comment_count>
      <attachid>436511</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-26 12:50:17 -0700</bug_when>
    <thetext>Comment on attachment 436511
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2853
&gt; +    auto loader = connection-&gt;takeNetworkResourceLoader(resourceLoadIdentifier);

resourceLoadIdentifier is passed here. PrepareLoadForWebProcessTransfer gets called as a result as an IPC from the UIProcess (not the WebProcess), therefore, it is trusted IPC.

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:481
&gt; +    if (!resourceLoadIdentifier) {

And before sending the PrepareLoadForWebProcessTransfer IPC, the UIProcess makes sure that resourceLoadIdentifier is valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787750</commentid>
    <comment_count>12</comment_count>
      <attachid>436511</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-26 12:51:44 -0700</bug_when>
    <thetext>Comment on attachment 436511
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:513
&gt; +        if (auto existingLoader = networkProcess().takeLoaderAwaitingWebProcessTransfer(*existingLoaderToResume)) {

Here existingLoaderToResume comes from IPC from the WebProcess and is thus untrusted. However, we are using a NetworkResourceLoadIdentifier strongly typed identifier, which would fail decoding over IPC if invalid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787753</commentid>
    <comment_count>13</comment_count>
      <attachid>436511</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-26 13:00:35 -0700</bug_when>
    <thetext>Comment on attachment 436511
Patch

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

&gt;&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:481
&gt;&gt; +    if (!resourceLoadIdentifier) {
&gt; 
&gt; And before sending the PrepareLoadForWebProcessTransfer IPC, the UIProcess makes sure that resourceLoadIdentifier is valid.

The above quoted code checks for 0, but not for the deleted value. Is that OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787754</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-26 13:02:46 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; Comment on attachment 436511 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=436511&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:481
&gt; &gt;&gt; +    if (!resourceLoadIdentifier) {
&gt; &gt; 
&gt; &gt; And before sending the PrepareLoadForWebProcessTransfer IPC, the UIProcess makes sure that resourceLoadIdentifier is valid.
&gt; 
&gt; The above quoted code checks for 0, but not for the deleted value. Is that
&gt; OK?

No it isn&apos;t. I&apos;ll fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787756</commentid>
    <comment_count>15</comment_count>
      <attachid>436553</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-26 13:08:16 -0700</bug_when>
    <thetext>Created attachment 436553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787764</commentid>
    <comment_count>16</comment_count>
      <attachid>436556</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-26 13:21:11 -0700</bug_when>
    <thetext>Created attachment 436556
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787767</commentid>
    <comment_count>17</comment_count>
      <attachid>436556</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-26 13:21:57 -0700</bug_when>
    <thetext>Comment on attachment 436556
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:1286
&gt; +    if (!NetworkResourceLoadMap::MapType::isValidKey(resourceLoadIdentifier))

I added ID validation here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787889</commentid>
    <comment_count>18</comment_count>
      <attachid>436556</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-08-26 17:30:52 -0700</bug_when>
    <thetext>Comment on attachment 436556
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:620
&gt; +        Ref&lt;NetworkResourceLoader&gt; takeLoader();

There&apos;s no benefit in making this return a Ref.  It should return a RefPtr.  Then we don&apos;t need an unchecked m_loader.releaseNonNull.  If you want the assertion, ASSERT(m_loader);

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:627
&gt; +    HashMap&lt;NetworkResourceLoadIdentifier, std::unique_ptr&lt;CachedNetworkResourceLoader&gt;&gt; m_loadersAwaitingWebProcessTransfer;

I think this should be owned by the NetworkSession to compartmentalize things a little bit more.  There isn&apos;t a good reason this needs to be process-global.

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoader.h:217
&gt; +    NetworkResourceLoadParameters m_parameters;

I think I&apos;d prefer to mark m_parameters.identifier as mutable rather than this, which indicates that any member can be mutated.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.h:95
&gt; +    void setExistingNetworkResourceLoadIdentifierToResume(std::optional&lt;NetworkResourceLoadIdentifier&gt; existingNetworkResourceLoadIdentifierToResume) { m_existingNetworkResourceLoadIdentifierToResume = existingNetworkResourceLoadIdentifierToResume; }

This is kind of a verbose name already, but shouldn&apos;t this indicate that it is only for the main resource of the main frame?

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:852
&gt; +    uint64_t mainResourceLoadIdentifier = policyDocumentLoader &amp;&amp; policyDocumentLoader-&gt;mainResourceLoader() ? policyDocumentLoader-&gt;mainResourceLoader()-&gt;identifier() : 0;

ResourceLoader::identifier returns an unsigned long.  Would auto work here?
Add FIXME: use a strongly typed identifier.  We don&apos;t want to merge that refactoring, but we need to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788019</commentid>
    <comment_count>19</comment_count>
      <attachid>436626</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-27 08:03:14 -0700</bug_when>
    <thetext>Created attachment 436626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788020</commentid>
    <comment_count>20</comment_count>
      <attachid>436627</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-27 08:08:44 -0700</bug_when>
    <thetext>Created attachment 436627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788053</commentid>
    <comment_count>21</comment_count>
      <attachid>436638</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-27 10:04:57 -0700</bug_when>
    <thetext>Created attachment 436638
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788075</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-27 11:09:04 -0700</bug_when>
    <thetext>Committed r281706 (241053@main): &lt;https://commits.webkit.org/241053@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436638.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436334</attachid>
            <date>2021-08-24 14:43:24 -0700</date>
            <delta_ts>2021-08-25 10:06:58 -0700</delta_ts>
            <desc>API Test</desc>
            <filename>229465_COOP_Process_Swap_Reuse_NetworkLoad_wip.patch</filename>
            <type>text/plain</type>
            <size>4547</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vz
c1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IDQwYTA4MjIxNzA3My4uNDcxODNi
ZTEyOWEyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTUyLDYgKzUyLDcg
QEAKICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgog
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvRGVxdWUuaD4KKyNpbXBvcnQg
PHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0yNTMsNiArMjU0
LDcgQEAgQGludGVyZmFjZSBQU09OU2NoZW1lIDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFuZGxl
cj4gewogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IF9jb29wVmFsdWVzOwogICAgIEhhc2hT
ZXQ8aWQgPFdLVVJMU2NoZW1lVGFzaz4+IF9ydW5uaW5nVGFza3M7CiAgICAgYm9vbCBfc2hvdWxk
UmVzcG9uZEFzeW5jaHJvbm91c2x5OworICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gX3JlcXVl
c3RDb3VudHM7CiB9CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhCeXRlczooY29uc3QgY2hhciop
Ynl0ZXM7CiAtICh2b2lkKWFkZFJlZGlyZWN0RnJvbVVSTFN0cmluZzooTlNTdHJpbmcgKilzb3Vy
Y2VVUkxTdHJpbmcgdG9VUkxTdHJpbmc6KE5TU3RyaW5nICopZGVzdGluYXRpb25VUkxTdHJpbmc7
CkBAIC0yOTEsNiArMjkzLDExIEBAIC0gKHZvaWQpc2V0U2hvdWxkUmVzcG9uZEFzeW5jaHJvbm91
c2x5OihCT09MKXZhbHVlCiAgICAgX3Nob3VsZFJlc3BvbmRBc3luY2hyb25vdXNseSA9IHZhbHVl
OwogfQogCistICh1bnNpZ25lZClyZXF1ZXN0Q291bnQ6KE5TU3RyaW5nICopdXJsU3RyaW5nCit7
CisgICAgcmV0dXJuIF9yZXF1ZXN0Q291bnRzLmNvdW50KHVybFN0cmluZyk7Cit9CisKIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxX
S1VSTFNjaGVtZVRhc2s+KXRhc2sKIHsKICAgICBpZiAoWyhpZDxXS1VSTFNjaGVtZVRhc2tQcml2
YXRlPil0YXNrIF9yZXF1ZXN0T25seUlmQ2FjaGVkXSkgewpAQCAtMzEwLDExICszMTcsMTQgQEAg
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazoo
aWQgPFdLVVJMU2NoZW1lVGFzaz4pdGEKICAgICB9OwogCiAgICAgTlNVUkwgKmZpbmFsVVJMID0g
dGFzay5yZXF1ZXN0LlVSTDsKKyAgICBfcmVxdWVzdENvdW50cy5hZGQoW2ZpbmFsVVJMIGFic29s
dXRlU3RyaW5nXSk7CisKICAgICBhdXRvIHRhcmdldCA9IF9yZWRpcmVjdHMuZ2V0KHRhc2sucmVx
dWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOwogICAgIGlmICghdGFyZ2V0LmlzRW1wdHkoKSkgewog
ICAgICAgICBhdXRvIHJlZGlyZWN0UmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBh
bGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpuaWwgZXhwZWN0ZWRD
b250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKIAogICAgICAgICBmaW5hbFVS
TCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKXRhcmdldF07CisgICAgICAgIF9y
ZXF1ZXN0Q291bnRzLmFkZChbZmluYWxVUkwgYWJzb2x1dGVTdHJpbmddKTsKICAgICAgICAgYXV0
byByZXF1ZXN0ID0gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6Zmlu
YWxVUkxdKTsKIAogICAgICAgICBbKGlkPFdLVVJMU2NoZW1lVGFza1ByaXZhdGU+KXRhc2sgX2Rp
ZFBlcmZvcm1SZWRpcmVjdGlvbjpyZWRpcmVjdFJlc3BvbnNlLmdldCgpIG5ld1JlcXVlc3Q6cmVx
dWVzdC5nZXQoKV07CkBAIC03MjA3LDIwICs3MjE3LDI3IEBAIHN0YXRpYyB2b2lkIHJ1bkNPT1BQ
cm9jZXNzU3dhcFRlc3QoY29uc3QgY2hhciogc291cmNlQ09PUCwgY29uc3QgY2hhciogZGVzdGlu
YXRpCiAgICAgfQogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxs
b2NdIGluaXRdKTsKKyAgICBOU1N0cmluZyogcG9wdXBVUkxTdHJpbmc7CiAgICAgaWYgKGlzU2Ft
ZU9yaWdpbiA9PSBJc1NhbWVPcmlnaW46OlllcykgewogICAgICAgICBbaGFuZGxlciBhZGRNYXBw
aW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiIHRvRGF0
YTp3aW5kb3dPcGVuU2FtZU9yaWdpbkNPT1BUZXN0Qnl0ZXMgd2l0aENPT1BWYWx1ZTpzb3VyY2VD
T09QXTsKICAgICAgICAgaWYgKGRvU2VydmVyU2lkZVJlZGlyZWN0ID09IERvU2VydmVyU2lkZVJl
ZGlyZWN0OjpZZXMpIHsKICAgICAgICAgICAgIFtoYW5kbGVyIGFkZFJlZGlyZWN0RnJvbVVSTFN0
cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9wb3B1cC5odG1sIiB0b1VSTFN0cmluZzpAInBz
b246Ly93d3cud2Via2l0Lm9yZy9wb3B1cC1hZnRlci1yZWRpcmVjdC5odG1sIl07CiAgICAgICAg
ICAgICBbaGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cud2Via2l0
Lm9yZy9wb3B1cC1hZnRlci1yZWRpcmVjdC5odG1sIiB0b0RhdGE6InBvcHVwIiB3aXRoQ09PUFZh
bHVlOmRlc3RpbmF0aW9uQ09PUF07Ci0gICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcG9wdXBV
UkxTdHJpbmcgPSBAInBzb246Ly93d3cud2Via2l0Lm9yZy9wb3B1cC1hZnRlci1yZWRpcmVjdC5o
dG1sIjsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdG
cm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL3BvcHVwLmh0bWwiIHRvRGF0YToi
cG9wdXAiIHdpdGhDT09QVmFsdWU6ZGVzdGluYXRpb25DT09QXTsKKyAgICAgICAgICAgIHBvcHVw
VVJMU3RyaW5nID0gQCJwc29uOi8vd3d3LndlYmtpdC5vcmcvcG9wdXAuaHRtbCI7CisgICAgICAg
IH0KICAgICB9IGVsc2UgewogICAgICAgICBbaGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmlu
ZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiIHRvRGF0YTp3aW5kb3dPcGVuQ3Jv
c3NPcmlnaW5DT09QVGVzdEJ5dGVzIHdpdGhDT09QVmFsdWU6c291cmNlQ09PUF07CiAgICAgICAg
IGlmIChkb1NlcnZlclNpZGVSZWRpcmVjdCA9PSBEb1NlcnZlclNpZGVSZWRpcmVjdDo6WWVzKSB7
CiAgICAgICAgICAgICBbaGFuZGxlciBhZGRSZWRpcmVjdEZyb21VUkxTdHJpbmc6QCJwc29uOi8v
d3d3LmFwcGxlLmNvbS9wb3B1cC5odG1sIiB0b1VSTFN0cmluZzpAInBzb246Ly93d3cuYXBwbGUu
Y29tL3BvcHVwLWFmdGVyLXJlZGlyZWN0Lmh0bWwiXTsKICAgICAgICAgICAgIFtoYW5kbGVyIGFk
ZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy5hcHBsZS5jb20vcG9wdXAtYWZ0ZXIt
cmVkaXJlY3QuaHRtbCIgdG9EYXRhOiJwb3B1cCIgd2l0aENPT1BWYWx1ZTpkZXN0aW5hdGlvbkNP
T1BdOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBvcHVwVVJMU3RyaW5nID0gQCJwc29u
Oi8vd3d3LmFwcGxlLmNvbS9wb3B1cC1hZnRlci1yZWRpcmVjdC5odG1sIjsKKyAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNv
bjovL3d3dy5hcHBsZS5jb20vcG9wdXAuaHRtbCIgdG9EYXRhOiJwb3B1cCIgd2l0aENPT1BWYWx1
ZTpkZXN0aW5hdGlvbkNPT1BdOworICAgICAgICAgICAgcG9wdXBVUkxTdHJpbmcgPSBAInBzb246
Ly93d3cuYXBwbGUuY29tL3BvcHVwLmh0bWwiOworICAgICAgICB9CiAgICAgfQogICAgIFt3ZWJW
aWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJM
U2NoZW1lOkAiUFNPTiJdOwogCkBAIC03MjU3LDYgKzcyNzQsNyBAQCBzdGF0aWMgdm9pZCBydW5D
T09QUHJvY2Vzc1N3YXBUZXN0KGNvbnN0IGNoYXIqIHNvdXJjZUNPT1AsIGNvbnN0IGNoYXIqIGRl
c3RpbmF0aQogICAgICAgICBFWFBFQ1RfRkFMU0Uoc2VydmVyUmVkaXJlY3RlZCk7CiAgICAgfQog
ICAgIEVYUEVDVF9FUSgyVSwgbnVtYmVyT2ZQcm92aXNpb25hbExvYWRzKTsgLy8gT25lIGluIGVh
Y2ggdmlldy4KKyAgICBFWFBFQ1RfRVEoW2hhbmRsZXIgcmVxdWVzdENvdW50OnBvcHVwVVJMU3Ry
aW5nXSwgMVUpOyAvLyBXZSBzaG91bGQgaGl0IHRoZSBzZXJ2ZXIgb25seSBvbmNlLCBldmVuIGlu
IGNhc2Ugb2YgcHJvY2Vzcy1zd2FwLgogCiAgICAgYXV0byBwaWQxID0gW3dlYlZpZXcgX3dlYlBy
b2Nlc3NJZGVudGlmaWVyXTsKICAgICBFWFBFQ1RfVFJVRSghIXBpZDEpOwo=
</data>
<flag name="commit-queue"
          id="459351"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436399</attachid>
            <date>2021-08-25 10:06:58 -0700</date>
            <delta_ts>2021-08-25 13:25:45 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>229465_COOP_Process_Swap_Reuse_NetworkLoad_wip.patch</filename>
            <type>text/plain</type>
            <size>71713</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZDk2MmE5OGFmNTQ2Li5kMjAyZTM0ZWI4
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC04NSw2ICs4NSw3IEBACiAjZW5k
aWYKIAogI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGNoYW5uZWwsIGZtdCwgLi4uKSBS
RUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0
ICJdIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vz
c0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJP
UihjaGFubmVsLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vzc0lkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQogCiAjZGVmaW5lIE5FVFdPUktfUFJPQ0VT
U19NRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTkVUV09SS19QUk9DRVNTX01FU1NBR0VfQ0hFQ0tf
Q09NUExFVElPTihhc3NlcnRpb24sICh2b2lkKTApCiAjZGVmaW5lIE5FVFdPUktfUFJPQ0VTU19N
RVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCBjb21wbGV0aW9uKSBkbyB7IFwKQEAg
LTE2Niw3ICsxNjcsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNV
cGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCBoYXNVcGxvYWQpCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZENsZWFudXBSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VM
b2FkZXImIGxvYWRlcikKIHsKLSAgICBSRUxFQVNFX0FTU0VSVChsb2FkZXIuaWRlbnRpZmllcigp
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSk7CiAgICAgUkVM
RUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKGxvYWRlci5pc0tlcHRB
bGl2ZSgpKSB7CkBAIC0xNzQsMTYgKzE3NSwxNiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fbmV0d29ya1Jlc291cmNlTG9h
ZGVycy5nZXQobG9hZGVyLmlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7Ci0gICAgbV9uZXR3b3Jr
UmVzb3VyY2VMb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQo
bV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmdldChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkgPT0g
JmxvYWRlcik7CisgICAgbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnJlbW92ZShsb2FkZXIuY29y
ZUlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnRyYW5zZmVyS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKGxvYWRl
ci5pc0tlcHRBbGl2ZSgpKTsKLSAgICBBU1NFUlQobV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmdl
dChsb2FkZXIuaWRlbnRpZmllcigpKSA9PSAmbG9hZGVyKTsKLSAgICBpZiAoYXV0byB0YWtlbkxv
YWRlciA9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtlKGxvYWRlci5pZGVudGlmaWVyKCkp
KQorICAgIEFTU0VSVChtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuZ2V0KGxvYWRlci5jb3JlSWRl
bnRpZmllcigpKSA9PSAmbG9hZGVyKTsKKyAgICBpZiAoYXV0byB0YWtlbkxvYWRlciA9IG1fbmV0
d29ya1Jlc291cmNlTG9hZGVycy50YWtlKGxvYWRlci5jb3JlSWRlbnRpZmllcigpKSkKICAgICAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+YWRkS2VwdEFsaXZlTG9hZCh0YWtlbkxvYWRlci5yZWxlYXNl
Tm9uTnVsbCgpKTsKIH0KIApAQCAtNDg2LDI3ICs0ODcsMzggQEAgc3RkOjp1bmlxdWVfcHRyPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVGZXQKIH0KICNlbmRpZgogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
Y2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxvYWRQ
YXJhbWV0ZXJzKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVS
ZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVy
cywgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdM
b2FkZXJUb1Jlc3VtZSkKIHsKLSAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKExvYWRpbmcsICJz
Y2hlZHVsZVJlc291cmNlTG9hZDogKHBhcmVudFBJRD0lZCwgcGFnZVByb3h5SUQ9JSIgUFJJdTY0
ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RD0lIiBQUkl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQsIGxvYWRQYXJhbWV0ZXJz
LndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJ
bnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0
ZXJzLmlkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coTG9hZGluZywgInNj
aGVkdWxlUmVzb3VyY2VMb2FkOiAocGFyZW50UElEPSVkLCBwYWdlUHJveHlJRD0lIiBQUkl1NjQg
Iiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
PSUiIFBSSXU2NCAiLCBleGlzdGluZ0xvYWRlclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIGxvYWRQ
YXJhbWV0ZXJzLnBhcmVudFBJRCwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQudG9VSW50
NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJz
LndlYkZyYW1lSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgZXhpc3Rp
bmdMb2FkZXJUb1Jlc3VtZS52YWx1ZV9vcihOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciB7
IH0pLnRvVUludDY0KCkpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGF1dG8m
IHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25J
RCk7CiAgICAgaWYgKCFzZXJ2ZXIuaXNJbXBvcnRDb21wbGV0ZWQoKSkgewotICAgICAgICBzZXJ2
ZXIud2hlbkltcG9ydElzQ29tcGxldGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGxvYWRQYXJhbWV0ZXJzID0gV1RGTW92ZShsb2FkUGFyYW1ldGVycyldKCkgbXV0YWJs
ZSB7CisgICAgICAgIHNlcnZlci53aGVuSW1wb3J0SXNDb21wbGV0ZWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbG9hZFBhcmFtZXRlcnMgPSBXVEZNb3ZlKGxvYWRQYXJh
bWV0ZXJzKSwgZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmICghbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc0Nvbm5lY3Rpb24od2ViUHJvY2Vzc0lk
ZW50aWZpZXIoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQVNTRVJU
KG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCkuaXNJbXBv
cnRDb21wbGV0ZWQoKSk7Ci0gICAgICAgICAgICBzY2hlZHVsZVJlc291cmNlTG9hZChXVEZNb3Zl
KGxvYWRQYXJhbWV0ZXJzKSk7CisgICAgICAgICAgICBzY2hlZHVsZVJlc291cmNlTG9hZChXVEZN
b3ZlKGxvYWRQYXJhbWV0ZXJzKSwgZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZSk7CiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisKICAgICBhdXRvIGlkZW50aWZpZXIg
PSBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyOwogICAgIFJFTEVBU0VfQVNTRVJUKGlkZW50aWZp
ZXIpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQo
IW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAKKyAgICBp
ZiAoZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZSkgeworICAgICAgICBpZiAoYXV0byBleGlzdGluZ0xv
YWRlciA9IG5ldHdvcmtQcm9jZXNzKCkudGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5z
ZmVyKCpleGlzdGluZ0xvYWRlclRvUmVzdW1lKSkgeworICAgICAgICAgICAgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRyhMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJjZUxvYWQ6IFJlc3VtaW5nIGV4aXN0
aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciIpOworICAgICAgICAgICAgbV9uZXR3b3JrUmVzb3Vy
Y2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCAqZXhpc3RpbmdMb2FkZXIpOworICAgICAgICAgICAg
ZXhpc3RpbmdMb2FkZXItPnRyYW5zZmVyVG9OZXdXZWJQcm9jZXNzKCp0aGlzLCBpZGVudGlmaWVy
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBDT05O
RUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDog
Q291bGQgbm90IGZpbmQgZXhpc3RpbmcgTmV0d29ya1Jlc291cmNlTG9hZGVyIHRvIHJlc3VtZSwg
d2lsbCBkbyBhIGZyZXNoIGxvYWQiKTsKKyAgICB9CisKICAgICBhdXRvJiBsb2FkZXIgPSBtX25l
dHdvcmtSZXNvdXJjZUxvYWRlcnMuYWRkKGlkZW50aWZpZXIsIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y3JlYXRlKFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCAqdGhpcykpLml0ZXJhdG9yLT52YWx1
ZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTEyNjksNiArMTI4MSwxMSBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwcmlvcml0aXplUmVzb3VyY2VMb2Fk
cyhWZWN0b3I8UmVzb3VyY2VMb2FkSQogICAgIHNlc3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVy
KCkucHJpb3JpdGl6ZUxvYWRzKGxvYWRzKTsKIH0KIAorUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxv
YWRlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnRha2VOZXR3b3JrUmVzb3VyY2VM
b2FkZXIodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikKK3sKKyAgIHJldHVybiBtX25l
dHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShyZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNWUwNzA5MWUzNzM2Li5mNGEwYWI3MTkzZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtNRE5TUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUlRDUHJvdmlkZXIuaCIKKyNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdv
cmtSZXNvdXJjZUxvYWRNYXAuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgogI2luY2x1
ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTE4Niw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQ
b2xpY3kpOwogCiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VT
b3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIFJl
ZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIodWlu
dDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CkBA
IC0yMDMsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jik7CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpF
bmNvZGVyPiYpOwogCi0gICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpOwogICAgIHZvaWQgcGVyZm9y
bVN5bmNocm9ub3VzTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWRE
ZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCB0ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2Vz
V2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpUZXN0UHJvY2Vzc0luY29taW5nU3luY01l
c3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBs
b2FkUGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJlOTI0NGU4NmZjZC4uNzNmM2U4OTE2
MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIy
LDcgKzIyLDcgQEAKIAogbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
TGVnYWN5UmVjZWl2ZXIgewogCi0gICAgU2NoZWR1bGVSZXNvdXJjZUxvYWQoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKQorICAgIFNj
aGVkdWxlUmVzb3VyY2VMb2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMg
cmVzb3VyY2VMb2FkUGFyYW1ldGVycywgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ0xvYWRlclRvUmVzdW1lKQogICAgIFBlcmZvcm1T
eW5jaHJvbm91c0xvYWQoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEpIFN5
bmNocm9ub3VzCiAgICAgVGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIC0+IChi
b29sIGhhbmRsZWQpIFN5bmNocm9ub3VzCiAgICAgTG9hZFBpbmcoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyByZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA1ZDY4MjliMjg4
MDIuLmM5ODMxYTZmOWJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI3ODYsNiArMjc4NiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoUGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZp
ZXIsIFZlYwogICAgIG1fZXh0ZW5zaW9uQ09SU0Rpc2FibGluZ1BhdHRlcm5zLnNldChwYWdlSWRl
bnRpZmllciwgV1RGTW92ZShwYXJzZWRQYXR0ZXJucykpOwogfQogCitSZWZQdHI8TmV0d29ya1Jl
c291cmNlTG9hZGVyPiBOZXR3b3JrUHJvY2Vzczo6dGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vz
c1RyYW5zZmVyKE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7Cisg
ICAgcmV0dXJuIG1fbG9hZGVyc0F3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyLnRha2UoaWRlbnRp
Zmllcik7Cit9CisKICNpZiBQTEFURk9STShDT0NPQSkKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFw
cFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CkBAIC0yODE1LDYgKzI4MjAsMjIgQEAgUlRDRGF0YUNoYW5u
ZWxSZW1vdGVNYW5hZ2VyUHJveHkmIE5ldHdvcmtQcm9jZXNzOjpydGNEYXRhQ2hhbm5lbFByb3h5
KCkKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlTG9hZEZvcldlYlBy
b2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRl
bnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKHJlc291cmNlTG9hZElkZW50aWZpZXIp
OworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSB3ZWJQcm9jZXNzQ29ubmVjdGlvbihzb3VyY2VQcm9j
ZXNzSWRlbnRpZmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKKworICAgIGF1dG8gbG9hZGVyID0gY29ubmVj
dGlvbi0+dGFrZU5ldHdvcmtSZXNvdXJjZUxvYWRlcihyZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsK
KyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6
bnVsbG9wdCk7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXItPmlkZW50aWZpZXIoKTsK
KyAgICBtX2xvYWRlcnNBd2FpdGluZ1dlYlByb2Nlc3NUcmFuc2Zlci5hZGQoaWRlbnRpZmllciwg
bG9hZGVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZp
ZXIpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRl
cnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCwgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGVhOTFlZDU5NDAzZS4uMzBhNGJmNjU1
ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5LmgiCiAj
aW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgpA
QCAtMzg5LDYgKzM5MCw4IEBAIHB1YmxpYzoKICAgICBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFn
ZXJQcm94eSYgcnRjRGF0YUNoYW5uZWxQcm94eSgpOwogI2VuZGlmCiAKKyAgICBSZWZQdHI8TmV0
d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIo
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmKTsKIApAQCAtNDIyLDYgKzQyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBk
aWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAg
IHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9s
aWN5KT4mJik7CisgICAgdm9pZCBwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgdWludDY0X3Qg
cmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYpOwogCiAgICAgdm9pZCBmZXRj
aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYnNpdGVEYXRhJiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTYwOCw2ICs2MTIsNyBAQCBwcml2
YXRlOgogICAgIFNlY29uZHMgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0IHsgZGVmYXVsdFNl
cnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQgfTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpVc2VyQ29udGVudFVSTFBhdHRlcm4+PiBtX2V4dGVu
c2lvbkNPUlNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBIYXNoTWFwPE5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyLCBSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPj4gbV9sb2FkZXJzQXdhaXRp
bmdXZWJQcm9jZXNzVHJhbnNmZXI7IC8vIEZJWE1FOiBTaG91bGQgYmUgY2xlYXJlZCBvbiBhIHRp
bWVyLgogCiAgICAgYm9vbCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5hYmxlZCB7IHRydWUg
fTsKICAgICBib29sIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGQ3OTk3NDUxYzQ1NC4uY2FlYjhkOWJiODQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTE5NSw2ICsxOTUsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKKyAgICBQ
cmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmll
cikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
cj4gbmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIpIEFzeW5jCisKICAgICBBZGRXZWJQYWdl
TmV0d29ya1BhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VOZXR3b3JrUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzKQogICAgIFJlbW92ZVdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQp
CiAgICAgQ291bnROb25EZWZhdWx0U2Vzc2lvblNldHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiAoc2l6ZV90IGNvdW50KSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDgyZjFlNTMwMTQ0Zi4u
YmUyMGEyNmU1N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MjIsNiArNTIyLDE2IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgY2xlYW51cChMb2FkUmVzdWx0OjpDYW5j
ZWwpOwogfQogCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJhbnNmZXJUb05ld1dlYlBy
b2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG5ld0Nvbm5lY3Rpb24sIFJlc291
cmNlTG9hZElkZW50aWZpZXIgbmV3Q29yZUlkZW50aWZpZXIpCit7CisgICAgbV9jb25uZWN0aW9u
ID0gbmV3Q29ubmVjdGlvbjsKKyAgICBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciA9IG5ld0NvcmVJ
ZGVudGlmaWVyOworCisgICAgQVNTRVJUKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciB8fCBt
X2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOworICAgIGJv
b2wgd2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IHRydWU7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IG1fcmVz
cG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfSk7Cit9CisKIGJv
b2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0
aW9ucyhjb25zdCBTdHJpbmcmIHhGcmFtZU9wdGlvbnMsIGNvbnN0IFVSTCYgdXJsKQogewogICAg
IGlmIChpc01haW5GcmFtZUxvYWQoKSkKQEAgLTU0NiwxMiArNTU2LDEyIEBAIGJvb2wgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25z
dCBTdHJpbmcmIHhGCiAgICAgfQogICAgIGNhc2UgWEZyYW1lT3B0aW9uc0Rpc3Bvc2l0aW9uOjpD
b25mbGljdDogewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIk11bHRpcGxlICdYLUZy
YW1lLU9wdGlvbnMnIGhlYWRlcnMgd2l0aCBjb25mbGljdGluZyB2YWx1ZXMgKCciICsgeEZyYW1l
T3B0aW9ucyArICInKSBlbmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcgJyIgKyB1cmwuc3RyaW5nQ2Vu
dGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJy4gRmFsbGluZyBiYWNrIHRvICdERU5ZJy4iOwot
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQp
OworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlEKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgWEZyYW1lT3B0
aW9uc0Rpc3Bvc2l0aW9uOjpJbnZhbGlkOiB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2Ug
PSAiSW52YWxpZCAnWC1GcmFtZS1PcHRpb25zJyBoZWFkZXIgZW5jb3VudGVyZWQgd2hlbiBsb2Fk
aW5nICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIic6ICciICsg
eEZyYW1lT3B0aW9ucyArICInIGlzIG5vdCBhIHJlY29nbml6ZWQgZGlyZWN0aXZlLiBUaGUgaGVh
ZGVyIHdpbGwgYmUgaWdub3JlZC4iOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpB
ZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0s
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZp
ZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICB9CkBAIC01NzgsNyArNTg4LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFuY2VzdG9yc09yWEZyYW1lT3B0aW8K
ICAgICAgICAgU3RyaW5nIHhGcmFtZU9wdGlvbnMgPSBtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6WEZyYW1lT3B0aW9ucyk7CiAgICAgICAgIGlmICgheEZyYW1lT3B0
aW9ucy5pc051bGwoKSAmJiBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyh4RnJh
bWVPcHRpb25zLCByZXNwb25zZS51cmwoKSkpIHsKICAgICAgICAgICAgIFN0cmluZyBlcnJvck1l
c3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGRpc3BsYXkgJyIsIHJlc3BvbnNlLnVybCgp
LnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyBpbiBhIGZyYW1lIGJlY2F1c2Ug
aXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICciLCB4RnJhbWVPcHRpb25zLCAiJy4iKTsKLSAg
ICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxl
dmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xl
TWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJp
dHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNTk1LDcgKzYwNSw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzaG91bGRJbnRlcnJ1cHROYXZpZ2F0aW9uRm9yQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGlj
CiAgICAgICAgIGF1dG8gcmVzcG9uc2VDT0VQID0gV2ViQ29yZTo6b2J0YWluQ3Jvc3NPcmlnaW5F
bWJlZGRlclBvbGljeShyZXNwb25zZSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi0+aXNQb3Rl
bnRpYWxseVRydXN0d29ydGh5KCkgPyBJc1NlY3VyZUNvbnRleHQ6OlllcyA6IElzU2VjdXJlQ29u
dGV4dDo6Tm8pOwogICAgICAgICBpZiAocmVzcG9uc2VDT0VQLnZhbHVlICE9IFdlYkNvcmU6OkNy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3lWYWx1ZTo6UmVxdWlyZUNPUlApIHsKICAgICAgICAgICAg
IFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGRpc3BsYXkgJyIs
IHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyBpbiBh
IGZyYW1lIGJlY2F1c2Ugb2YgQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeS4iKTsKLSAgICAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVs
OjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVz
c2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHks
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNjExLDcgKzYyMSw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzaG91bGRJbnRlcnJ1cHRXb3JrZXJMb2FkRm9yQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljCiAg
ICAgICAgIGF1dG8gcmVzcG9uc2VDT0VQID0gV2ViQ29yZTo6b2J0YWluQ3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeShyZXNwb25zZSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi0+aXNQb3RlbnRp
YWxseVRydXN0d29ydGh5KCkgPyBJc1NlY3VyZUNvbnRleHQ6OlllcyA6IElzU2VjdXJlQ29udGV4
dDo6Tm8pOwogICAgICAgICBpZiAocmVzcG9uc2VDT0VQLnZhbHVlICE9IFdlYkNvcmU6OkNyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3lWYWx1ZTo6UmVxdWlyZUNPUlApIHsKICAgICAgICAgICAgIFN0
cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgJyIsIHJlc3Bv
bnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyB3b3JrZXIgYmVj
YXVzZSBvZiBDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5LiIpOwotICAgICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBl
cnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAg
ICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxl
dmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9
CkBAIC02MzAsNyArNjQwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICBpZiAoc2hv
dWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgJiYgbV9uZXR3b3JrTG9hZENoZWNr
ZXIpIHsKICAgICAgICAgYXV0byBpbmZvcm1hdGlvbiA9IG1fbmV0d29ya0xvYWRDaGVja2VyLT50
YWtlTmV0d29ya0xvYWRJbmZvcm1hdGlvbigpOwogICAgICAgICBpbmZvcm1hdGlvbi5yZXNwb25z
ZSA9IG1fcmVzcG9uc2U7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xvYWRJbmZv
cm1hdGlvbihpZGVudGlmaWVyKCksIFdURk1vdmUoaW5mb3JtYXRpb24pKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5hZGROZXR3b3JrTG9hZEluZm9ybWF0aW9uKGNvcmVJZGVudGlmaWVyKCksIFdU
Rk1vdmUoaW5mb3JtYXRpb24pKTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4
ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0
aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KQEAgLTc1
OCw3ICs3NjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogICAgIExPQURFUl9SRUxFQVNF
X0xPRygiZGlkRmluaXNoTG9hZGluZzogKG51bUJ5dGVzUmVjZWl2ZWQ9JXpkLCBoYXNDYWNoZUVu
dHJ5Rm9yVmFsaWRhdGlvbj0lZCkiLCBtX251bUJ5dGVzUmVjZWl2ZWQsICEhbV9jYWNoZUVudHJ5
Rm9yVmFsaWRhdGlvbik7CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzKCkpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xvYWRJbmZvcm1hdGlv
bk1ldHJpY3MoaWRlbnRpZmllcigpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBtX2Nv
bm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb25NZXRyaWNzKGNvcmVJZGVudGlmaWVy
KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRh
dGlvbikgewogICAgICAgICAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04MDEsNyArODExLDcgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQogICAgIFVOVVNFRF9WQVJJQUJMRSh3YXNTZXJ2aWNlV29ya2VyTG9hZCk7
CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTmV0d29ya0xvYWRJbmZvcm1hdGlvbihpZGVudGlmaWVy
KCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU5ldHdvcmtMb2FkSW5mb3JtYXRpb24o
Y29yZUlkZW50aWZpZXIoKSk7CiAKICAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpKTsKIApAQCAt
MTIwMiw5ICsxMjEyLDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2
ZUNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6CiAgICAgTE9BREVSX1JF
TEVBU0VfTE9HKCJkaWRSZXRyaWV2ZUNhY2hlRW50cnk6IFNlbmRpbmcgV2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVSZXNwb25zZSBJUEMgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlPSVkKSIsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNl
IHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOwog
Ci0gICAgaWYgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQorICAgIGlm
IChuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgeworICAgICAgICBtX3Jl
c3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7CiAgICAgICAgIG1fY2FjaGVFbnRyeVdhaXRpbmdG
b3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IFdURk1vdmUoZW50cnkpOwotICAgIGVsc2Ug
eworICAgIH0gZWxzZSB7CiAgICAgICAgIHNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KFdURk1vdmUo
ZW50cnkpKTsKICAgICAgICAgY2xlYW51cChMb2FkUmVzdWx0OjpTdWNjZXNzKTsKICAgICB9CkBA
IC0xMzU5LDcgKzEzNzAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2ll
SW5mb3JtYXRpb24oKSBjb25zdAogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IG1f
Y29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQoKSk7
CiAgICAgQVNTRVJUKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7CiAKLSAgICBsb2dDb29raWVJbmZv
cm1hdGlvbihtX2Nvbm5lY3Rpb24sICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3JpZ2lu
YWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUo
b3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2luYWxSZXF1
ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGlkZW50aWZpZXIoKSk7
CisgICAgbG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29ya1Jlc291cmNl
TG9hZGVyIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIG9yaWdpbmFsUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNh
bWVTaXRlSW5mbzo6Y3JlYXRlKG9yaWdpbmFsUmVxdWVzdCgpKSwgb3JpZ2luYWxSZXF1ZXN0KCku
dXJsKCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBmcmFtZUlEKCksIHBhZ2VJ
RCgpLCBjb3JlSWRlbnRpZmllcigpKTsKIH0KIAogc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tp
ZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKQEAgLTE0NjMsNyArMTQ3NCw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgbWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsIG1l
c3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJz
LndlYkZyYW1lSUQsICBtZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGlkZW50
aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgbWVz
c2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBtZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VuZENTUFZpb2xhdGlvblJlcG9ydChVUkwmJiByZXBvcnRVUkwsIFJlZjxGb3JtRGF0YT4mJiBy
ZXBvcnQpCkBAIC0xNTM0LDcgKzE1NDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKiBmZQogICAg
IFJFTEVBU0VfQVNTRVJUKG1fc2VydmljZVdvcmtlckZldGNoVGFzay5nZXQoKSA9PSBmZXRjaFRh
c2spOwogICAgIGlmIChtX3BhcmFtZXRlcnMuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VX
b3JrZXJzTW9kZTo6T25seSkgewogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoInNl
cnZpY2VXb3JrZXJEaWROb3RIYW5kbGU6IEFib3J0aW5nIGxvYWQgYmVjYXVzZSB0aGUgc2Vydmlj
ZSB3b3JrZXIgZGlkIG5vdCBoYW5kbGUgdGhlIGxvYWQgYW5kIHNlcnZpY2VXb3JrZXJNb2RlIG9u
bHkgYWxsb3dzIHNlcnZpY2Ugd29ya2VycyIpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6U2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSB7IH0sIGlkZW50aWZpZXIo
KSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2aWNlV29y
a2VyRGlkTm90SGFuZGxlIHsgfSwgY29yZUlkZW50aWZpZXIoKSk7CiAgICAgICAgIGFib3J0KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBjZWY2NTQ3OWI3ZTYuLjEyYzMz
MjJlZGZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCkBAIC04NSw2ICs4NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0
YXJ0KCk7CiAgICAgdm9pZCBhYm9ydCgpOwogCisgICAgdm9pZCB0cmFuc2ZlclRvTmV3V2ViUHJv
Y2VzcyhOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlc291cmNlTG9hZElkZW50aWZp
ZXIpOworCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3
b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwogCkBAIC05NCwxMCArOTYsMTEgQEAgcHVibGljOgogCiAgICAgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2Nv
bm5lY3Rpb247IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVy
biBtX2Nvbm5lY3Rpb24tPnNlc3Npb25JRCgpOyB9Ci0gICAgUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXI7IH0K
KyAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGNvcmVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXI7IH0KICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEOyB9CiAg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRDsgfQogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CisgICAgTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VMb2FkSUQ7IH0KIAogICAgIE5ldHdvcmtDYWNoZTo6R2xvYmFsRnJhbWVJRCBnbG9i
YWxGcmFtZUlEKCkgeyByZXR1cm4geyBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHBhZ2VJ
RCgpLCBmcmFtZUlEKCkgfTsgfQogCkBAIC0yMTAsNyArMjEzLDcgQEAgcHJpdmF0ZToKIAogICAg
IFJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbygpOwogCi0gICAgY29uc3QgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOworICAgIE5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIAogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFy
YW1ldGVycy5jcHAKaW5kZXggZWNhMTFhM2EwMGMyLi4zNDZmN2Q4ZDg0NTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgdm9pZCBMb2Fk
UGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNv
ZGVyIDw8IGxvY2tCYWNrRm9yd2FyZExpc3Q7CiAgICAgZW5jb2RlciA8PCBjbGllbnRSZWRpcmVj
dFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgZW5jb2RlciA8PCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluOworICAgIGVuY29kZXIgPDwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllclRvUmVzdW1lOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5Owog
CiAgICAgcGxhdGZvcm1FbmNvZGUoZW5jb2Rlcik7CkBAIC0xMzcsNiArMTM4LDkgQEAgYm9vbCBM
b2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRl
cnMmIGRhdGEpCiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4pKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEuZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGF0YS5zZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaAppbmRleCBlNWM1N2IwNDA0OWMu
LjBjMDU0MGIwNDZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFt
ZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
KyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBv
bGljeURlY2lzaW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUg
IlVzZXJEYXRhLmgiCkBAIC03NCw2ICs3NSw3IEBAIHN0cnVjdCBMb2FkUGFyYW1ldGVycyB7CiAg
ICAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNz
aW9uSGlzdG9yeVZpc2liaWxpdHkgeyBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5OjpWaXNpYmxlIH07CiAgICAgU3RyaW5nIGNsaWVudFJlZGlyZWN0U291
cmNlRm9ySGlzdG9yeTsKICAgICBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIHN0ZDo6b3B0aW9uYWw8TmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXJUb1Jlc3VtZTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxO
U0RpY3Rpb25hcnk+IGRhdGFEZXRlY3Rpb25Db250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNjcx
YWRkNGFhMjdjLi5iMWFjM2Q0MzhhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNDc1LDYgKzQ3NSwx
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UAogICAgIH0KIH0KIAordm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VM
b2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
UkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpw
cmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2Zlcjogc291cmNlUHJvY2Vzc0lkZW50aWZpZXI6
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUxvYWRJZGVudGlmaWVyOiAlIiBQUkl1NjQsIHRoaXMsIHNv
dXJjZVByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksIHJlc291cmNlTG9hZElkZW50aWZpZXIp
OworICAgIGlmICghcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNz
VHJhbnNmZXIoc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHJlc291cmNlTG9hZElkZW50aWZpZXIp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRp
b24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkK
IHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFn
ZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKaW5kZXggNThhOGE4ZTk0YmYzLi40ZTViYjQ1OWEzZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmgi
CiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlN
ZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJv
dHRsZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCkBAIC0yMTQsNiAr
MjE1LDggQEAgcHVibGljOgogICAgIHZvaWQgdGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdl
c1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHlEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCB0ZXJtaW5hdGVV
bnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyKTsKIAorICAgIHZvaWQgcHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90IHJl
c291cmNlTG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4pPiYmKTsKKwogICAgIFByb2Nlc3NUaHJv
dHRsZXImIHRocm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAgICAgdm9p
ZCB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA0MWNkMzVkYmZhOGQuLjc1YTY1YzQz
MzcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcApAQCAtMTcxLDkgKzE3MSw5IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6Omxv
YWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhCiAgICAg
bV9wYWdlLmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwg
bV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIGRhdGEsIG1pbWVUeXBlLCBlbmNvZGluZywgYmFzZVVS
TCwgdXNlckRhdGEsIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3RO
YXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgc2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5KTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJl
cXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMp
Cit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24m
IG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgc3RkOjpvcHRpb25hbDxOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllclRvUmVzdW1lKQogewotICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiIpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZ
X1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBleGlzdGluZ05ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0LCBleGlzdGluZ05ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUudmFsdWVfb3IoTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKICAgICBBU1NFUlQoc2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkICE9IFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6
Tm8pOwogCiAgICAgLy8gSWYgdGhpcyBpcyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0IGNvbnRpbnVp
bmcgaW4gYSBuZXcgcHJvY2VzcywgdGhlbiB0aGUgbmV3IHByb2Nlc3Mgd2lsbCBvdmVyd3JpdGUg
dGhlIGZyb21JdGVtJ3MgVVJMLiBJbiB0aGlzIGNhc2UsCkBAIC0xODIsNyArMTgyLDcgQEAgdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBXZWJDb3JlOjpSZXMKICAgICBpZiAobmF2aWdhdGlvbi5mcm9tSXRlbSgpICYmIG5h
dmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpID09IFdlYkNvcmU6OkxvY2tCYWNrRm9yd2Fy
ZExpc3Q6OlllcykKICAgICAgICAgbmF2aWdhdGlvbi5mcm9tSXRlbSgpLT5zZXRMYXN0UHJvY2Vz
c0lkZW50aWZpZXIobV9wcm9jZXNzLT5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKLSAgICBt
X3BhZ2UubG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigp
LCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbi5s
YXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJE
YXRhLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgbV9wYWdlLmxvYWRSZXF1ZXN0
V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5h
dmlnYXRpb24sIFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rp
b24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1c2VyRGF0YSwgc2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdl
YnNpdGVQb2xpY2llcyksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jl
c3VtZSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0
ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBp
dGVtLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzKQpAQCAt
MzMwLDEyICszMzAsMTIgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKEZyYW1lSWRlbnRpZmllcgogICAgIG1fcGFnZS5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYo
KSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwg
bmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgV1RGTW92ZShvcmln
aW5hdGluZ0ZyYW1lSW5mbyksIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVz
cG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIg
aWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0
ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRC
dW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbWFp
blJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdh
dGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBX
VEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJl
cXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUlu
amVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBsaXN0ZW5lcklE
LCB1c2VyRGF0YSk7CisgICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1f
cHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5m
byksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dN
SU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBu
ZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgK
aW5kZXggMjcxNGIyYTViNTQ3Li4wYWJlYTlkYTZiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNs
dWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgogI2luY2x1ZGUgIlByb2Nlc3NU
aHJvdHRsZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBAIC0xMDUsNyArMTA2
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGxvYWREYXRhKEFQSTo6TmF2aWdhdGlv
biYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZp
c2liaWxpdHkpOwotICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpu
dWxsb3B0KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVs
bG9wdCwgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpudWxsb3B0KTsK
ICAgICB2b2lkIGdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJik7CiAgICAgdm9p
ZCBjYW5jZWwoKTsKIApAQCAtMTI0LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZW5k
TWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0
aW9uPiwgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6
OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7CiAKICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1l
SW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5h
dGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9E
YXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxv
YWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNl
ckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVj
dGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBV
c2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAg
IHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTExMzE5ZDhkM2VmLi43
NGFmMzllMzVkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtMTM4MSw3ICsxMzgxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KICAgICByZXR1cm4g
bmF2aWdhdGlvbjsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmln
YXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBh
Z2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgc3RkOjpvcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgc3RkOjpvcHRpb25hbDxO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllclRvUmVzdW1lKQogewogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAKQEAgLTE0
MDQsNiArMTQwNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgbG9hZFBhcmFtZXRl
cnMubG9ja0JhY2tGb3J3YXJkTGlzdCA9IG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgp
OwogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IG5h
dmlnYXRpb24uY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCk7CiAgICAgbG9hZFBhcmFt
ZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW47CisgICAgbG9hZFBhcmFtZXRlcnMuZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllclRvUmVzdW1lID0gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
clRvUmVzdW1lOwogICAgIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUocHJv
Y2VzcywgdXJsLCBtX3BhZ2VMb2FkU3RhdGUucmVzb3VyY2VEaXJlY3RvcnlVUkwoKSwgbG9hZFBh
cmFtZXRlcnMuc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBhZGRQbGF0Zm9ybUxvYWRQ
YXJhbWV0ZXJzKHByb2Nlc3MsIGxvYWRQYXJhbWV0ZXJzKTsKQEAgLTM2MjAsNyArMzYyMSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5kaWRD
b21taXRQcm92aXNpb25hbFBhZ2Uob2xkV2ViUGFnZUlELCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZp
Z2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYm
IHN1c3BlbmRlZFBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgbmV3UHJvY2VzcywgUHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBSZWZQ
dHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdl
UHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVk
UGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBuZXdQcm9jZXNzLCBQcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFJlZlB0cjxBUEk6Oldl
YnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXJUb1Jlc3VtZSkKIHsKICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImNv
bnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzczogbmV3UHJvY2Vzc1BJRD0laSwgaGFzU3VzcGVu
ZGVkUGFnZT0laSIsIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICEhc3VzcGVuZGVk
UGFnZSk7CiAgICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5hdmlnYXRpb24gJSIgUFJJdTY0
ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCks
IG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsKQEAgLTM2MzcsNyArMzYzOCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0
aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgYm9vbCBpc1NlcnZlclNpZGVSZWRpcmVjdCA9IHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCA9PSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olll
c0FmdGVyTmF2aWdhdGlvblBvbGljeURlY2lzaW9uICYmIG5hdmlnYXRpb24uY3VycmVudFJlcXVl
c3RJc1JlZGlyZWN0KCk7CiAgICAgYm9vbCBzaG91bGRDbG9zZVByZXZpb3VzUGFnZUFmdGVyQ29t
bWl0ID0gc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkID09IFNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25zZVBvbGljeURlY2lzaW9uOwogICAgIG1fcHJvdmlzaW9u
YWxQYWdlID0gbWFrZVVuaXF1ZTxQcm92aXNpb25hbFBhZ2VQcm94eT4oKnRoaXMsIFdURk1vdmUo
bmV3UHJvY2VzcyksIFdURk1vdmUoc3VzcGVuZGVkUGFnZSksIG5hdmlnYXRpb24ubmF2aWdhdGlv
bklEKCksIGlzU2VydmVyU2lkZVJlZGlyZWN0LCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCks
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHNob3VsZENsb3NlUHJldmlvdXNQYWdlQWZ0
ZXJDb21taXQsIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7Ci0gICAgYXV0byBjb250aW51YXRpb24g
PSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFr
ZVJlZihuYXZpZ2F0aW9uKSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCB3ZWJzaXRlUG9s
aWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyldKCkgbXV0YWJsZSB7CisgICAgYXV0byBj
b250aW51YXRpb24gPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZp
Z2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIGV4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZV0oKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9uLT50YXJnZXRJdGVtKCkpIHsKICAgICAgICAgICAg
IExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICVwIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJv
Y2VzcyB0byBiYWNrIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS0+dXJsKCkudXRmOCgpLmRhdGEo
KSk7CiAKQEAgLTM2NjAsMTAgKzM2NjEsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVl
TmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHMKIAog
ICAgICAgICAvLyBGSVhNRTogV29yayBvdXQgdGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUg
bGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0YwogICAgICAgICBBU1NFUlQoIW5hdmlnYXRpb24tPmN1
cnJlbnRSZXF1ZXN0KCkuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKCFleGlzdGluZ05ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgfHwgIW5hdmlnYXRpb24tPnN1YnN0aXR1
dGVEYXRhKCkpOwogICAgICAgICBpZiAoYXV0byYgc3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9u
LT5zdWJzdGl0dXRlRGF0YSgpKQogICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRE
YXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0
dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJz
dGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRl
RGF0YS0+dXNlckRhdGEuZ2V0KCksIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEpLCBz
dWJzdGl0dXRlRGF0YS0+c2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5KTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJl
c291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkgfSwgbnVsbHB0ciwg
c2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSkpOworICAgICAgICAgICAgbV9wcm92aXNp
b25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmln
YXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkgfSwgbnVsbHB0ciwgc2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURk1vdmUod2Vic2l0ZVBv
bGljaWVzRGF0YSksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZSk7CiAgICAgfTsKICAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyLT5zaG91bGRQYXVzZUxv
YWRpbmcoKm1fcHJvdmlzaW9uYWxQYWdlKSkKICAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVy
LT5zZXRDb250aW51ZUxvYWRpbmdDYWxsYmFjaygqbV9wcm92aXNpb25hbFBhZ2UsIFdURk1vdmUo
Y29udGludWF0aW9uKSk7CkBAIC01NjE3LDEyICs1NjE5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IEZyYW1lCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hl
Y2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0
ZSwKLSAgICBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKKyAgICBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5l
ZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CiB7Ci0gICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYo
KSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwg
bmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9h
ZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2gsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKKyAgICBkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJ
RCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNl
LCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2Vk
QnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5T
aG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxs
b3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5T
aG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxs
b3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9y
IHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01NjM1LDEzICs1NjM3LDEzIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlv
biA9IG5hdmlnYXRpb25JRCA/IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRp
b25JRCkgOiBudWxscHRyOwogICAgIGF1dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZp
Z2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJh
bWVJbmZvKSwgdGhpcykuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUs
IGRvd25sb2FkQXR0cmlidXRlKTsKIAotICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1l
LT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgd2ViUGFnZUlELCBmcmFtZUlELCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dp
dGNoLCBpZGVudGlmaWVyLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0
aW9uKSwKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0
ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdlYlBhZ2VJ
RCwgZnJhbWVJRCwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgbWFpblJlc291cmNl
TG9hZElkZW50aWZpZXIsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZN
b3ZlKG5hdmlnYXRpb24pLAogICAgICAgICBwcm9jZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQ
b2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRy
PFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgc3RkOjpvcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBv
bGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0
ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6
Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJy
b3dzaW5nV2FybmluZyk7CiAKLSAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNl
bmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQs
IHByb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpXSAoY29uc3QgYXV0byYgcG9saWN5RGVjaXNpb24p
IHsKKyAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlk
ZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3NdIChjb25z
dCBhdXRvJiBwb2xpY3lEZWNpc2lvbikgewogICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVy
SUQsIHBvbGljeURlY2lzaW9uLCBjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnNp
b25zKHByb2Nlc3MpKSwgd2ViUGFnZUlEKTsKICAgICAgICAgfSk7CiAKQEAgLTU2NDksMTIgKzU2
NTEsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICAgICAgaWYgKHBvbGljeUFjdGlv
biA9PSBQb2xpY3lBY3Rpb246OlVzZSAmJiBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
ICYmIG5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlc3BvbnNl
RG9tYWluIHsgbmF2aWdhdGlvblJlc3BvbnNlLT5yZXNwb25zZSgpLnVybCgpIH07CiAgICAgICAg
ICAgICAvLyBBdm9pZCBwcm9jZXNzLXN3YXBwaW5nIGluIGNhc2VzIHdoZXJlIHRoZSBwcm9jZXNz
IG9ubHkgY29udGFpbnMgYSBzaW5nbGUgcGFnZSBhbmQgaXMgb3JpZ2luLWNsZWFuLgotICAgICAg
ICAgICAgaWYgKHRoaXMtPnByb2Nlc3MoKS5wYWdlQ291bnQoKSA+IDEgfHwgKHRoaXMtPnByb2Nl
c3MoKS5vcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgJiYgKnRoaXMtPnByb2Nlc3MoKS5vcHRp
b25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgIT0gcmVzcG9uc2VEb21haW4pKSB7CisgICAgICAgICAg
ICBpZiAocHJvY2Vzcy0+cGFnZUNvdW50KCkgPiAxIHx8IChwcm9jZXNzLT5vcHRpb25hbFJlZ2lz
dHJhYmxlRG9tYWluKCkgJiYgKnByb2Nlc3MtPm9wdGlvbmFsUmVnaXN0cmFibGVEb21haW4oKSAh
PSByZXNwb25zZURvbWFpbikpIHsKICAgICAgICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQ6IFBy
b2Nlc3Mtc3dhcHBpbmcgZHVlIHRvIENyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Iik7Ci0gICAg
ICAgICAgICAgICAgcG9saWN5QWN0aW9uID0gUG9saWN5QWN0aW9uOjpJZ25vcmU7Ci0gICAgICAg
ICAgICAgICAgYXV0byBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bv
b2woKS5wcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4od2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlz
LCByZXNwb25zZURvbWFpbik7Ci0gICAgICAgICAgICAgICAgY29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKCpuYXZpZ2F0aW9uLCBudWxscHRyLCBXVEZNb3ZlKHByb2Nlc3NGb3JOYXZpZ2F0
aW9uKSwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8sIFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25zZVBvbGljeURlY2lzaW9uLCBudWxscHRyKTsKLSAg
ICAgICAgICAgICAgICB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVl
TG9hZEluTmV3UHJvY2Vzczo6WWVzOworICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUo
KS5uZXR3b3JrUHJvY2VzcygpLnByZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKHByb2Nl
c3MtPmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVzcG9uc2VEb21haW4gPSBX
VEZNb3ZlKHJlc3BvbnNlRG9tYWluKSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlvblJlc3BvbnNlID0g
V1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlcildKGF1
dG8gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1fcHJv
Y2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4od2Vic2l0ZURh
dGFTdG9yZSgpLCB0aGlzLCByZXNwb25zZURvbWFpbik7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcygqbmF2aWdhdGlvbiwgbnVsbHB0ciwgV1RGTW92
ZShwcm9jZXNzRm9yTmF2aWdhdGlvbiksIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5v
LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUmVzcG9uc2VQb2xpY3lEZWNp
c2lvbiwgbnVsbHB0ciwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVz
dW1lKTsKKworICAgICAgICAgICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGlj
eUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uLmdldCgpLCBudWxscHRyLCBXVEZNb3ZlKG5hdmln
YXRpb25SZXNwb25zZSksIFdURk1vdmUoc2VuZGVyKSwgeyB9LCBXaWxsQ29udGludWVMb2FkSW5O
ZXdQcm9jZXNzOjpZZXMpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMjZiODA2YzM2YmFmLi5mNzk0ODI2NmYzZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00Myw2ICs0Myw3IEBACiAj
aW5jbHVkZSAiTWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgog
I2luY2x1ZGUgIk1lZGlhUGxheWJhY2tTdGF0ZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQYWdlTG9hZFN0YXRlLmgiCiAjaW5j
bHVkZSAiUGFzdGVib2FyZEFjY2Vzc0ludGVudC5oIgpAQCAtMTc0MSwxMCArMTc0MiwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUlu
Zm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRp
bmdGcmFtZUluZm8sIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
IHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEm
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0
YSYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVu
ZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5S
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0
YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYm
KTsKICAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIFdlYkNvcmU6OlN1
YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkpOwotICAgIHZvaWQgbG9hZFJl
cXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0
aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRh
dGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1l
ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291
bnRzJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBi
b29sIGlzTWFpbkZyYW1lLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBG
cmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIHN0ZDo6b3B0aW9uYWw8V2ViUGFn
ZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBs
eSYmKTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKQEAgLTIwNjAsNyArMjA2MSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25z
dCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELAotICAgICAgICBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBj
YW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2Fz
QWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICAgICAgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmli
dXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdD
b250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1
aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgdW5hYmxlVG9J
bXBsZW1lbnRQb2xpY3koV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGJlZ2luU2FmZUJyb3dz
aW5nQ2hlY2soY29uc3QgVVJMJiwgYm9vbCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7
CiAKQEAgLTI0NjIsNyArMjQ2Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlcG9ydFBhZ2VM
b2FkUmVzdWx0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImID0geyB9KTsKIAotICAgIHZv
aWQgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYsIHN0ZDo6
dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmKTsKKyAgICB2b2lkIGNv
bnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mLCBzdGQ6OnVuaXF1
ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBQcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgc3RkOjpvcHRpb25hbDxOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lID0gc3RkOjpudWxsb3B0KTsKIAogICAgIHZvaWQgc2V0TmVlZHNGb250
QXR0cmlidXRlcyhib29sKTsKICAgICB2b2lkIHVwZGF0ZUZvbnRBdHRyaWJ1dGVzQWZ0ZXJFZGl0
b3JTdGF0ZUNoYW5nZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGI4ODAzY2Q1MjIyYi4uOTI1NTM1YzU2ZDM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0x
MDcsNyArMTA3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAgICAg
IyBQb2xpY3kgbWVzc2FnZXMKLSAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFt
ZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRC
dW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlz
dGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBw
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2Fz
QWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1
Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBz
dHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHN0
ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1Bh
Z2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpV
c2VyRGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKICAgICBEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
Ym9vbCBpc01haW5GcmFtZSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8s
IFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2lu
YXRpbmdGcmFtZUluZm9EYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmln
aW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGly
ZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChzdHJ1Y3QgV2ViS2l0
OjpQb2xpY3lEZWNpc2lvbiBQb2xpY3lEZWNpc2lvbikgU3luY2hyb25vdXMKICAgICBEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggNmU5NjkwNzI1NGE0Li4z
NDllYTJjNjM2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTQxMiw4ICs0MTIsMTEgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9h
ZGVyJiByZXNvdXJjZUwKIAogICAgIEFTU0VSVCgobG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYm
IGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQpIHx8IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRl
bnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9y
Q3JlZGVudGlhbHMpOwogCi0gICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVk
dWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9j
ZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVl
c3QoKS5wcmlvcml0eSgpKSk7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQ
YXJhbWV0ZXJzKSwgMCkpIHsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7
CisgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbikKKyAgICAgICAg
ZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpleGNo
YW5nZShtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgc3Rk
OjpudWxsb3B0KTsKKyAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVM
b2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3Mg
KHByaW9yaXR5PSVkLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWU9JSIgUFJJdTY0ICIpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0
KCkucHJpb3JpdHkoKSksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jl
c3VtZS52YWx1ZV9vcihOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciB7IH0pLnRvVUludDY0
KCkpOworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVycywgZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSwgMCkpIHsKICAgICAg
ICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfRVJST1IoInNjaGVkdWxlTG9hZDogVW5h
YmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0
eT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0
eSgpKSk7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5IGZhaWxlZCB0byBzY2hlZHVsZSB0aGlzIGxv
YWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVjYXVzZSBpdCBoYWQgY3Jhc2hlZC4KICAgICAg
ICAgLy8gVGhpcyBsb2FkIHdpbGwgbmV2ZXIgc3VjY2VlZCBzbyB3ZSB3aWxsIHNjaGVkdWxlIGl0
IHRvIGZhaWwgYXN5bmNocm9ub3VzbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBjYTIzNDk5NTg2NjYuLjI0YjY5
Mzc5MDE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJS
ZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KQEAgLTkxLDYgKzkyLDggQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKIAorICAg
IHZvaWQgc2V0RXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKHN0
ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkgeyBtX2V4aXN0aW5nTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXJUb1Jlc3VtZTsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVMb2FkKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOwogICAgIHZvaWQgc2NoZWR1
bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOwpAQCAtMTMz
LDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBQaW5nTG9h
ZENvbXBsZXRpb25IYW5kbGVyPiBtX3BpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXJzOwogICAgIEhh
c2hNYXA8dW5zaWduZWQgbG9uZywgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyPiBtX3ByZWNv
bm5lY3RDb21wbGV0aW9uSGFuZGxlcnM7CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoYm9vbCk+
PiBtX29ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXI+IG1fZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lOwogICAgIGJvb2wgbV9pc09uTGluZSB7IHRydWUgfTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDQ5NGQ5ZTUwMTQ5ZC4uYWM2NjI0YWUx
NGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTkxLDYgKzkxLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1N1YnJlc291cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
SUV2ZW50V2l0aEtleVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaWRnZXQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CkBAIC04NDgsMTEgKzg0OSwxMiBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9ucwogICAgIGF1dG8qIGNvcmVGcmFtZSA9IG1fZnJhbWUtPmNvcmVG
cmFtZSgpOwogICAgIGF1dG8qIHBvbGljeURvY3VtZW50TG9hZGVyID0gY29yZUZyYW1lID8gY29y
ZUZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkgOiBudWxscHRyOwog
ICAgIGF1dG8gbmF2aWdhdGlvbklEID0gcG9saWN5RG9jdW1lbnRMb2FkZXIgPyBzdGF0aWNfY2Fz
dDxXZWJEb2N1bWVudExvYWRlciY+KCpwb2xpY3lEb2N1bWVudExvYWRlcikubmF2aWdhdGlvbklE
KCkgOiAwOworICAgIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gcG9saWN5
RG9jdW1lbnRMb2FkZXIgJiYgcG9saWN5RG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRl
cigpID8gcG9saWN5RG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpLT5pZGVudGlm
aWVyKCkgOiAwOwogCiAgICAgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSA9IHBvbGlj
eSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2U7CiAgICAgYXV0byBwcm90ZWN0b3IgPSBt
X2ZyYW1lLmNvcHlSZWYoKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0
VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6
OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJ
RCgpLCBtX2ZyYW1lLT5pbmZvKCksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2Us
IHJlcXVlc3QsIGNhblNob3dSZXNwb25zZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRC
eUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBsaXN0ZW5l
cklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkgeworICAgIGlmICghd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShtX2ZyYW1l
LT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCBy
ZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2Fz
QWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gs
IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgp
KS5nZXQoKSkpKSkgewogICAgICAgICBXRUJGUkFNRUxPQURFUkNMSUVOVF9SRUxFQVNFX0xPRyhO
ZXR3b3JrLCAiZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZTogaWdub3JpbmcgYmVjYXVz
ZSBXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlIGZhaWxlZCIpOwogICAgICAg
ICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVj
aXNpb24geyBpZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAw
LCB7IH0sIHsgfSB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IGNmYmU1NGYwMjYzNC4uYzdkZDQ5YjJkYWJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjU5LDYgKzI1OSw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJHTFN0YXRlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvV3JpdGluZ0RpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvbWFya3VwLmg+Cisj
aW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1
ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMTY4OSw2
ICsxNjkwLDExIEBAIHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMmJiBs
b2FkUGFyYW1ldGVycykKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGxvYWRQ
YXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQo
KSk7CiAjZW5kaWYKIAorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0
ZWd5KCkuc2V0RXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKGxv
YWRQYXJhbWV0ZXJzLmV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZSk7CisgICAgYXV0byByZXN1bWluZ0xvYWRTY29wZSA9IG1ha2VTY29wZUV4aXQoW10geworICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnNldEV4aXN0
aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZShzdGQ6Om51bGxvcHQpOwor
ICAgIH0pOworCiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXI7CiAKICAg
ICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMWU2MTRjNzM5
ZWE1Li41Zjk3OTBlYTkwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5o
IgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
T3B0aW9uYWxDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiUERGUGx1Z2luSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlBsdWdpbi5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXgg
NDBhMDgyMjE3MDczLi40NzE4M2JlMTI5YTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlv
bi5tbQpAQCAtNTIsNiArNTIsNyBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0
Zi9EZXF1ZS5oPgorI2ltcG9ydCA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW1wb3J0IDx3dGYv
SGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KQEAgLTI1Myw2ICsyNTQsNyBAQCBAaW50ZXJmYWNlIFBTT05TY2hlbWUgOiBOU09iamVj
dCA8V0tVUkxTY2hlbWVIYW5kbGVyPiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gX2Nv
b3BWYWx1ZXM7CiAgICAgSGFzaFNldDxpZCA8V0tVUkxTY2hlbWVUYXNrPj4gX3J1bm5pbmdUYXNr
czsKICAgICBib29sIF9zaG91bGRSZXNwb25kQXN5bmNocm9ub3VzbHk7CisgICAgSGFzaENvdW50
ZWRTZXQ8U3RyaW5nPiBfcmVxdWVzdENvdW50czsKIH0KIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aEJ5dGVzOihjb25zdCBjaGFyKilieXRlczsKIC0gKHZvaWQpYWRkUmVkaXJlY3RGcm9tVVJMU3Ry
aW5nOihOU1N0cmluZyAqKXNvdXJjZVVSTFN0cmluZyB0b1VSTFN0cmluZzooTlNTdHJpbmcgKilk
ZXN0aW5hdGlvblVSTFN0cmluZzsKQEAgLTI5MSw2ICsyOTMsMTEgQEAgLSAodm9pZClzZXRTaG91
bGRSZXNwb25kQXN5bmNocm9ub3VzbHk6KEJPT0wpdmFsdWUKICAgICBfc2hvdWxkUmVzcG9uZEFz
eW5jaHJvbm91c2x5ID0gdmFsdWU7CiB9CiAKKy0gKHVuc2lnbmVkKXJlcXVlc3RDb3VudDooTlNT
dHJpbmcgKil1cmxTdHJpbmcKK3sKKyAgICByZXR1cm4gX3JlcXVlc3RDb3VudHMuY291bnQodXJs
U3RyaW5nKTsKK30KKwogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0
VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzawogewogICAgIGlmIChbKGlk
PFdLVVJMU2NoZW1lVGFza1ByaXZhdGU+KXRhc2sgX3JlcXVlc3RPbmx5SWZDYWNoZWRdKSB7CkBA
IC0zMTAsMTEgKzMxNywxNCBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
c3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YQogICAgIH07CiAKICAg
ICBOU1VSTCAqZmluYWxVUkwgPSB0YXNrLnJlcXVlc3QuVVJMOworICAgIF9yZXF1ZXN0Q291bnRz
LmFkZChbZmluYWxVUkwgYWJzb2x1dGVTdHJpbmddKTsKKwogICAgIGF1dG8gdGFyZ2V0ID0gX3Jl
ZGlyZWN0cy5nZXQodGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CiAgICAgaWYgKCF0
YXJnZXQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gcmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0
TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1J
TUVUeXBlOm5pbCBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0p
OwogCiAgICAgICAgIGZpbmFsVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6KE5TU3RyaW5nICop
dGFyZ2V0XTsKKyAgICAgICAgX3JlcXVlc3RDb3VudHMuYWRkKFtmaW5hbFVSTCBhYnNvbHV0ZVN0
cmluZ10pOwogICAgICAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFs
bG9jXSBpbml0V2l0aFVSTDpmaW5hbFVSTF0pOwogCiAgICAgICAgIFsoaWQ8V0tVUkxTY2hlbWVU
YXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVyZm9ybVJlZGlyZWN0aW9uOnJlZGlyZWN0UmVzcG9uc2Uu
Z2V0KCkgbmV3UmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKQEAgLTcyMDcsMjAgKzcyMTcsMjcgQEAg
c3RhdGljIHZvaWQgcnVuQ09PUFByb2Nlc3NTd2FwVGVzdChjb25zdCBjaGFyKiBzb3VyY2VDT09Q
LCBjb25zdCBjaGFyKiBkZXN0aW5hdGkKICAgICB9CiAKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9w
dE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAgIE5TU3RyaW5nKiBwb3B1cFVSTFN0
cmluZzsKICAgICBpZiAoaXNTYW1lT3JpZ2luID09IElzU2FtZU9yaWdpbjo6WWVzKSB7CiAgICAg
ICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQu
b3JnL21haW4uaHRtbCIgdG9EYXRhOndpbmRvd09wZW5TYW1lT3JpZ2luQ09PUFRlc3RCeXRlcyB3
aXRoQ09PUFZhbHVlOnNvdXJjZUNPT1BdOwogICAgICAgICBpZiAoZG9TZXJ2ZXJTaWRlUmVkaXJl
Y3QgPT0gRG9TZXJ2ZXJTaWRlUmVkaXJlY3Q6OlllcykgewogICAgICAgICAgICAgW2hhbmRsZXIg
YWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL3BvcHVwLmh0
bWwiIHRvVVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL3BvcHVwLWFmdGVyLXJlZGly
ZWN0Lmh0bWwiXTsKICAgICAgICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5n
OkAicHNvbjovL3d3dy53ZWJraXQub3JnL3BvcHVwLWFmdGVyLXJlZGlyZWN0Lmh0bWwiIHRvRGF0
YToicG9wdXAiIHdpdGhDT09QVmFsdWU6ZGVzdGluYXRpb25DT09QXTsKLSAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBwb3B1cFVSTFN0cmluZyA9IEAicHNvbjovL3d3dy53ZWJraXQub3JnL3Bv
cHVwLWFmdGVyLXJlZGlyZWN0Lmh0bWwiOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
W2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6QCJwc29uOi8vd3d3LndlYmtpdC5vcmcv
cG9wdXAuaHRtbCIgdG9EYXRhOiJwb3B1cCIgd2l0aENPT1BWYWx1ZTpkZXN0aW5hdGlvbkNPT1Bd
OworICAgICAgICAgICAgcG9wdXBVUkxTdHJpbmcgPSBAInBzb246Ly93d3cud2Via2l0Lm9yZy9w
b3B1cC5odG1sIjsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIFtoYW5kbGVyIGFk
ZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCIg
dG9EYXRhOndpbmRvd09wZW5Dcm9zc09yaWdpbkNPT1BUZXN0Qnl0ZXMgd2l0aENPT1BWYWx1ZTpz
b3VyY2VDT09QXTsKICAgICAgICAgaWYgKGRvU2VydmVyU2lkZVJlZGlyZWN0ID09IERvU2VydmVy
U2lkZVJlZGlyZWN0OjpZZXMpIHsKICAgICAgICAgICAgIFtoYW5kbGVyIGFkZFJlZGlyZWN0RnJv
bVVSTFN0cmluZzpAInBzb246Ly93d3cuYXBwbGUuY29tL3BvcHVwLmh0bWwiIHRvVVJMU3RyaW5n
OkAicHNvbjovL3d3dy5hcHBsZS5jb20vcG9wdXAtYWZ0ZXItcmVkaXJlY3QuaHRtbCJdOwogICAg
ICAgICAgICAgW2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6QCJwc29uOi8vd3d3LmFw
cGxlLmNvbS9wb3B1cC1hZnRlci1yZWRpcmVjdC5odG1sIiB0b0RhdGE6InBvcHVwIiB3aXRoQ09P
UFZhbHVlOmRlc3RpbmF0aW9uQ09PUF07Ci0gICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcG9w
dXBVUkxTdHJpbmcgPSBAInBzb246Ly93d3cuYXBwbGUuY29tL3BvcHVwLWFmdGVyLXJlZGlyZWN0
Lmh0bWwiOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgW2hhbmRsZXIgYWRkTWFwcGlu
Z0Zyb21VUkxTdHJpbmc6QCJwc29uOi8vd3d3LmFwcGxlLmNvbS9wb3B1cC5odG1sIiB0b0RhdGE6
InBvcHVwIiB3aXRoQ09PUFZhbHVlOmRlc3RpbmF0aW9uQ09PUF07CisgICAgICAgICAgICBwb3B1
cFVSTFN0cmluZyA9IEAicHNvbjovL3d3dy5hcHBsZS5jb20vcG9wdXAuaHRtbCI7CisgICAgICAg
IH0KICAgICB9CiAgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6
aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJQU09OIl07CiAKQEAgLTcyNTcsNiArNzI3NCw3
IEBAIHN0YXRpYyB2b2lkIHJ1bkNPT1BQcm9jZXNzU3dhcFRlc3QoY29uc3QgY2hhciogc291cmNl
Q09PUCwgY29uc3QgY2hhciogZGVzdGluYXRpCiAgICAgICAgIEVYUEVDVF9GQUxTRShzZXJ2ZXJS
ZWRpcmVjdGVkKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKDJVLCBudW1iZXJPZlByb3Zpc2lvbmFs
TG9hZHMpOyAvLyBPbmUgaW4gZWFjaCB2aWV3LgorICAgIEVYUEVDVF9FUShbaGFuZGxlciByZXF1
ZXN0Q291bnQ6cG9wdXBVUkxTdHJpbmddLCAxVSk7IC8vIFdlIHNob3VsZCBoaXQgdGhlIHNlcnZl
ciBvbmx5IG9uY2UsIGV2ZW4gaW4gY2FzZSBvZiBwcm9jZXNzLXN3YXAuCiAKICAgICBhdXRvIHBp
ZDEgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwogICAgIEVYUEVDVF9UUlVFKCEh
cGlkMSk7Cg==
</data>
<flag name="commit-queue"
          id="459428"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436414</attachid>
            <date>2021-08-25 13:25:45 -0700</date>
            <delta_ts>2021-08-25 13:38:40 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>229465_COOP_Process_Swap_Reuse_NetworkLoad_wip.patch</filename>
            <type>text/plain</type>
            <size>72595</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZDk2MmE5OGFmNTQ2Li5kMjAyZTM0ZWI4
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC04NSw2ICs4NSw3IEBACiAjZW5k
aWYKIAogI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGNoYW5uZWwsIGZtdCwgLi4uKSBS
RUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0
ICJdIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vz
c0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJP
UihjaGFubmVsLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vzc0lkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQogCiAjZGVmaW5lIE5FVFdPUktfUFJPQ0VT
U19NRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTkVUV09SS19QUk9DRVNTX01FU1NBR0VfQ0hFQ0tf
Q09NUExFVElPTihhc3NlcnRpb24sICh2b2lkKTApCiAjZGVmaW5lIE5FVFdPUktfUFJPQ0VTU19N
RVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCBjb21wbGV0aW9uKSBkbyB7IFwKQEAg
LTE2Niw3ICsxNjcsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNV
cGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCBoYXNVcGxvYWQpCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZENsZWFudXBSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VM
b2FkZXImIGxvYWRlcikKIHsKLSAgICBSRUxFQVNFX0FTU0VSVChsb2FkZXIuaWRlbnRpZmllcigp
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSk7CiAgICAgUkVM
RUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKGxvYWRlci5pc0tlcHRB
bGl2ZSgpKSB7CkBAIC0xNzQsMTYgKzE3NSwxNiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fbmV0d29ya1Jlc291cmNlTG9h
ZGVycy5nZXQobG9hZGVyLmlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7Ci0gICAgbV9uZXR3b3Jr
UmVzb3VyY2VMb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQo
bV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmdldChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkgPT0g
JmxvYWRlcik7CisgICAgbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnJlbW92ZShsb2FkZXIuY29y
ZUlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnRyYW5zZmVyS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKGxvYWRl
ci5pc0tlcHRBbGl2ZSgpKTsKLSAgICBBU1NFUlQobV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmdl
dChsb2FkZXIuaWRlbnRpZmllcigpKSA9PSAmbG9hZGVyKTsKLSAgICBpZiAoYXV0byB0YWtlbkxv
YWRlciA9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtlKGxvYWRlci5pZGVudGlmaWVyKCkp
KQorICAgIEFTU0VSVChtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuZ2V0KGxvYWRlci5jb3JlSWRl
bnRpZmllcigpKSA9PSAmbG9hZGVyKTsKKyAgICBpZiAoYXV0byB0YWtlbkxvYWRlciA9IG1fbmV0
d29ya1Jlc291cmNlTG9hZGVycy50YWtlKGxvYWRlci5jb3JlSWRlbnRpZmllcigpKSkKICAgICAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+YWRkS2VwdEFsaXZlTG9hZCh0YWtlbkxvYWRlci5yZWxlYXNl
Tm9uTnVsbCgpKTsKIH0KIApAQCAtNDg2LDI3ICs0ODcsMzggQEAgc3RkOjp1bmlxdWVfcHRyPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVGZXQKIH0KICNlbmRpZgogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
Y2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxvYWRQ
YXJhbWV0ZXJzKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVS
ZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVy
cywgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdM
b2FkZXJUb1Jlc3VtZSkKIHsKLSAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKExvYWRpbmcsICJz
Y2hlZHVsZVJlc291cmNlTG9hZDogKHBhcmVudFBJRD0lZCwgcGFnZVByb3h5SUQ9JSIgUFJJdTY0
ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RD0lIiBQUkl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQsIGxvYWRQYXJhbWV0ZXJz
LndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJ
bnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0
ZXJzLmlkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coTG9hZGluZywgInNj
aGVkdWxlUmVzb3VyY2VMb2FkOiAocGFyZW50UElEPSVkLCBwYWdlUHJveHlJRD0lIiBQUkl1NjQg
Iiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
PSUiIFBSSXU2NCAiLCBleGlzdGluZ0xvYWRlclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIGxvYWRQ
YXJhbWV0ZXJzLnBhcmVudFBJRCwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQudG9VSW50
NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJz
LndlYkZyYW1lSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgZXhpc3Rp
bmdMb2FkZXJUb1Jlc3VtZS52YWx1ZV9vcihOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciB7
IH0pLnRvVUludDY0KCkpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGF1dG8m
IHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25J
RCk7CiAgICAgaWYgKCFzZXJ2ZXIuaXNJbXBvcnRDb21wbGV0ZWQoKSkgewotICAgICAgICBzZXJ2
ZXIud2hlbkltcG9ydElzQ29tcGxldGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGxvYWRQYXJhbWV0ZXJzID0gV1RGTW92ZShsb2FkUGFyYW1ldGVycyldKCkgbXV0YWJs
ZSB7CisgICAgICAgIHNlcnZlci53aGVuSW1wb3J0SXNDb21wbGV0ZWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbG9hZFBhcmFtZXRlcnMgPSBXVEZNb3ZlKGxvYWRQYXJh
bWV0ZXJzKSwgZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmICghbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc0Nvbm5lY3Rpb24od2ViUHJvY2Vzc0lk
ZW50aWZpZXIoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQVNTRVJU
KG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCkuaXNJbXBv
cnRDb21wbGV0ZWQoKSk7Ci0gICAgICAgICAgICBzY2hlZHVsZVJlc291cmNlTG9hZChXVEZNb3Zl
KGxvYWRQYXJhbWV0ZXJzKSk7CisgICAgICAgICAgICBzY2hlZHVsZVJlc291cmNlTG9hZChXVEZN
b3ZlKGxvYWRQYXJhbWV0ZXJzKSwgZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZSk7CiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisKICAgICBhdXRvIGlkZW50aWZpZXIg
PSBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyOwogICAgIFJFTEVBU0VfQVNTRVJUKGlkZW50aWZp
ZXIpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQo
IW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAKKyAgICBp
ZiAoZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZSkgeworICAgICAgICBpZiAoYXV0byBleGlzdGluZ0xv
YWRlciA9IG5ldHdvcmtQcm9jZXNzKCkudGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5z
ZmVyKCpleGlzdGluZ0xvYWRlclRvUmVzdW1lKSkgeworICAgICAgICAgICAgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRyhMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJjZUxvYWQ6IFJlc3VtaW5nIGV4aXN0
aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciIpOworICAgICAgICAgICAgbV9uZXR3b3JrUmVzb3Vy
Y2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCAqZXhpc3RpbmdMb2FkZXIpOworICAgICAgICAgICAg
ZXhpc3RpbmdMb2FkZXItPnRyYW5zZmVyVG9OZXdXZWJQcm9jZXNzKCp0aGlzLCBpZGVudGlmaWVy
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBDT05O
RUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDog
Q291bGQgbm90IGZpbmQgZXhpc3RpbmcgTmV0d29ya1Jlc291cmNlTG9hZGVyIHRvIHJlc3VtZSwg
d2lsbCBkbyBhIGZyZXNoIGxvYWQiKTsKKyAgICB9CisKICAgICBhdXRvJiBsb2FkZXIgPSBtX25l
dHdvcmtSZXNvdXJjZUxvYWRlcnMuYWRkKGlkZW50aWZpZXIsIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y3JlYXRlKFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCAqdGhpcykpLml0ZXJhdG9yLT52YWx1
ZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTEyNjksNiArMTI4MSwxMSBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwcmlvcml0aXplUmVzb3VyY2VMb2Fk
cyhWZWN0b3I8UmVzb3VyY2VMb2FkSQogICAgIHNlc3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVy
KCkucHJpb3JpdGl6ZUxvYWRzKGxvYWRzKTsKIH0KIAorUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxv
YWRlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnRha2VOZXR3b3JrUmVzb3VyY2VM
b2FkZXIodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikKK3sKKyAgIHJldHVybiBtX25l
dHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShyZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNWUwNzA5MWUzNzM2Li5mNGEwYWI3MTkzZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtNRE5TUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUlRDUHJvdmlkZXIuaCIKKyNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdv
cmtSZXNvdXJjZUxvYWRNYXAuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgogI2luY2x1
ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTE4Niw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQ
b2xpY3kpOwogCiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VT
b3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIFJl
ZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIodWlu
dDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CkBA
IC0yMDMsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jik7CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpF
bmNvZGVyPiYpOwogCi0gICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpOwogICAgIHZvaWQgcGVyZm9y
bVN5bmNocm9ub3VzTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWRE
ZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCB0ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2Vz
V2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpUZXN0UHJvY2Vzc0luY29taW5nU3luY01l
c3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBs
b2FkUGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJlOTI0NGU4NmZjZC4uNzNmM2U4OTE2
MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIy
LDcgKzIyLDcgQEAKIAogbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
TGVnYWN5UmVjZWl2ZXIgewogCi0gICAgU2NoZWR1bGVSZXNvdXJjZUxvYWQoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKQorICAgIFNj
aGVkdWxlUmVzb3VyY2VMb2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMg
cmVzb3VyY2VMb2FkUGFyYW1ldGVycywgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ0xvYWRlclRvUmVzdW1lKQogICAgIFBlcmZvcm1T
eW5jaHJvbm91c0xvYWQoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEpIFN5
bmNocm9ub3VzCiAgICAgVGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIC0+IChi
b29sIGhhbmRsZWQpIFN5bmNocm9ub3VzCiAgICAgTG9hZFBpbmcoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyByZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA1ZDY4MjliMjg4
MDIuLmM5ODMxYTZmOWJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI3ODYsNiArMjc4NiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoUGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZp
ZXIsIFZlYwogICAgIG1fZXh0ZW5zaW9uQ09SU0Rpc2FibGluZ1BhdHRlcm5zLnNldChwYWdlSWRl
bnRpZmllciwgV1RGTW92ZShwYXJzZWRQYXR0ZXJucykpOwogfQogCitSZWZQdHI8TmV0d29ya1Jl
c291cmNlTG9hZGVyPiBOZXR3b3JrUHJvY2Vzczo6dGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vz
c1RyYW5zZmVyKE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7Cisg
ICAgcmV0dXJuIG1fbG9hZGVyc0F3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyLnRha2UoaWRlbnRp
Zmllcik7Cit9CisKICNpZiBQTEFURk9STShDT0NPQSkKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFw
cFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CkBAIC0yODE1LDYgKzI4MjAsMjIgQEAgUlRDRGF0YUNoYW5u
ZWxSZW1vdGVNYW5hZ2VyUHJveHkmIE5ldHdvcmtQcm9jZXNzOjpydGNEYXRhQ2hhbm5lbFByb3h5
KCkKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlTG9hZEZvcldlYlBy
b2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRl
bnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKHJlc291cmNlTG9hZElkZW50aWZpZXIp
OworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSB3ZWJQcm9jZXNzQ29ubmVjdGlvbihzb3VyY2VQcm9j
ZXNzSWRlbnRpZmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKKworICAgIGF1dG8gbG9hZGVyID0gY29ubmVj
dGlvbi0+dGFrZU5ldHdvcmtSZXNvdXJjZUxvYWRlcihyZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsK
KyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6
bnVsbG9wdCk7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXItPmlkZW50aWZpZXIoKTsK
KyAgICBtX2xvYWRlcnNBd2FpdGluZ1dlYlByb2Nlc3NUcmFuc2Zlci5hZGQoaWRlbnRpZmllciwg
bG9hZGVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZp
ZXIpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRl
cnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCwgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGVhOTFlZDU5NDAzZS4uMzBhNGJmNjU1
ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5LmgiCiAj
aW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgpA
QCAtMzg5LDYgKzM5MCw4IEBAIHB1YmxpYzoKICAgICBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFn
ZXJQcm94eSYgcnRjRGF0YUNoYW5uZWxQcm94eSgpOwogI2VuZGlmCiAKKyAgICBSZWZQdHI8TmV0
d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIo
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmKTsKIApAQCAtNDIyLDYgKzQyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBk
aWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAg
IHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9s
aWN5KT4mJik7CisgICAgdm9pZCBwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgdWludDY0X3Qg
cmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYpOwogCiAgICAgdm9pZCBmZXRj
aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYnNpdGVEYXRhJiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTYwOCw2ICs2MTIsNyBAQCBwcml2
YXRlOgogICAgIFNlY29uZHMgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0IHsgZGVmYXVsdFNl
cnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQgfTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpVc2VyQ29udGVudFVSTFBhdHRlcm4+PiBtX2V4dGVu
c2lvbkNPUlNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBIYXNoTWFwPE5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyLCBSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPj4gbV9sb2FkZXJzQXdhaXRp
bmdXZWJQcm9jZXNzVHJhbnNmZXI7IC8vIEZJWE1FOiBTaG91bGQgYmUgY2xlYXJlZCBvbiBhIHRp
bWVyLgogCiAgICAgYm9vbCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5hYmxlZCB7IHRydWUg
fTsKICAgICBib29sIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGQ3OTk3NDUxYzQ1NC4uY2FlYjhkOWJiODQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTE5NSw2ICsxOTUsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKKyAgICBQ
cmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmll
cikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
cj4gbmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIpIEFzeW5jCisKICAgICBBZGRXZWJQYWdl
TmV0d29ya1BhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VOZXR3b3JrUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzKQogICAgIFJlbW92ZVdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQp
CiAgICAgQ291bnROb25EZWZhdWx0U2Vzc2lvblNldHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiAoc2l6ZV90IGNvdW50KSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDgyZjFlNTMwMTQ0Zi4u
YmUyMGEyNmU1N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MjIsNiArNTIyLDE2IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgY2xlYW51cChMb2FkUmVzdWx0OjpDYW5j
ZWwpOwogfQogCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJhbnNmZXJUb05ld1dlYlBy
b2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG5ld0Nvbm5lY3Rpb24sIFJlc291
cmNlTG9hZElkZW50aWZpZXIgbmV3Q29yZUlkZW50aWZpZXIpCit7CisgICAgbV9jb25uZWN0aW9u
ID0gbmV3Q29ubmVjdGlvbjsKKyAgICBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciA9IG5ld0NvcmVJ
ZGVudGlmaWVyOworCisgICAgQVNTRVJUKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciB8fCBt
X2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UpOworICAgIGJv
b2wgd2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IHRydWU7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IG1fcmVz
cG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfSk7Cit9CisKIGJv
b2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0
aW9ucyhjb25zdCBTdHJpbmcmIHhGcmFtZU9wdGlvbnMsIGNvbnN0IFVSTCYgdXJsKQogewogICAg
IGlmIChpc01haW5GcmFtZUxvYWQoKSkKQEAgLTU0NiwxMiArNTU2LDEyIEBAIGJvb2wgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25z
dCBTdHJpbmcmIHhGCiAgICAgfQogICAgIGNhc2UgWEZyYW1lT3B0aW9uc0Rpc3Bvc2l0aW9uOjpD
b25mbGljdDogewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIk11bHRpcGxlICdYLUZy
YW1lLU9wdGlvbnMnIGhlYWRlcnMgd2l0aCBjb25mbGljdGluZyB2YWx1ZXMgKCciICsgeEZyYW1l
T3B0aW9ucyArICInKSBlbmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcgJyIgKyB1cmwuc3RyaW5nQ2Vu
dGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJy4gRmFsbGluZyBiYWNrIHRvICdERU5ZJy4iOwot
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQp
OworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlEKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgWEZyYW1lT3B0
aW9uc0Rpc3Bvc2l0aW9uOjpJbnZhbGlkOiB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2Ug
PSAiSW52YWxpZCAnWC1GcmFtZS1PcHRpb25zJyBoZWFkZXIgZW5jb3VudGVyZWQgd2hlbiBsb2Fk
aW5nICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIic6ICciICsg
eEZyYW1lT3B0aW9ucyArICInIGlzIG5vdCBhIHJlY29nbml6ZWQgZGlyZWN0aXZlLiBUaGUgaGVh
ZGVyIHdpbGwgYmUgaWdub3JlZC4iOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpB
ZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0s
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZp
ZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICB9CkBAIC01NzgsNyArNTg4LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFuY2VzdG9yc09yWEZyYW1lT3B0aW8K
ICAgICAgICAgU3RyaW5nIHhGcmFtZU9wdGlvbnMgPSBtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6WEZyYW1lT3B0aW9ucyk7CiAgICAgICAgIGlmICgheEZyYW1lT3B0
aW9ucy5pc051bGwoKSAmJiBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyh4RnJh
bWVPcHRpb25zLCByZXNwb25zZS51cmwoKSkpIHsKICAgICAgICAgICAgIFN0cmluZyBlcnJvck1l
c3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGRpc3BsYXkgJyIsIHJlc3BvbnNlLnVybCgp
LnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyBpbiBhIGZyYW1lIGJlY2F1c2Ug
aXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICciLCB4RnJhbWVPcHRpb25zLCAiJy4iKTsKLSAg
ICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxl
dmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xl
TWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJp
dHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNTk1LDcgKzYwNSw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzaG91bGRJbnRlcnJ1cHROYXZpZ2F0aW9uRm9yQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGlj
CiAgICAgICAgIGF1dG8gcmVzcG9uc2VDT0VQID0gV2ViQ29yZTo6b2J0YWluQ3Jvc3NPcmlnaW5F
bWJlZGRlclBvbGljeShyZXNwb25zZSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi0+aXNQb3Rl
bnRpYWxseVRydXN0d29ydGh5KCkgPyBJc1NlY3VyZUNvbnRleHQ6OlllcyA6IElzU2VjdXJlQ29u
dGV4dDo6Tm8pOwogICAgICAgICBpZiAocmVzcG9uc2VDT0VQLnZhbHVlICE9IFdlYkNvcmU6OkNy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3lWYWx1ZTo6UmVxdWlyZUNPUlApIHsKICAgICAgICAgICAg
IFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGRpc3BsYXkgJyIs
IHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyBpbiBh
IGZyYW1lIGJlY2F1c2Ugb2YgQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeS4iKTsKLSAgICAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVs
OjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVz
c2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHks
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNjExLDcgKzYyMSw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzaG91bGRJbnRlcnJ1cHRXb3JrZXJMb2FkRm9yQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljCiAg
ICAgICAgIGF1dG8gcmVzcG9uc2VDT0VQID0gV2ViQ29yZTo6b2J0YWluQ3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeShyZXNwb25zZSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi0+aXNQb3RlbnRp
YWxseVRydXN0d29ydGh5KCkgPyBJc1NlY3VyZUNvbnRleHQ6OlllcyA6IElzU2VjdXJlQ29udGV4
dDo6Tm8pOwogICAgICAgICBpZiAocmVzcG9uc2VDT0VQLnZhbHVlICE9IFdlYkNvcmU6OkNyb3Nz
T3JpZ2luRW1iZWRkZXJQb2xpY3lWYWx1ZTo6UmVxdWlyZUNPUlApIHsKICAgICAgICAgICAgIFN0
cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgJyIsIHJlc3Bv
bnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyB3b3JrZXIgYmVj
YXVzZSBvZiBDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5LiIpOwotICAgICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBl
cnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAg
ICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxl
dmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9
CkBAIC02MzAsNyArNjQwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICBpZiAoc2hv
dWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgJiYgbV9uZXR3b3JrTG9hZENoZWNr
ZXIpIHsKICAgICAgICAgYXV0byBpbmZvcm1hdGlvbiA9IG1fbmV0d29ya0xvYWRDaGVja2VyLT50
YWtlTmV0d29ya0xvYWRJbmZvcm1hdGlvbigpOwogICAgICAgICBpbmZvcm1hdGlvbi5yZXNwb25z
ZSA9IG1fcmVzcG9uc2U7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xvYWRJbmZv
cm1hdGlvbihpZGVudGlmaWVyKCksIFdURk1vdmUoaW5mb3JtYXRpb24pKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uLT5hZGROZXR3b3JrTG9hZEluZm9ybWF0aW9uKGNvcmVJZGVudGlmaWVyKCksIFdU
Rk1vdmUoaW5mb3JtYXRpb24pKTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4
ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0
aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KQEAgLTc1
OCw3ICs3NjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogICAgIExPQURFUl9SRUxFQVNF
X0xPRygiZGlkRmluaXNoTG9hZGluZzogKG51bUJ5dGVzUmVjZWl2ZWQ9JXpkLCBoYXNDYWNoZUVu
dHJ5Rm9yVmFsaWRhdGlvbj0lZCkiLCBtX251bUJ5dGVzUmVjZWl2ZWQsICEhbV9jYWNoZUVudHJ5
Rm9yVmFsaWRhdGlvbik7CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzKCkpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xvYWRJbmZvcm1hdGlv
bk1ldHJpY3MoaWRlbnRpZmllcigpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBtX2Nv
bm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb25NZXRyaWNzKGNvcmVJZGVudGlmaWVy
KCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRh
dGlvbikgewogICAgICAgICAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04MDEsNyArODExLDcgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQogICAgIFVOVVNFRF9WQVJJQUJMRSh3YXNTZXJ2aWNlV29ya2VyTG9hZCk7
CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTmV0d29ya0xvYWRJbmZvcm1hdGlvbihpZGVudGlmaWVy
KCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU5ldHdvcmtMb2FkSW5mb3JtYXRpb24o
Y29yZUlkZW50aWZpZXIoKSk7CiAKICAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpKTsKIApAQCAt
MTIwMiw5ICsxMjEyLDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2
ZUNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6CiAgICAgTE9BREVSX1JF
TEVBU0VfTE9HKCJkaWRSZXRyaWV2ZUNhY2hlRW50cnk6IFNlbmRpbmcgV2ViUmVzb3VyY2VMb2Fk
ZXI6OkRpZFJlY2VpdmVSZXNwb25zZSBJUEMgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlPSVkKSIsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsK
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNl
IHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOwog
Ci0gICAgaWYgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQorICAgIGlm
IChuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgeworICAgICAgICBtX3Jl
c3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7CiAgICAgICAgIG1fY2FjaGVFbnRyeVdhaXRpbmdG
b3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IFdURk1vdmUoZW50cnkpOwotICAgIGVsc2Ug
eworICAgIH0gZWxzZSB7CiAgICAgICAgIHNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KFdURk1vdmUo
ZW50cnkpKTsKICAgICAgICAgY2xlYW51cChMb2FkUmVzdWx0OjpTdWNjZXNzKTsKICAgICB9CkBA
IC0xMzU5LDcgKzEzNzAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2ll
SW5mb3JtYXRpb24oKSBjb25zdAogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IG1f
Y29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQoKSk7
CiAgICAgQVNTRVJUKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7CiAKLSAgICBsb2dDb29raWVJbmZv
cm1hdGlvbihtX2Nvbm5lY3Rpb24sICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3JpZ2lu
YWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUo
b3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2luYWxSZXF1
ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGlkZW50aWZpZXIoKSk7
CisgICAgbG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29ya1Jlc291cmNl
TG9hZGVyIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIG9yaWdpbmFsUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNh
bWVTaXRlSW5mbzo6Y3JlYXRlKG9yaWdpbmFsUmVxdWVzdCgpKSwgb3JpZ2luYWxSZXF1ZXN0KCku
dXJsKCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBmcmFtZUlEKCksIHBhZ2VJ
RCgpLCBjb3JlSWRlbnRpZmllcigpKTsKIH0KIAogc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tp
ZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgc3Rk
OjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKQEAgLTE0NjMsNyArMTQ3NCw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgbWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsIG1l
c3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJz
LndlYkZyYW1lSUQsICBtZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGlkZW50
aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgbWVz
c2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBtZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VuZENTUFZpb2xhdGlvblJlcG9ydChVUkwmJiByZXBvcnRVUkwsIFJlZjxGb3JtRGF0YT4mJiBy
ZXBvcnQpCkBAIC0xNTM0LDcgKzE1NDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKiBmZQogICAg
IFJFTEVBU0VfQVNTRVJUKG1fc2VydmljZVdvcmtlckZldGNoVGFzay5nZXQoKSA9PSBmZXRjaFRh
c2spOwogICAgIGlmIChtX3BhcmFtZXRlcnMuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VX
b3JrZXJzTW9kZTo6T25seSkgewogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoInNl
cnZpY2VXb3JrZXJEaWROb3RIYW5kbGU6IEFib3J0aW5nIGxvYWQgYmVjYXVzZSB0aGUgc2Vydmlj
ZSB3b3JrZXIgZGlkIG5vdCBoYW5kbGUgdGhlIGxvYWQgYW5kIHNlcnZpY2VXb3JrZXJNb2RlIG9u
bHkgYWxsb3dzIHNlcnZpY2Ugd29ya2VycyIpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRlcjo6U2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSB7IH0sIGlkZW50aWZpZXIo
KSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2aWNlV29y
a2VyRGlkTm90SGFuZGxlIHsgfSwgY29yZUlkZW50aWZpZXIoKSk7CiAgICAgICAgIGFib3J0KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBjZWY2NTQ3OWI3ZTYuLjEyYzMz
MjJlZGZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCkBAIC04NSw2ICs4NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0
YXJ0KCk7CiAgICAgdm9pZCBhYm9ydCgpOwogCisgICAgdm9pZCB0cmFuc2ZlclRvTmV3V2ViUHJv
Y2VzcyhOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlc291cmNlTG9hZElkZW50aWZp
ZXIpOworCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3
b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
OwogCkBAIC05NCwxMCArOTYsMTEgQEAgcHVibGljOgogCiAgICAgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2Nv
bm5lY3Rpb247IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVy
biBtX2Nvbm5lY3Rpb24tPnNlc3Npb25JRCgpOyB9Ci0gICAgUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXI7IH0K
KyAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGNvcmVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXI7IH0KICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEOyB9CiAg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRDsgfQogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CisgICAgTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VMb2FkSUQ7IH0KIAogICAgIE5ldHdvcmtDYWNoZTo6R2xvYmFsRnJhbWVJRCBnbG9i
YWxGcmFtZUlEKCkgeyByZXR1cm4geyBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHBhZ2VJ
RCgpLCBmcmFtZUlEKCkgfTsgfQogCkBAIC0yMTAsNyArMjEzLDcgQEAgcHJpdmF0ZToKIAogICAg
IFJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbygpOwogCi0gICAgY29uc3QgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOworICAgIE5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIAogICAgIFJlZjxOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzay5jcHAKaW5kZXggYWY5NTFkNWEwYjU5Li5lNGFmZjU2NDY4M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzZW5k
VG9TZXJ2aWNlV29ya2VyKE1lc3MKIAogdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzZW5kVG9DbGllbnQoTWVzc2FnZSYmIG1lc3NhZ2UpCiB7
Ci0gICAgcmV0dXJuIG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0aW9u
KCkuc2VuZChzdGQ6OmZvcndhcmQ8TWVzc2FnZT4obWVzc2FnZSksIG1fbG9hZGVyLmlkZW50aWZp
ZXIoKSk7CisgICAgcmV0dXJuIG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25u
ZWN0aW9uKCkuc2VuZChzdGQ6OmZvcndhcmQ8TWVzc2FnZT4obWVzc2FnZSksIG1fbG9hZGVyLmNv
cmVJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0
KFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmljZVdvcmtlckNvbm5lY3Rpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggZWNhMTFhM2EwMGMy
Li4zNDZmN2Q4ZDg0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJh
bWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAK
QEAgLTU3LDYgKzU3LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGxvY2tCYWNrRm9yd2FyZExpc3Q7CiAg
ICAgZW5jb2RlciA8PCBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgZW5jb2Rl
ciA8PCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGVuY29kZXIgPDwgZXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOwogICAgIGVuY29kZXIgPDwg
c2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OwogCiAgICAgcGxhdGZvcm1FbmNvZGUoZW5jb2Rlcik7
CkBAIC0xMzcsNiArMTM4LDkgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAgICAgCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShkYXRhLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFt
ZXRlcnMuaAppbmRleCBlNWM1N2IwNDA0OWMuLjBjMDU0MGIwNDZlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Mb2FkUGFyYW1ldGVycy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCkBAIC03NCw2ICs3NSw3IEBA
IHN0cnVjdCBMb2FkUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNl
c3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgeyBXZWJDb3Jl
OjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpWaXNpYmxlIH07CiAg
ICAgU3RyaW5nIGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKICAgICBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluOworICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4
aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGRhdGFEZXRlY3Rpb25Db250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNjcxYWRkNGFhMjdjLi5iMWFjM2Q0MzhhMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcApAQCAtNDc1LDYgKzQ3NSwxNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UAog
ICAgIH0KIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldlYlBy
b2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRl
bnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAi
JXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2Zl
cjogc291cmNlUHJvY2Vzc0lkZW50aWZpZXI6ICUiIFBSSXU2NCAiLCByZXNvdXJjZUxvYWRJZGVu
dGlmaWVyOiAlIiBQUkl1NjQsIHRoaXMsIHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0
KCksIHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgIGlmICghcmVzb3VyY2VMb2FkSWRlbnRp
ZmllcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoc291cmNlUHJvY2Vzc0lkZW50aWZp
ZXIsIHJlc291cmNlTG9hZElkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
UmVzdWx0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBX
ZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNThhOGE4ZTk0
YmYzLi40ZTViYjQ1OWEzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hl
ci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhy
b3R0bGVyQ2xpZW50LmgiCkBAIC0yMTQsNiArMjE1LDggQEAgcHVibGljOgogICAgIHZvaWQgdGVz
dFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXN0UHJv
Y2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlEZWxheWVkUmVw
bHkmJik7CiAgICAgdm9pZCB0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgcHJlcGFyZUxvYWRG
b3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJv
Y2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
cj4pPiYmKTsKKwogICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIGZpbmFsIHsgcmV0
dXJuIG1fdGhyb3R0bGVyOyB9CiAgICAgdm9pZCB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApp
bmRleCA0MWNkMzVkYmZhOGQuLjc1YTY1YzQzMzcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMTcxLDkgKzE3MSw5IEBAIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdh
dGlvbiwgY29uc3QgSVBDOjpEYXRhCiAgICAgbV9wYWdlLmxvYWREYXRhV2l0aE5hdmlnYXRpb25T
aGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIGRhdGEs
IG1pbWVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIHNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRl
UG9saWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5KTsKIH0KIAotdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0
aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGlj
aWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojps
b2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpv
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xp
Y2llcywgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKQogewotICAgIFBST1ZJU0lP
TkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiIp
OworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywg
ImxvYWRSZXF1ZXN0OiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWU9JSIgUFJJdTY0LCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUudmFsdWVfb3IoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgp
KTsKICAgICBBU1NFUlQoc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkICE9IFdlYkNvcmU6OlNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8pOwogCiAgICAgLy8gSWYgdGhpcyBpcyBhIGNs
aWVudC1zaWRlIHJlZGlyZWN0IGNvbnRpbnVpbmcgaW4gYSBuZXcgcHJvY2VzcywgdGhlbiB0aGUg
bmV3IHByb2Nlc3Mgd2lsbCBvdmVyd3JpdGUgdGhlIGZyb21JdGVtJ3MgVVJMLiBJbiB0aGlzIGNh
c2UsCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJl
cXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKICAgICBpZiAo
bmF2aWdhdGlvbi5mcm9tSXRlbSgpICYmIG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgp
ID09IFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6OlllcykKICAgICAgICAgbmF2aWdhdGlv
bi5mcm9tSXRlbSgpLT5zZXRMYXN0UHJvY2Vzc0lkZW50aWZpZXIobV9wcm9jZXNzLT5jb3JlUHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CiAKLSAgICBtX3BhZ2UubG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlv
blNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgV1RG
TW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0ZVBvbGljaWVz
KSk7CisgICAgbV9wYWdlLmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNz
LmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIFdURk1vdmUocmVxdWVzdCksIG5h
dmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5LCB1c2VyRGF0YSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIGV4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNp
ZXM+JiYgd2Vic2l0ZVBvbGljaWVzKQpAQCAtMzMwLDEyICszMzAsMTIgQEAgdm9pZCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKEZyYW1l
SWRlbnRpZmllcgogICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5
bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1v
dmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRp
b25BY3Rpb25EYXRhKSwgV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mbyksIG9yaWdpbmF0aW5n
UGFnZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVz
dEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7
CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNl
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1
bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUs
IGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIXZh
bGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVm
KCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIs
IG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxv
YWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CisgICAgbV9wYWdlLmRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlE
LCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwg
cmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdh
c0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
LCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwogfQog
CiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxT
dHJpbmcsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggMjcxNGIyYTViNTQ3Li4wYWJlYTlkYTZi
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVk
ZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNp
c2lvbi5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJTYW5kYm94
RXh0ZW5zaW9uLmgiCkBAIC0xMDUsNyArMTA2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2
b2lkIGxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFdlYkNvcmU6OlN1YnN0
aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkpOwotICAgIHZvaWQgbG9hZFJlcXVl
c3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0
KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpv
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0
ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
clRvUmVzdW1lID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGdvVG9CYWNrRm9yd2FyZEl0ZW0o
QVBJOjpOYXZpZ2F0aW9uJiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYsIFJlZlB0cjxBUEk6Oldl
YnNpdGVQb2xpY2llcz4mJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIApAQCAtMTI0LDcgKzEyNSw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVy
PiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgZmlu
YWw7CiAKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxX
ZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90
IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5
SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmli
dXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdD
b250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQ2NF90IG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdl
UHJvdmlzaW9uYWxVUkxGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0
KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
VVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBVc2VyRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMTExMzE5ZDhkM2VmLi43NGFmMzllMzVkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTM4MSw3ICsxMzgxLDcgQEAgUmVmUHRyPEFQ
STo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBTaG8KICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2
aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGlj
aWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVl
c3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0
aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwg
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNp
dGVQb2xpY2llcywgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4g
ZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKQogewogICAgIEFT
U0VSVCghbV9pc0Nsb3NlZCk7CiAKQEAgLTE0MDQsNiArMTQwNCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzCiAgICAgbG9hZFBhcmFtZXRlcnMubG9ja0JhY2tGb3J3YXJkTGlzdCA9IG5hdmln
YXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudFJl
ZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IG5hdmlnYXRpb24uY2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5KCk7CiAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAgbG9hZFBhcmFtZXRlcnMu
ZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOwogICAgIG1heWJlSW5pdGlhbGl6
ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUocHJvY2VzcywgdXJsLCBtX3BhZ2VMb2FkU3RhdGUucmVz
b3VyY2VEaXJlY3RvcnlVUkwoKSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSk7CiAKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKHByb2Nlc3MsIGxvYWRQYXJhbWV0
ZXJzKTsKQEAgLTM2MjAsNyArMzYyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92
aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAgICAg
bV9pbnNwZWN0b3JDb250cm9sbGVyLT5kaWRDb21taXRQcm92aXNpb25hbFBhZ2Uob2xkV2ViUGFn
ZUlELCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmln
YXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1
ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UsIFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgbmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vi
c2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3
UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxTdXNw
ZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBu
ZXdQcm9jZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNp
ZXMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5n
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkKIHsKICAgICBXRUJQQUdFUFJP
WFlfUkVMRUFTRV9MT0coTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzczog
bmV3UHJvY2Vzc1BJRD0laSwgaGFzU3VzcGVuZGVkUGFnZT0laSIsIG5ld1Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZSk7CiAgICAgTE9HKExvYWRpbmcsICJDb250
aW51aW5nIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIs
IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsK
QEAgLTM2MzcsNyArMzYzOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRp
b25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgYm9vbCBp
c1NlcnZlclNpZGVSZWRpcmVjdCA9IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA9PSBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
ICYmIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCk7CiAgICAgYm9vbCBzaG91
bGRDbG9zZVByZXZpb3VzUGFnZUFmdGVyQ29tbWl0ID0gc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkID09IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25zZVBvbGlj
eURlY2lzaW9uOwogICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbWFrZVVuaXF1ZTxQcm92aXNpb25h
bFBhZ2VQcm94eT4oKnRoaXMsIFdURk1vdmUobmV3UHJvY2VzcyksIFdURk1vdmUoc3VzcGVuZGVk
UGFnZSksIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIGlzU2VydmVyU2lkZVJlZGlyZWN0LCBu
YXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQs
IHNob3VsZENsb3NlUHJldmlvdXNQYWdlQWZ0ZXJDb21taXQsIHdlYnNpdGVQb2xpY2llcy5nZXQo
KSk7Ci0gICAgYXV0byBjb250aW51YXRpb24gPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgc2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2ll
cyldKCkgbXV0YWJsZSB7CisgICAgYXV0byBjb250aW51YXRpb24gPSBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwg
c2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdl
YnNpdGVQb2xpY2llcyksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jl
c3VtZV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9uLT50
YXJnZXRJdGVtKCkpIHsKICAgICAgICAgICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICVw
IGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyB0byBiYWNrIGl0ZW0gVVJMICVzIiwgdGhp
cywgaXRlbS0+dXJsKCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTM2NjAsMTAgKzM2NjEsMTEgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5h
dmlnYXRpb24mIG5hdmlnYXRpb24sIHMKIAogICAgICAgICAvLyBGSVhNRTogV29yayBvdXQgdGlt
aW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0YwogICAg
ICAgICBBU1NFUlQoIW5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkuaXNFbXB0eSgpKTsKKyAg
ICAgICAgQVNTRVJUKCFleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUgfHwgIW5hdmlnYXRpb24tPnN1YnN0aXR1dGVEYXRhKCkpOwogICAgICAgICBpZiAoYXV0byYg
c3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKQogICAgICAgICAg
ICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURh
dGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vi
c3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1
dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIHNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEZN
b3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEpLCBzdWJzdGl0dXRlRGF0YS0+c2Vzc2lvbkhpc3RvcnlW
aXNpYmlsaXR5KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2Ut
PmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1
cnJlbnRSZXF1ZXN0KCkgfSwgbnVsbHB0ciwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0
YSkpOworICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRp
b24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkgfSwgbnVs
bHB0ciwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSksIGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CiAgICAgfTsKICAgICBpZiAobV9pbnNwZWN0
b3JDb250cm9sbGVyLT5zaG91bGRQYXVzZUxvYWRpbmcoKm1fcHJvdmlzaW9uYWxQYWdlKSkKICAg
ICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zZXRDb250aW51ZUxvYWRpbmdDYWxsYmFjaygq
bV9wcm92aXNpb25hbFBhZ2UsIFdURk1vdmUoY29udGludWF0aW9uKSk7CkBAIC01NjE3LDEyICs1
NjE5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwKLSAgICBib29sIHdhc0FsbG93ZWRCeUluamVj
dGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAgICBib29sIHdhc0FsbG93
ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gs
IHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1v
dmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVz
dCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0
ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIGxpc3RlbmVySUQsIHVz
ZXJEYXRhKTsKKyAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29w
eVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlm
aWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRv
d25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVy
SUQsIHVzZXJEYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZp
ZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93
bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVl
ZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZp
ZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93
bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVl
ZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElk
ZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkK
IHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBA
IC01NjM1LDEzICs1NjM3LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JRCA/IG1fbmF2aWdhdGlv
blN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRyOwogICAgIGF1dG8gbmF2
aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCksIHJlcXVlc3Qs
IHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKIAotICAgIGF1
dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2ViUGFnZUlELCBmcmFtZUlELCBu
ZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBpZGVudGlmaWVyLCBsaXN0ZW5lcklELCBu
YXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFr
ZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHdlYlBhZ2VJRCwgZnJhbWVJRCwgbmVlZHNCcm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGlkZW50aWZpZXIsIGxp
c3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pLAogICAgICAgICBwcm9j
ZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6
OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJy
b3dzaW5nV2FybmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4g
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1F
OiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBj
bGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5Lgog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChz
YWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CiAKLSAgICAgICAgYXV0
byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQ
YWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpXSAo
Y29uc3QgYXV0byYgcG9saWN5RGVjaXNpb24pIHsKKyAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xp
Y3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQs
IGxpc3RlbmVySUQsIHByb2Nlc3NdIChjb25zdCBhdXRvJiBwb2xpY3lEZWNpc2lvbikgewogICAg
ICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uLCBjcmVhdGVOZXR3
b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnNpb25zKHByb2Nlc3MpKSwgd2ViUGFnZUlEKTsKICAg
ICAgICAgfSk7CiAKQEAgLTU2NDksMTIgKzU2NTEsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
cywKICAgICAgICAgaWYgKHBvbGljeUFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OlVzZSAmJiBuZWVk
c0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoICYmIG5hdmlnYXRpb24pIHsKICAgICAgICAgICAg
IFJlZ2lzdHJhYmxlRG9tYWluIHJlc3BvbnNlRG9tYWluIHsgbmF2aWdhdGlvblJlc3BvbnNlLT5y
ZXNwb25zZSgpLnVybCgpIH07CiAgICAgICAgICAgICAvLyBBdm9pZCBwcm9jZXNzLXN3YXBwaW5n
IGluIGNhc2VzIHdoZXJlIHRoZSBwcm9jZXNzIG9ubHkgY29udGFpbnMgYSBzaW5nbGUgcGFnZSBh
bmQgaXMgb3JpZ2luLWNsZWFuLgotICAgICAgICAgICAgaWYgKHRoaXMtPnByb2Nlc3MoKS5wYWdl
Q291bnQoKSA+IDEgfHwgKHRoaXMtPnByb2Nlc3MoKS5vcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWlu
KCkgJiYgKnRoaXMtPnByb2Nlc3MoKS5vcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgIT0gcmVz
cG9uc2VEb21haW4pKSB7CisgICAgICAgICAgICBpZiAocHJvY2Vzcy0+cGFnZUNvdW50KCkgPiAx
IHx8IChwcm9jZXNzLT5vcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgJiYgKnByb2Nlc3MtPm9w
dGlvbmFsUmVnaXN0cmFibGVEb21haW4oKSAhPSByZXNwb25zZURvbWFpbikpIHsKICAgICAgICAg
ICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQ6IFByb2Nlc3Mtc3dhcHBpbmcgZHVlIHRvIENyb3NzLU9y
aWdpbi1PcGVuZXItUG9saWN5Iik7Ci0gICAgICAgICAgICAgICAgcG9saWN5QWN0aW9uID0gUG9s
aWN5QWN0aW9uOjpJZ25vcmU7Ci0gICAgICAgICAgICAgICAgYXV0byBwcm9jZXNzRm9yTmF2aWdh
dGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yUmVnaXN0cmFibGVEb21h
aW4od2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXNwb25zZURvbWFpbik7Ci0gICAgICAgICAg
ICAgICAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKCpuYXZpZ2F0aW9uLCBudWxscHRy
LCBXVEZNb3ZlKHByb2Nlc3NGb3JOYXZpZ2F0aW9uKSwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudDo6Tm8sIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25zZVBv
bGljeURlY2lzaW9uLCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICB3aWxsQ29udGludWVMb2Fk
SW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzOworICAgICAg
ICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnByZXBhcmVMb2Fk
Rm9yV2ViUHJvY2Vzc1RyYW5zZmVyKHByb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVzcG9uc2VEb21haW4gPSBXVEZNb3ZlKHJlc3BvbnNlRG9tYWluKSwgbmF2aWdh
dGlvbiwgbmF2aWdhdGlvblJlc3BvbnNlID0gV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBz
ZW5kZXIgPSBXVEZNb3ZlKHNlbmRlcildKGF1dG8gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllclRvUmVzdW1lKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBw
cm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9y
UmVnaXN0cmFibGVEb21haW4od2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXNwb25zZURvbWFp
bik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzcygq
bmF2aWdhdGlvbiwgbnVsbHB0ciwgV1RGTW92ZShwcm9jZXNzRm9yTmF2aWdhdGlvbiksIFByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6
Olllc0FmdGVyUmVzcG9uc2VQb2xpY3lEZWNpc2lvbiwgbnVsbHB0ciwgZXhpc3RpbmdOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKTsKKworICAgICAgICAgICAgICAgICAgICBy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uLmdl
dCgpLCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUoc2VuZGVy
KSwgeyB9LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpZZXMpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMjZi
ODA2YzM2YmFmLi5mNzk0ODI2NmYzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTWVkaWFLZXlTeXN0ZW1QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tTdGF0ZS5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJQYWdlTG9hZFN0YXRlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEFjY2Vzc0ludGVudC5o
IgpAQCAtMTc0MSwxMCArMTc0MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdp
dGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJO
YXZpZ2F0aW9uRGF0YVN0b3JlJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lk
IGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVS
TCYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
LCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIHN0ZDo6b3B0aW9uYWw8V2Vi
UGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBs
aXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmpl
Y3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBi
b29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVU
YXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmln
YXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0
cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFz
ZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6
Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZp
c2liaWxpdHkpOwotICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0
aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0
KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0
ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpv
cHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGJh
Y2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2Vi
Q29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBGcmFtZUluZm9EYXRh
JiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFt
ZUluZm8sIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29u
c3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKQEAg
LTIwNjAsNyArMjA2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKICAg
ICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRh
JiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LAotICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wg
bmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29u
c3QgVXNlckRhdGEmKTsKKyAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVk
QnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1h
aW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEm
KTsKICAgICB2b2lkIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiwgYm9vbCwgV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CiAKQEAgLTI0NjIsNyArMjQ2Myw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHJlcG9ydFBhZ2VMb2FkUmVzdWx0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImID0geyB9KTsKIAotICAgIHZvaWQgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9j
ZXNzKEFQSTo6TmF2aWdhdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+
JiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQs
IFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgUmVmUHRyPEFQSTo6V2Vic2l0
ZVBvbGljaWVzPiYmKTsKKyAgICB2b2lkIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhB
UEk6Ok5hdmlnYXRpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmLCBS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJD
b3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xp
Y2llcz4mJiwgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpudWxsb3B0
KTsKIAogICAgIHZvaWQgc2V0TmVlZHNGb250QXR0cmlidXRlcyhib29sKTsKICAgICB2b2lkIHVw
ZGF0ZUZvbnRBdHRyaWJ1dGVzQWZ0ZXJFZGl0b3JTdGF0ZUNoYW5nZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGI4ODAzY2Q1
MjIyYi4uOTI1NTM1YzU2ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMDcsNyArMTA3LDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICNlbmRpZgogCiAgICAgIyBQb2xpY3kgbWVzc2FnZXMKLSAgICBEZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0
IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUs
IGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2Vy
RGF0YSkKKyAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcg
ZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wg
bmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9h
ZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCiAgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1l
SW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9u
RGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJv
eHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlz
dGVuZXJJRCkKICAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgc3RydWN0IFdlYktp
dDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdl
YktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBzdGQ6Om9wdGlv
bmFsPFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpIC0+IChzdHJ1Y3QgV2ViS2l0OjpQb2xpY3lEZWNpc2lvbiBQb2xpY3lEZWNpc2lv
bikgU3luY2hyb25vdXMKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEg
ZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5h
bWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHAKaW5kZXggNmU5NjkwNzI1NGE0Li4zNDllYTJjNjM2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAg
LTQxMiw4ICs0MTIsMTEgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJv
bU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKIAogICAgIEFTU0VSVCgo
bG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQpIHx8
IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlh
bFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMpOwogCi0gICAgV0VCTE9BREVS
U1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2No
ZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNfY2Fz
dDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7Ci0gICAgaWYgKCFX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgMCkpIHsKKyAgICBzdGQ6Om9w
dGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CisgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLmlzTWFp
bkZyYW1lTmF2aWdhdGlvbikKKyAgICAgICAgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lID0gc3RkOjpleGNoYW5nZShtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgc3RkOjpudWxsb3B0KTsKKyAgICBXRUJMT0FERVJTVFJB
VEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVs
ZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkLCBleGlzdGluZ05ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0ICIpIiwgc3RhdGljX2Nhc3Q8
aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGV4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZS52YWx1ZV9vcihOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCkpOworICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291
cmNlTG9hZChsb2FkUGFyYW1ldGVycywgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllclRvUmVzdW1lKSwgMCkpIHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9M
T0dfRVJST1IoInNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGgg
dGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5
IGZhaWxlZCB0byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVj
YXVzZSBpdCBoYWQgY3Jhc2hlZC4KICAgICAgICAgLy8gVGhpcyBsb2FkIHdpbGwgbmV2ZXIgc3Vj
Y2VlZCBzbyB3ZSB3aWxsIHNjaGVkdWxlIGl0IHRvIGZhaWwgYXN5bmNocm9ub3VzbHkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
aAppbmRleCBjYTIzNDk5NTg2NjYuLjI0YjY5Mzc5MDE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KQEAgLTkxLDYgKzkyLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVy
YXRlTG9hZElkZW50aWZpZXIoKTsKIAorICAgIHZvaWQgc2V0RXhpc3RpbmdOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZSkgeyBtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IGV4
aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsgfQorCiBwcml2YXRl
OgogICAgIHZvaWQgc2NoZWR1bGVMb2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2UqLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QpOwogICAgIHZvaWQgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlciYpOwpAQCAtMTMzLDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgSGFz
aE1hcDx1bnNpZ25lZCBsb25nLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyPiBtX3BpbmdMb2Fk
Q29tcGxldGlvbkhhbmRsZXJzOwogICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUHJlY29ubmVj
dENvbXBsZXRpb25IYW5kbGVyPiBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcnM7CiAgICAg
VmVjdG9yPEZ1bmN0aW9uPHZvaWQoYm9vbCk+PiBtX29ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXJz
OworICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IG1fZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOwogICAgIGJvb2wgbV9p
c09uTGluZSB7IHRydWUgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDQ5NGQ5ZTUwMTQ5ZC4uYWM2NjI0YWUxNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTkxLDYgKzkxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRy
b2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N1YnJlc291cmNlTG9h
ZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VSUV2ZW50V2l0aEtleVN0YXRlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9XaWRnZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+
CkBAIC04NDgsMTEgKzg0OSwxMiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAgIGF1dG8q
IGNvcmVGcmFtZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGF1dG8qIHBvbGljeURvY3Vt
ZW50TG9hZGVyID0gY29yZUZyYW1lID8gY29yZUZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyKCkgOiBudWxscHRyOwogICAgIGF1dG8gbmF2aWdhdGlvbklEID0gcG9saWN5
RG9jdW1lbnRMb2FkZXIgPyBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlciY+KCpwb2xpY3lE
b2N1bWVudExvYWRlcikubmF2aWdhdGlvbklEKCkgOiAwOworICAgIHVpbnQ2NF90IG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyID0gcG9saWN5RG9jdW1lbnRMb2FkZXIgJiYgcG9saWN5RG9jdW1l
bnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpID8gcG9saWN5RG9jdW1lbnRMb2FkZXItPm1h
aW5SZXNvdXJjZUxvYWRlcigpLT5pZGVudGlmaWVyKCkgOiAwOwogCiAgICAgYm9vbCB3YXNBbGxv
d2VkQnlJbmplY3RlZEJ1bmRsZSA9IHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25V
c2U7CiAgICAgYXV0byBwcm90ZWN0b3IgPSBtX2ZyYW1lLmNvcHlSZWYoKTsKICAgICB1aW50NjRf
dCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBX
VEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKLSAg
ICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIGlkZW50aWZp
ZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dSZXNwb25zZSwgZG93
bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkp
KSkgeworICAgIGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwg
aWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd1Jlc3Bv
bnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRz
QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBs
aXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkgewogICAgICAgICBXRUJGUkFN
RUxPQURFUkNMSUVOVF9SRUxFQVNFX0xPRyhOZXR3b3JrLCAiZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZTogaWdub3JpbmcgYmVjYXVzZSBXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZv
clJlc3BvbnNlIGZhaWxlZCIpOwogICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBzdGQ6Om51bGxv
cHQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGNmYmU1NGYwMjYz
NC4uYzdkZDQ5YjJkYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtMjU5LDYgKzI1OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJHTFN0
YXRlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV3JpdGluZ0RpcmVjdGlvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvbWFya3VwLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVk
ZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgpAQCAtMTY4OSw2ICsxNjkwLDExIEBAIHZvaWQgV2ViUGFnZTo6bG9h
ZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBzZXRJc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CiAjZW5kaWYKIAorICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2V0RXhpc3RpbmdOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKGxvYWRQYXJhbWV0ZXJzLmV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CisgICAgYXV0byByZXN1bWluZ0xvYWRTY29w
ZSA9IG1ha2VTY29wZUV4aXQoW10geworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJMb2FkZXJTdHJhdGVneSgpLnNldEV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXJUb1Jlc3VtZShzdGQ6Om51bGxvcHQpOworICAgIH0pOworCiAgICAgU2VuZFN0b3BSZXNwb25z
aXZlbmVzc1RpbWVyIHN0b3BwZXI7CiAKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBsb2Fk
UGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKaW5kZXggMWU2MTRjNzM5ZWE1Li41Zjk3OTBlYTkwMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKICNp
bmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiT3B0aW9uYWxDYWxsYmFja0lELmgiCiAjaW5jbHVk
ZSAiUERGUGx1Z2luSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBsdWdpbi5oIgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vz
c1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggNDBhMDgyMjE3MDczLi40NzE4M2JlMTI5YTIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3
YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtNTIsNiArNTIsNyBAQAogI2ltcG9y
dCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3
dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9EZXF1ZS5oPgorI2ltcG9ydCA8d3RmL0hhc2hD
b3VudGVkU2V0Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hT
ZXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTI1Myw2ICsyNTQsNyBAQCBAaW50
ZXJmYWNlIFBTT05TY2hlbWUgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPiB7CiAgICAg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gX2Nvb3BWYWx1ZXM7CiAgICAgSGFzaFNldDxpZCA8V0tV
UkxTY2hlbWVUYXNrPj4gX3J1bm5pbmdUYXNrczsKICAgICBib29sIF9zaG91bGRSZXNwb25kQXN5
bmNocm9ub3VzbHk7CisgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBfcmVxdWVzdENvdW50czsK
IH0KIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEJ5dGVzOihjb25zdCBjaGFyKilieXRlczsKIC0g
KHZvaWQpYWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXNvdXJjZVVSTFN0cmlu
ZyB0b1VSTFN0cmluZzooTlNTdHJpbmcgKilkZXN0aW5hdGlvblVSTFN0cmluZzsKQEAgLTI5MSw2
ICsyOTMsMTEgQEAgLSAodm9pZClzZXRTaG91bGRSZXNwb25kQXN5bmNocm9ub3VzbHk6KEJPT0wp
dmFsdWUKICAgICBfc2hvdWxkUmVzcG9uZEFzeW5jaHJvbm91c2x5ID0gdmFsdWU7CiB9CiAKKy0g
KHVuc2lnbmVkKXJlcXVlc3RDb3VudDooTlNTdHJpbmcgKil1cmxTdHJpbmcKK3sKKyAgICByZXR1
cm4gX3JlcXVlc3RDb3VudHMuY291bnQodXJsU3RyaW5nKTsKK30KKwogLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1l
VGFzaz4pdGFzawogewogICAgIGlmIChbKGlkPFdLVVJMU2NoZW1lVGFza1ByaXZhdGU+KXRhc2sg
X3JlcXVlc3RPbmx5SWZDYWNoZWRdKSB7CkBAIC0zMTAsMTEgKzMxNywxNCBAQCAtICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxT
Y2hlbWVUYXNrPil0YQogICAgIH07CiAKICAgICBOU1VSTCAqZmluYWxVUkwgPSB0YXNrLnJlcXVl
c3QuVVJMOworICAgIF9yZXF1ZXN0Q291bnRzLmFkZChbZmluYWxVUkwgYWJzb2x1dGVTdHJpbmdd
KTsKKwogICAgIGF1dG8gdGFyZ2V0ID0gX3JlZGlyZWN0cy5nZXQodGFzay5yZXF1ZXN0LlVSTC5h
YnNvbHV0ZVN0cmluZyk7CiAgICAgaWYgKCF0YXJnZXQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1
dG8gcmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0
V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOm5pbCBleHBlY3RlZENvbnRlbnRMZW5n
dGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwogCiAgICAgICAgIGZpbmFsVVJMID0gW05TVVJM
IFVSTFdpdGhTdHJpbmc6KE5TU3RyaW5nICopdGFyZ2V0XTsKKyAgICAgICAgX3JlcXVlc3RDb3Vu
dHMuYWRkKFtmaW5hbFVSTCBhYnNvbHV0ZVN0cmluZ10pOwogICAgICAgICBhdXRvIHJlcXVlc3Qg
PSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpmaW5hbFVSTF0pOwog
CiAgICAgICAgIFsoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVyZm9ybVJl
ZGlyZWN0aW9uOnJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkgbmV3UmVxdWVzdDpyZXF1ZXN0LmdldCgp
XTsKQEAgLTcyMDcsMjAgKzcyMTcsMjcgQEAgc3RhdGljIHZvaWQgcnVuQ09PUFByb2Nlc3NTd2Fw
VGVzdChjb25zdCBjaGFyKiBzb3VyY2VDT09QLCBjb25zdCBjaGFyKiBkZXN0aW5hdGkKICAgICB9
CiAKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0p
OworICAgIE5TU3RyaW5nKiBwb3B1cFVSTFN0cmluZzsKICAgICBpZiAoaXNTYW1lT3JpZ2luID09
IElzU2FtZU9yaWdpbjo6WWVzKSB7CiAgICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJM
U3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCIgdG9EYXRhOndpbmRvd09w
ZW5TYW1lT3JpZ2luQ09PUFRlc3RCeXRlcyB3aXRoQ09PUFZhbHVlOnNvdXJjZUNPT1BdOwogICAg
ICAgICBpZiAoZG9TZXJ2ZXJTaWRlUmVkaXJlY3QgPT0gRG9TZXJ2ZXJTaWRlUmVkaXJlY3Q6Olll
cykgewogICAgICAgICAgICAgW2hhbmRsZXIgYWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOkAicHNv
bjovL3d3dy53ZWJraXQub3JnL3BvcHVwLmh0bWwiIHRvVVJMU3RyaW5nOkAicHNvbjovL3d3dy53
ZWJraXQub3JnL3BvcHVwLWFmdGVyLXJlZGlyZWN0Lmh0bWwiXTsKICAgICAgICAgICAgIFtoYW5k
bGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL3BvcHVw
LWFmdGVyLXJlZGlyZWN0Lmh0bWwiIHRvRGF0YToicG9wdXAiIHdpdGhDT09QVmFsdWU6ZGVzdGlu
YXRpb25DT09QXTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwb3B1cFVSTFN0cmluZyA9
IEAicHNvbjovL3d3dy53ZWJraXQub3JnL3BvcHVwLWFmdGVyLXJlZGlyZWN0Lmh0bWwiOworICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgW2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJp
bmc6QCJwc29uOi8vd3d3LndlYmtpdC5vcmcvcG9wdXAuaHRtbCIgdG9EYXRhOiJwb3B1cCIgd2l0
aENPT1BWYWx1ZTpkZXN0aW5hdGlvbkNPT1BdOworICAgICAgICAgICAgcG9wdXBVUkxTdHJpbmcg
PSBAInBzb246Ly93d3cud2Via2l0Lm9yZy9wb3B1cC5odG1sIjsKKyAgICAgICAgfQogICAgIH0g
ZWxzZSB7CiAgICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjov
L3d3dy53ZWJraXQub3JnL21haW4uaHRtbCIgdG9EYXRhOndpbmRvd09wZW5Dcm9zc09yaWdpbkNP
T1BUZXN0Qnl0ZXMgd2l0aENPT1BWYWx1ZTpzb3VyY2VDT09QXTsKICAgICAgICAgaWYgKGRvU2Vy
dmVyU2lkZVJlZGlyZWN0ID09IERvU2VydmVyU2lkZVJlZGlyZWN0OjpZZXMpIHsKICAgICAgICAg
ICAgIFtoYW5kbGVyIGFkZFJlZGlyZWN0RnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cuYXBwbGUu
Y29tL3BvcHVwLmh0bWwiIHRvVVJMU3RyaW5nOkAicHNvbjovL3d3dy5hcHBsZS5jb20vcG9wdXAt
YWZ0ZXItcmVkaXJlY3QuaHRtbCJdOwogICAgICAgICAgICAgW2hhbmRsZXIgYWRkTWFwcGluZ0Zy
b21VUkxTdHJpbmc6QCJwc29uOi8vd3d3LmFwcGxlLmNvbS9wb3B1cC1hZnRlci1yZWRpcmVjdC5o
dG1sIiB0b0RhdGE6InBvcHVwIiB3aXRoQ09PUFZhbHVlOmRlc3RpbmF0aW9uQ09PUF07Ci0gICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgcG9wdXBVUkxTdHJpbmcgPSBAInBzb246Ly93d3cuYXBw
bGUuY29tL3BvcHVwLWFmdGVyLXJlZGlyZWN0Lmh0bWwiOworICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgW2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6QCJwc29uOi8vd3d3LmFw
cGxlLmNvbS9wb3B1cC5odG1sIiB0b0RhdGE6InBvcHVwIiB3aXRoQ09PUFZhbHVlOmRlc3RpbmF0
aW9uQ09PUF07CisgICAgICAgICAgICBwb3B1cFVSTFN0cmluZyA9IEAicHNvbjovL3d3dy5hcHBs
ZS5jb20vcG9wdXAuaHRtbCI7CisgICAgICAgIH0KICAgICB9CiAgICAgW3dlYlZpZXdDb25maWd1
cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJQ
U09OIl07CiAKQEAgLTcyNTcsNiArNzI3NCw3IEBAIHN0YXRpYyB2b2lkIHJ1bkNPT1BQcm9jZXNz
U3dhcFRlc3QoY29uc3QgY2hhciogc291cmNlQ09PUCwgY29uc3QgY2hhciogZGVzdGluYXRpCiAg
ICAgICAgIEVYUEVDVF9GQUxTRShzZXJ2ZXJSZWRpcmVjdGVkKTsKICAgICB9CiAgICAgRVhQRUNU
X0VRKDJVLCBudW1iZXJPZlByb3Zpc2lvbmFsTG9hZHMpOyAvLyBPbmUgaW4gZWFjaCB2aWV3Lgor
ICAgIEVYUEVDVF9FUShbaGFuZGxlciByZXF1ZXN0Q291bnQ6cG9wdXBVUkxTdHJpbmddLCAxVSk7
IC8vIFdlIHNob3VsZCBoaXQgdGhlIHNlcnZlciBvbmx5IG9uY2UsIGV2ZW4gaW4gY2FzZSBvZiBw
cm9jZXNzLXN3YXAuCiAKICAgICBhdXRvIHBpZDEgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50
aWZpZXJdOwogICAgIEVYUEVDVF9UUlVFKCEhcGlkMSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436417</attachid>
            <date>2021-08-25 13:38:40 -0700</date>
            <delta_ts>2021-08-25 15:06:56 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>229465_COOP_Process_Swap_Reuse_NetworkLoad_wip.patch</filename>
            <type>text/plain</type>
            <size>73384</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZDk2MmE5OGFmNTQ2Li5kMjAyZTM0ZWI4
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC04NSw2ICs4NSw3IEBACiAjZW5k
aWYKIAogI2RlZmluZSBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKGNoYW5uZWwsIGZtdCwgLi4uKSBS
RUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0
ICJdIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vz
c0lkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJP
UihjaGFubmVsLCAiJXAgLSBbd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0ICJdIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjoiIGZtdCwgdGhpcywgd2ViUHJvY2Vzc0lkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQogCiAjZGVmaW5lIE5FVFdPUktfUFJPQ0VT
U19NRVNTQUdFX0NIRUNLKGFzc2VydGlvbikgTkVUV09SS19QUk9DRVNTX01FU1NBR0VfQ0hFQ0tf
Q09NUExFVElPTihhc3NlcnRpb24sICh2b2lkKTApCiAjZGVmaW5lIE5FVFdPUktfUFJPQ0VTU19N
RVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCBjb21wbGV0aW9uKSBkbyB7IFwKQEAg
LTE2Niw3ICsxNjcsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNV
cGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCBoYXNVcGxvYWQpCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRpZENsZWFudXBSZXNvdXJjZUxvYWRlcihOZXR3b3JrUmVzb3VyY2VM
b2FkZXImIGxvYWRlcikKIHsKLSAgICBSRUxFQVNFX0FTU0VSVChsb2FkZXIuaWRlbnRpZmllcigp
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSk7CiAgICAgUkVM
RUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKGxvYWRlci5pc0tlcHRB
bGl2ZSgpKSB7CkBAIC0xNzQsMTYgKzE3NSwxNiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpkaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fbmV0d29ya1Jlc291cmNlTG9h
ZGVycy5nZXQobG9hZGVyLmlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7Ci0gICAgbV9uZXR3b3Jr
UmVzb3VyY2VMb2FkZXJzLnJlbW92ZShsb2FkZXIuaWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlQo
bV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmdldChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkgPT0g
JmxvYWRlcik7CisgICAgbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnJlbW92ZShsb2FkZXIuY29y
ZUlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnRyYW5zZmVyS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKGxvYWRl
ci5pc0tlcHRBbGl2ZSgpKTsKLSAgICBBU1NFUlQobV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmdl
dChsb2FkZXIuaWRlbnRpZmllcigpKSA9PSAmbG9hZGVyKTsKLSAgICBpZiAoYXV0byB0YWtlbkxv
YWRlciA9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtlKGxvYWRlci5pZGVudGlmaWVyKCkp
KQorICAgIEFTU0VSVChtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuZ2V0KGxvYWRlci5jb3JlSWRl
bnRpZmllcigpKSA9PSAmbG9hZGVyKTsKKyAgICBpZiAoYXV0byB0YWtlbkxvYWRlciA9IG1fbmV0
d29ya1Jlc291cmNlTG9hZGVycy50YWtlKGxvYWRlci5jb3JlSWRlbnRpZmllcigpKSkKICAgICAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+YWRkS2VwdEFsaXZlTG9hZCh0YWtlbkxvYWRlci5yZWxlYXNl
Tm9uTnVsbCgpKTsKIH0KIApAQCAtNDg2LDI3ICs0ODcsMzggQEAgc3RkOjp1bmlxdWVfcHRyPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjcmVh
dGVGZXQKIH0KICNlbmRpZgogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
Y2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxvYWRQ
YXJhbWV0ZXJzKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVS
ZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVy
cywgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdM
b2FkZXJUb1Jlc3VtZSkKIHsKLSAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKExvYWRpbmcsICJz
Y2hlZHVsZVJlc291cmNlTG9hZDogKHBhcmVudFBJRD0lZCwgcGFnZVByb3h5SUQ9JSIgUFJJdTY0
ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RD0lIiBQUkl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQsIGxvYWRQYXJhbWV0ZXJz
LndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJ
bnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0
ZXJzLmlkZW50aWZpZXIpOworICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coTG9hZGluZywgInNj
aGVkdWxlUmVzb3VyY2VMb2FkOiAocGFyZW50UElEPSVkLCBwYWdlUHJveHlJRD0lIiBQUkl1NjQg
Iiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
PSUiIFBSSXU2NCAiLCBleGlzdGluZ0xvYWRlclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIGxvYWRQ
YXJhbWV0ZXJzLnBhcmVudFBJRCwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQudG9VSW50
NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJz
LndlYkZyYW1lSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgZXhpc3Rp
bmdMb2FkZXJUb1Jlc3VtZS52YWx1ZV9vcihOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciB7
IH0pLnRvVUludDY0KCkpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGF1dG8m
IHNlcnZlciA9IG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25J
RCk7CiAgICAgaWYgKCFzZXJ2ZXIuaXNJbXBvcnRDb21wbGV0ZWQoKSkgewotICAgICAgICBzZXJ2
ZXIud2hlbkltcG9ydElzQ29tcGxldGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGxvYWRQYXJhbWV0ZXJzID0gV1RGTW92ZShsb2FkUGFyYW1ldGVycyldKCkgbXV0YWJs
ZSB7CisgICAgICAgIHNlcnZlci53aGVuSW1wb3J0SXNDb21wbGV0ZWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbG9hZFBhcmFtZXRlcnMgPSBXVEZNb3ZlKGxvYWRQYXJh
bWV0ZXJzKSwgZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmICghbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc0Nvbm5lY3Rpb24od2ViUHJvY2Vzc0lk
ZW50aWZpZXIoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQVNTRVJU
KG1fbmV0d29ya1Byb2Nlc3MtPnN3U2VydmVyRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCkuaXNJbXBv
cnRDb21wbGV0ZWQoKSk7Ci0gICAgICAgICAgICBzY2hlZHVsZVJlc291cmNlTG9hZChXVEZNb3Zl
KGxvYWRQYXJhbWV0ZXJzKSk7CisgICAgICAgICAgICBzY2hlZHVsZVJlc291cmNlTG9hZChXVEZN
b3ZlKGxvYWRQYXJhbWV0ZXJzKSwgZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZSk7CiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCisKICAgICBhdXRvIGlkZW50aWZpZXIg
PSBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyOwogICAgIFJFTEVBU0VfQVNTRVJUKGlkZW50aWZp
ZXIpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQo
IW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAKKyAgICBp
ZiAoZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZSkgeworICAgICAgICBpZiAoYXV0byBleGlzdGluZ0xv
YWRlciA9IG5ldHdvcmtQcm9jZXNzKCkudGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5z
ZmVyKCpleGlzdGluZ0xvYWRlclRvUmVzdW1lKSkgeworICAgICAgICAgICAgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRyhMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJjZUxvYWQ6IFJlc3VtaW5nIGV4aXN0
aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciIpOworICAgICAgICAgICAgbV9uZXR3b3JrUmVzb3Vy
Y2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCAqZXhpc3RpbmdMb2FkZXIpOworICAgICAgICAgICAg
ZXhpc3RpbmdMb2FkZXItPnRyYW5zZmVyVG9OZXdXZWJQcm9jZXNzKCp0aGlzLCBpZGVudGlmaWVy
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBDT05O
RUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDog
Q291bGQgbm90IGZpbmQgZXhpc3RpbmcgTmV0d29ya1Jlc291cmNlTG9hZGVyIHRvIHJlc3VtZSwg
d2lsbCBkbyBhIGZyZXNoIGxvYWQiKTsKKyAgICB9CisKICAgICBhdXRvJiBsb2FkZXIgPSBtX25l
dHdvcmtSZXNvdXJjZUxvYWRlcnMuYWRkKGlkZW50aWZpZXIsIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y3JlYXRlKFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCAqdGhpcykpLml0ZXJhdG9yLT52YWx1
ZTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTEyNjksNiArMTI4MSwxMSBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwcmlvcml0aXplUmVzb3VyY2VMb2Fk
cyhWZWN0b3I8UmVzb3VyY2VMb2FkSQogICAgIHNlc3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVy
KCkucHJpb3JpdGl6ZUxvYWRzKGxvYWRzKTsKIH0KIAorUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxv
YWRlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnRha2VOZXR3b3JrUmVzb3VyY2VM
b2FkZXIodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikKK3sKKyAgIHJldHVybiBtX25l
dHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShyZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBDT05ORUNUSU9OX1JFTEVBU0VfTE9HCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggNWUwNzA5MWUzNzM2Li5mNGEwYWI3MTkzZWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtNRE5TUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUlRDUHJvdmlkZXIuaCIKKyNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdv
cmtSZXNvdXJjZUxvYWRNYXAuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgogI2luY2x1
ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTE4Niw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQ
b2xpY3kpOwogCiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VT
b3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIFJl
ZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIodWlu
dDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CkBA
IC0yMDMsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jik7CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpF
bmNvZGVyPiYpOwogCi0gICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpOwogICAgIHZvaWQgcGVyZm9y
bVN5bmNocm9ub3VzTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWRE
ZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCB0ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2Vz
V2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpUZXN0UHJvY2Vzc0luY29taW5nU3luY01l
c3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBs
b2FkUGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJlOTI0NGU4NmZjZC4uNzNmM2U4OTE2
MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIy
LDcgKzIyLDcgQEAKIAogbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
TGVnYWN5UmVjZWl2ZXIgewogCi0gICAgU2NoZWR1bGVSZXNvdXJjZUxvYWQoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKQorICAgIFNj
aGVkdWxlUmVzb3VyY2VMb2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMg
cmVzb3VyY2VMb2FkUGFyYW1ldGVycywgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ0xvYWRlclRvUmVzdW1lKQogICAgIFBlcmZvcm1T
eW5jaHJvbm91c0xvYWQoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEpIFN5
bmNocm9ub3VzCiAgICAgVGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIC0+IChi
b29sIGhhbmRsZWQpIFN5bmNocm9ub3VzCiAgICAgTG9hZFBpbmcoV2ViS2l0OjpOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyByZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA1ZDY4MjliMjg4
MDIuLmM5ODMxYTZmOWJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI3ODYsNiArMjc4NiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpzZXRDT1JTRGlzYWJsaW5nUGF0dGVybnMoUGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZp
ZXIsIFZlYwogICAgIG1fZXh0ZW5zaW9uQ09SU0Rpc2FibGluZ1BhdHRlcm5zLnNldChwYWdlSWRl
bnRpZmllciwgV1RGTW92ZShwYXJzZWRQYXR0ZXJucykpOwogfQogCitSZWZQdHI8TmV0d29ya1Jl
c291cmNlTG9hZGVyPiBOZXR3b3JrUHJvY2Vzczo6dGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vz
c1RyYW5zZmVyKE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7Cisg
ICAgcmV0dXJuIG1fbG9hZGVyc0F3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyLnRha2UoaWRlbnRp
Zmllcik7Cit9CisKICNpZiBQTEFURk9STShDT0NPQSkKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFw
cFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CkBAIC0yODE1LDYgKzI4MjAsMjIgQEAgUlRDRGF0YUNoYW5u
ZWxSZW1vdGVNYW5hZ2VyUHJveHkmIE5ldHdvcmtQcm9jZXNzOjpydGNEYXRhQ2hhbm5lbFByb3h5
KCkKIH0KICNlbmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlTG9hZEZvcldlYlBy
b2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRl
bnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUKHJlc291cmNlTG9hZElkZW50aWZpZXIp
OworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSB3ZWJQcm9jZXNzQ29ubmVjdGlvbihzb3VyY2VQcm9j
ZXNzSWRlbnRpZmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKKworICAgIGF1dG8gbG9hZGVyID0gY29ubmVj
dGlvbi0+dGFrZU5ldHdvcmtSZXNvdXJjZUxvYWRlcihyZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsK
KyAgICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6
bnVsbG9wdCk7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXItPmlkZW50aWZpZXIoKTsK
KyAgICBtX2xvYWRlcnNBd2FpdGluZ1dlYlByb2Nlc3NUcmFuc2Zlci5hZGQoaWRlbnRpZmllciwg
bG9hZGVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZp
ZXIpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRl
cnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCwgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNl
c3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGVhOTFlZDU5NDAzZS4uMzBhNGJmNjU1
ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5LmgiCiAj
aW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgpA
QCAtMzg5LDYgKzM5MCw4IEBAIHB1YmxpYzoKICAgICBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFn
ZXJQcm94eSYgcnRjRGF0YUNoYW5uZWxQcm94eSgpOwogI2VuZGlmCiAKKyAgICBSZWZQdHI8TmV0
d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIo
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmKTsKIApAQCAtNDIyLDYgKzQyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBk
aWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAg
IHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9s
aWN5KT4mJik7CisgICAgdm9pZCBwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgdWludDY0X3Qg
cmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYpOwogCiAgICAgdm9pZCBmZXRj
aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYnNpdGVEYXRhJiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTYwOCw2ICs2MTIsNyBAQCBwcml2
YXRlOgogICAgIFNlY29uZHMgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0IHsgZGVmYXVsdFNl
cnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQgfTsKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpVc2VyQ29udGVudFVSTFBhdHRlcm4+PiBtX2V4dGVu
c2lvbkNPUlNEaXNhYmxpbmdQYXR0ZXJuczsKKyAgICBIYXNoTWFwPE5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyLCBSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPj4gbV9sb2FkZXJzQXdhaXRp
bmdXZWJQcm9jZXNzVHJhbnNmZXI7IC8vIEZJWE1FOiBTaG91bGQgYmUgY2xlYXJlZCBvbiBhIHRp
bWVyLgogCiAgICAgYm9vbCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5hYmxlZCB7IHRydWUg
fTsKICAgICBib29sIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGQ3OTk3NDUxYzQ1NC4uY2FlYjhkOWJiODQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTE5NSw2ICsxOTUsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKKyAgICBQ
cmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmll
cikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
cj4gbmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIpIEFzeW5jCisKICAgICBBZGRXZWJQYWdl
TmV0d29ya1BhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VOZXR3b3JrUGFyYW1ldGVy
cyBwYXJhbWV0ZXJzKQogICAgIFJlbW92ZVdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQp
CiAgICAgQ291bnROb25EZWZhdWx0U2Vzc2lvblNldHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiAoc2l6ZV90IGNvdW50KSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDgyZjFlNTMwMTQ0Zi4u
Mjk2ZDQ1MTAyYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MjIsNiArNTIyLDE2IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgY2xlYW51cChMb2FkUmVzdWx0OjpDYW5j
ZWwpOwogfQogCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJhbnNmZXJUb05ld1dlYlBy
b2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG5ld0Nvbm5lY3Rpb24sIFJlc291
cmNlTG9hZElkZW50aWZpZXIgbmV3Q29yZUlkZW50aWZpZXIpCit7CisgICAgbV9jb25uZWN0aW9u
ID0gbmV3Q29ubmVjdGlvbjsKKyAgICBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciA9IG5ld0NvcmVJ
ZGVudGlmaWVyOworCisgICAgQVNTRVJUKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciB8fCBt
X2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfHwgbV9zZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrKTsKKyAgICBib29sIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UgPSB0cnVlOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpEaWRSZWNlaXZlUmVzcG9uc2UgeyBtX3Jlc3BvbnNlLCB3aWxsV2FpdEZvckNvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlIH0pOworfQorCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hv
dWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiB4RnJhbWVPcHRp
b25zLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoaXNNYWluRnJhbWVMb2FkKCkpCkBAIC01
NDYsMTIgKzU1NiwxMiBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJy
dXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiB4RgogICAgIH0KICAgICBjYXNl
IFhGcmFtZU9wdGlvbnNEaXNwb3NpdGlvbjo6Q29uZmxpY3Q6IHsKICAgICAgICAgU3RyaW5nIGVy
cm9yTWVzc2FnZSA9ICJNdWx0aXBsZSAnWC1GcmFtZS1PcHRpb25zJyBoZWFkZXJzIHdpdGggY29u
ZmxpY3RpbmcgdmFsdWVzICgnIiArIHhGcmFtZU9wdGlvbnMgKyAiJykgZW5jb3VudGVyZWQgd2hl
biBsb2FkaW5nICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicu
IEZhbGxpbmcgYmFjayB0byAnREVOWScuIjsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIo
KSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNvcmVJZGVu
dGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICBjYXNlIFhGcmFtZU9wdGlvbnNEaXNwb3NpdGlvbjo6SW52YWxpZDogewog
ICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIkludmFsaWQgJ1gtRnJhbWUtT3B0aW9ucycg
aGVhZGVyIGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxp
cHNpemVkVG9MZW5ndGgoKSArICInOiAnIiArIHhGcmFtZU9wdGlvbnMgKyAiJyBpcyBub3QgYSBy
ZWNvZ25pemVkIGRpcmVjdGl2ZS4gVGhlIGhlYWRlciB3aWxsIGJlIGlnbm9yZWQuIjsKLSAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBl
cnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFt
ZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBlcnJvck1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgfQpAQCAtNTc4LDcgKzU4OCw3
IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQ
RnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvCiAgICAgICAgIFN0cmluZyB4RnJhbWVPcHRpb25z
ID0gbV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlhGcmFtZU9wdGlv
bnMpOwogICAgICAgICBpZiAoIXhGcmFtZU9wdGlvbnMuaXNOdWxsKCkgJiYgc2hvdWxkSW50ZXJy
dXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoeEZyYW1lT3B0aW9ucywgcmVzcG9uc2UudXJsKCkpKSB7
CiAgICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0
byBkaXNwbGF5ICciLCByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgoKSwgIicgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25zJyB0byAn
IiwgeEZyYW1lT3B0aW9ucywgIicuIik7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2Fn
ZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRl
bnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJv
ck1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTU5NSw3ICs2MDUs
NyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TmF2aWdhdGlv
bkZvckNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpYwogICAgICAgICBhdXRvIHJlc3BvbnNlQ09FUCA9
IFdlYkNvcmU6Om9idGFpbkNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kocmVzcG9uc2UsIG1fcGFy
YW1ldGVycy5zb3VyY2VPcmlnaW4tPmlzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSgpID8gSXNTZWN1
cmVDb250ZXh0OjpZZXMgOiBJc1NlY3VyZUNvbnRleHQ6Ok5vKTsKICAgICAgICAgaWYgKHJlc3Bv
bnNlQ09FUC52YWx1ZSAhPSBXZWJDb3JlOjpDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5VmFsdWU6
OlJlcXVpcmVDT1JQKSB7CiAgICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWFrZVN0
cmluZygiUmVmdXNlZCB0byBkaXNwbGF5ICciLCByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgoKSwgIicgaW4gYSBmcmFtZSBiZWNhdXNlIG9mIENyb3NzLU9yaWdp
bi1FbWJlZGRlci1Qb2xpY3kuIik7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNv
dXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRp
ZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1l
c3NhZ2UsIGNvcmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTYxMSw3ICs2MjEsNyBA
QCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0V29ya2VyTG9hZEZv
ckNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpYwogICAgICAgICBhdXRvIHJlc3BvbnNlQ09FUCA9IFdl
YkNvcmU6Om9idGFpbkNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kocmVzcG9uc2UsIG1fcGFyYW1l
dGVycy5zb3VyY2VPcmlnaW4tPmlzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSgpID8gSXNTZWN1cmVD
b250ZXh0OjpZZXMgOiBJc1NlY3VyZUNvbnRleHQ6Ok5vKTsKICAgICAgICAgaWYgKHJlc3BvbnNl
Q09FUC52YWx1ZSAhPSBXZWJDb3JlOjpDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5VmFsdWU6OlJl
cXVpcmVDT1JQKSB7CiAgICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWFrZVN0cmlu
ZygiUmVmdXNlZCB0byBsb2FkICciLCByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNp
emVkVG9MZW5ndGgoKSwgIicgd29ya2VyIGJlY2F1c2Ugb2YgQ3Jvc3MtT3JpZ2luLUVtYmVkZGVy
LVBvbGljeS4iKTsKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNv
bGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1
cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2Fn
ZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY29y
ZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtNjMwLDcgKzY0MCw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYm
IHJlY2VpdmVkUmVzcG9uCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcygpICYmIG1fbmV0d29ya0xvYWRDaGVja2VyKSB7CiAgICAgICAgIGF1dG8gaW5mb3JtYXRp
b24gPSBtX25ldHdvcmtMb2FkQ2hlY2tlci0+dGFrZU5ldHdvcmtMb2FkSW5mb3JtYXRpb24oKTsK
ICAgICAgICAgaW5mb3JtYXRpb24ucmVzcG9uc2UgPSBtX3Jlc3BvbnNlOwotICAgICAgICBtX2Nv
bm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb24oaWRlbnRpZmllcigpLCBXVEZNb3Zl
KGluZm9ybWF0aW9uKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xvYWRJbmZv
cm1hdGlvbihjb3JlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGluZm9ybWF0aW9uKSk7CiAgICAgfQog
CiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJlc3BvbnNl
QXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3VsZCByZXF1
aXJlIHNwZWNpYWwgaGFuZGxpbmcuCkBAIC03NTgsNyArNzY4LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBu
ZXR3b3JrTG8KICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZEZpbmlzaExvYWRpbmc6IChudW1C
eXRlc1JlY2VpdmVkPSV6ZCwgaGFzQ2FjaGVFbnRyeUZvclZhbGlkYXRpb249JWQpIiwgbV9udW1C
eXRlc1JlY2VpdmVkLCAhIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCiAgICAgaWYgKHNo
b3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpKQotICAgICAgICBtX2Nvbm5lY3Rp
b24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb25NZXRyaWNzKGlkZW50aWZpZXIoKSwgbmV0d29y
a0xvYWRNZXRyaWNzKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5hZGROZXR3b3JrTG9hZEluZm9y
bWF0aW9uTWV0cmljcyhjb3JlSWRlbnRpZmllcigpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwogCiAg
ICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgLy8gMzA0IE5vdCBN
b2RpZmllZApAQCAtODAxLDcgKzgxMSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRGYWlsTG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBVTlVTRURfVkFS
SUFCTEUod2FzU2VydmljZVdvcmtlckxvYWQpOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRy
YU5ldHdvcmtMb2FkTWV0cmljcygpKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU5ldHdv
cmtMb2FkSW5mb3JtYXRpb24oaWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5y
ZW1vdmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGNvcmVJZGVudGlmaWVyKCkpOwogCiAgICAgQVNT
RVJUKCFlcnJvci5pc051bGwoKSk7CiAKQEAgLTEyMDIsOSArMTIxMiwxMCBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrQ2FjaGU6OgogICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkUmV0cmlldmVDYWNoZUVu
dHJ5OiBTZW5kaW5nIFdlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgSVBDIChu
ZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZT0lZCkiLCBuZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsKIAotICAgIGlmIChuZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSkKKyAgICBpZiAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UpIHsKKyAgICAgICAgbV9yZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpOwog
ICAgICAgICBtX2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2Ug
PSBXVEZNb3ZlKGVudHJ5KTsKLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogICAgICAgICBzZW5k
UmVzdWx0Rm9yQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIGNsZWFudXAoTG9h
ZFJlc3VsdDo6U3VjY2Vzcyk7CiAgICAgfQpAQCAtMTM1OSw3ICsxMzcwLDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKICAgICBhdXRv
KiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCku
c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKCkpOwogICAgIEFTU0VSVChuZXR3b3JrU3RvcmFnZVNl
c3Npb24pOwogCi0gICAgbG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29y
a1Jlc291cmNlTG9hZGVyIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpu
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIG9yaWdpbmFsUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKG9yaWdpbmFsUmVxdWVzdCgpKSwgb3JpZ2luYWxS
ZXF1ZXN0KCkudXJsKCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBmcmFtZUlE
KCksIHBhZ2VJRCgpLCBpZGVudGlmaWVyKCkpOworICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKG1f
Y29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3Qo
KS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJl
cXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRw
UmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgY29yZUlkZW50aWZpZXIoKSk7CiB9CiAK
IHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9p
ZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZp
ZXIpCkBAIC0xNDYzLDcgKzE0NzQsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9n
Q29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmCiAKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIG1l
c3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgdW5zaWduZWQgbG9uZykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRD
b25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgbWVzc2FnZVNvdXJjZSwg
bWVzc2FnZUxldmVsLCBtZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIG1lc3NhZ2VTb3VyY2UsIG1lc3NhZ2VMZXZlbCwgbWVz
c2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQoVVJMJiYg
cmVwb3J0VVJMLCBSZWY8Rm9ybURhdGE+JiYgcmVwb3J0KQpAQCAtMTUzNCw3ICsxNTQ1LDcgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoU2Vy
dmljZVdvcmtlckZldGNoVGFzayogZmUKICAgICBSRUxFQVNFX0FTU0VSVChtX3NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suZ2V0KCkgPT0gZmV0Y2hUYXNrKTsKICAgICBpZiAobV9wYXJhbWV0ZXJzLnNl
cnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkpIHsKICAgICAgICAg
TE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SKCJzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlOiBBYm9y
dGluZyBsb2FkIGJlY2F1c2UgdGhlIHNlcnZpY2Ugd29ya2VyIGRpZCBub3QgaGFuZGxlIHRoZSBs
b2FkIGFuZCBzZXJ2aWNlV29ya2VyTW9kZSBvbmx5IGFsbG93cyBzZXJ2aWNlIHdvcmtlcnMiKTsK
LSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OlNlcnZpY2VXb3JrZXJE
aWROb3RIYW5kbGUgeyB9LCBpZGVudGlmaWVyKCkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6U2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSB7IH0sIGNvcmVJZGVu
dGlmaWVyKCkpOwogICAgICAgICBhYm9ydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKaW5kZXggY2VmNjU0NzliN2U2Li5kOTJkMzAzOGExZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtODUsMTkg
Kzg1LDIzIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBhYm9ydCgpOwog
CisgICAgdm9pZCB0cmFuc2ZlclRvTmV3V2ViUHJvY2VzcyhOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYsIFJlc291cmNlTG9hZElkZW50aWZpZXIpOworCiAgICAgLy8gTWVzc2FnZSBoYW5k
bGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAgICAgdm9pZCBjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBib29sIGlz
QWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzKTsKIAorICAgIHZvaWQgc2V0UmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKSB7IG1fcmVzcG9uc2UgPSBXVEZN
b3ZlKHJlc3BvbnNlKTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCiAgICAgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdCB7IHJldHVy
biBtX2Nvbm5lY3Rpb247IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7
IHJldHVybiBtX2Nvbm5lY3Rpb24tPnNlc3Npb25JRCgpOyB9Ci0gICAgUmVzb3VyY2VMb2FkSWRl
bnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXI7IH0KKyAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGNvcmVJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXI7IH0KICAgICBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
OyB9CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRDsgfQogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9Cisg
ICAgTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VMb2FkSUQ7IH0KIAogICAgIE5ldHdvcmtDYWNoZTo6R2xvYmFsRnJhbWVJ
RCBnbG9iYWxGcmFtZUlEKCkgeyByZXR1cm4geyBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQs
IHBhZ2VJRCgpLCBmcmFtZUlEKCkgfTsgfQogCkBAIC0yMTAsNyArMjE0LDcgQEAgcHJpdmF0ZToK
IAogICAgIFJlc291cmNlTG9hZEluZm8gcmVzb3VyY2VMb2FkSW5mbygpOwogCi0gICAgY29uc3Qg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOworICAgIE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIAogICAgIFJlZjxOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcz4gbV9jb25uZWN0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFz
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggYWY5NTFkNWEwYjU5Li5kNDU1OTM1MjUzZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTc4LDcgKzc4LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3MKIAogdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4g
Ym9vbCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzZW5kVG9DbGllbnQoTWVzc2FnZSYmIG1lc3Nh
Z2UpCiB7Ci0gICAgcmV0dXJuIG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25u
ZWN0aW9uKCkuc2VuZChzdGQ6OmZvcndhcmQ8TWVzc2FnZT4obWVzc2FnZSksIG1fbG9hZGVyLmlk
ZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KS5jb25uZWN0aW9uKCkuc2VuZChzdGQ6OmZvcndhcmQ8TWVzc2FnZT4obWVzc2FnZSksIG1fbG9h
ZGVyLmNvcmVJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OnN0YXJ0KFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2VydmljZVdvcmtlckNvbm5l
Y3Rpb24pCkBAIC0xNjIsNiArMTYyLDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBib28KIAogICAg
IHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3Jr
ZXIpOwogICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJl
Y2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSB9KTsKKyAgICBpZiAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UpCisgICAgICAgIG1fbG9hZGVyLnNldFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsKIH0K
IAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggZWNhMTFhM2EwMGMyLi4zNDZmN2Q4
ZDg0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKQEAgLTU3LDYg
KzU3LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKICAgICBlbmNvZGVyIDw8IGxvY2tCYWNrRm9yd2FyZExpc3Q7CiAgICAgZW5jb2Rl
ciA8PCBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgZW5jb2RlciA8PCBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGVuY29kZXIgPDwgZXhpc3RpbmdOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5OwogCiAgICAgcGxhdGZvcm1FbmNvZGUoZW5jb2Rlcik7CkBAIC0xMzcs
NiArMTM4LDkgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVj
b2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkYXRhLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pKQogICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuZXhpc3RpbmdOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9M
b2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApp
bmRleCBlNWM1N2IwNDA0OWMuLjBjMDU0MGIwNDZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2Fk
UGFyYW1ldGVycy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVu
c2lvbi5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCkBAIC03NCw2ICs3NSw3IEBAIHN0cnVjdCBM
b2FkUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0
b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgeyBXZWJDb3JlOjpTdWJzdGl0
dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpWaXNpYmxlIH07CiAgICAgU3RyaW5n
IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKICAgICBzdGQ6Om9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAg
IHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGRhdGFEZXRlY3Rpb25Db250ZXh0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKaW5kZXggNjcxYWRkNGFhMjdjLi5iMWFjM2Q0MzhhMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cApAQCAtNDc1LDYgKzQ3NSwxNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0
ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UAogICAgIH0KIH0K
IAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFu
c2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwg
dWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2Zlcjogc291cmNl
UHJvY2Vzc0lkZW50aWZpZXI6ICUiIFBSSXU2NCAiLCByZXNvdXJjZUxvYWRJZGVudGlmaWVyOiAl
IiBQUkl1NjQsIHRoaXMsIHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksIHJlc291
cmNlTG9hZElkZW50aWZpZXIpOworICAgIGlmICghcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlcGFy
ZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHJlc291
cmNlTG9hZElkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNz
UHJveHk6OndlYlBhZ2UocGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNThhOGE4ZTk0YmYzLi40ZTVi
YjQ1OWEzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogI2lu
Y2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xp
ZW50LmgiCkBAIC0yMTQsNiArMjE1LDggQEAgcHVibGljOgogICAgIHZvaWQgdGVzdFByb2Nlc3NJ
bmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXN0UHJvY2Vzc0luY29t
aW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlEZWxheWVkUmVwbHkmJik7CiAg
ICAgdm9pZCB0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgcHJlcGFyZUxvYWRGb3JXZWJQcm9j
ZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50
aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4pPiYmKTsK
KwogICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1fdGhy
b3R0bGVyOyB9CiAgICAgdm9pZCB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA0MWNk
MzVkYmZhOGQuLjc1YTY1YzQzMzcwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMTcxLDkgKzE3MSw5IEBAIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29u
c3QgSVBDOjpEYXRhCiAgICAgbV9wYWdlLmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9w
cm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIGRhdGEsIG1pbWVUeXBl
LCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMp
LCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSwgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5KTsKIH0KIAotdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
JiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVz
dChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwg
c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgc3Rk
OjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKQogewotICAgIFBST1ZJU0lPTkFMUEFHRVBS
T1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiIpOworICAgIFBS
T1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1
ZXN0OiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJ
dTY0LCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUudmFsdWVf
b3IoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKICAgICBB
U1NFUlQoc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkICE9IFdlYkNvcmU6OlNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZDo6Tm8pOwogCiAgICAgLy8gSWYgdGhpcyBpcyBhIGNsaWVudC1zaWRl
IHJlZGlyZWN0IGNvbnRpbnVpbmcgaW4gYSBuZXcgcHJvY2VzcywgdGhlbiB0aGUgbmV3IHByb2Nl
c3Mgd2lsbCBvdmVyd3JpdGUgdGhlIGZyb21JdGVtJ3MgVVJMLiBJbiB0aGlzIGNhc2UsCkBAIC0x
ODIsNyArMTgyLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJ
OjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKICAgICBpZiAobmF2aWdhdGlv
bi5mcm9tSXRlbSgpICYmIG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpID09IFdlYkNv
cmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6OlllcykKICAgICAgICAgbmF2aWdhdGlvbi5mcm9tSXRl
bSgpLT5zZXRMYXN0UHJvY2Vzc0lkZW50aWZpZXIobV9wcm9jZXNzLT5jb3JlUHJvY2Vzc0lkZW50
aWZpZXIoKSk7CiAKLSAgICBtX3BhZ2UubG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZCht
X3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgV1RGTW92ZShyZXF1
ZXN0KSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAg
bV9wYWdlLmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYo
KSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb24u
bGFzdE5hdmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1c2Vy
RGF0YSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtJiBpdGVtLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vi
c2l0ZVBvbGljaWVzKQpAQCAtMzMwLDEyICszMzAsMTIgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKEZyYW1lSWRlbnRpZmll
cgogICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQo
bV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJ
bmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25E
YXRhKSwgV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mbyksIG9yaWdpbmF0aW5nUGFnZUlELCBv
cmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBX
VEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7CiB9CiAKLXZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9v
bCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBj
YW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2Fz
QWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIXZhbGlkYXRlSW5w
dXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdl
LmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2Vi
UGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRp
b25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1
dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CisgICAgbV9wYWdlLmRlY2lkZVBvbGljeUZv
clJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlE
LCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2Us
IHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRC
eUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwogfQogCiB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIEZy
YW1lSWRlbnRpZmllciBmcmFtZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmgKaW5kZXggMjcxNGIyYTViNTQ3Li4wYWJlYTlkYTZiYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgog
I2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9u
LmgiCkBAIC0xMDUsNyArMTA2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGxvYWRE
YXRhKEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFz
ZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6
Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRh
OjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkpOwotICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpO
YXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0KEFQSTo6TmF2
aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1l
ID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZp
Z2F0aW9uJiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xp
Y2llcz4mJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIApAQCAtMTI0LDcgKzEyNSw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYmLCBPcHRp
b25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7CiAKICAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1l
SW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJv
eHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVy
SUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRC
dW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJv
b2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29s
IHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9u
YWxVUkxGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0
cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5n
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBVc2VyRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggMTExMzE5ZDhkM2VmLi43NGFmMzllMzVkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtMTM4MSw3ICsxMzgxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBTaG8KICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omxv
YWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
JiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2
aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2ll
cywgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKQogewogICAgIEFTU0VSVCghbV9p
c0Nsb3NlZCk7CiAKQEAgLTE0MDQsNiArMTQwNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2Fk
UmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
CiAgICAgbG9hZFBhcmFtZXRlcnMubG9ja0JhY2tGb3J3YXJkTGlzdCA9IG5hdmlnYXRpb24ubG9j
a0JhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudFJlZGlyZWN0U291
cmNlRm9ySGlzdG9yeSA9IG5hdmlnYXRpb24uY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
KCk7CiAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAgbG9hZFBhcmFtZXRlcnMuZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gZXhpc3RpbmdOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOwogICAgIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hF
eHRlbnNpb25IYW5kbGUocHJvY2VzcywgdXJsLCBtX3BhZ2VMb2FkU3RhdGUucmVzb3VyY2VEaXJl
Y3RvcnlVUkwoKSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAKICAg
ICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKHByb2Nlc3MsIGxvYWRQYXJhbWV0ZXJzKTsKQEAg
LTM2MjAsNyArMzYyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBh
Z2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAgICAgbV9pbnNwZWN0
b3JDb250cm9sbGVyLT5kaWRDb21taXRQcm92aXNpb25hbFBhZ2Uob2xkV2ViUGFnZUlELCBtX3dl
YlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
bmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGlj
aWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhB
UEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdl
UHJveHk+JiYgc3VzcGVuZGVkUGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBuZXdQcm9jZXNz
LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMsIHN0ZDo6
b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkKIHsKICAgICBXRUJQQUdFUFJPWFlfUkVMRUFT
RV9MT0coTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzczogbmV3UHJvY2Vz
c1BJRD0laSwgaGFzU3VzcGVuZGVkUGFnZT0laSIsIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksICEhc3VzcGVuZGVkUGFnZSk7CiAgICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5h
dmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRp
b24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsKQEAgLTM2Mzcs
NyArMzYzOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1By
b2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgYm9vbCBpc1NlcnZlclNp
ZGVSZWRpcmVjdCA9IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA9PSBTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQ6Olllc0FmdGVyTmF2aWdhdGlvblBvbGljeURlY2lzaW9uICYmIG5hdmln
YXRpb24uY3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCk7CiAgICAgYm9vbCBzaG91bGRDbG9zZVBy
ZXZpb3VzUGFnZUFmdGVyQ29tbWl0ID0gc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkID09IFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25zZVBvbGljeURlY2lzaW9u
OwogICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbWFrZVVuaXF1ZTxQcm92aXNpb25hbFBhZ2VQcm94
eT4oKnRoaXMsIFdURk1vdmUobmV3UHJvY2VzcyksIFdURk1vdmUoc3VzcGVuZGVkUGFnZSksIG5h
dmlnYXRpb24ubmF2aWdhdGlvbklEKCksIGlzU2VydmVyU2lkZVJlZGlyZWN0LCBuYXZpZ2F0aW9u
LmN1cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHNob3VsZENs
b3NlUHJldmlvdXNQYWdlQWZ0ZXJDb21taXQsIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7Ci0gICAg
YXV0byBjb250aW51YXRpb24gPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyldKCkgbXV0
YWJsZSB7CisgICAgYXV0byBjb250aW51YXRpb24gPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgc2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xp
Y2llcyksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZV0oKSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9uLT50YXJnZXRJdGVt
KCkpIHsKICAgICAgICAgICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICVwIGNvbnRpbnVl
TmF2aWdhdGlvbkluTmV3UHJvY2VzcyB0byBiYWNrIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS0+
dXJsKCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTM2NjAsMTAgKzM2NjEsMTEgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24m
IG5hdmlnYXRpb24sIHMKIAogICAgICAgICAvLyBGSVhNRTogV29yayBvdXQgdGltaW5nIG9mIHJl
c3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0YwogICAgICAgICBBU1NF
UlQoIW5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNT
RVJUKCFleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgfHwgIW5h
dmlnYXRpb24tPnN1YnN0aXR1dGVEYXRhKCkpOwogICAgICAgICBpZiAoYXV0byYgc3Vic3RpdHV0
ZURhdGEgPSBuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKQogICAgICAgICAgICAgbV9wcm92
aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRl
bnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3RpdHV0ZURh
dGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5i
YXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIHNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNp
dGVQb2xpY2llc0RhdGEpLCBzdWJzdGl0dXRlRGF0YS0+c2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1
ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1
ZXN0KCkgfSwgbnVsbHB0ciwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSkpOworICAg
ICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291
cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkgfSwgbnVsbHB0ciwgc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCks
IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXJUb1Jlc3VtZSk7CiAgICAgfTsKICAgICBpZiAobV9pbnNwZWN0b3JDb250cm9s
bGVyLT5zaG91bGRQYXVzZUxvYWRpbmcoKm1fcHJvdmlzaW9uYWxQYWdlKSkKICAgICAgICAgbV9p
bnNwZWN0b3JDb250cm9sbGVyLT5zZXRDb250aW51ZUxvYWRpbmdDYWxsYmFjaygqbV9wcm92aXNp
b25hbFBhZ2UsIFdURk1vdmUoY29udGludWF0aW9uKSk7CkBAIC01NjE3LDEyICs1NjE5LDEyIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBkb3dubG9hZEF0dHJpYnV0ZSwKLSAgICBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxl
LCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAgICBib29sIHdhc0FsbG93ZWRCeUluamVj
dGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90
IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQo
bV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJ
bmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hv
d01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUs
IG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsK
KyAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBt
X3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZp
Z2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0
cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVySUQsIHVzZXJE
YXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFn
ZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRy
aWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFn
ZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRy
aWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01NjM1LDEz
ICs1NjM3LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JRCA/IG1fbmF2aWdhdGlvblN0YXRlLT5u
YXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRyOwogICAgIGF1dG8gbmF2aWdhdGlvblJl
c3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZyYW1lSW5mbzo6
Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNl
LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKIAotICAgIGF1dG8gbGlzdGVu
ZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2ViUGFnZUlELCBmcmFtZUlELCBuZWVkc0Jyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoLCBpZGVudGlmaWVyLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9u
ID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFt
ZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHdlYlBhZ2VJRCwgZnJhbWVJRCwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQs
IG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pLAogICAgICAgICBwcm9jZXNzLCBuYXZp
Z2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQ
b2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2Fy
bmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQg
dGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9m
IFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBS
RUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3Np
bmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CiAKLSAgICAgICAgYXV0byBzZW5kZXIg
PSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZy
YW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpXSAoY29uc3QgYXV0
byYgcG9saWN5RGVjaXNpb24pIHsKKyAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lv
blNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVy
SUQsIHByb2Nlc3NdIChjb25zdCBhdXRvJiBwb2xpY3lEZWNpc2lvbikgewogICAgICAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uLCBjcmVhdGVOZXR3b3JrRXh0ZW5z
aW9uc1NhbmRib3hFeHRlbnNpb25zKHByb2Nlc3MpKSwgd2ViUGFnZUlEKTsKICAgICAgICAgfSk7
CiAKQEAgLTU2NDksMTIgKzU2NTEsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICAg
ICAgaWYgKHBvbGljeUFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OlVzZSAmJiBuZWVkc0Jyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoICYmIG5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIFJlZ2lzdHJh
YmxlRG9tYWluIHJlc3BvbnNlRG9tYWluIHsgbmF2aWdhdGlvblJlc3BvbnNlLT5yZXNwb25zZSgp
LnVybCgpIH07CiAgICAgICAgICAgICAvLyBBdm9pZCBwcm9jZXNzLXN3YXBwaW5nIGluIGNhc2Vz
IHdoZXJlIHRoZSBwcm9jZXNzIG9ubHkgY29udGFpbnMgYSBzaW5nbGUgcGFnZSBhbmQgaXMgb3Jp
Z2luLWNsZWFuLgotICAgICAgICAgICAgaWYgKHRoaXMtPnByb2Nlc3MoKS5wYWdlQ291bnQoKSA+
IDEgfHwgKHRoaXMtPnByb2Nlc3MoKS5vcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgJiYgKnRo
aXMtPnByb2Nlc3MoKS5vcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgIT0gcmVzcG9uc2VEb21h
aW4pKSB7CisgICAgICAgICAgICBpZiAocHJvY2Vzcy0+cGFnZUNvdW50KCkgPiAxIHx8IChwcm9j
ZXNzLT5vcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgJiYgKnByb2Nlc3MtPm9wdGlvbmFsUmVn
aXN0cmFibGVEb21haW4oKSAhPSByZXNwb25zZURvbWFpbikpIHsKICAgICAgICAgICAgICAgICBX
RUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2VTaGFyZWQ6IFByb2Nlc3Mtc3dhcHBpbmcgZHVlIHRvIENyb3NzLU9yaWdpbi1PcGVu
ZXItUG9saWN5Iik7Ci0gICAgICAgICAgICAgICAgcG9saWN5QWN0aW9uID0gUG9saWN5QWN0aW9u
OjpJZ25vcmU7Ci0gICAgICAgICAgICAgICAgYXV0byBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1f
cHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4od2Vic2l0
ZURhdGFTdG9yZSgpLCB0aGlzLCByZXNwb25zZURvbWFpbik7Ci0gICAgICAgICAgICAgICAgY29u
dGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKCpuYXZpZ2F0aW9uLCBudWxscHRyLCBXVEZNb3Zl
KHByb2Nlc3NGb3JOYXZpZ2F0aW9uKSwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8s
IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25zZVBvbGljeURlY2lz
aW9uLCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9j
ZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzOworICAgICAgICAgICAgICAg
IHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnByZXBhcmVMb2FkRm9yV2ViUHJv
Y2Vzc1RyYW5zZmVyKHByb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCBtYWluUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVzcG9uc2VEb21haW4gPSBXVEZNb3ZlKHJlc3BvbnNlRG9tYWluKSwgbmF2aWdhdGlvbiwgbmF2
aWdhdGlvblJlc3BvbnNlID0gV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBzZW5kZXIgPSBX
VEZNb3ZlKHNlbmRlcildKGF1dG8gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
clRvUmVzdW1lKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBwcm9jZXNzRm9y
TmF2aWdhdGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yUmVnaXN0cmFi
bGVEb21haW4od2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXNwb25zZURvbWFpbik7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcygqbmF2aWdhdGlv
biwgbnVsbHB0ciwgV1RGTW92ZShwcm9jZXNzRm9yTmF2aWdhdGlvbiksIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQ6Ok5vLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVy
UmVzcG9uc2VQb2xpY3lEZWNpc2lvbiwgbnVsbHB0ciwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllclRvUmVzdW1lKTsKKworICAgICAgICAgICAgICAgICAgICByZWNlaXZlZFBv
bGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uLmdldCgpLCBudWxs
cHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUoc2VuZGVyKSwgeyB9LCBX
aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpZZXMpOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMjZiODA2YzM2YmFm
Li5mNzk0ODI2NmYzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBA
IC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTWVkaWFLZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tTdGF0ZS5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQYWdl
TG9hZFN0YXRlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEFjY2Vzc0ludGVudC5oIgpAQCAtMTc0
MSwxMCArMTc0MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0
aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJOYXZpZ2F0aW9u
RGF0YVN0b3JlJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENoYW5n
ZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUlu
Zm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5
SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklE
KTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRs
ZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0Fs
bG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0
Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hl
bWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6
TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQs
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3ksIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkp
OwotICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgc3Rk
OjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKKyAgICB2
b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDxO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGJhY2tGb3J3YXJk
R29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2Vi
QmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIHN0
ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKQEAgLTIwNjAsNyAr
MjA2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKICAgICAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELAotICAgICAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRB
dHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRh
dGEmKTsKKyAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBi
b29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJj
ZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwog
ICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2
b2lkIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiwgYm9vbCwgV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5Jik7CiAKQEAgLTI0NjIsNyArMjQ2Myw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHJlcG9ydFBhZ2VMb2FkUmVzdWx0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
ID0geyB9KTsKIAotICAgIHZvaWQgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6
TmF2aWdhdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYsIFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYkNvcmU6
OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVz
PiYmKTsKKyAgICB2b2lkIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmln
YXRpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmLCBSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwg
c3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpudWxsb3B0KTsKIAogICAg
IHZvaWQgc2V0TmVlZHNGb250QXR0cmlidXRlcyhib29sKTsKICAgICB2b2lkIHVwZGF0ZUZvbnRB
dHRyaWJ1dGVzQWZ0ZXJFZGl0b3JTdGF0ZUNoYW5nZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGI4ODAzY2Q1MjIyYi4uOTI1
NTM1YzU2ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0xMDcsNyArMTA3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5
IHsKICNlbmRpZgogCiAgICAgIyBQb2xpY3kgbWVzc2FnZXMKLSAgICBEZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6
RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBw
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2Fz
QWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAg
ICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxvYWRB
dHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAg
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGlu
Z0ZyYW1lSW5mb0RhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlm
aWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RS
ZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkK
ICAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgc3RydWN0IFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lD
aGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2
aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZy
YW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYktp
dDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEp
IC0+IChzdHJ1Y3QgV2ViS2l0OjpQb2xpY3lEZWNpc2lvbiBQb2xpY3lEZWNpc2lvbikgU3luY2hy
b25vdXMKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZv
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBz
dHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5k
ZXggNmU5NjkwNzI1NGE0Li4zNDllYTJjNjM2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTQxMiw4ICs0
MTIsMTEgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQ
cm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKIAogICAgIEFTU0VSVCgobG9hZFBhcmFt
ZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQpIHx8IGxvYWRQYXJh
bWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6
Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMpOwogCi0gICAgV0VCTE9BREVSU1RSQVRFR1lf
UkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdp
dGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KHJl
c291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7Ci0gICAgaWYgKCFXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxl
UmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgMCkpIHsKKyAgICBzdGQ6Om9wdGlvbmFsPE5l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyVG9SZXN1bWU7CisgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2
aWdhdGlvbikKKyAgICAgICAgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lID0gc3RkOjpleGNoYW5nZShtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXJUb1Jlc3VtZSwgc3RkOjpudWxsb3B0KTsKKyAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxF
QVNFX0xPRygic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0
aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0ICIpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNv
dXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXJUb1Jlc3VtZS52YWx1ZV9vcihOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciB7IH0pLnRvVUludDY0KCkpOworICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChs
b2FkUGFyYW1ldGVycywgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVz
dW1lKSwgMCkpIHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfRVJST1Io
InNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdv
cmtQcm9jZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVy
LnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5IGZhaWxlZCB0
byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVjYXVzZSBpdCBo
YWQgY3Jhc2hlZC4KICAgICAgICAgLy8gVGhpcyBsb2FkIHdpbGwgbmV2ZXIgc3VjY2VlZCBzbyB3
ZSB3aWxsIHNjaGVkdWxlIGl0IHRvIGZhaWwgYXN5bmNocm9ub3VzbHkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCBj
YTIzNDk5NTg2NjYuLjI0YjY5Mzc5MDE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC0yNSw2ICsyNSw3IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTG9h
ZGVyU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KQEAgLTkx
LDYgKzkyLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTG9hZElk
ZW50aWZpZXIoKTsKIAorICAgIHZvaWQgc2V0RXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkgeyBtX2V4
aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IGV4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsgfQorCiBwcml2YXRlOgogICAgIHZv
aWQgc2NoZWR1bGVMb2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2UqLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qp
OwogICAgIHZvaWQgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlciYpOwpAQCAtMTMzLDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1bnNp
Z25lZCBsb25nLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyPiBtX3BpbmdMb2FkQ29tcGxldGlv
bkhhbmRsZXJzOwogICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUHJlY29ubmVjdENvbXBsZXRp
b25IYW5kbGVyPiBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcnM7CiAgICAgVmVjdG9yPEZ1
bmN0aW9uPHZvaWQoYm9vbCk+PiBtX29ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXJzOworICAgIHN0
ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IG1fZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOwogICAgIGJvb2wgbV9pc09uTGluZSB7
IHRydWUgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDQ5NGQ5
ZTUwMTQ5ZC4uYWM2NjI0YWUxNGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTkxLDYgKzkxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N1YnJlc291cmNlTG9hZGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9VSUV2ZW50V2l0aEtleVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9XaWRnZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CkBAIC04NDgs
MTEgKzg0OSwxMiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAgIGF1dG8qIGNvcmVGcmFt
ZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGF1dG8qIHBvbGljeURvY3VtZW50TG9hZGVy
ID0gY29yZUZyYW1lID8gY29yZUZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyKCkgOiBudWxscHRyOwogICAgIGF1dG8gbmF2aWdhdGlvbklEID0gcG9saWN5RG9jdW1lbnRM
b2FkZXIgPyBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlciY+KCpwb2xpY3lEb2N1bWVudExv
YWRlcikubmF2aWdhdGlvbklEKCkgOiAwOworICAgIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyID0gcG9saWN5RG9jdW1lbnRMb2FkZXIgJiYgcG9saWN5RG9jdW1lbnRMb2FkZXIt
Pm1haW5SZXNvdXJjZUxvYWRlcigpID8gcG9saWN5RG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJj
ZUxvYWRlcigpLT5pZGVudGlmaWVyKCkgOiAwOwogCiAgICAgYm9vbCB3YXNBbGxvd2VkQnlJbmpl
Y3RlZEJ1bmRsZSA9IHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2U7CiAgICAg
YXV0byBwcm90ZWN0b3IgPSBtX2ZyYW1lLmNvcHlSZWYoKTsKICAgICB1aW50NjRfdCBsaXN0ZW5l
cklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1
bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKLSAgICBpZiAoIXdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIGlkZW50aWZpZXIsIG5hdmln
YXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dSZXNwb25zZSwgZG93bmxvYWRBdHRy
aWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdy
b3VwU3dpdGNoLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkgeworICAg
IGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgaWRlbnRpZmll
ciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd1Jlc3BvbnNlLCBkb3du
bG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdD
b250ZXh0R3JvdXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBsaXN0ZW5lcklE
LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkgewogICAgICAgICBXRUJGUkFNRUxPQURFUkNM
SUVOVF9SRUxFQVNFX0xPRyhOZXR3b3JrLCAiZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZTogaWdub3JpbmcgYmVjYXVzZSBXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNl
IGZhaWxlZCIpOwogICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlz
dGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQsIFBvbGlj
eUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGNmYmU1NGYwMjYzNC4uYzdkZDQ5
YjJkYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMjU5LDYgKzI1OSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJHTFN0YXRlVHJhY2tl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV3JpdGluZ0RpcmVjdGlvbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvbWFya3VwLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgpAQCAtMTY4OSw2ICsxNjkwLDExIEBAIHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3Qo
TG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBzZXRJc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
ICZtX21haW5GcmFtZS5nZXQoKSk7CiAjZW5kaWYKIAorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2V0RXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lKGxvYWRQYXJhbWV0ZXJzLmV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXJUb1Jlc3VtZSk7CisgICAgYXV0byByZXN1bWluZ0xvYWRTY29wZSA9IG1ha2VT
Y29wZUV4aXQoW10geworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJT
dHJhdGVneSgpLnNldEV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZShzdGQ6Om51bGxvcHQpOworICAgIH0pOworCiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1Rp
bWVyIHN0b3BwZXI7CiAKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBsb2FkUGFyYW1ldGVy
cy5uYXZpZ2F0aW9uSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggMWU2MTRjNzM5ZWE1Li41Zjk3OTBlYTkwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJM
YXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiT3B0aW9uYWxDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiUERGUGx1
Z2luSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBsdWdpbi5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5h
dmlnYXRpb24ubW0KaW5kZXggNDBhMDgyMjE3MDczLi40NzE4M2JlMTI5YTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmln
YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtNTIsNiArNTIsNyBAQAogI2ltcG9ydCA8V2ViS2l0
L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQ
dHIuaD4KICNpbXBvcnQgPHd0Zi9EZXF1ZS5oPgorI2ltcG9ydCA8d3RmL0hhc2hDb3VudGVkU2V0
Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTI1Myw2ICsyNTQsNyBAQCBAaW50ZXJmYWNlIFBT
T05TY2hlbWUgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPiB7CiAgICAgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gX2Nvb3BWYWx1ZXM7CiAgICAgSGFzaFNldDxpZCA8V0tVUkxTY2hlbWVU
YXNrPj4gX3J1bm5pbmdUYXNrczsKICAgICBib29sIF9zaG91bGRSZXNwb25kQXN5bmNocm9ub3Vz
bHk7CisgICAgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiBfcmVxdWVzdENvdW50czsKIH0KIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aEJ5dGVzOihjb25zdCBjaGFyKilieXRlczsKIC0gKHZvaWQpYWRk
UmVkaXJlY3RGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAqKXNvdXJjZVVSTFN0cmluZyB0b1VSTFN0
cmluZzooTlNTdHJpbmcgKilkZXN0aW5hdGlvblVSTFN0cmluZzsKQEAgLTI5MSw2ICsyOTMsMTEg
QEAgLSAodm9pZClzZXRTaG91bGRSZXNwb25kQXN5bmNocm9ub3VzbHk6KEJPT0wpdmFsdWUKICAg
ICBfc2hvdWxkUmVzcG9uZEFzeW5jaHJvbm91c2x5ID0gdmFsdWU7CiB9CiAKKy0gKHVuc2lnbmVk
KXJlcXVlc3RDb3VudDooTlNTdHJpbmcgKil1cmxTdHJpbmcKK3sKKyAgICByZXR1cm4gX3JlcXVl
c3RDb3VudHMuY291bnQodXJsU3RyaW5nKTsKK30KKwogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFz
awogewogICAgIGlmIChbKGlkPFdLVVJMU2NoZW1lVGFza1ByaXZhdGU+KXRhc2sgX3JlcXVlc3RP
bmx5SWZDYWNoZWRdKSB7CkBAIC0zMTAsMTEgKzMxNywxNCBAQCAtICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNr
Pil0YQogICAgIH07CiAKICAgICBOU1VSTCAqZmluYWxVUkwgPSB0YXNrLnJlcXVlc3QuVVJMOwor
ICAgIF9yZXF1ZXN0Q291bnRzLmFkZChbZmluYWxVUkwgYWJzb2x1dGVTdHJpbmddKTsKKwogICAg
IGF1dG8gdGFyZ2V0ID0gX3JlZGlyZWN0cy5nZXQodGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0
cmluZyk7CiAgICAgaWYgKCF0YXJnZXQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gcmVkaXJl
Y3RSZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0
YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOm5pbCBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0
RW5jb2RpbmdOYW1lOm5pbF0pOwogCiAgICAgICAgIGZpbmFsVVJMID0gW05TVVJMIFVSTFdpdGhT
dHJpbmc6KE5TU3RyaW5nICopdGFyZ2V0XTsKKyAgICAgICAgX3JlcXVlc3RDb3VudHMuYWRkKFtm
aW5hbFVSTCBhYnNvbHV0ZVN0cmluZ10pOwogICAgICAgICBhdXRvIHJlcXVlc3QgPSBhZG9wdE5T
KFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpmaW5hbFVSTF0pOwogCiAgICAgICAg
IFsoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVyZm9ybVJlZGlyZWN0aW9u
OnJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkgbmV3UmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKQEAgLTcy
MDcsMjAgKzcyMTcsMjcgQEAgc3RhdGljIHZvaWQgcnVuQ09PUFByb2Nlc3NTd2FwVGVzdChjb25z
dCBjaGFyKiBzb3VyY2VDT09QLCBjb25zdCBjaGFyKiBkZXN0aW5hdGkKICAgICB9CiAKICAgICBh
dXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAgIE5T
U3RyaW5nKiBwb3B1cFVSTFN0cmluZzsKICAgICBpZiAoaXNTYW1lT3JpZ2luID09IElzU2FtZU9y
aWdpbjo6WWVzKSB7CiAgICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAi
cHNvbjovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCIgdG9EYXRhOndpbmRvd09wZW5TYW1lT3Jp
Z2luQ09PUFRlc3RCeXRlcyB3aXRoQ09PUFZhbHVlOnNvdXJjZUNPT1BdOwogICAgICAgICBpZiAo
ZG9TZXJ2ZXJTaWRlUmVkaXJlY3QgPT0gRG9TZXJ2ZXJTaWRlUmVkaXJlY3Q6OlllcykgewogICAg
ICAgICAgICAgW2hhbmRsZXIgYWRkUmVkaXJlY3RGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy53
ZWJraXQub3JnL3BvcHVwLmh0bWwiIHRvVVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3Jn
L3BvcHVwLWFmdGVyLXJlZGlyZWN0Lmh0bWwiXTsKICAgICAgICAgICAgIFtoYW5kbGVyIGFkZE1h
cHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL3BvcHVwLWFmdGVyLXJl
ZGlyZWN0Lmh0bWwiIHRvRGF0YToicG9wdXAiIHdpdGhDT09QVmFsdWU6ZGVzdGluYXRpb25DT09Q
XTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBwb3B1cFVSTFN0cmluZyA9IEAicHNvbjov
L3d3dy53ZWJraXQub3JnL3BvcHVwLWFmdGVyLXJlZGlyZWN0Lmh0bWwiOworICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgW2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6QCJwc29u
Oi8vd3d3LndlYmtpdC5vcmcvcG9wdXAuaHRtbCIgdG9EYXRhOiJwb3B1cCIgd2l0aENPT1BWYWx1
ZTpkZXN0aW5hdGlvbkNPT1BdOworICAgICAgICAgICAgcG9wdXBVUkxTdHJpbmcgPSBAInBzb246
Ly93d3cud2Via2l0Lm9yZy9wb3B1cC5odG1sIjsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJr
aXQub3JnL21haW4uaHRtbCIgdG9EYXRhOndpbmRvd09wZW5Dcm9zc09yaWdpbkNPT1BUZXN0Qnl0
ZXMgd2l0aENPT1BWYWx1ZTpzb3VyY2VDT09QXTsKICAgICAgICAgaWYgKGRvU2VydmVyU2lkZVJl
ZGlyZWN0ID09IERvU2VydmVyU2lkZVJlZGlyZWN0OjpZZXMpIHsKICAgICAgICAgICAgIFtoYW5k
bGVyIGFkZFJlZGlyZWN0RnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cuYXBwbGUuY29tL3BvcHVw
Lmh0bWwiIHRvVVJMU3RyaW5nOkAicHNvbjovL3d3dy5hcHBsZS5jb20vcG9wdXAtYWZ0ZXItcmVk
aXJlY3QuaHRtbCJdOwogICAgICAgICAgICAgW2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJp
bmc6QCJwc29uOi8vd3d3LmFwcGxlLmNvbS9wb3B1cC1hZnRlci1yZWRpcmVjdC5odG1sIiB0b0Rh
dGE6InBvcHVwIiB3aXRoQ09PUFZhbHVlOmRlc3RpbmF0aW9uQ09PUF07Ci0gICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgcG9wdXBVUkxTdHJpbmcgPSBAInBzb246Ly93d3cuYXBwbGUuY29tL3Bv
cHVwLWFmdGVyLXJlZGlyZWN0Lmh0bWwiOworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
W2hhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6QCJwc29uOi8vd3d3LmFwcGxlLmNvbS9w
b3B1cC5odG1sIiB0b0RhdGE6InBvcHVwIiB3aXRoQ09PUFZhbHVlOmRlc3RpbmF0aW9uQ09PUF07
CisgICAgICAgICAgICBwb3B1cFVSTFN0cmluZyA9IEAicHNvbjovL3d3dy5hcHBsZS5jb20vcG9w
dXAuaHRtbCI7CisgICAgICAgIH0KICAgICB9CiAgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNl
dFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJQU09OIl07CiAK
QEAgLTcyNTcsNiArNzI3NCw3IEBAIHN0YXRpYyB2b2lkIHJ1bkNPT1BQcm9jZXNzU3dhcFRlc3Qo
Y29uc3QgY2hhciogc291cmNlQ09PUCwgY29uc3QgY2hhciogZGVzdGluYXRpCiAgICAgICAgIEVY
UEVDVF9GQUxTRShzZXJ2ZXJSZWRpcmVjdGVkKTsKICAgICB9CiAgICAgRVhQRUNUX0VRKDJVLCBu
dW1iZXJPZlByb3Zpc2lvbmFsTG9hZHMpOyAvLyBPbmUgaW4gZWFjaCB2aWV3LgorICAgIEVYUEVD
VF9FUShbaGFuZGxlciByZXF1ZXN0Q291bnQ6cG9wdXBVUkxTdHJpbmddLCAxVSk7IC8vIFdlIHNo
b3VsZCBoaXQgdGhlIHNlcnZlciBvbmx5IG9uY2UsIGV2ZW4gaW4gY2FzZSBvZiBwcm9jZXNzLXN3
YXAuCiAKICAgICBhdXRvIHBpZDEgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOwog
ICAgIEVYUEVDVF9UUlVFKCEhcGlkMSk7Cg==
</data>
<flag name="commit-queue"
          id="459456"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436430</attachid>
            <date>2021-08-25 15:06:56 -0700</date>
            <delta_ts>2021-08-25 15:50:24 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>229465_COOP_Process_Swap_Reuse_NetworkLoad_wip.patch</filename>
            <type>text/plain</type>
            <size>75851</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9s
aWN5L3Jlc291cmNlcy9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXItcG9wdXAucHkgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9yZXNvdXJjZXMvc2luZ2xl
LXJlcXVlc3QtdG8tc2VydmVyLXBvcHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNmNiZmJhOGI3M2I0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvcmVzb3VyY2VzL3NpbmdsZS1yZXF1
ZXN0LXRvLXNlcnZlci1wb3B1cC5weQpAQCAtMCwwICsxLDE0IEBACitkZWYgbWFpbihyZXF1ZXN0
LCByZXNwb25zZSk6CisgIHRva2VuID0gcmVxdWVzdC5HRVRbYid0b2tlbiddCisgIHZhbHVlID0g
cmVxdWVzdC5zZXJ2ZXIuc3Rhc2gudGFrZSh0b2tlbikKKyAgYWxyZWFkeV9sb2FkZWRfc3RyaW5n
ID0gIm5vdF9hbHJlYWR5X2xvYWRlZCIKKyAgaWYgdmFsdWUgIT0gTm9uZToKKyAgICBhbHJlYWR5
X2xvYWRlZF9zdHJpbmcgPSAiYWxyZWFkeV9sb2FkZWQiCisgIGVsc2U6CisgICAgcmVxdWVzdC5z
ZXJ2ZXIuc3Rhc2gucHV0KHRva2VuLCBUcnVlKQorICByZXR1cm4gKFsKKyAgICAoYidDYWNoZS1D
b250cm9sJywgYiduby1zdG9yZScpLAorICAgIChiJ0Nyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5
JywgYidzYW1lLW9yaWdpbicpLAorICAgIChiJ0NvbnRlbnQtVHlwZScsIGIndGV4dC9odG1sJyld
LAorICAgIHUnPHNjcmlwdD52YXIgYmMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgic2luZ2xlLXJl
cXVlc3QtdG8tc2VydmVyIik7IGJjLnBvc3RNZXNzYWdlKCIlcyIpOzwvc2NyaXB0PlxuJyAlIGFs
cmVhZHlfbG9hZGVkX3N0cmluZykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
Y3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5
L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mNjU3N2VjZTlmNWIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVx
dWVzdC10by1zZXJ2ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIE1ha2Ug
c3VyZSB3ZSBtYWtlIGEgc2luZ2xlIHJlcXVlc3QgdG8gdGhlIEhUVFAgc2VydmVyIHdoZW4gc3dp
dGNoaW5nIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2Vy
dmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGlj
eS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjYyMmYwZGRlNjhlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRv
LXNlcnZlci5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL3V0aWxzLmpzIj48L3Njcmlw
dAorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorYXN5bmNfdGVzdCgodCkgPT4geworICAgIHZh
ciBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCdzaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXInKTsK
KyAgICBsZXQgdyA9IG9wZW4oInJlc291cmNlcy9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXItcG9w
dXAucHk/dG9rZW49IiArIHRva2VuKCkpOworICAgIGJjLm9ubWVzc2FnZSA9IHQuc3RlcF9mdW5j
KChldmVudCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LmRhdGEsICJub3RfYWxy
ZWFkeV9sb2FkZWQiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUody5jbG9zZWQsICJTaG91bGQgc3dp
dGNoIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAiKTsKKyAgICAgICAgdC5kb25lKCk7CisgICAgfSk7
Cit9LCAiTWFrZSBzdXJlIHdlIG1ha2UgYSBzaW5nbGUgcmVxdWVzdCB0byB0aGUgSFRUUCBzZXJ2
ZXIgd2hlbiBzd2l0Y2hpbmcgYnJvd3NpbmcgY29udGV4dCBncm91cCIpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGQ5NjJhOThh
ZjU0Ni4uZDIwMmUzNGViODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtODUs
NiArODUsNyBAQAogI2VuZGlmCiAKICNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhjaGFu
bmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJZGVu
dGlmaWVyPSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6IiBmbXQs
IHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikg
UkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUi
IFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIHdl
YlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKIAogI2RlZmlu
ZSBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE5FVFdPUktfUFJPQ0VT
U19NRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCAodm9pZCkwKQogI2RlZmluZSBO
RVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKGFzc2VydGlvbiwgY29tcGxl
dGlvbikgZG8geyBcCkBAIC0xNjYsNyArMTY3LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFuZ2VkKGJvb2wgaGFzVXBsb2FkKQogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIo
TmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQobG9h
ZGVyLmlkZW50aWZpZXIoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobG9hZGVyLmNvcmVJZGVudGlm
aWVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlm
IChsb2FkZXIuaXNLZXB0QWxpdmUoKSkgewpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xlYW51cFJlc291cmNlTG9hZGVyKE5ldHdv
cmtSZXNvdXJjZUxvYWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX25l
dHdvcmtSZXNvdXJjZUxvYWRlcnMuZ2V0KGxvYWRlci5pZGVudGlmaWVyKCkpID09ICZsb2FkZXIp
OwotICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5yZW1vdmUobG9hZGVyLmlkZW50aWZpZXIo
KSk7CisgICAgQVNTRVJUKG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5nZXQobG9hZGVyLmNvcmVJ
ZGVudGlmaWVyKCkpID09ICZsb2FkZXIpOworICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5y
ZW1vdmUobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp0cmFuc2ZlcktlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9h
ZGVyJiBsb2FkZXIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
ICAgIEFTU0VSVChsb2FkZXIuaXNLZXB0QWxpdmUoKSk7Ci0gICAgQVNTRVJUKG1fbmV0d29ya1Jl
c291cmNlTG9hZGVycy5nZXQobG9hZGVyLmlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7Ci0gICAg
aWYgKGF1dG8gdGFrZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2Fk
ZXIuaWRlbnRpZmllcigpKSkKKyAgICBBU1NFUlQobV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmdl
dChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7CisgICAgaWYgKGF1dG8gdGFr
ZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2FkZXIuY29yZUlkZW50
aWZpZXIoKSkpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZEtlcHRBbGl2ZUxvYWQodGFr
ZW5Mb2FkZXIucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTQ4NiwyNyArNDg3LDM4IEBAIHN0
ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlRmV0CiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiYgbG9hZFBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpCiB7Ci0gICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRyhMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJjZUxvYWQ6IChwYXJlbnRQSUQ9JWQsIHBhZ2VQ
cm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIpIiwgbG9hZFBhcmFtZXRlcnMucGFyZW50UElE
LCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVy
cy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2
NCgpLCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDogKHBhcmVudFBJRD0lZCwgcGFnZVBy
b3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZT0lIiBQ
Ukl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQsIGxvYWRQYXJhbWV0ZXJzLndlYlBh
Z2VQcm94eUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUudmFsdWVfb3IoTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNl
c3Npb24obV9zZXNzaW9uSUQpOwogICAgIGlmICghc2VydmVyLmlzSW1wb3J0Q29tcGxldGVkKCkp
IHsKLSAgICAgICAgc2VydmVyLndoZW5JbXBvcnRJc0NvbXBsZXRlZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkUGFyYW1ldGVycyA9IFdURk1vdmUobG9hZFBhcmFt
ZXRlcnMpXSgpIG11dGFibGUgeworICAgICAgICBzZXJ2ZXIud2hlbkltcG9ydElzQ29tcGxldGVk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGxvYWRQYXJhbWV0ZXJzID0g
V1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWVdKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NDb25uZWN0
aW9uKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24obV9z
ZXNzaW9uSUQpLmlzSW1wb3J0Q29tcGxldGVkKCkpOwotICAgICAgICAgICAgc2NoZWR1bGVSZXNv
dXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycykpOworICAgICAgICAgICAgc2NoZWR1bGVS
ZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0aW5nTG9hZGVyVG9SZXN1
bWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorCiAgICAg
YXV0byBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcjsKICAgICBSRUxFQVNF
X0FTU0VSVChpZGVudGlmaWVyKTsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMoaWRlbnRp
ZmllcikpOwogCisgICAgaWYgKGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpIHsKKyAgICAgICAgaWYg
KGF1dG8gZXhpc3RpbmdMb2FkZXIgPSBuZXR3b3JrUHJvY2VzcygpLnRha2VMb2FkZXJBd2FpdGlu
Z1dlYlByb2Nlc3NUcmFuc2ZlcigqZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZSkpIHsKKyAgICAgICAg
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coTG9hZGluZywgInNjaGVkdWxlUmVzb3VyY2VMb2Fk
OiBSZXN1bWluZyBleGlzdGluZyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIiKTsKKyAgICAgICAgICAg
IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5hZGQoaWRlbnRpZmllciwgKmV4aXN0aW5nTG9hZGVy
KTsKKyAgICAgICAgICAgIGV4aXN0aW5nTG9hZGVyLT50cmFuc2ZlclRvTmV3V2ViUHJvY2Vzcygq
dGhpcywgaWRlbnRpZmllcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAic2NoZWR1
bGVSZXNvdXJjZUxvYWQ6IENvdWxkIG5vdCBmaW5kIGV4aXN0aW5nIE5ldHdvcmtSZXNvdXJjZUxv
YWRlciB0byByZXN1bWUsIHdpbGwgZG8gYSBmcmVzaCBsb2FkIik7CisgICAgfQorCiAgICAgYXV0
byYgbG9hZGVyID0gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgKnRoaXMp
KS5pdGVyYXRvci0+dmFsdWU7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0xMjY5
LDYgKzEyODEsMTEgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJpb3Jp
dGl6ZVJlc291cmNlTG9hZHMoVmVjdG9yPFJlc291cmNlTG9hZEkKICAgICBzZXNzaW9uLT5uZXR3
b3JrTG9hZFNjaGVkdWxlcigpLnByaW9yaXRpemVMb2Fkcyhsb2Fkcyk7CiB9CiAKK1JlZlB0cjxO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0YWtl
TmV0d29ya1Jlc291cmNlTG9hZGVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpCit7
CisgICByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRha2UocmVzb3VyY2VMb2FkSWRl
bnRpZmllcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDVlMDcwOTFlMzczNi4u
ZjRhMGFiNzE5M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlc1JlcGxpZXMu
aCIKICNpbmNsdWRlICJOZXR3b3JrTUROU1JlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1JU
Q1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmgiCiAjaW5jbHVkZSAiUG9saWN5RGVj
aXNpb24uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBAIC0xODYsNiArMTg3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgY29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChXZWJDb3JlOjpI
VFRQQ29va2llQWNjZXB0UG9saWN5KTsKIAogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3Nh
Z2UoSlNDOjpNZXNzYWdlU291cmNlLCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29ya1Jl
c291cmNlTG9hZGVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogCiBwcml2YXRl
OgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIpOwpAQCAtMjAzLDcgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAotICAgIHZvaWQgc2NoZWR1bGVSZXNvdXJjZUxv
YWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7CisgICAgdm9pZCBzY2hlZHVsZVJl
c291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFs
PE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ0xvYWRlclRvUmVzdW1lKTsK
ICAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3Jt
U3luY2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgdGVzdFByb2Nlc3NJbmNv
bWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VGVzdFByb2Nl
c3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVsYXllZFJlcGx5
JiYpOwogICAgIHZvaWQgbG9hZFBpbmcoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiZTkyNDRl
ODZmY2QuLjczZjNlODkxNjI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAotICAgIFNjaGVkdWxlUmVzb3VyY2VM
b2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFy
YW1ldGVycykKKyAgICBTY2hlZHVsZVJlc291cmNlTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8V2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdMb2FkZXJUb1Jlc3Vt
ZSkKICAgICBQZXJmb3JtU3luY2hyb25vdXNMb2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVycykgLT4gKFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgZXJyb3IsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFZlY3Rvcjx1
aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cwogICAgIFRlc3RQcm9jZXNzSW5jb21pbmdTeW5jTWVz
c2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlEKSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogICAgIExvYWRQaW5nKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVy
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
aW5kZXggNWQ2ODI5YjI4ODAyLi5jOTgzMWE2ZjliYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNzg2LDYgKzI3ODYsMTEgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFBhZ2VJZGVudGlm
aWVyIHBhZ2VJZGVudGlmaWVyLCBWZWMKICAgICBtX2V4dGVuc2lvbkNPUlNEaXNhYmxpbmdQYXR0
ZXJucy5zZXQocGFnZUlkZW50aWZpZXIsIFdURk1vdmUocGFyc2VkUGF0dGVybnMpKTsKIH0KIAor
UmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gTmV0d29ya1Byb2Nlc3M6OnRha2VMb2FkZXJB
d2FpdGluZ1dlYlByb2Nlc3NUcmFuc2ZlcihOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBp
ZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX2xvYWRlcnNBd2FpdGluZ1dlYlByb2Nlc3NUcmFu
c2Zlci50YWtlKGlkZW50aWZpZXIpOworfQorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBvcnRU
ZXN0aW5nRGF0YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpAQCAtMjgxNSw2ICsyODIwLDIy
IEBAIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5JiBOZXR3b3JrUHJvY2Vzczo6cnRj
RGF0YUNoYW5uZWxQcm94eSgpCiB9CiAjZW5kaWYKIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJl
cGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
c291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChyZXNvdXJj
ZUxvYWRJZGVudGlmaWVyKTsKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24oc291cmNlUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIGlmICghY29ubmVjdGlvbikKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CisKKyAgICBhdXRv
IGxvYWRlciA9IGNvbm5lY3Rpb24tPnRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIocmVzb3VyY2VM
b2FkSWRlbnRpZmllcik7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOworCisgICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVy
LT5pZGVudGlmaWVyKCk7CisgICAgbV9sb2FkZXJzQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIu
YWRkKGlkZW50aWZpZXIsIGxvYWRlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcihpZGVudGlmaWVyKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2ViUGFn
ZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiB7CiAgICAgYXV0byBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBlYTkxZWQ1
OTQwM2UuLjMwYTRiZjY1NWUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFu
YWdlci5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJX
ZWJJREJTZXJ2ZXIuaCIKQEAgLTM4OSw2ICszOTAsOCBAQCBwdWJsaWM6CiAgICAgUlRDRGF0YUNo
YW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkmIHJ0Y0RhdGFDaGFubmVsUHJveHkoKTsKICNlbmRpZgog
CisgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gdGFrZUxvYWRlckF3YWl0aW5nV2Vi
UHJvY2Vzc1RyYW5zZmVyKE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKwogcHJpdmF0
ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTQyMiw2ICs0MjUsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKICAg
ICB2b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYmKTsKICAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJiwgV2ViQ29yZTo6SFRU
UENvb2tpZUFjY2VwdFBvbGljeSk+JiYpOworICAgIHZvaWQgcHJlcGFyZUxvYWRGb3JXZWJQcm9j
ZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50
aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4pPiYmKTsK
IAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxU
aW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC02MDgs
NiArNjEyLDcgQEAgcHJpdmF0ZToKICAgICBTZWNvbmRzIG1fc2VydmljZVdvcmtlckZldGNoVGlt
ZW91dCB7IGRlZmF1bHRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0IH07CiAKICAgICBIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQ
YXR0ZXJuPj4gbV9leHRlbnNpb25DT1JTRGlzYWJsaW5nUGF0dGVybnM7CisgICAgSGFzaE1hcDxO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4+
IG1fbG9hZGVyc0F3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyOyAvLyBGSVhNRTogU2hvdWxkIGJl
IGNsZWFyZWQgb24gYSB0aW1lci4KIAogICAgIGJvb2wgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVi
dWdNb2RlRW5hYmxlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkNzk5NzQ1MWM0NTQu
LmNhZWI4ZDliYjg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xOTUsNiArMTk1LDggQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsZWFyQXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMK
ICNlbmRpZgogCisgICAgUHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291
cmNlTG9hZElkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXI+IG5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyKSBBc3luYwor
CiAgICAgQWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdl
TmV0d29ya1BhcmFtZXRlcnMgcGFyYW1ldGVycykKICAgICBSZW1vdmVXZWJQYWdlTmV0d29ya1Bh
cmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgcGFnZUlEKQogICAgIENvdW50Tm9uRGVmYXVsdFNlc3Npb25TZXRzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKHNpemVfdCBjb3VudCkgQXN5bmMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRl
eCA4MmYxZTUzMDE0NGYuLjI5NmQ0NTEwMmJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTIyLDYgKzUy
MiwxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQoKQogICAgIGNsZWFudXAo
TG9hZFJlc3VsdDo6Q2FuY2VsKTsKIH0KIAordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRy
YW5zZmVyVG9OZXdXZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBuZXdD
b25uZWN0aW9uLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIG5ld0NvcmVJZGVudGlmaWVyKQorewor
ICAgIG1fY29ubmVjdGlvbiA9IG5ld0Nvbm5lY3Rpb247CisgICAgbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXIgPSBuZXdDb3JlSWRlbnRpZmllcjsKKworICAgIEFTU0VSVChtX3Jlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXIgfHwgbV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlIHx8IG1fc2VydmljZVdvcmtlckZldGNoVGFzayk7CisgICAgYm9vbCB3aWxsV2FpdEZv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlID0gdHJ1ZTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgbV9yZXNwb25zZSwgd2lsbFdh
aXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSB9KTsKK30KKwogYm9vbCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0
cmluZyYgeEZyYW1lT3B0aW9ucywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKGlzTWFpbkZy
YW1lTG9hZCgpKQpAQCAtNTQ2LDEyICs1NTYsMTIgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgeEYK
ICAgICB9CiAgICAgY2FzZSBYRnJhbWVPcHRpb25zRGlzcG9zaXRpb246OkNvbmZsaWN0OiB7CiAg
ICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSAiTXVsdGlwbGUgJ1gtRnJhbWUtT3B0aW9ucycg
aGVhZGVycyB3aXRoIGNvbmZsaWN0aW5nIHZhbHVlcyAoJyIgKyB4RnJhbWVPcHRpb25zICsgIicp
IGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVk
VG9MZW5ndGgoKSArICInLiBGYWxsaW5nIGJhY2sgdG8gJ0RFTlknLiI7Ci0gICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNz
YWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBYRnJhbWVPcHRpb25zRGlzcG9zaXRp
b246OkludmFsaWQ6IHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9ICJJbnZhbGlkICdY
LUZyYW1lLU9wdGlvbnMnIGhlYWRlciBlbmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcgJyIgKyB1cmwu
c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJzogJyIgKyB4RnJhbWVPcHRpb25z
ICsgIicgaXMgbm90IGEgcmVjb2duaXplZCBkaXJlY3RpdmUuIFRoZSBoZWFkZXIgd2lsbCBiZSBp
Z25vcmVkLiI7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNz
YWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVN
ZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIH0K
QEAgLTU3OCw3ICs1ODgsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50
ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpbwogICAgICAgICBTdHJp
bmcgeEZyYW1lT3B0aW9ucyA9IG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lOjpYRnJhbWVPcHRpb25zKTsKICAgICAgICAgaWYgKCF4RnJhbWVPcHRpb25zLmlzTnVsbCgp
ICYmIHNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKHhGcmFtZU9wdGlvbnMsIHJl
c3BvbnNlLnVybCgpKSkgewogICAgICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VT
dHJpbmcoIlJlZnVzZWQgdG8gZGlzcGxheSAnIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKCksICInIGluIGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQgJ1gtRnJh
bWUtT3B0aW9ucycgdG8gJyIsIHhGcmFtZU9wdGlvbnMsICInLiIpOwotICAgICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBl
cnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAg
ICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxl
dmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9
CkBAIC01OTUsNyArNjA1LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZElu
dGVycnVwdE5hdmlnYXRpb25Gb3JDcm9zc09yaWdpbkVtYmVkZGVyUG9saWMKICAgICAgICAgYXV0
byByZXNwb25zZUNPRVAgPSBXZWJDb3JlOjpvYnRhaW5Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5
KHJlc3BvbnNlLCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLT5pc1BvdGVudGlhbGx5VHJ1c3R3
b3J0aHkoKSA/IElzU2VjdXJlQ29udGV4dDo6WWVzIDogSXNTZWN1cmVDb250ZXh0OjpObyk7CiAg
ICAgICAgIGlmIChyZXNwb25zZUNPRVAudmFsdWUgIT0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeVZhbHVlOjpSZXF1aXJlQ09SUCkgewogICAgICAgICAgICAgU3RyaW5nIGVycm9y
TWVzc2FnZSA9IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gZGlzcGxheSAnIiwgcmVzcG9uc2UudXJs
KCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICInIGluIGEgZnJhbWUgYmVjYXVz
ZSBvZiBDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5LiIpOwotICAgICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJv
ck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVs
OjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBA
IC02MTEsNyArNjIxLDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVy
cnVwdFdvcmtlckxvYWRGb3JDcm9zc09yaWdpbkVtYmVkZGVyUG9saWMKICAgICAgICAgYXV0byBy
ZXNwb25zZUNPRVAgPSBXZWJDb3JlOjpvYnRhaW5Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KHJl
c3BvbnNlLCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLT5pc1BvdGVudGlhbGx5VHJ1c3R3b3J0
aHkoKSA/IElzU2VjdXJlQ29udGV4dDo6WWVzIDogSXNTZWN1cmVDb250ZXh0OjpObyk7CiAgICAg
ICAgIGlmIChyZXNwb25zZUNPRVAudmFsdWUgIT0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5FbWJlZGRl
clBvbGljeVZhbHVlOjpSZXF1aXJlQ09SUCkgewogICAgICAgICAgICAgU3RyaW5nIGVycm9yTWVz
c2FnZSA9IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCAnIiwgcmVzcG9uc2UudXJsKCkuc3Ry
aW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICInIHdvcmtlciBiZWNhdXNlIG9mIENyb3Nz
LU9yaWdpbi1FbWJlZGRlci1Qb2xpY3kuIik7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVz
c2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwg
aWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBl
cnJvck1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTYzMCw3ICs2
NDAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSAmJiBtX25ldHdvcmtMb2FkQ2hlY2tlcikgewogICAgICAg
ICBhdXRvIGluZm9ybWF0aW9uID0gbV9uZXR3b3JrTG9hZENoZWNrZXItPnRha2VOZXR3b3JrTG9h
ZEluZm9ybWF0aW9uKCk7CiAgICAgICAgIGluZm9ybWF0aW9uLnJlc3BvbnNlID0gbV9yZXNwb25z
ZTsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5hZGROZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50
aWZpZXIoKSwgV1RGTW92ZShpbmZvcm1hdGlvbikpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPmFk
ZE5ldHdvcmtMb2FkSW5mb3JtYXRpb24oY29yZUlkZW50aWZpZXIoKSwgV1RGTW92ZShpbmZvcm1h
dGlvbikpOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRp
ZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZm
ZXJpbmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgpAQCAtNzU4LDcgKzc2OCw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5p
c2hMb2FkaW5nOiAobnVtQnl0ZXNSZWNlaXZlZD0lemQsIGhhc0NhY2hlRW50cnlGb3JWYWxpZGF0
aW9uPSVkKSIsIG1fbnVtQnl0ZXNSZWNlaXZlZCwgISFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9u
KTsKIAogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKLSAg
ICAgICAgbV9jb25uZWN0aW9uLT5hZGROZXR3b3JrTG9hZEluZm9ybWF0aW9uTWV0cmljcyhpZGVu
dGlmaWVyKCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRk
TmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJpY3MoY29yZUlkZW50aWZpZXIoKSwgbmV0d29ya0xv
YWRNZXRyaWNzKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAg
ICAgIC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTgwMSw3ICs4MTEsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CiAgICAgVU5VU0VEX1ZBUklBQkxFKHdhc1NlcnZpY2VXb3JrZXJMb2FkKTsKIAogICAgIGlmIChz
aG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKLSAgICAgICAgbV9jb25uZWN0
aW9uLT5yZW1vdmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50aWZpZXIoKSk7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+cmVtb3ZlTmV0d29ya0xvYWRJbmZvcm1hdGlvbihjb3JlSWRlbnRpZmll
cigpKTsKIAogICAgIEFTU0VSVCghZXJyb3IuaXNOdWxsKCkpOwogCkBAIC0xMjAyLDkgKzEyMTIs
MTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeShz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjoKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRp
ZFJldHJpZXZlQ2FjaGVFbnRyeTogU2VuZGluZyBXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2
ZVJlc3BvbnNlIElQQyAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2U9JWQp
IiwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwg
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CiAKLSAgICBpZiAobmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCisgICAgaWYgKG5lZWRzQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7CisgICAgICAgIG1fcmVzcG9uc2UgPSBXVEZN
b3ZlKHJlc3BvbnNlKTsKICAgICAgICAgbV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlID0gV1RGTW92ZShlbnRyeSk7Ci0gICAgZWxzZSB7CisgICAgfSBlbHNl
IHsKICAgICAgICAgc2VuZFJlc3VsdEZvckNhY2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOwogICAg
ICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OlN1Y2Nlc3MpOwogICAgIH0KQEAgLTEzNTksNyArMTM3
MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigp
IGNvbnN0CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbV9jb25uZWN0aW9uLT5u
ZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCgpKTsKICAgICBBU1NFUlQo
bmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsKIAotICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKG1fY29u
bmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3QoKS5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJlcXVl
c3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVm
ZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgaWRlbnRpZmllcigpKTsKKyAgICBsb2dDb29r
aWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwg
b3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpj
cmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2lu
YWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGNvcmVJZGVu
dGlmaWVyKCkpOwogfQogCiBzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyKQpAQCAtMTQ2Myw3ICsxNDc0LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJgogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwgbWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwg
IG1lc3NhZ2VTb3VyY2UsIG1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENv
bnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBtZXNzYWdlU291cmNlLCBt
ZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQ1NQVmlvbGF0
aW9uUmVwb3J0KFVSTCYmIHJlcG9ydFVSTCwgUmVmPEZvcm1EYXRhPiYmIHJlcG9ydCkKQEAgLTE1
MzQsNyArMTU0NSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2Vy
RGlkTm90SGFuZGxlKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sqIGZlCiAgICAgUkVMRUFTRV9BU1NF
UlQobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmdldCgpID09IGZldGNoVGFzayk7CiAgICAgaWYg
KG1fcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpP
bmx5KSB7CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPR19FUlJPUigic2VydmljZVdvcmtlckRp
ZE5vdEhhbmRsZTogQWJvcnRpbmcgbG9hZCBiZWNhdXNlIHRoZSBzZXJ2aWNlIHdvcmtlciBkaWQg
bm90IGhhbmRsZSB0aGUgbG9hZCBhbmQgc2VydmljZVdvcmtlck1vZGUgb25seSBhbGxvd3Mgc2Vy
dmljZSB3b3JrZXJzIik7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpTZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlIHsgfSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OlNlcnZpY2VXb3JrZXJEaWROb3RIYW5k
bGUgeyB9LCBjb3JlSWRlbnRpZmllcigpKTsKICAgICAgICAgYWJvcnQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGNlZjY1NDc5YjdlNi4uZDkyZDMwMzhhMWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgKQEAgLTg1LDE5ICs4NSwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydCgpOwogICAg
IHZvaWQgYWJvcnQoKTsKIAorICAgIHZvaWQgdHJhbnNmZXJUb05ld1dlYlByb2Nlc3MoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKwogICAg
IC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Jlc291cmNl
TG9hZGVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAogICAgIHZv
aWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3
UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7CiAKKyAgICB2
b2lkIHNldFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkgeyBt
X3Jlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAog
ICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uLT5zZXNzaW9uSUQoKTsgfQotICAg
IFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyOyB9CisgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBjb3JlSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9CiAgICAg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFt
ZXRlcnMud2ViRnJhbWVJRDsgfQogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KICAgICBjb25zdCBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyYW1ldGVyczsgfQorICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlTG9hZElEOyB9CiAKICAgICBOZXR3b3JrQ2Fj
aGU6Okdsb2JhbEZyYW1lSUQgZ2xvYmFsRnJhbWVJRCgpIHsgcmV0dXJuIHsgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VQcm94eUlELCBwYWdlSUQoKSwgZnJhbWVJRCgpIH07IH0KIApAQCAtMjEwLDcgKzIx
NCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8o
KTsKIAotICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVy
czsKKyAgICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAKICAg
ICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fY29ubmVjdGlvbjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IGFmOTUxZDVhMGI1OS4u
ZDQ1NTkzNTI1M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3Bw
CkBAIC03OCw3ICs3OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE1lc3NhZ2U+IGJvb2wgU2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6c2VuZFRvU2VydmljZVdvcmtlcihNZXNzCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE1lc3NhZ2U+IGJvb2wgU2VydmljZVdvcmtlckZldGNoVGFzazo6c2VuZFRvQ2xpZW50
KE1lc3NhZ2UmJiBtZXNzYWdlKQogewotICAgIHJldHVybiBtX2xvYWRlci5jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoc3RkOjpmb3J3YXJkPE1lc3NhZ2U+KG1lc3Nh
Z2UpLCBtX2xvYWRlci5pZGVudGlmaWVyKCkpOworICAgIHJldHVybiBtX2xvYWRlci5jb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoc3RkOjpmb3J3YXJkPE1lc3NhZ2U+
KG1lc3NhZ2UpLCBtX2xvYWRlci5jb3JlSWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpzdGFydChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIHNl
cnZpY2VXb3JrZXJDb25uZWN0aW9uKQpAQCAtMTYyLDYgKzE2Miw4IEBAIHZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgYm9vCiAKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291
cmNlOjpTZXJ2aWNlV29ya2VyKTsKICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CisgICAgaWYgKG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlKQorICAgICAgICBtX2xvYWRlci5zZXRSZXNwb25zZShXVEZNb3Zl
KHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGVjYTEx
YTNhMDBjMi4uMzQ2ZjdkOGQ4NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9M
b2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRl
cnMuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIHZvaWQgTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBsb2NrQmFja0ZvcndhcmRM
aXN0OwogICAgIGVuY29kZXIgPDwgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAg
IGVuY29kZXIgPDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBlbmNvZGVyIDw8
IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKICAgICBlbmNv
ZGVyIDw8IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTsKIAogICAgIHBsYXRmb3JtRW5jb2RlKGVu
Y29kZXIpOwpAQCAtMTM3LDYgKzEzOCw5IEBAIGJvb2wgTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIExvYWRQYXJhbWV0ZXJzJiBkYXRhKQogICAgIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YS5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmV4aXN0
aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc2Vzc2lvbkhpc3Rv
cnlWaXNpYmlsaXR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xv
YWRQYXJhbWV0ZXJzLmgKaW5kZXggZTVjNTdiMDQwNDljLi4wYzA1NDBiMDQ2ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgogI2luY2x1
ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgpAQCAtNzQsNiAr
NzUsNyBAQCBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVE
YXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHsg
V2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6VmlzaWJs
ZSB9OwogICAgIFN0cmluZyBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkYXRhRGV0ZWN0
aW9uQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDY3MWFkZDRhYTI3Yy4uYjFhYzNkNDM4YTJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKQEAgLTQ3NSw2ICs0NzUsMTcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNv
cmU6OlAKICAgICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRG
b3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJv
Y2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2Fw
cGluZywgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNz
VHJhbnNmZXI6IHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyOiAlIiBQUkl1NjQgIiwgcmVzb3VyY2VM
b2FkSWRlbnRpZmllcjogJSIgUFJJdTY0LCB0aGlzLCBzb3VyY2VQcm9jZXNzSWRlbnRpZmllci50
b1VJbnQ2NCgpLCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlc291cmNlTG9h
ZElkZW50aWZpZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlByZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKHNvdXJjZVByb2Nlc3NJ
ZGVudGlmaWVyLCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFJlc3VsdChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBw
YWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDU4
YThhOGU5NGJmMy4uNGU1YmI0NTlhM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQcm9jZXNz
TGF1bmNoZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJv
Y2Vzc1Rocm90dGxlckNsaWVudC5oIgpAQCAtMjE0LDYgKzIxNSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHRlc3RQcm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
VGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVs
YXllZFJlcGx5JiYpOwogICAgIHZvaWQgdGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtl
clByb2Nlc3NlcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHByZXBh
cmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNv
dXJjZVByb2Nlc3NJZGVudGlmaWVyLCB1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXI+KT4mJik7CisKICAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSBmaW5h
bCB7IHJldHVybiBtX3Rocm90dGxlcjsgfQogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc0Fzc2VydGlv
bigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAKaW5kZXggNDFjZDM1ZGJmYThkLi43NWE2NWM0MzM3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTE3MSw5ICsxNzEs
OSBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24m
IG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YQogICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZp
Z2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9u
LCBkYXRhLCBtaW1lVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUo
d2Vic2l0ZVBvbGljaWVzKSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSk7CiB9CiAK
LXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6
OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQs
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJz
aXRlUG9saWNpZXMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+
IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkKIHsKLSAgICBQ
Uk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVx
dWVzdDoiKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dh
cHBpbmcsICJsb2FkUmVxdWVzdDogZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
clRvUmVzdW1lPSUiIFBSSXU2NCwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
clRvUmVzdW1lLnZhbHVlX29yKE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHsgfSkudG9V
SW50NjQoKSk7CiAgICAgQVNTRVJUKHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCAhPSBXZWJD
b3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKIAogICAgIC8vIElmIHRoaXMg
aXMgYSBjbGllbnQtc2lkZSByZWRpcmVjdCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRo
ZW4gdGhlIG5ldyBwcm9jZXNzIHdpbGwgb3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4g
dGhpcyBjYXNlLApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzCiAg
ICAgaWYgKG5hdmlnYXRpb24uZnJvbUl0ZW0oKSAmJiBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2Fy
ZExpc3QoKSA9PSBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMpCiAgICAgICAgIG5h
dmlnYXRpb24uZnJvbUl0ZW0oKS0+c2V0TGFzdFByb2Nlc3NJZGVudGlmaWVyKG1fcHJvY2Vzcy0+
Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwogCi0gICAgbV9wYWdlLmxvYWRSZXF1ZXN0V2l0aE5h
dmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRp
b24sIFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1c2VyRGF0YSwgc2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQ
b2xpY2llcykpOworICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1f
cHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVl
c3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSwgdXNlckRhdGEsIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBleGlzdGlu
Z05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOwogfQogCiB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgUmVmUHRyPEFQSTo6V2Vic2l0
ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcykKQEAgLTMzMCwxMiArMzMwLDEyIEBAIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3lu
YyhGcmFtZUlkZW50aWZpZXIKICAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlE
LCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBvcmln
aW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3Rl
bmVySUQpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5m
bywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5q
ZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0
X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0
cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVy
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAg
aWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3Mu
Y29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVu
dGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUs
IGRvd25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAgIG1fcGFn
ZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dl
YlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0
aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmli
dXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91
cFN3aXRjaCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVySUQsIHVzZXJEYXRh
KTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGly
ZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uVVJMU3RyaW5nLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDI3MTRiMmE1YjU0Ny4uMGFi
ZWE5ZGE2YmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgor
I2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUG9s
aWN5RGVjaXNpb24uaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAi
U2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMTA1LDcgKzEwNiw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAgICAgdm9pZCBsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBXZWJDb3Jl
OjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5KTsKLSAgICB2b2lkIGxv
YWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2Fk
UmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQs
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQsIHN0ZDo6b3B0aW9uYWw8TmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBnb1RvQmFja0Zvcndh
cmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8
QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKQEAgLTEyNCw3
ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+
JiYpIGZpbmFsOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5
bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIHN0ZDo6b3B0
aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1
aW50NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0Fs
bG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0
Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0Rh
dGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9h
ZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50NjRfdCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRp
ZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJS
ZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblVSTFN0cmluZywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgVXNlckRhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDExMTMxOWQ4ZDNlZi4uNzRhZjM5ZTM1ZDZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEzODEsNyArMTM4MSw3IEBAIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBB
UEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6Omxv
YWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
JiB3ZWJzaXRlUG9saWNpZXMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkKIHsK
ICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCkBAIC0xNDA0LDYgKzE0MDQsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2NlcwogICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tCYWNrRm9yd2FyZExpc3Qg
PSBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsb2FkUGFyYW1ldGVycy5j
bGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkgPSBuYXZpZ2F0aW9uLmNsaWVudFJlZGlyZWN0
U291cmNlRm9ySGlzdG9yeSgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGxvYWRQYXJh
bWV0ZXJzLmV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IGV4
aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKICAgICBtYXliZUlu
aXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKHByb2Nlc3MsIHVybCwgbV9wYWdlTG9hZFN0
YXRlLnJlc291cmNlRGlyZWN0b3J5VVJMKCksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNp
b25IYW5kbGUpOwogCiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhwcm9jZXNzLCBsb2Fk
UGFyYW1ldGVycyk7CkBAIC0zNjIwLDcgKzM2MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29t
bWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRh
JgogICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxQYWdlKG9s
ZFdlYlBhZ2VJRCwgbV93ZWJQYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y29udGlu
dWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3Rk
Ojp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlLCBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIG5ld1Byb2Nlc3MsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVz
PiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRp
b25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1ZV9w
dHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgbmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0
ZVBvbGljaWVzLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBl
eGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpCiB7CiAgICAgV0VC
UEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1By
b2Nlc3M6IG5ld1Byb2Nlc3NQSUQ9JWksIGhhc1N1c3BlbmRlZFBhZ2U9JWkiLCBuZXdQcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2UpOwogICAgIExPRyhMb2FkaW5n
LCAiQ29udGludWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcycgaW4gYSBuZXcgd2ViIHBy
b2Nlc3MiLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmxvZ2dpbmdTdHJp
bmcoKSk7CkBAIC0zNjM3LDcgKzM2MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVO
YXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAg
IGJvb2wgaXNTZXJ2ZXJTaWRlUmVkaXJlY3QgPSBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQg
PT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlck5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbiAmJiBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpOwogICAgIGJv
b2wgc2hvdWxkQ2xvc2VQcmV2aW91c1BhZ2VBZnRlckNvbW1pdCA9IHNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCA9PSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUmVzcG9u
c2VQb2xpY3lEZWNpc2lvbjsKICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG1ha2VVbmlxdWU8UHJv
dmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBXVEZNb3ZlKG5ld1Byb2Nlc3MpLCBXVEZNb3ZlKHN1
c3BlbmRlZFBhZ2UpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpc1NlcnZlclNpZGVSZWRp
cmVjdCwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50LCBzaG91bGRDbG9zZVByZXZpb3VzUGFnZUFmdGVyQ29tbWl0LCB3ZWJzaXRlUG9saWNp
ZXMuZ2V0KCkpOwotICAgIGF1dG8gY29udGludWF0aW9uID0gW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYobmF2aWdhdGlvbiksIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgd2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRl
UG9saWNpZXMpXSgpIG11dGFibGUgeworICAgIGF1dG8gY29udGludWF0aW9uID0gW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYobmF2aWdh
dGlvbiksIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgd2Vic2l0ZVBvbGljaWVzID0gV1RG
TW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyVG9SZXN1bWVdKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdh
dGlvbi0+dGFyZ2V0SXRlbSgpKSB7CiAgICAgICAgICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQ
cm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAl
cyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC0zNjYwLDEwICszNjYx
LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3Mo
QVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAKICAgICAgICAgLy8gRklYTUU6IFdvcmsg
b3V0IHRpbWluZyBvZiByZXNwb25kaW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVnYXRlLCBl
dGMKICAgICAgICAgQVNTRVJUKCFuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLmlzRW1wdHko
KSk7CisgICAgICAgIEFTU0VSVCghZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
clRvUmVzdW1lIHx8ICFuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKTsKICAgICAgICAgaWYg
KGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbmF2aWdhdGlvbi0+c3Vic3RpdHV0ZURhdGEoKSkKICAg
ICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkRGF0YShuYXZpZ2F0aW9uLCB7IHN1YnN0
aXR1dGVEYXRhLT5jb250ZW50LmRhdGEoKSwgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuc2l6ZSgp
IH0sIHN1YnN0aXR1dGVEYXRhLT5NSU1FVHlwZSwgc3Vic3RpdHV0ZURhdGEtPmVuY29kaW5nLCBz
dWJzdGl0dXRlRGF0YS0+YmFzZVVSTCwgc3Vic3RpdHV0ZURhdGEtPnVzZXJEYXRhLmdldCgpLCBz
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4o
KSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXNEYXRhKSwgc3Vic3RpdHV0ZURhdGEtPnNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcHJvdmlzaW9u
YWxQYWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0
aW9uLT5jdXJyZW50UmVxdWVzdCgpIH0sIG51bGxwdHIsIHNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xp
Y2llc0RhdGEpKTsKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkUmVxdWVzdChu
YXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgp
IH0sIG51bGxwdHIsIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEpLCBleGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOwogICAgIH07CiAgICAgaWYgKG1f
aW5zcGVjdG9yQ29udHJvbGxlci0+c2hvdWxkUGF1c2VMb2FkaW5nKCptX3Byb3Zpc2lvbmFsUGFn
ZSkpCiAgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2V0Q29udGludWVMb2FkaW5nQ2Fs
bGJhY2soKm1fcHJvdmlzaW9uYWxQYWdlLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwpAQCAtNTYx
NywxMiArNTYxOSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZy
YW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LAogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsCi0gICAgYm9vbCB3YXNBbGxvd2Vk
QnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1
aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCisgICAgYm9vbCB3
YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoLCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIGRlY2lkZVBvbGljeUZv
clJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlE
LCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2Us
IHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRC
eUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBsaXN0ZW5l
cklELCB1c2VyRGF0YSk7CisgICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9j
ZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwg
aWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVU
eXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRz
QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBs
aXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJ
ZGVudGlmaWVyIHdlYlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBi
b29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJ
ZGVudGlmaWVyIHdlYlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBi
b29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJj
ZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgp
KTsKIApAQCAtNTYzNSwxMyArNTYzNywxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAg
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQgPyBtX25h
dmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKICAgICBh
dXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUo
QVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdldCgpLCBy
ZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7CiAK
LSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclBy
b3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdlYlBhZ2VJRCwgZnJh
bWVJRCwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgaWRlbnRpZmllciwgbGlzdGVu
ZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksCisgICAgYXV0byBsaXN0ZW5l
ciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3ZWJQYWdlSUQsIGZyYW1lSUQsIG5lZWRzQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBpZGVudGlm
aWVyLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwKICAgICAg
ICAgcHJvY2VzcywgbmF2aWdhdGlvblJlc3BvbnNlXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYm
IHNhZmVCcm93c2luZ1dhcm5pbmcsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICAv
LyBGSVhNRTogQXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJl
IG9uY2UgY2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28g
YXdheS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCA9PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCi0gICAg
ICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVy
LCBbd2ViUGFnZUlELCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gV1RGTW92ZShwcm9j
ZXNzKV0gKGNvbnN0IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7CisgICAgICAgIGF1dG8gc2VuZGVy
ID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbd2ViUGFnZUlELCBm
cmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzXSAoY29uc3QgYXV0byYgcG9saWN5RGVjaXNpb24p
IHsKICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbiwgY3Jl
YXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhwcm9jZXNzKSksIHdlYlBhZ2VJ
RCk7CiAgICAgICAgIH0pOwogCkBAIC01NjQ5LDEyICs1NjUxLDE1IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MsCiAgICAgICAgIGlmIChwb2xpY3lBY3Rpb24gPT0gUG9saWN5QWN0aW9uOjpVc2Ug
JiYgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCAmJiBuYXZpZ2F0aW9uKSB7CiAgICAg
ICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZXNwb25zZURvbWFpbiB7IG5hdmlnYXRpb25SZXNw
b25zZS0+cmVzcG9uc2UoKS51cmwoKSB9OwogICAgICAgICAgICAgLy8gQXZvaWQgcHJvY2Vzcy1z
d2FwcGluZyBpbiBjYXNlcyB3aGVyZSB0aGUgcHJvY2VzcyBvbmx5IGNvbnRhaW5zIGEgc2luZ2xl
IHBhZ2UgYW5kIGlzIG9yaWdpbi1jbGVhbi4KLSAgICAgICAgICAgIGlmICh0aGlzLT5wcm9jZXNz
KCkucGFnZUNvdW50KCkgPiAxIHx8ICh0aGlzLT5wcm9jZXNzKCkub3B0aW9uYWxSZWdpc3RyYWJs
ZURvbWFpbigpICYmICp0aGlzLT5wcm9jZXNzKCkub3B0aW9uYWxSZWdpc3RyYWJsZURvbWFpbigp
ICE9IHJlc3BvbnNlRG9tYWluKSkgeworICAgICAgICAgICAgaWYgKHByb2Nlc3MtPnBhZ2VDb3Vu
dCgpID4gMSB8fCAocHJvY2Vzcy0+b3B0aW9uYWxSZWdpc3RyYWJsZURvbWFpbigpICYmICpwcm9j
ZXNzLT5vcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgIT0gcmVzcG9uc2VEb21haW4pKSB7CiAg
ICAgICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywg
ImRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkOiBQcm9jZXNzLXN3YXBwaW5nIGR1ZSB0byBD
cm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIpOwotICAgICAgICAgICAgICAgIHBvbGljeUFjdGlv
biA9IFBvbGljeUFjdGlvbjo6SWdub3JlOwotICAgICAgICAgICAgICAgIGF1dG8gcHJvY2Vzc0Zv
ck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucHJvY2Vzc0ZvclJlZ2lzdHJh
YmxlRG9tYWluKHdlYnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVzcG9uc2VEb21haW4pOwotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcygqbmF2aWdhdGlvbiwg
bnVsbHB0ciwgV1RGTW92ZShwcm9jZXNzRm9yTmF2aWdhdGlvbiksIFByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQ6Ok5vLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUmVz
cG9uc2VQb2xpY3lEZWNpc2lvbiwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgd2lsbENvbnRp
bnVlTG9hZEluTmV3UHJvY2VzcyA9IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllczsK
KyAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5wcmVw
YXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2Zlcihwcm9jZXNzLT5jb3JlUHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHJlc3BvbnNlRG9tYWluID0gV1RGTW92ZShyZXNwb25zZURvbWFpbiks
IG5hdmlnYXRpb24sIG5hdmlnYXRpb25SZXNwb25zZSA9IFdURk1vdmUobmF2aWdhdGlvblJlc3Bv
bnNlKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpXShhdXRvIGV4aXN0aW5nTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAg
IGF1dG8gcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucHJv
Y2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHdlYnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVzcG9u
c2VEb21haW4pOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1By
b2Nlc3MoKm5hdmlnYXRpb24sIG51bGxwdHIsIFdURk1vdmUocHJvY2Vzc0Zvck5hdmlnYXRpb24p
LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObywgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkOjpZZXNBZnRlclJlc3BvbnNlUG9saWN5RGVjaXNpb24sIG51bGxwdHIsIGV4aXN0aW5n
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CisKKyAgICAgICAgICAgICAg
ICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbmF2aWdh
dGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBXVEZNb3Zl
KHNlbmRlciksIHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDI2YjgwNmMzNmJhZi4uZjc5NDgyNjZmM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIk1lZGlhS2V5U3lzdGVt
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJNZWRpYVBsYXliYWNr
U3RhdGUuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQREZQbHVnaW5JZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiUGFnZUxvYWRTdGF0ZS5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRBY2Nlc3NJ
bnRlbnQuaCIKQEAgLTE3NDEsMTAgKzE3NDIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmF2
aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29u
c3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBVUkwmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5
bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBzdGQ6Om9wdGlv
bmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWlu
dDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dl
ZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBv
bGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJp
YnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJM
U2NoZW1lVGFza1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkRGF0YVdp
dGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJp
bmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
Piwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBXZWJDb3JlOjpTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6
TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRp
b24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQs
IHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
dm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNv
bnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsKICAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFtZSwgRnJhbWVJ
bmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0
aW5nRnJhbWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
JiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xP
T0spCkBAIC0yMDYwLDcgKzIwNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0
YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJ
bmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxl
LCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1F
VHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJ
bmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50
NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29u
c3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5KFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVz
ZXJEYXRhJik7CiAgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIGJv
b2wsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogCkBAIC0yNDYyLDcgKzI0NjMsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCByZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiA9IHsgfSk7CiAKLSAgICB2b2lkIGNvbnRpbnVlTmF2aWdhdGlvbklu
TmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFn
ZVByb3h5PiYmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFJlZlB0cjxBUEk6
OldlYnNpdGVQb2xpY2llcz4mJik7CisgICAgdm9pZCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1By
b2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94
eT4mJiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBSZWZQdHI8QVBJOjpXZWJz
aXRlUG9saWNpZXM+JiYsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6
bnVsbG9wdCk7CiAKICAgICB2b2lkIHNldE5lZWRzRm9udEF0dHJpYnV0ZXMoYm9vbCk7CiAgICAg
dm9pZCB1cGRhdGVGb250QXR0cmlidXRlc0FmdGVyRWRpdG9yU3RhdGVDaGFuZ2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBi
ODgwM2NkNTIyMmIuLjkyNTUzNWM1NmQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTA3LDcgKzEwNyw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCi0gICAg
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgU3RyaW5nIGRvd25sb2FkQXR0
cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCisgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZv
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2Us
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwg
U3RyaW5nIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxl
LCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKQogICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0
YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlv
bkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5m
b0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2
NF90IGxpc3RlbmVySUQpCiAgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVj
dCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0
cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBz
dHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgc3Rk
OjpvcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9k
eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKSAtPiAoc3RydWN0IFdlYktpdDo6UG9saWN5RGVjaXNpb24gUG9saWN5
RGVjaXNpb24pIFN5bmNocm9ub3VzCiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNo
ZWNrSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcg
ZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwCmluZGV4IDZlOTY5MDcyNTRhNC4uMzQ5ZWEyYzYzNjkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwCkBAIC00MTIsOCArNDEyLDExIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxl
TG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAKICAgICBB
U1NFUlQoKGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCAmJiBsb2FkUGFyYW1ldGVycy53ZWJGcmFt
ZUlEKSB8fCBsb2FkUGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENy
ZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzKTsKIAotICAgIFdF
QkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HKCJzY2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJl
aW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQpIiwgc3Rh
dGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwotICAg
IGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVycyksIDApKSB7CisgICAg
c3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOworICAgIGlmIChsb2FkUGFyYW1ldGVy
cy5pc01haW5GcmFtZU5hdmlnYXRpb24pCisgICAgICAgIGV4aXN0aW5nTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6ZXhjaGFuZ2UobV9leGlzdGluZ05ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUsIHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCTE9B
REVSU1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcg
c2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIHN0YXRp
Y19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBleGlzdGlu
Z05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUudmFsdWVfb3IoTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKKyAgICBpZiAoIVdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1
bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFtZXRlcnMsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXJUb1Jlc3VtZSksIDApKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JF
TEVBU0VfTE9HX0VSUk9SKCJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJj
ZSB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQpIiwgc3RhdGljX2Nhc3Q8aW50
PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwogICAgICAgICAvLyBXZSBw
cm9iYWJseSBmYWlsZWQgdG8gc2NoZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9j
ZXNzIGJlY2F1c2UgaXQgaGFkIGNyYXNoZWQuCiAgICAgICAgIC8vIFRoaXMgbG9hZCB3aWxsIG5l
dmVyIHN1Y2NlZWQgc28gd2Ugd2lsbCBzY2hlZHVsZSBpdCB0byBmYWlsIGFzeW5jaHJvbm91c2x5
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmgKaW5kZXggY2EyMzQ5OTU4NjY2Li4yNGI2OTM3OTAxN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAt
MjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+CkBAIC05MSw2ICs5Miw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB1aW50NjRf
dCBnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CiAKKyAgICB2b2lkIHNldEV4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZShzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
VG9SZXN1bWUpIHsgbV9leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUgPSBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7IH0KKwog
cHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYs
IFdlYkNvcmU6OkNhY2hlZFJlc291cmNlKiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0KTsKICAgICB2b2lkIHNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImKTsKQEAgLTEzMyw2ICsxMzYsNyBAQCBwcml2YXRlOgog
ICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcj4gbV9w
aW5nTG9hZENvbXBsZXRpb25IYW5kbGVyczsKICAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFBy
ZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcj4gbV9wcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXJz
OwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKGJvb2wpPj4gbV9vbmxpbmVTdGF0ZUNoYW5nZUxp
c3RlbmVyczsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
PiBtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKICAgICBi
b29sIG1faXNPbkxpbmUgeyB0cnVlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAppbmRleCA0OTRkOWU1MDE0OWQuLmFjNjYyNGFlMTRkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC05MSw2ICs5MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3Jp
cHRDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNv
dXJjZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVUlFdmVudFdpdGhLZXlTdGF0ZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvV2lkZ2V0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0
dXJlcy5oPgpAQCAtODQ4LDExICs4NDksMTIgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnMKICAg
ICBhdXRvKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKTsKICAgICBhdXRvKiBwb2xp
Y3lEb2N1bWVudExvYWRlciA9IGNvcmVGcmFtZSA/IGNvcmVGcmFtZS0+bG9hZGVyKCkucHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcigpIDogbnVsbHB0cjsKICAgICBhdXRvIG5hdmlnYXRpb25JRCA9
IHBvbGljeURvY3VtZW50TG9hZGVyID8gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigq
cG9saWN5RG9jdW1lbnRMb2FkZXIpLm5hdmlnYXRpb25JRCgpIDogMDsKKyAgICB1aW50NjRfdCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciA9IHBvbGljeURvY3VtZW50TG9hZGVyICYmIHBvbGlj
eURvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKSA/IHBvbGljeURvY3VtZW50TG9h
ZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+aWRlbnRpZmllcigpIDogMDsKIAogICAgIGJvb2wg
d2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUgPSBwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5
QWN0aW9uVXNlOwogICAgIGF1dG8gcHJvdGVjdG9yID0gbV9mcmFtZS5jb3B5UmVmKCk7CiAgICAg
dWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRp
ZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpO
byk7Ci0gICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCBp
ZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93UmVzcG9u
c2UsIGRvd25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSku
Z2V0KCkpKSkpIHsKKyAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5p
bmZvKCksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNo
b3dSZXNwb25zZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxl
LCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBtYWluUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSkpIHsKICAgICAgICAg
V0VCRlJBTUVMT0FERVJDTElFTlRfUkVMRUFTRV9MT0coTmV0d29yaywgImRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2U6IGlnbm9yaW5nIGJlY2F1c2UgV2ViUGFnZVByb3h5OjpEZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZSBmYWlsZWQiKTsKICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmllciwgc3Rk
OjpudWxsb3B0LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjZmJl
NTRmMDI2MzQuLmM3ZGQ0OWIyZGFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI1OSw2ICsyNTksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
V2ViR0xTdGF0ZVRyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dyaXRpbmdEaXJlY3Rpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL21hcmt1cC5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgog
I2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTE2ODksNiArMTY5MCwxMSBAQCB2b2lkIFdlYlBh
Z2U6OmxvYWRSZXF1ZXN0KExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiAgICAgc2V0
SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUuZ2V0KCkpOwogI2VuZGlmCiAKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnNldEV4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZShsb2FkUGFyYW1ldGVycy5leGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOworICAgIGF1dG8gcmVzdW1pbmdM
b2FkU2NvcGUgPSBtYWtlU2NvcGVFeGl0KFtdIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zZXRFeGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyVG9SZXN1bWUoc3RkOjpudWxsb3B0KTsKKyAgICB9KTsKKwogICAgIFNlbmRTdG9w
UmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyOwogCiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklE
ID0gbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDFlNjE0YzczOWVhNS4uNWY5NzkwZWE5MDFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00Nyw2ICs0Nyw3
IEBACiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgog
I2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQbHVnaW4uaCIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3
YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IDQwYTA4MjIxNzA3My4uNDcxODNiZTEy
OWEyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTUyLDYgKzUyLDcgQEAK
ICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogI2lt
cG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvRGVxdWUuaD4KKyNpbXBvcnQgPHd0
Zi9IYXNoQ291bnRlZFNldC5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNpbXBvcnQgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0yNTMsNiArMjU0LDcg
QEAgQGludGVyZmFjZSBQU09OU2NoZW1lIDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFuZGxlcj4g
ewogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IF9jb29wVmFsdWVzOwogICAgIEhhc2hTZXQ8
aWQgPFdLVVJMU2NoZW1lVGFzaz4+IF9ydW5uaW5nVGFza3M7CiAgICAgYm9vbCBfc2hvdWxkUmVz
cG9uZEFzeW5jaHJvbm91c2x5OworICAgIEhhc2hDb3VudGVkU2V0PFN0cmluZz4gX3JlcXVlc3RD
b3VudHM7CiB9CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhCeXRlczooY29uc3QgY2hhciopYnl0
ZXM7CiAtICh2b2lkKWFkZFJlZGlyZWN0RnJvbVVSTFN0cmluZzooTlNTdHJpbmcgKilzb3VyY2VV
UkxTdHJpbmcgdG9VUkxTdHJpbmc6KE5TU3RyaW5nICopZGVzdGluYXRpb25VUkxTdHJpbmc7CkBA
IC0yOTEsNiArMjkzLDExIEBAIC0gKHZvaWQpc2V0U2hvdWxkUmVzcG9uZEFzeW5jaHJvbm91c2x5
OihCT09MKXZhbHVlCiAgICAgX3Nob3VsZFJlc3BvbmRBc3luY2hyb25vdXNseSA9IHZhbHVlOwog
fQogCistICh1bnNpZ25lZClyZXF1ZXN0Q291bnQ6KE5TU3RyaW5nICopdXJsU3RyaW5nCit7Cisg
ICAgcmV0dXJuIF9yZXF1ZXN0Q291bnRzLmNvdW50KHVybFN0cmluZyk7Cit9CisKIC0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VS
TFNjaGVtZVRhc2s+KXRhc2sKIHsKICAgICBpZiAoWyhpZDxXS1VSTFNjaGVtZVRhc2tQcml2YXRl
Pil0YXNrIF9yZXF1ZXN0T25seUlmQ2FjaGVkXSkgewpAQCAtMzEwLDExICszMTcsMTQgQEAgLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQg
PFdLVVJMU2NoZW1lVGFzaz4pdGEKICAgICB9OwogCiAgICAgTlNVUkwgKmZpbmFsVVJMID0gdGFz
ay5yZXF1ZXN0LlVSTDsKKyAgICBfcmVxdWVzdENvdW50cy5hZGQoW2ZpbmFsVVJMIGFic29sdXRl
U3RyaW5nXSk7CisKICAgICBhdXRvIHRhcmdldCA9IF9yZWRpcmVjdHMuZ2V0KHRhc2sucmVxdWVz
dC5VUkwuYWJzb2x1dGVTdHJpbmcpOwogICAgIGlmICghdGFyZ2V0LmlzRW1wdHkoKSkgewogICAg
ICAgICBhdXRvIHJlZGlyZWN0UmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpuaWwgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKIAogICAgICAgICBmaW5hbFVSTCA9
IFtOU1VSTCBVUkxXaXRoU3RyaW5nOihOU1N0cmluZyAqKXRhcmdldF07CisgICAgICAgIF9yZXF1
ZXN0Q291bnRzLmFkZChbZmluYWxVUkwgYWJzb2x1dGVTdHJpbmddKTsKICAgICAgICAgYXV0byBy
ZXF1ZXN0ID0gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6ZmluYWxV
UkxdKTsKIAogICAgICAgICBbKGlkPFdLVVJMU2NoZW1lVGFza1ByaXZhdGU+KXRhc2sgX2RpZFBl
cmZvcm1SZWRpcmVjdGlvbjpyZWRpcmVjdFJlc3BvbnNlLmdldCgpIG5ld1JlcXVlc3Q6cmVxdWVz
dC5nZXQoKV07CkBAIC03MjA3LDIwICs3MjE3LDI3IEBAIHN0YXRpYyB2b2lkIHJ1bkNPT1BQcm9j
ZXNzU3dhcFRlc3QoY29uc3QgY2hhciogc291cmNlQ09PUCwgY29uc3QgY2hhciogZGVzdGluYXRp
CiAgICAgfQogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1BTT05TY2hlbWUgYWxsb2Nd
IGluaXRdKTsKKyAgICBOU1N0cmluZyogcG9wdXBVUkxTdHJpbmc7CiAgICAgaWYgKGlzU2FtZU9y
aWdpbiA9PSBJc1NhbWVPcmlnaW46OlllcykgewogICAgICAgICBbaGFuZGxlciBhZGRNYXBwaW5n
RnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiIHRvRGF0YTp3
aW5kb3dPcGVuU2FtZU9yaWdpbkNPT1BUZXN0Qnl0ZXMgd2l0aENPT1BWYWx1ZTpzb3VyY2VDT09Q
XTsKICAgICAgICAgaWYgKGRvU2VydmVyU2lkZVJlZGlyZWN0ID09IERvU2VydmVyU2lkZVJlZGly
ZWN0OjpZZXMpIHsKICAgICAgICAgICAgIFtoYW5kbGVyIGFkZFJlZGlyZWN0RnJvbVVSTFN0cmlu
ZzpAInBzb246Ly93d3cud2Via2l0Lm9yZy9wb3B1cC5odG1sIiB0b1VSTFN0cmluZzpAInBzb246
Ly93d3cud2Via2l0Lm9yZy9wb3B1cC1hZnRlci1yZWRpcmVjdC5odG1sIl07CiAgICAgICAgICAg
ICBbaGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cud2Via2l0Lm9y
Zy9wb3B1cC1hZnRlci1yZWRpcmVjdC5odG1sIiB0b0RhdGE6InBvcHVwIiB3aXRoQ09PUFZhbHVl
OmRlc3RpbmF0aW9uQ09PUF07Ci0gICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcG9wdXBVUkxT
dHJpbmcgPSBAInBzb246Ly93d3cud2Via2l0Lm9yZy9wb3B1cC1hZnRlci1yZWRpcmVjdC5odG1s
IjsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9t
VVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL3BvcHVwLmh0bWwiIHRvRGF0YToicG9w
dXAiIHdpdGhDT09QVmFsdWU6ZGVzdGluYXRpb25DT09QXTsKKyAgICAgICAgICAgIHBvcHVwVVJM
U3RyaW5nID0gQCJwc29uOi8vd3d3LndlYmtpdC5vcmcvcG9wdXAuaHRtbCI7CisgICAgICAgIH0K
ICAgICB9IGVsc2UgewogICAgICAgICBbaGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpA
InBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiIHRvRGF0YTp3aW5kb3dPcGVuQ3Jvc3NP
cmlnaW5DT09QVGVzdEJ5dGVzIHdpdGhDT09QVmFsdWU6c291cmNlQ09PUF07CiAgICAgICAgIGlm
IChkb1NlcnZlclNpZGVSZWRpcmVjdCA9PSBEb1NlcnZlclNpZGVSZWRpcmVjdDo6WWVzKSB7CiAg
ICAgICAgICAgICBbaGFuZGxlciBhZGRSZWRpcmVjdEZyb21VUkxTdHJpbmc6QCJwc29uOi8vd3d3
LmFwcGxlLmNvbS9wb3B1cC5odG1sIiB0b1VSTFN0cmluZzpAInBzb246Ly93d3cuYXBwbGUuY29t
L3BvcHVwLWFmdGVyLXJlZGlyZWN0Lmh0bWwiXTsKICAgICAgICAgICAgIFtoYW5kbGVyIGFkZE1h
cHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy5hcHBsZS5jb20vcG9wdXAtYWZ0ZXItcmVk
aXJlY3QuaHRtbCIgdG9EYXRhOiJwb3B1cCIgd2l0aENPT1BWYWx1ZTpkZXN0aW5hdGlvbkNPT1Bd
OwotICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBvcHVwVVJMU3RyaW5nID0gQCJwc29uOi8v
d3d3LmFwcGxlLmNvbS9wb3B1cC1hZnRlci1yZWRpcmVjdC5odG1sIjsKKyAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAicHNvbjov
L3d3dy5hcHBsZS5jb20vcG9wdXAuaHRtbCIgdG9EYXRhOiJwb3B1cCIgd2l0aENPT1BWYWx1ZTpk
ZXN0aW5hdGlvbkNPT1BdOworICAgICAgICAgICAgcG9wdXBVUkxTdHJpbmcgPSBAInBzb246Ly93
d3cuYXBwbGUuY29tL3BvcHVwLmh0bWwiOworICAgICAgICB9CiAgICAgfQogICAgIFt3ZWJWaWV3
Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2No
ZW1lOkAiUFNPTiJdOwogCkBAIC03MjU3LDYgKzcyNzQsNyBAQCBzdGF0aWMgdm9pZCBydW5DT09Q
UHJvY2Vzc1N3YXBUZXN0KGNvbnN0IGNoYXIqIHNvdXJjZUNPT1AsIGNvbnN0IGNoYXIqIGRlc3Rp
bmF0aQogICAgICAgICBFWFBFQ1RfRkFMU0Uoc2VydmVyUmVkaXJlY3RlZCk7CiAgICAgfQogICAg
IEVYUEVDVF9FUSgyVSwgbnVtYmVyT2ZQcm92aXNpb25hbExvYWRzKTsgLy8gT25lIGluIGVhY2gg
dmlldy4KKyAgICBFWFBFQ1RfRVEoW2hhbmRsZXIgcmVxdWVzdENvdW50OnBvcHVwVVJMU3RyaW5n
XSwgMVUpOyAvLyBXZSBzaG91bGQgaGl0IHRoZSBzZXJ2ZXIgb25seSBvbmNlLCBldmVuIGluIGNh
c2Ugb2YgcHJvY2Vzcy1zd2FwLgogCiAgICAgYXV0byBwaWQxID0gW3dlYlZpZXcgX3dlYlByb2Nl
c3NJZGVudGlmaWVyXTsKICAgICBFWFBFQ1RfVFJVRSghIXBpZDEpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436432</attachid>
            <date>2021-08-25 15:50:24 -0700</date>
            <delta_ts>2021-08-25 16:31:48 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>229465_COOP_Process_Swap_Reuse_NetworkLoad_wip.patch</filename>
            <type>text/plain</type>
            <size>71312</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9s
aWN5L3Jlc291cmNlcy9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXItcG9wdXAucHkgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9yZXNvdXJjZXMvc2luZ2xl
LXJlcXVlc3QtdG8tc2VydmVyLXBvcHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNmNiZmJhOGI3M2I0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvcmVzb3VyY2VzL3NpbmdsZS1yZXF1
ZXN0LXRvLXNlcnZlci1wb3B1cC5weQpAQCAtMCwwICsxLDE0IEBACitkZWYgbWFpbihyZXF1ZXN0
LCByZXNwb25zZSk6CisgIHRva2VuID0gcmVxdWVzdC5HRVRbYid0b2tlbiddCisgIHZhbHVlID0g
cmVxdWVzdC5zZXJ2ZXIuc3Rhc2gudGFrZSh0b2tlbikKKyAgYWxyZWFkeV9sb2FkZWRfc3RyaW5n
ID0gIm5vdF9hbHJlYWR5X2xvYWRlZCIKKyAgaWYgdmFsdWUgIT0gTm9uZToKKyAgICBhbHJlYWR5
X2xvYWRlZF9zdHJpbmcgPSAiYWxyZWFkeV9sb2FkZWQiCisgIGVsc2U6CisgICAgcmVxdWVzdC5z
ZXJ2ZXIuc3Rhc2gucHV0KHRva2VuLCBUcnVlKQorICByZXR1cm4gKFsKKyAgICAoYidDYWNoZS1D
b250cm9sJywgYiduby1zdG9yZScpLAorICAgIChiJ0Nyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5
JywgYidzYW1lLW9yaWdpbicpLAorICAgIChiJ0NvbnRlbnQtVHlwZScsIGIndGV4dC9odG1sJyld
LAorICAgIHUnPHNjcmlwdD52YXIgYmMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgic2luZ2xlLXJl
cXVlc3QtdG8tc2VydmVyIik7IGJjLnBvc3RNZXNzYWdlKCIlcyIpOzwvc2NyaXB0PlxuJyAlIGFs
cmVhZHlfbG9hZGVkX3N0cmluZykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
Y3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5
L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mNjU3N2VjZTlmNWIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVx
dWVzdC10by1zZXJ2ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIE1ha2Ug
c3VyZSB3ZSBtYWtlIGEgc2luZ2xlIHJlcXVlc3QgdG8gdGhlIEhUVFAgc2VydmVyIHdoZW4gc3dp
dGNoaW5nIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2Vy
dmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGlj
eS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjYyMmYwZGRlNjhlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRv
LXNlcnZlci5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL3V0aWxzLmpzIj48L3Njcmlw
dAorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorYXN5bmNfdGVzdCgodCkgPT4geworICAgIHZh
ciBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCdzaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXInKTsK
KyAgICBsZXQgdyA9IG9wZW4oInJlc291cmNlcy9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXItcG9w
dXAucHk/dG9rZW49IiArIHRva2VuKCkpOworICAgIGJjLm9ubWVzc2FnZSA9IHQuc3RlcF9mdW5j
KChldmVudCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LmRhdGEsICJub3RfYWxy
ZWFkeV9sb2FkZWQiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUody5jbG9zZWQsICJTaG91bGQgc3dp
dGNoIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAiKTsKKyAgICAgICAgdC5kb25lKCk7CisgICAgfSk7
Cit9LCAiTWFrZSBzdXJlIHdlIG1ha2UgYSBzaW5nbGUgcmVxdWVzdCB0byB0aGUgSFRUUCBzZXJ2
ZXIgd2hlbiBzd2l0Y2hpbmcgYnJvd3NpbmcgY29udGV4dCBncm91cCIpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGQ5NjJhOThh
ZjU0Ni4uZDIwMmUzNGViODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtODUs
NiArODUsNyBAQAogI2VuZGlmCiAKICNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhjaGFu
bmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJZGVu
dGlmaWVyPSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6IiBmbXQs
IHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikg
UkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUi
IFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIHdl
YlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKIAogI2RlZmlu
ZSBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE5FVFdPUktfUFJPQ0VT
U19NRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCAodm9pZCkwKQogI2RlZmluZSBO
RVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKGFzc2VydGlvbiwgY29tcGxl
dGlvbikgZG8geyBcCkBAIC0xNjYsNyArMTY3LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFuZ2VkKGJvb2wgaGFzVXBsb2FkKQogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIo
TmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQobG9h
ZGVyLmlkZW50aWZpZXIoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobG9hZGVyLmNvcmVJZGVudGlm
aWVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlm
IChsb2FkZXIuaXNLZXB0QWxpdmUoKSkgewpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xlYW51cFJlc291cmNlTG9hZGVyKE5ldHdv
cmtSZXNvdXJjZUxvYWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX25l
dHdvcmtSZXNvdXJjZUxvYWRlcnMuZ2V0KGxvYWRlci5pZGVudGlmaWVyKCkpID09ICZsb2FkZXIp
OwotICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5yZW1vdmUobG9hZGVyLmlkZW50aWZpZXIo
KSk7CisgICAgQVNTRVJUKG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5nZXQobG9hZGVyLmNvcmVJ
ZGVudGlmaWVyKCkpID09ICZsb2FkZXIpOworICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5y
ZW1vdmUobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp0cmFuc2ZlcktlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9h
ZGVyJiBsb2FkZXIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
ICAgIEFTU0VSVChsb2FkZXIuaXNLZXB0QWxpdmUoKSk7Ci0gICAgQVNTRVJUKG1fbmV0d29ya1Jl
c291cmNlTG9hZGVycy5nZXQobG9hZGVyLmlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7Ci0gICAg
aWYgKGF1dG8gdGFrZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2Fk
ZXIuaWRlbnRpZmllcigpKSkKKyAgICBBU1NFUlQobV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmdl
dChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7CisgICAgaWYgKGF1dG8gdGFr
ZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2FkZXIuY29yZUlkZW50
aWZpZXIoKSkpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZEtlcHRBbGl2ZUxvYWQodGFr
ZW5Mb2FkZXIucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTQ4NiwyNyArNDg3LDM4IEBAIHN0
ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlRmV0CiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiYgbG9hZFBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpCiB7Ci0gICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRyhMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJjZUxvYWQ6IChwYXJlbnRQSUQ9JWQsIHBhZ2VQ
cm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIpIiwgbG9hZFBhcmFtZXRlcnMucGFyZW50UElE
LCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVy
cy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2
NCgpLCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDogKHBhcmVudFBJRD0lZCwgcGFnZVBy
b3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZT0lIiBQ
Ukl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQsIGxvYWRQYXJhbWV0ZXJzLndlYlBh
Z2VQcm94eUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUudmFsdWVfb3IoTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNl
c3Npb24obV9zZXNzaW9uSUQpOwogICAgIGlmICghc2VydmVyLmlzSW1wb3J0Q29tcGxldGVkKCkp
IHsKLSAgICAgICAgc2VydmVyLndoZW5JbXBvcnRJc0NvbXBsZXRlZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkUGFyYW1ldGVycyA9IFdURk1vdmUobG9hZFBhcmFt
ZXRlcnMpXSgpIG11dGFibGUgeworICAgICAgICBzZXJ2ZXIud2hlbkltcG9ydElzQ29tcGxldGVk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGxvYWRQYXJhbWV0ZXJzID0g
V1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWVdKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NDb25uZWN0
aW9uKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24obV9z
ZXNzaW9uSUQpLmlzSW1wb3J0Q29tcGxldGVkKCkpOwotICAgICAgICAgICAgc2NoZWR1bGVSZXNv
dXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycykpOworICAgICAgICAgICAgc2NoZWR1bGVS
ZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0aW5nTG9hZGVyVG9SZXN1
bWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorCiAgICAg
YXV0byBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcjsKICAgICBSRUxFQVNF
X0FTU0VSVChpZGVudGlmaWVyKTsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMoaWRlbnRp
ZmllcikpOwogCisgICAgaWYgKGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpIHsKKyAgICAgICAgaWYg
KGF1dG8gZXhpc3RpbmdMb2FkZXIgPSBuZXR3b3JrUHJvY2VzcygpLnRha2VMb2FkZXJBd2FpdGlu
Z1dlYlByb2Nlc3NUcmFuc2ZlcigqZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZSkpIHsKKyAgICAgICAg
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coTG9hZGluZywgInNjaGVkdWxlUmVzb3VyY2VMb2Fk
OiBSZXN1bWluZyBleGlzdGluZyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIiKTsKKyAgICAgICAgICAg
IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5hZGQoaWRlbnRpZmllciwgKmV4aXN0aW5nTG9hZGVy
KTsKKyAgICAgICAgICAgIGV4aXN0aW5nTG9hZGVyLT50cmFuc2ZlclRvTmV3V2ViUHJvY2Vzcygq
dGhpcywgaWRlbnRpZmllcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAic2NoZWR1
bGVSZXNvdXJjZUxvYWQ6IENvdWxkIG5vdCBmaW5kIGV4aXN0aW5nIE5ldHdvcmtSZXNvdXJjZUxv
YWRlciB0byByZXN1bWUsIHdpbGwgZG8gYSBmcmVzaCBsb2FkIik7CisgICAgfQorCiAgICAgYXV0
byYgbG9hZGVyID0gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgKnRoaXMp
KS5pdGVyYXRvci0+dmFsdWU7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0xMjY5
LDYgKzEyODEsMTEgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJpb3Jp
dGl6ZVJlc291cmNlTG9hZHMoVmVjdG9yPFJlc291cmNlTG9hZEkKICAgICBzZXNzaW9uLT5uZXR3
b3JrTG9hZFNjaGVkdWxlcigpLnByaW9yaXRpemVMb2Fkcyhsb2Fkcyk7CiB9CiAKK1JlZlB0cjxO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0YWtl
TmV0d29ya1Jlc291cmNlTG9hZGVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpCit7
CisgICByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRha2UocmVzb3VyY2VMb2FkSWRl
bnRpZmllcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDVlMDcwOTFlMzczNi4u
ZjRhMGFiNzE5M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlc1JlcGxpZXMu
aCIKICNpbmNsdWRlICJOZXR3b3JrTUROU1JlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1JU
Q1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmgiCiAjaW5jbHVkZSAiUG9saWN5RGVj
aXNpb24uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBAIC0xODYsNiArMTg3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgY29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChXZWJDb3JlOjpI
VFRQQ29va2llQWNjZXB0UG9saWN5KTsKIAogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3Nh
Z2UoSlNDOjpNZXNzYWdlU291cmNlLCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29ya1Jl
c291cmNlTG9hZGVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogCiBwcml2YXRl
OgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIpOwpAQCAtMjAzLDcgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAotICAgIHZvaWQgc2NoZWR1bGVSZXNvdXJjZUxv
YWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7CisgICAgdm9pZCBzY2hlZHVsZVJl
c291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFs
PE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ0xvYWRlclRvUmVzdW1lKTsK
ICAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3Jt
U3luY2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgdGVzdFByb2Nlc3NJbmNv
bWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VGVzdFByb2Nl
c3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVsYXllZFJlcGx5
JiYpOwogICAgIHZvaWQgbG9hZFBpbmcoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiZTkyNDRl
ODZmY2QuLjczZjNlODkxNjI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAotICAgIFNjaGVkdWxlUmVzb3VyY2VM
b2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFy
YW1ldGVycykKKyAgICBTY2hlZHVsZVJlc291cmNlTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8V2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdMb2FkZXJUb1Jlc3Vt
ZSkKICAgICBQZXJmb3JtU3luY2hyb25vdXNMb2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVycykgLT4gKFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgZXJyb3IsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFZlY3Rvcjx1
aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cwogICAgIFRlc3RQcm9jZXNzSW5jb21pbmdTeW5jTWVz
c2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlEKSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogICAgIExvYWRQaW5nKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVy
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
aW5kZXggNWQ2ODI5YjI4ODAyLi5jOTgzMWE2ZjliYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNzg2LDYgKzI3ODYsMTEgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFBhZ2VJZGVudGlm
aWVyIHBhZ2VJZGVudGlmaWVyLCBWZWMKICAgICBtX2V4dGVuc2lvbkNPUlNEaXNhYmxpbmdQYXR0
ZXJucy5zZXQocGFnZUlkZW50aWZpZXIsIFdURk1vdmUocGFyc2VkUGF0dGVybnMpKTsKIH0KIAor
UmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gTmV0d29ya1Byb2Nlc3M6OnRha2VMb2FkZXJB
d2FpdGluZ1dlYlByb2Nlc3NUcmFuc2ZlcihOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBp
ZGVudGlmaWVyKQoreworICAgIHJldHVybiBtX2xvYWRlcnNBd2FpdGluZ1dlYlByb2Nlc3NUcmFu
c2Zlci50YWtlKGlkZW50aWZpZXIpOworfQorCiAjaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIE5l
dHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBvcnRU
ZXN0aW5nRGF0YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpAQCAtMjgxNSw2ICsyODIwLDIy
IEBAIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5JiBOZXR3b3JrUHJvY2Vzczo6cnRj
RGF0YUNoYW5uZWxQcm94eSgpCiB9CiAjZW5kaWYKIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJl
cGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
c291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChyZXNvdXJj
ZUxvYWRJZGVudGlmaWVyKTsKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24oc291cmNlUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIGlmICghY29ubmVjdGlvbikKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CisKKyAgICBhdXRv
IGxvYWRlciA9IGNvbm5lY3Rpb24tPnRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIocmVzb3VyY2VM
b2FkSWRlbnRpZmllcik7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOworCisgICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVy
LT5pZGVudGlmaWVyKCk7CisgICAgbV9sb2FkZXJzQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIu
YWRkKGlkZW50aWZpZXIsIGxvYWRlci5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcihpZGVudGlmaWVyKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2ViUGFn
ZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiB7CiAgICAgYXV0byBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBlYTkxZWQ1
OTQwM2UuLjMwYTRiZjY1NWUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFu
YWdlci5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJX
ZWJJREJTZXJ2ZXIuaCIKQEAgLTM4OSw2ICszOTAsOCBAQCBwdWJsaWM6CiAgICAgUlRDRGF0YUNo
YW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkmIHJ0Y0RhdGFDaGFubmVsUHJveHkoKTsKICNlbmRpZgog
CisgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gdGFrZUxvYWRlckF3YWl0aW5nV2Vi
UHJvY2Vzc1RyYW5zZmVyKE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKwogcHJpdmF0
ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTQyMiw2ICs0MjUsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKICAg
ICB2b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYmKTsKICAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJiwgV2ViQ29yZTo6SFRU
UENvb2tpZUFjY2VwdFBvbGljeSk+JiYpOworICAgIHZvaWQgcHJlcGFyZUxvYWRGb3JXZWJQcm9j
ZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50
aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4pPiYmKTsK
IAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxU
aW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC02MDgs
NiArNjEyLDcgQEAgcHJpdmF0ZToKICAgICBTZWNvbmRzIG1fc2VydmljZVdvcmtlckZldGNoVGlt
ZW91dCB7IGRlZmF1bHRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0IH07CiAKICAgICBIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6VXNlckNvbnRlbnRVUkxQ
YXR0ZXJuPj4gbV9leHRlbnNpb25DT1JTRGlzYWJsaW5nUGF0dGVybnM7CisgICAgSGFzaE1hcDxO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4+
IG1fbG9hZGVyc0F3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyOyAvLyBGSVhNRTogU2hvdWxkIGJl
IGNsZWFyZWQgb24gYSB0aW1lci4KIAogICAgIGJvb2wgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVi
dWdNb2RlRW5hYmxlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkNzk5NzQ1MWM0NTQu
LmNhZWI4ZDliYjg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xOTUsNiArMTk1LDggQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsZWFyQXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMK
ICNlbmRpZgogCisgICAgUHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291
cmNlTG9hZElkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXI+IG5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyKSBBc3luYwor
CiAgICAgQWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdl
TmV0d29ya1BhcmFtZXRlcnMgcGFyYW1ldGVycykKICAgICBSZW1vdmVXZWJQYWdlTmV0d29ya1Bh
cmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgcGFnZUlEKQogICAgIENvdW50Tm9uRGVmYXVsdFNlc3Npb25TZXRzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKHNpemVfdCBjb3VudCkgQXN5bmMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRl
eCA4MmYxZTUzMDE0NGYuLjI5NmQ0NTEwMmJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTIyLDYgKzUy
MiwxNiBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQoKQogICAgIGNsZWFudXAo
TG9hZFJlc3VsdDo6Q2FuY2VsKTsKIH0KIAordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRy
YW5zZmVyVG9OZXdXZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBuZXdD
b25uZWN0aW9uLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIG5ld0NvcmVJZGVudGlmaWVyKQorewor
ICAgIG1fY29ubmVjdGlvbiA9IG5ld0Nvbm5lY3Rpb247CisgICAgbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXIgPSBuZXdDb3JlSWRlbnRpZmllcjsKKworICAgIEFTU0VSVChtX3Jlc3BvbnNlQ29tcGxl
dGlvbkhhbmRsZXIgfHwgbV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlIHx8IG1fc2VydmljZVdvcmtlckZldGNoVGFzayk7CisgICAgYm9vbCB3aWxsV2FpdEZv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlID0gdHJ1ZTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgbV9yZXNwb25zZSwgd2lsbFdh
aXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSB9KTsKK30KKwogYm9vbCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0
cmluZyYgeEZyYW1lT3B0aW9ucywgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKGlzTWFpbkZy
YW1lTG9hZCgpKQpAQCAtNTQ2LDEyICs1NTYsMTIgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgeEYK
ICAgICB9CiAgICAgY2FzZSBYRnJhbWVPcHRpb25zRGlzcG9zaXRpb246OkNvbmZsaWN0OiB7CiAg
ICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSAiTXVsdGlwbGUgJ1gtRnJhbWUtT3B0aW9ucycg
aGVhZGVycyB3aXRoIGNvbmZsaWN0aW5nIHZhbHVlcyAoJyIgKyB4RnJhbWVPcHRpb25zICsgIicp
IGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVk
VG9MZW5ndGgoKSArICInLiBGYWxsaW5nIGJhY2sgdG8gJ0RFTlknLiI7Ci0gICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNz
YWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBYRnJhbWVPcHRpb25zRGlzcG9zaXRp
b246OkludmFsaWQ6IHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9ICJJbnZhbGlkICdY
LUZyYW1lLU9wdGlvbnMnIGhlYWRlciBlbmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcgJyIgKyB1cmwu
c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJzogJyIgKyB4RnJhbWVPcHRpb25z
ICsgIicgaXMgbm90IGEgcmVjb2duaXplZCBkaXJlY3RpdmUuIFRoZSBoZWFkZXIgd2lsbCBiZSBp
Z25vcmVkLiI7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNz
YWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVN
ZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIH0K
QEAgLTU3OCw3ICs1ODgsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50
ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpbwogICAgICAgICBTdHJp
bmcgeEZyYW1lT3B0aW9ucyA9IG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lOjpYRnJhbWVPcHRpb25zKTsKICAgICAgICAgaWYgKCF4RnJhbWVPcHRpb25zLmlzTnVsbCgp
ICYmIHNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKHhGcmFtZU9wdGlvbnMsIHJl
c3BvbnNlLnVybCgpKSkgewogICAgICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VT
dHJpbmcoIlJlZnVzZWQgdG8gZGlzcGxheSAnIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKCksICInIGluIGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQgJ1gtRnJh
bWUtT3B0aW9ucycgdG8gJyIsIHhGcmFtZU9wdGlvbnMsICInLiIpOwotICAgICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBl
cnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAg
ICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxl
dmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9
CkBAIC01OTUsNyArNjA1LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZElu
dGVycnVwdE5hdmlnYXRpb25Gb3JDcm9zc09yaWdpbkVtYmVkZGVyUG9saWMKICAgICAgICAgYXV0
byByZXNwb25zZUNPRVAgPSBXZWJDb3JlOjpvYnRhaW5Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5
KHJlc3BvbnNlLCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLT5pc1BvdGVudGlhbGx5VHJ1c3R3
b3J0aHkoKSA/IElzU2VjdXJlQ29udGV4dDo6WWVzIDogSXNTZWN1cmVDb250ZXh0OjpObyk7CiAg
ICAgICAgIGlmIChyZXNwb25zZUNPRVAudmFsdWUgIT0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5FbWJl
ZGRlclBvbGljeVZhbHVlOjpSZXF1aXJlQ09SUCkgewogICAgICAgICAgICAgU3RyaW5nIGVycm9y
TWVzc2FnZSA9IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gZGlzcGxheSAnIiwgcmVzcG9uc2UudXJs
KCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICInIGluIGEgZnJhbWUgYmVjYXVz
ZSBvZiBDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5LiIpOwotICAgICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJv
ck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVs
OjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBA
IC02MTEsNyArNjIxLDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVy
cnVwdFdvcmtlckxvYWRGb3JDcm9zc09yaWdpbkVtYmVkZGVyUG9saWMKICAgICAgICAgYXV0byBy
ZXNwb25zZUNPRVAgPSBXZWJDb3JlOjpvYnRhaW5Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KHJl
c3BvbnNlLCBtX3BhcmFtZXRlcnMuc291cmNlT3JpZ2luLT5pc1BvdGVudGlhbGx5VHJ1c3R3b3J0
aHkoKSA/IElzU2VjdXJlQ29udGV4dDo6WWVzIDogSXNTZWN1cmVDb250ZXh0OjpObyk7CiAgICAg
ICAgIGlmIChyZXNwb25zZUNPRVAudmFsdWUgIT0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5FbWJlZGRl
clBvbGljeVZhbHVlOjpSZXF1aXJlQ09SUCkgewogICAgICAgICAgICAgU3RyaW5nIGVycm9yTWVz
c2FnZSA9IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gbG9hZCAnIiwgcmVzcG9uc2UudXJsKCkuc3Ry
aW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICInIHdvcmtlciBiZWNhdXNlIG9mIENyb3Nz
LU9yaWdpbi1FbWJlZGRlci1Qb2xpY3kuIik7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVz
c2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwg
aWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBl
cnJvck1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTYzMCw3ICs2
NDAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbgogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSAmJiBtX25ldHdvcmtMb2FkQ2hlY2tlcikgewogICAgICAg
ICBhdXRvIGluZm9ybWF0aW9uID0gbV9uZXR3b3JrTG9hZENoZWNrZXItPnRha2VOZXR3b3JrTG9h
ZEluZm9ybWF0aW9uKCk7CiAgICAgICAgIGluZm9ybWF0aW9uLnJlc3BvbnNlID0gbV9yZXNwb25z
ZTsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5hZGROZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50
aWZpZXIoKSwgV1RGTW92ZShpbmZvcm1hdGlvbikpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPmFk
ZE5ldHdvcmtMb2FkSW5mb3JtYXRpb24oY29yZUlkZW50aWZpZXIoKSwgV1RGTW92ZShpbmZvcm1h
dGlvbikpOwogICAgIH0KIAogICAgIC8vIEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRp
ZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdldHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZm
ZXJpbmcgd291bGQgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLgpAQCAtNzU4LDcgKzc2OCw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5p
c2hMb2FkaW5nOiAobnVtQnl0ZXNSZWNlaXZlZD0lemQsIGhhc0NhY2hlRW50cnlGb3JWYWxpZGF0
aW9uPSVkKSIsIG1fbnVtQnl0ZXNSZWNlaXZlZCwgISFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9u
KTsKIAogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKLSAg
ICAgICAgbV9jb25uZWN0aW9uLT5hZGROZXR3b3JrTG9hZEluZm9ybWF0aW9uTWV0cmljcyhpZGVu
dGlmaWVyKCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRk
TmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJpY3MoY29yZUlkZW50aWZpZXIoKSwgbmV0d29ya0xv
YWRNZXRyaWNzKTsKIAogICAgIGlmIChtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAg
ICAgIC8vIDMwNCBOb3QgTW9kaWZpZWQKQEAgLTgwMSw3ICs4MTEsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CiAgICAgVU5VU0VEX1ZBUklBQkxFKHdhc1NlcnZpY2VXb3JrZXJMb2FkKTsKIAogICAgIGlmIChz
aG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKLSAgICAgICAgbV9jb25uZWN0
aW9uLT5yZW1vdmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50aWZpZXIoKSk7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+cmVtb3ZlTmV0d29ya0xvYWRJbmZvcm1hdGlvbihjb3JlSWRlbnRpZmll
cigpKTsKIAogICAgIEFTU0VSVCghZXJyb3IuaXNOdWxsKCkpOwogCkBAIC0xMjAyLDkgKzEyMTIs
MTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeShz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjoKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRp
ZFJldHJpZXZlQ2FjaGVFbnRyeTogU2VuZGluZyBXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2
ZVJlc3BvbnNlIElQQyAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2U9JWQp
IiwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpOwogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwg
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CiAKLSAgICBpZiAobmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCisgICAgaWYgKG5lZWRzQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKSB7CisgICAgICAgIG1fcmVzcG9uc2UgPSBXVEZN
b3ZlKHJlc3BvbnNlKTsKICAgICAgICAgbV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlk
UmVjZWl2ZVJlc3BvbnNlID0gV1RGTW92ZShlbnRyeSk7Ci0gICAgZWxzZSB7CisgICAgfSBlbHNl
IHsKICAgICAgICAgc2VuZFJlc3VsdEZvckNhY2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOwogICAg
ICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OlN1Y2Nlc3MpOwogICAgIH0KQEAgLTEzNTksNyArMTM3
MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigp
IGNvbnN0CiAgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gbV9jb25uZWN0aW9uLT5u
ZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCgpKTsKICAgICBBU1NFUlQo
bmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsKIAotICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKG1fY29u
bmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3QoKS5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJlcXVl
c3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVm
ZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgaWRlbnRpZmllcigpKTsKKyAgICBsb2dDb29r
aWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwg
b3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpj
cmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2lu
YWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGNvcmVJZGVu
dGlmaWVyKCkpOwogfQogCiBzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyKQpAQCAtMTQ2Myw3ICsxNDc0LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJgogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwgbWVzc2FnZUxldmVsLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwg
IG1lc3NhZ2VTb3VyY2UsIG1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENv
bnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBtZXNzYWdlU291cmNlLCBt
ZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQ1NQVmlvbGF0
aW9uUmVwb3J0KFVSTCYmIHJlcG9ydFVSTCwgUmVmPEZvcm1EYXRhPiYmIHJlcG9ydCkKQEAgLTE1
MzQsNyArMTU0NSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2Vy
RGlkTm90SGFuZGxlKFNlcnZpY2VXb3JrZXJGZXRjaFRhc2sqIGZlCiAgICAgUkVMRUFTRV9BU1NF
UlQobV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmdldCgpID09IGZldGNoVGFzayk7CiAgICAgaWYg
KG1fcGFyYW1ldGVycy5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpP
bmx5KSB7CiAgICAgICAgIExPQURFUl9SRUxFQVNFX0xPR19FUlJPUigic2VydmljZVdvcmtlckRp
ZE5vdEhhbmRsZTogQWJvcnRpbmcgbG9hZCBiZWNhdXNlIHRoZSBzZXJ2aWNlIHdvcmtlciBkaWQg
bm90IGhhbmRsZSB0aGUgbG9hZCBhbmQgc2VydmljZVdvcmtlck1vZGUgb25seSBhbGxvd3Mgc2Vy
dmljZSB3b3JrZXJzIik7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpTZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlIHsgfSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OlNlcnZpY2VXb3JrZXJEaWROb3RIYW5k
bGUgeyB9LCBjb3JlSWRlbnRpZmllcigpKTsKICAgICAgICAgYWJvcnQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGNlZjY1NDc5YjdlNi4uZDkyZDMwMzhhMWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgKQEAgLTg1LDE5ICs4NSwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydCgpOwogICAg
IHZvaWQgYWJvcnQoKTsKIAorICAgIHZvaWQgdHJhbnNmZXJUb05ld1dlYlByb2Nlc3MoTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKwogICAg
IC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Jlc291cmNl
TG9hZGVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAogICAgIHZv
aWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3
UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7CiAKKyAgICB2
b2lkIHNldFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkgeyBt
X3Jlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAog
ICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uLT5zZXNzaW9uSUQoKTsgfQotICAg
IFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyOyB9CisgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBjb3JlSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9CiAgICAg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFt
ZXRlcnMud2ViRnJhbWVJRDsgfQogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KICAgICBjb25zdCBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyYW1ldGVyczsgfQorICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlTG9hZElEOyB9CiAKICAgICBOZXR3b3JrQ2Fj
aGU6Okdsb2JhbEZyYW1lSUQgZ2xvYmFsRnJhbWVJRCgpIHsgcmV0dXJuIHsgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VQcm94eUlELCBwYWdlSUQoKSwgZnJhbWVJRCgpIH07IH0KIApAQCAtMjEwLDcgKzIx
NCw3IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8o
KTsKIAotICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVy
czsKKyAgICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAKICAg
ICBSZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fY29ubmVjdGlvbjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IGFmOTUxZDVhMGI1OS4u
ZDQ1NTkzNTI1M2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3Bw
CkBAIC03OCw3ICs3OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE1lc3NhZ2U+IGJvb2wgU2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6c2VuZFRvU2VydmljZVdvcmtlcihNZXNzCiAKIHRlbXBsYXRlPHR5
cGVuYW1lIE1lc3NhZ2U+IGJvb2wgU2VydmljZVdvcmtlckZldGNoVGFzazo6c2VuZFRvQ2xpZW50
KE1lc3NhZ2UmJiBtZXNzYWdlKQogewotICAgIHJldHVybiBtX2xvYWRlci5jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoc3RkOjpmb3J3YXJkPE1lc3NhZ2U+KG1lc3Nh
Z2UpLCBtX2xvYWRlci5pZGVudGlmaWVyKCkpOworICAgIHJldHVybiBtX2xvYWRlci5jb25uZWN0
aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoc3RkOjpmb3J3YXJkPE1lc3NhZ2U+
KG1lc3NhZ2UpLCBtX2xvYWRlci5jb3JlSWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpzdGFydChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIHNl
cnZpY2VXb3JrZXJDb25uZWN0aW9uKQpAQCAtMTYyLDYgKzE2Miw4IEBAIHZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgYm9vCiAKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291
cmNlOjpTZXJ2aWNlV29ya2VyKTsKICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291
cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CisgICAgaWYgKG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlKQorICAgICAgICBtX2xvYWRlci5zZXRSZXNwb25zZShXVEZNb3Zl
KHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGVjYTEx
YTNhMDBjMi4uMzQ2ZjdkOGQ4NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9M
b2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRl
cnMuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIHZvaWQgTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBsb2NrQmFja0ZvcndhcmRM
aXN0OwogICAgIGVuY29kZXIgPDwgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAg
IGVuY29kZXIgPDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBlbmNvZGVyIDw8
IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKICAgICBlbmNv
ZGVyIDw8IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTsKIAogICAgIHBsYXRmb3JtRW5jb2RlKGVu
Y29kZXIpOwpAQCAtMTM3LDYgKzEzOCw5IEBAIGJvb2wgTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIExvYWRQYXJhbWV0ZXJzJiBkYXRhKQogICAgIAogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoZGF0YS5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmV4aXN0
aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc2Vzc2lvbkhpc3Rv
cnlWaXNpYmlsaXR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xv
YWRQYXJhbWV0ZXJzLmgKaW5kZXggZTVjNTdiMDQwNDljLi4wYzA1NDBiMDQ2ZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgogI2luY2x1
ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgpAQCAtNzQsNiAr
NzUsNyBAQCBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVE
YXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHsg
V2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6VmlzaWJs
ZSB9OwogICAgIFN0cmluZyBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkYXRhRGV0ZWN0
aW9uQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDY3MWFkZDRhYTI3Yy4uYjFhYzNkNDM4YTJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKQEAgLTQ3NSw2ICs0NzUsMTcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNv
cmU6OlAKICAgICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRG
b3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJv
Y2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2Fw
cGluZywgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNz
VHJhbnNmZXI6IHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyOiAlIiBQUkl1NjQgIiwgcmVzb3VyY2VM
b2FkSWRlbnRpZmllcjogJSIgUFJJdTY0LCB0aGlzLCBzb3VyY2VQcm9jZXNzSWRlbnRpZmllci50
b1VJbnQ2NCgpLCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlc291cmNlTG9h
ZElkZW50aWZpZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlByZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKHNvdXJjZVByb2Nlc3NJ
ZGVudGlmaWVyLCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFJlc3VsdChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBw
YWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDU4
YThhOGU5NGJmMy4uNGU1YmI0NTlhM2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQcm9jZXNz
TGF1bmNoZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJv
Y2Vzc1Rocm90dGxlckNsaWVudC5oIgpAQCAtMjE0LDYgKzIxNSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHRlc3RQcm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eShXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
VGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVs
YXllZFJlcGx5JiYpOwogICAgIHZvaWQgdGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtl
clByb2Nlc3NlcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHByZXBh
cmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNv
dXJjZVByb2Nlc3NJZGVudGlmaWVyLCB1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXI+KT4mJik7CisKICAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSBmaW5h
bCB7IHJldHVybiBtX3Rocm90dGxlcjsgfQogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc0Fzc2VydGlv
bigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAKaW5kZXggNDFjZDM1ZGJmYThkLi43NWE2NWM0MzM3MDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTE3MSw5ICsxNzEs
OSBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24m
IG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YQogICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZp
Z2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9u
LCBkYXRhLCBtaW1lVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUo
d2Vic2l0ZVBvbGljaWVzKSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSk7CiB9CiAK
LXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6
OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQs
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJz
aXRlUG9saWNpZXMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+
IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkKIHsKLSAgICBQ
Uk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVx
dWVzdDoiKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dh
cHBpbmcsICJsb2FkUmVxdWVzdDogZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
clRvUmVzdW1lPSUiIFBSSXU2NCwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
clRvUmVzdW1lLnZhbHVlX29yKE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHsgfSkudG9V
SW50NjQoKSk7CiAgICAgQVNTRVJUKHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCAhPSBXZWJD
b3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKIAogICAgIC8vIElmIHRoaXMg
aXMgYSBjbGllbnQtc2lkZSByZWRpcmVjdCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRo
ZW4gdGhlIG5ldyBwcm9jZXNzIHdpbGwgb3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4g
dGhpcyBjYXNlLApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzCiAg
ICAgaWYgKG5hdmlnYXRpb24uZnJvbUl0ZW0oKSAmJiBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2Fy
ZExpc3QoKSA9PSBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMpCiAgICAgICAgIG5h
dmlnYXRpb24uZnJvbUl0ZW0oKS0+c2V0TGFzdFByb2Nlc3NJZGVudGlmaWVyKG1fcHJvY2Vzcy0+
Y29yZVByb2Nlc3NJZGVudGlmaWVyKCkpOwogCi0gICAgbV9wYWdlLmxvYWRSZXF1ZXN0V2l0aE5h
dmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRp
b24sIFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1c2VyRGF0YSwgc2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQ
b2xpY2llcykpOworICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1f
cHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVl
c3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSwgdXNlckRhdGEsIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBleGlzdGlu
Z05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOwogfQogCiB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgUmVmUHRyPEFQSTo6V2Vic2l0
ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcykKQEAgLTMzMCwxMiArMzMwLDEyIEBAIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3lu
YyhGcmFtZUlkZW50aWZpZXIKICAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlE
LCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBvcmln
aW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3Rl
bmVySUQpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5m
bywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5q
ZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0
X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0
cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVy
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAg
aWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3Mu
Y29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVu
dGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUs
IGRvd25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAgIG1fcGFn
ZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dl
YlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0
aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmli
dXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91
cFN3aXRjaCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVySUQsIHVzZXJEYXRh
KTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGly
ZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uVVJMU3RyaW5nLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDI3MTRiMmE1YjU0Ny4uMGFi
ZWE5ZGE2YmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgor
I2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUG9s
aWN5RGVjaXNpb24uaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAi
U2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMTA1LDcgKzEwNiw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAgICAgdm9pZCBsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBXZWJDb3Jl
OjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5KTsKLSAgICB2b2lkIGxv
YWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2Fk
UmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQs
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQsIHN0ZDo6b3B0aW9uYWw8TmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBnb1RvQmFja0Zvcndh
cmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8
QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKQEAgLTEyNCw3
ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6
RW5jb2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+
JiYpIGZpbmFsOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5
bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIHN0ZDo6b3B0
aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1
aW50NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0Fs
bG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0
Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0Rh
dGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9h
ZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50NjRfdCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRp
ZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJS
ZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0
aW5hdGlvblVSTFN0cmluZywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgVXNlckRhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDExMTMxOWQ4ZDNlZi4uNWZhMGQ5OTQ4MzRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEzODEsNyArMTM4MSw3IEBAIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBB
UEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6Omxv
YWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
JiB3ZWJzaXRlUG9saWNpZXMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkKIHsK
ICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCkBAIC0xNDA0LDYgKzE0MDQsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2NlcwogICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tCYWNrRm9yd2FyZExpc3Qg
PSBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsb2FkUGFyYW1ldGVycy5j
bGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkgPSBuYXZpZ2F0aW9uLmNsaWVudFJlZGlyZWN0
U291cmNlRm9ySGlzdG9yeSgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGxvYWRQYXJh
bWV0ZXJzLmV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IGV4
aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKICAgICBtYXliZUlu
aXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKHByb2Nlc3MsIHVybCwgbV9wYWdlTG9hZFN0
YXRlLnJlc291cmNlRGlyZWN0b3J5VVJMKCksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNp
b25IYW5kbGUpOwogCiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhwcm9jZXNzLCBsb2Fk
UGFyYW1ldGVycyk7CkBAIC0zNjIwLDcgKzM2MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29t
bWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRh
JgogICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxQYWdlKG9s
ZFdlYlBhZ2VJRCwgbV93ZWJQYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y29udGlu
dWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3Rk
Ojp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlLCBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIG5ld1Byb2Nlc3MsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVz
PiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRp
b25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1ZV9w
dHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgbmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0
ZVBvbGljaWVzLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBl
eGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpCiB7CiAgICAgV0VC
UEFHRVBST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1By
b2Nlc3M6IG5ld1Byb2Nlc3NQSUQ9JWksIGhhc1N1c3BlbmRlZFBhZ2U9JWkiLCBuZXdQcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2UpOwogICAgIExPRyhMb2FkaW5n
LCAiQ29udGludWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcycgaW4gYSBuZXcgd2ViIHBy
b2Nlc3MiLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmxvZ2dpbmdTdHJp
bmcoKSk7CkBAIC0zNjM3LDcgKzM2MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVO
YXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAg
IGJvb2wgaXNTZXJ2ZXJTaWRlUmVkaXJlY3QgPSBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQg
PT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlck5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbiAmJiBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpOwogICAgIGJv
b2wgc2hvdWxkQ2xvc2VQcmV2aW91c1BhZ2VBZnRlckNvbW1pdCA9IHNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCA9PSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUmVzcG9u
c2VQb2xpY3lEZWNpc2lvbjsKICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG1ha2VVbmlxdWU8UHJv
dmlzaW9uYWxQYWdlUHJveHk+KCp0aGlzLCBXVEZNb3ZlKG5ld1Byb2Nlc3MpLCBXVEZNb3ZlKHN1
c3BlbmRlZFBhZ2UpLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpc1NlcnZlclNpZGVSZWRp
cmVjdCwgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50LCBzaG91bGRDbG9zZVByZXZpb3VzUGFnZUFmdGVyQ29tbWl0LCB3ZWJzaXRlUG9saWNp
ZXMuZ2V0KCkpOwotICAgIGF1dG8gY29udGludWF0aW9uID0gW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYobmF2aWdhdGlvbiksIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgd2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRl
UG9saWNpZXMpXSgpIG11dGFibGUgeworICAgIGF1dG8gY29udGludWF0aW9uID0gW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYobmF2aWdh
dGlvbiksIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgd2Vic2l0ZVBvbGljaWVzID0gV1RG
TW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyVG9SZXN1bWVdKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdh
dGlvbi0+dGFyZ2V0SXRlbSgpKSB7CiAgICAgICAgICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQ
cm94eSAlcCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAl
cyIsIHRoaXMsIGl0ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC0zNjYwLDEwICszNjYx
LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3Mo
QVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAKICAgICAgICAgLy8gRklYTUU6IFdvcmsg
b3V0IHRpbWluZyBvZiByZXNwb25kaW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVnYXRlLCBl
dGMKICAgICAgICAgQVNTRVJUKCFuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLmlzRW1wdHko
KSk7CisgICAgICAgIEFTU0VSVCghZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
clRvUmVzdW1lIHx8ICFuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKTsKICAgICAgICAgaWYg
KGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbmF2aWdhdGlvbi0+c3Vic3RpdHV0ZURhdGEoKSkKICAg
ICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkRGF0YShuYXZpZ2F0aW9uLCB7IHN1YnN0
aXR1dGVEYXRhLT5jb250ZW50LmRhdGEoKSwgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuc2l6ZSgp
IH0sIHN1YnN0aXR1dGVEYXRhLT5NSU1FVHlwZSwgc3Vic3RpdHV0ZURhdGEtPmVuY29kaW5nLCBz
dWJzdGl0dXRlRGF0YS0+YmFzZVVSTCwgc3Vic3RpdHV0ZURhdGEtPnVzZXJEYXRhLmdldCgpLCBz
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4o
KSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXNEYXRhKSwgc3Vic3RpdHV0ZURhdGEtPnNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcHJvdmlzaW9u
YWxQYWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0
aW9uLT5jdXJyZW50UmVxdWVzdCgpIH0sIG51bGxwdHIsIHNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xp
Y2llc0RhdGEpKTsKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkUmVxdWVzdChu
YXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgp
IH0sIG51bGxwdHIsIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEpLCBleGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOwogICAgIH07CiAgICAgaWYgKG1f
aW5zcGVjdG9yQ29udHJvbGxlci0+c2hvdWxkUGF1c2VMb2FkaW5nKCptX3Byb3Zpc2lvbmFsUGFn
ZSkpCiAgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2V0Q29udGludWVMb2FkaW5nQ2Fs
bGJhY2soKm1fcHJvdmlzaW9uYWxQYWdlLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwpAQCAtNTYx
NywxMiArNTYxOSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZy
YW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LAogICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsCi0gICAgYm9vbCB3YXNBbGxvd2Vk
QnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1
aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCisgICAgYm9vbCB3
YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoLCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIGRlY2lkZVBvbGljeUZv
clJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlE
LCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2Us
IHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRC
eUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBsaXN0ZW5l
cklELCB1c2VyRGF0YSk7CisgICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9j
ZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwg
aWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVU
eXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRz
QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBs
aXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJ
ZGVudGlmaWVyIHdlYlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBi
b29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJ
ZGVudGlmaWVyIHdlYlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBi
b29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJj
ZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgp
KTsKIApAQCAtNTYzNSwxMyArNTYzNywxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAg
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQgPyBtX25h
dmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKICAgICBh
dXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUo
QVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdldCgpLCBy
ZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7CiAK
LSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclBy
b3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdlYlBhZ2VJRCwgZnJh
bWVJRCwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgaWRlbnRpZmllciwgbGlzdGVu
ZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksCisgICAgYXV0byBsaXN0ZW5l
ciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3ZWJQYWdlSUQsIGZyYW1lSUQsIG5lZWRzQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBpZGVudGlm
aWVyLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwKICAgICAg
ICAgcHJvY2VzcywgbmF2aWdhdGlvblJlc3BvbnNlXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYm
IHNhZmVCcm93c2luZ1dhcm5pbmcsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICAv
LyBGSVhNRTogQXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJl
IG9uY2UgY2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28g
YXdheS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCA9PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCi0gICAg
ICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVy
LCBbd2ViUGFnZUlELCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gV1RGTW92ZShwcm9j
ZXNzKV0gKGNvbnN0IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7CisgICAgICAgIGF1dG8gc2VuZGVy
ID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbd2ViUGFnZUlELCBm
cmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzXSAoY29uc3QgYXV0byYgcG9saWN5RGVjaXNpb24p
IHsKICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbiwgY3Jl
YXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhwcm9jZXNzKSksIHdlYlBhZ2VJ
RCk7CiAgICAgICAgIH0pOwogCkBAIC01NjQ5LDEyICs1NjUxLDE1IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MsCiAgICAgICAgIGlmIChwb2xpY3lBY3Rpb24gPT0gUG9saWN5QWN0aW9uOjpVc2Ug
JiYgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCAmJiBuYXZpZ2F0aW9uKSB7CiAgICAg
ICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiByZXNwb25zZURvbWFpbiB7IG5hdmlnYXRpb25SZXNw
b25zZS0+cmVzcG9uc2UoKS51cmwoKSB9OwogICAgICAgICAgICAgLy8gQXZvaWQgcHJvY2Vzcy1z
d2FwcGluZyBpbiBjYXNlcyB3aGVyZSB0aGUgcHJvY2VzcyBvbmx5IGNvbnRhaW5zIGEgc2luZ2xl
IHBhZ2UgYW5kIGlzIG9yaWdpbi1jbGVhbi4KLSAgICAgICAgICAgIGlmICh0aGlzLT5wcm9jZXNz
KCkucGFnZUNvdW50KCkgPiAxIHx8ICh0aGlzLT5wcm9jZXNzKCkub3B0aW9uYWxSZWdpc3RyYWJs
ZURvbWFpbigpICYmICp0aGlzLT5wcm9jZXNzKCkub3B0aW9uYWxSZWdpc3RyYWJsZURvbWFpbigp
ICE9IHJlc3BvbnNlRG9tYWluKSkgeworICAgICAgICAgICAgaWYgKHByb2Nlc3MtPnBhZ2VDb3Vu
dCgpID4gMSB8fCAocHJvY2Vzcy0+b3B0aW9uYWxSZWdpc3RyYWJsZURvbWFpbigpICYmICpwcm9j
ZXNzLT5vcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgIT0gcmVzcG9uc2VEb21haW4pKSB7CiAg
ICAgICAgICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywg
ImRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkOiBQcm9jZXNzLXN3YXBwaW5nIGR1ZSB0byBD
cm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIpOwotICAgICAgICAgICAgICAgIHBvbGljeUFjdGlv
biA9IFBvbGljeUFjdGlvbjo6SWdub3JlOwotICAgICAgICAgICAgICAgIGF1dG8gcHJvY2Vzc0Zv
ck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucHJvY2Vzc0ZvclJlZ2lzdHJh
YmxlRG9tYWluKHdlYnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVzcG9uc2VEb21haW4pOwotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcygqbmF2aWdhdGlvbiwg
bnVsbHB0ciwgV1RGTW92ZShwcm9jZXNzRm9yTmF2aWdhdGlvbiksIFByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQ6Ok5vLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUmVz
cG9uc2VQb2xpY3lEZWNpc2lvbiwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgd2lsbENvbnRp
bnVlTG9hZEluTmV3UHJvY2VzcyA9IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllczsK
KyAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5wcmVw
YXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2Zlcihwcm9jZXNzLT5jb3JlUHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgcmVzcG9uc2VEb21haW4gPSBXVEZNb3ZlKHJlc3BvbnNl
RG9tYWluKSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlvblJlc3BvbnNlID0gV1RGTW92ZShuYXZpZ2F0
aW9uUmVzcG9uc2UpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlcildKGF1dG8gZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bv
b2woKS5wcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4od2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlz
LCByZXNwb25zZURvbWFpbik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlv
bkluTmV3UHJvY2VzcygqbmF2aWdhdGlvbiwgbnVsbHB0ciwgV1RGTW92ZShwcm9jZXNzRm9yTmF2
aWdhdGlvbiksIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vLCBTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQ6Olllc0FmdGVyUmVzcG9uc2VQb2xpY3lEZWNpc2lvbiwgbnVsbHB0ciwg
ZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKTsKKworICAgICAg
ICAgICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3Jl
LCBuYXZpZ2F0aW9uLmdldCgpLCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSks
IFdURk1vdmUoc2VuZGVyKSwgeyB9LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpZZXMp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggMjZiODA2YzM2YmFmLi5mNzk0ODI2NmYzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTWVkaWFL
ZXlTeXN0ZW1QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIk1lZGlh
UGxheWJhY2tTdGF0ZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJQYWdlTG9hZFN0YXRlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2Fy
ZEFjY2Vzc0ludGVudC5oIgpAQCAtMTc0MSwxMCArMTc0MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIHN0
ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29s
IGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3
YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZv
RGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25s
b2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRz
QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQg
c3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGxv
YWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFdlYkNvcmU6
OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpT
ZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkpOwotICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdh
dGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2Vi
Q29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6
TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6
bnVsbG9wdCwgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpudWxsb3B0
KTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1l
LCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYg
b3JpZ2luYXRpbmdGcmFtZUluZm8sIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmll
cj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKQEAgLTIwNjAsNyArMjA2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFt
ZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwog
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0
X3QgbmF2aWdhdGlvbklELAotICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0
ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0Fs
bG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0
Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3ko
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Y29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3Qg
VVJMJiwgYm9vbCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CiAKQEAgLTI0NjIsNyAr
MjQ2Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlcG9ydFBhZ2VMb2FkUmVzdWx0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImID0geyB9KTsKIAotICAgIHZvaWQgY29udGludWVOYXZp
Z2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxTdXNw
ZW5kZWRQYWdlUHJveHk+JiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgUmVm
UHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmKTsKKyAgICB2b2lkIGNvbnRpbnVlTmF2aWdhdGlv
bkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVk
UGFnZVByb3h5PiYmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBQcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFJlZlB0cjxB
UEk6OldlYnNpdGVQb2xpY2llcz4mJiwgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1l
ID0gc3RkOjpudWxsb3B0KTsKIAogICAgIHZvaWQgc2V0TmVlZHNGb250QXR0cmlidXRlcyhib29s
KTsKICAgICB2b2lkIHVwZGF0ZUZvbnRBdHRyaWJ1dGVzQWZ0ZXJFZGl0b3JTdGF0ZUNoYW5nZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IGI4ODAzY2Q1MjIyYi4uOTI1NTM1YzU2ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMDcsNyArMTA3LDcgQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAgICAgIyBQb2xpY3kgbWVzc2Fn
ZXMKLSAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6
OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93
bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVl
ZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBm
cmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01J
TUVUeXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0
ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3Qg
bWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFt
ZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGlj
eUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpO
YXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6
RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHN0ZDo6b3B0aW9uYWw8V2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKICAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFt
ZSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9E
YXRhLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChzdHJ1Y3QgV2ViS2l0OjpQb2xpY3lEZWNpc2lv
biBQb2xpY3lEZWNpc2lvbikgU3luY2hyb25vdXMKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIg
cG9saWN5Q2hlY2tJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0
YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggNmU5NjkwNzI1NGE0Li4zNDllYTJjNjM2OTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKQEAgLTQxMiw4ICs0MTIsMTEgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwK
IAogICAgIEFTU0VSVCgobG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0ZXJz
LndlYkZyYW1lSUQpIHx8IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0g
Q2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMpOwog
Ci0gICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3Vy
Y2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0l
ZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgp
KSk7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgMCkp
IHsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CisgICAgaWYgKGxvYWRQ
YXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbikKKyAgICAgICAgZXhpc3RpbmdOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpleGNoYW5nZShtX2V4aXN0aW5n
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgc3RkOjpudWxsb3B0KTsKKyAg
ICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBp
cyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkLCBl
eGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0ICIp
Iiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSks
IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZS52YWx1ZV9vcihO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCkpOworICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVycywgZXhpc3RpbmdOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSwgMCkpIHsKICAgICAgICAgV0VCTE9BREVSU1RS
QVRFR1lfUkVMRUFTRV9MT0dfRVJST1IoInNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxl
IHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNf
Y2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CiAgICAgICAg
IC8vIFdlIHByb2JhYmx5IGZhaWxlZCB0byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0
d29ya1Byb2Nlc3MgYmVjYXVzZSBpdCBoYWQgY3Jhc2hlZC4KICAgICAgICAgLy8gVGhpcyBsb2Fk
IHdpbGwgbmV2ZXIgc3VjY2VlZCBzbyB3ZSB3aWxsIHNjaGVkdWxlIGl0IHRvIGZhaWwgYXN5bmNo
cm9ub3VzbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuaAppbmRleCBjYTIzNDk5NTg2NjYuLjI0YjY5Mzc5MDE3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlRXJyb3IuaD4KQEAgLTkxLDYgKzkyLDggQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHVpbnQ2NF90IGdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKIAorICAgIHZvaWQgc2V0RXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKHN0ZDo6b3B0aW9uYWw8TmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXJUb1Jlc3VtZSkgeyBtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXJUb1Jlc3VtZSA9IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZTsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVMb2FkKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBib29sIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOwogICAgIHZvaWQgc2NoZWR1bGVJbnRlcm5hbGx5RmFp
bGVkTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOwpAQCAtMTMzLDYgKzEzNiw3IEBAIHBy
aXZhdGU6CiAgICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBQaW5nTG9hZENvbXBsZXRpb25IYW5k
bGVyPiBtX3BpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXJzOwogICAgIEhhc2hNYXA8dW5zaWduZWQg
bG9uZywgUHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyPiBtX3ByZWNvbm5lY3RDb21wbGV0aW9u
SGFuZGxlcnM7CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoYm9vbCk+PiBtX29ubGluZVN0YXRl
Q2hhbmdlTGlzdGVuZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXI+IG1fZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1l
OwogICAgIGJvb2wgbV9pc09uTGluZSB7IHRydWUgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDQ5NGQ5ZTUwMTQ5ZC4uYWM2NjI0YWUxNGRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTkxLDYgKzkxLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1N1YnJlc291cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VSUV2ZW50V2l0aEtleVN0
YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaWRnZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dp
bmRvd0ZlYXR1cmVzLmg+CkBAIC04NDgsMTEgKzg0OSwxMiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9ucwogICAgIGF1dG8qIGNvcmVGcmFtZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGF1
dG8qIHBvbGljeURvY3VtZW50TG9hZGVyID0gY29yZUZyYW1lID8gY29yZUZyYW1lLT5sb2FkZXIo
KS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkgOiBudWxscHRyOwogICAgIGF1dG8gbmF2aWdh
dGlvbklEID0gcG9saWN5RG9jdW1lbnRMb2FkZXIgPyBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExv
YWRlciY+KCpwb2xpY3lEb2N1bWVudExvYWRlcikubmF2aWdhdGlvbklEKCkgOiAwOworICAgIHVp
bnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gcG9saWN5RG9jdW1lbnRMb2FkZXIg
JiYgcG9saWN5RG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpID8gcG9saWN5RG9j
dW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpLT5pZGVudGlmaWVyKCkgOiAwOwogCiAg
ICAgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSA9IHBvbGljeSA9PSBXS0J1bmRsZVBh
Z2VQb2xpY3lBY3Rpb25Vc2U7CiAgICAgYXV0byBwcm90ZWN0b3IgPSBtX2ZyYW1lLmNvcHlSZWYo
KTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5l
cihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25B
Y3Rpb246Ok5vKTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5p
bmZvKCksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNo
b3dSZXNwb25zZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxl
LCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBsaXN0ZW5lcklELCBVc2VyRGF0YShX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRh
LmdldCgpKS5nZXQoKSkpKSkgeworICAgIGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1f
ZnJhbWUtPmluZm8oKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVz
dCwgY2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0
ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxv
YWRJZGVudGlmaWVyLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkgewog
ICAgICAgICBXRUJGUkFNRUxPQURFUkNMSUVOVF9SRUxFQVNFX0xPRyhOZXR3b3JrLCAiZGlzcGF0
Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZTogaWdub3JpbmcgYmVjYXVzZSBXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlIGZhaWxlZCIpOwogICAgICAgICBtX2ZyYW1lLT5kaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBpZGVudGlm
aWVyLCBzdGQ6Om51bGxvcHQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IGNmYmU1NGYwMjYzNC4uYzdkZDQ5YjJkYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjU5LDYgKzI1OSw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9XZWJHTFN0YXRlVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV3JpdGluZ0Rp
cmVjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvbWFya3VwLmg+CisjaW5jbHVkZSA8d3RmL1Nj
b3BlLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNz
SUQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMTY4OSw2ICsxNjkwLDExIEBAIHZv
aWQgV2ViUGFnZTo6bG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykK
ICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CiAjZW5kaWYKIAor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2V0RXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKGxvYWRQYXJhbWV0ZXJzLmV4
aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CisgICAgYXV0byBy
ZXN1bWluZ0xvYWRTY29wZSA9IG1ha2VTY29wZUV4aXQoW10geworICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnNldEV4aXN0aW5nTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZShzdGQ6Om51bGxvcHQpOworICAgIH0pOworCiAgICAg
U2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXI7CiAKICAgICBtX3BlbmRpbmdOYXZp
Z2F0aW9uSUQgPSBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMWU2MTRjNzM5ZWE1Li41Zjk3OTBlYTkw
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ3
LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIk5l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiT3B0aW9uYWxDYWxsYmFj
a0lELmgiCiAjaW5jbHVkZSAiUERGUGx1Z2luSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBsdWdp
bi5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436436</attachid>
            <date>2021-08-25 16:31:48 -0700</date>
            <delta_ts>2021-08-26 08:01:43 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>229465_COOP_Process_Swap_Reuse_NetworkLoad_wip.patch</filename>
            <type>text/plain</type>
            <size>72357</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9s
aWN5L3Jlc291cmNlcy9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXItcG9wdXAucHkgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9yZXNvdXJjZXMvc2luZ2xl
LXJlcXVlc3QtdG8tc2VydmVyLXBvcHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNmNiZmJhOGI3M2I0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvcmVzb3VyY2VzL3NpbmdsZS1yZXF1
ZXN0LXRvLXNlcnZlci1wb3B1cC5weQpAQCAtMCwwICsxLDE0IEBACitkZWYgbWFpbihyZXF1ZXN0
LCByZXNwb25zZSk6CisgIHRva2VuID0gcmVxdWVzdC5HRVRbYid0b2tlbiddCisgIHZhbHVlID0g
cmVxdWVzdC5zZXJ2ZXIuc3Rhc2gudGFrZSh0b2tlbikKKyAgYWxyZWFkeV9sb2FkZWRfc3RyaW5n
ID0gIm5vdF9hbHJlYWR5X2xvYWRlZCIKKyAgaWYgdmFsdWUgIT0gTm9uZToKKyAgICBhbHJlYWR5
X2xvYWRlZF9zdHJpbmcgPSAiYWxyZWFkeV9sb2FkZWQiCisgIGVsc2U6CisgICAgcmVxdWVzdC5z
ZXJ2ZXIuc3Rhc2gucHV0KHRva2VuLCBUcnVlKQorICByZXR1cm4gKFsKKyAgICAoYidDYWNoZS1D
b250cm9sJywgYiduby1zdG9yZScpLAorICAgIChiJ0Nyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5
JywgYidzYW1lLW9yaWdpbicpLAorICAgIChiJ0NvbnRlbnQtVHlwZScsIGIndGV4dC9odG1sJyld
LAorICAgIHUnPHNjcmlwdD52YXIgYmMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgic2luZ2xlLXJl
cXVlc3QtdG8tc2VydmVyIik7IGJjLnBvc3RNZXNzYWdlKCIlcyIpOzwvc2NyaXB0PlxuJyAlIGFs
cmVhZHlfbG9hZGVkX3N0cmluZykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
Y3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5
L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mNjU3N2VjZTlmNWIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVx
dWVzdC10by1zZXJ2ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIE1ha2Ug
c3VyZSB3ZSBtYWtlIGEgc2luZ2xlIHJlcXVlc3QgdG8gdGhlIEhUVFAgc2VydmVyIHdoZW4gc3dp
dGNoaW5nIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2Vy
dmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGlj
eS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLjYyMmYwZGRlNjhlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRv
LXNlcnZlci5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL3V0aWxzLmpzIj48L3Njcmlw
dAorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorYXN5bmNfdGVzdCgodCkgPT4geworICAgIHZh
ciBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCdzaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXInKTsK
KyAgICBsZXQgdyA9IG9wZW4oInJlc291cmNlcy9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXItcG9w
dXAucHk/dG9rZW49IiArIHRva2VuKCkpOworICAgIGJjLm9ubWVzc2FnZSA9IHQuc3RlcF9mdW5j
KChldmVudCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LmRhdGEsICJub3RfYWxy
ZWFkeV9sb2FkZWQiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUody5jbG9zZWQsICJTaG91bGQgc3dp
dGNoIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAiKTsKKyAgICAgICAgdC5kb25lKCk7CisgICAgfSk7
Cit9LCAiTWFrZSBzdXJlIHdlIG1ha2UgYSBzaW5nbGUgcmVxdWVzdCB0byB0aGUgSFRUUCBzZXJ2
ZXIgd2hlbiBzd2l0Y2hpbmcgYnJvd3NpbmcgY29udGV4dCBncm91cCIpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGQ5NjJhOThh
ZjU0Ni4uZDIwMmUzNGViODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtODUs
NiArODUsNyBAQAogI2VuZGlmCiAKICNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhjaGFu
bmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJZGVu
dGlmaWVyPSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6IiBmbXQs
IHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikg
UkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUi
IFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIHdl
YlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKIAogI2RlZmlu
ZSBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE5FVFdPUktfUFJPQ0VT
U19NRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCAodm9pZCkwKQogI2RlZmluZSBO
RVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKGFzc2VydGlvbiwgY29tcGxl
dGlvbikgZG8geyBcCkBAIC0xNjYsNyArMTY3LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFuZ2VkKGJvb2wgaGFzVXBsb2FkKQogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIo
TmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQobG9h
ZGVyLmlkZW50aWZpZXIoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobG9hZGVyLmNvcmVJZGVudGlm
aWVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlm
IChsb2FkZXIuaXNLZXB0QWxpdmUoKSkgewpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xlYW51cFJlc291cmNlTG9hZGVyKE5ldHdv
cmtSZXNvdXJjZUxvYWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX25l
dHdvcmtSZXNvdXJjZUxvYWRlcnMuZ2V0KGxvYWRlci5pZGVudGlmaWVyKCkpID09ICZsb2FkZXIp
OwotICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5yZW1vdmUobG9hZGVyLmlkZW50aWZpZXIo
KSk7CisgICAgQVNTRVJUKG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5nZXQobG9hZGVyLmNvcmVJ
ZGVudGlmaWVyKCkpID09ICZsb2FkZXIpOworICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5y
ZW1vdmUobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp0cmFuc2ZlcktlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9h
ZGVyJiBsb2FkZXIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
ICAgIEFTU0VSVChsb2FkZXIuaXNLZXB0QWxpdmUoKSk7Ci0gICAgQVNTRVJUKG1fbmV0d29ya1Jl
c291cmNlTG9hZGVycy5nZXQobG9hZGVyLmlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7Ci0gICAg
aWYgKGF1dG8gdGFrZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2Fk
ZXIuaWRlbnRpZmllcigpKSkKKyAgICBBU1NFUlQobV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmdl
dChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7CisgICAgaWYgKGF1dG8gdGFr
ZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2FkZXIuY29yZUlkZW50
aWZpZXIoKSkpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZEtlcHRBbGl2ZUxvYWQodGFr
ZW5Mb2FkZXIucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTQ4NiwyNyArNDg3LDM4IEBAIHN0
ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlRmV0CiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiYgbG9hZFBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpCiB7Ci0gICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRyhMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJjZUxvYWQ6IChwYXJlbnRQSUQ9JWQsIHBhZ2VQ
cm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIpIiwgbG9hZFBhcmFtZXRlcnMucGFyZW50UElE
LCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVy
cy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2
NCgpLCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDogKHBhcmVudFBJRD0lZCwgcGFnZVBy
b3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZT0lIiBQ
Ukl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQsIGxvYWRQYXJhbWV0ZXJzLndlYlBh
Z2VQcm94eUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUudmFsdWVfb3IoTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNl
c3Npb24obV9zZXNzaW9uSUQpOwogICAgIGlmICghc2VydmVyLmlzSW1wb3J0Q29tcGxldGVkKCkp
IHsKLSAgICAgICAgc2VydmVyLndoZW5JbXBvcnRJc0NvbXBsZXRlZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkUGFyYW1ldGVycyA9IFdURk1vdmUobG9hZFBhcmFt
ZXRlcnMpXSgpIG11dGFibGUgeworICAgICAgICBzZXJ2ZXIud2hlbkltcG9ydElzQ29tcGxldGVk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGxvYWRQYXJhbWV0ZXJzID0g
V1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWVdKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NDb25uZWN0
aW9uKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24obV9z
ZXNzaW9uSUQpLmlzSW1wb3J0Q29tcGxldGVkKCkpOwotICAgICAgICAgICAgc2NoZWR1bGVSZXNv
dXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycykpOworICAgICAgICAgICAgc2NoZWR1bGVS
ZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0aW5nTG9hZGVyVG9SZXN1
bWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorCiAgICAg
YXV0byBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcjsKICAgICBSRUxFQVNF
X0FTU0VSVChpZGVudGlmaWVyKTsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMoaWRlbnRp
ZmllcikpOwogCisgICAgaWYgKGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpIHsKKyAgICAgICAgaWYg
KGF1dG8gZXhpc3RpbmdMb2FkZXIgPSBuZXR3b3JrUHJvY2VzcygpLnRha2VMb2FkZXJBd2FpdGlu
Z1dlYlByb2Nlc3NUcmFuc2ZlcigqZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZSkpIHsKKyAgICAgICAg
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coTG9hZGluZywgInNjaGVkdWxlUmVzb3VyY2VMb2Fk
OiBSZXN1bWluZyBleGlzdGluZyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIiKTsKKyAgICAgICAgICAg
IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5hZGQoaWRlbnRpZmllciwgKmV4aXN0aW5nTG9hZGVy
KTsKKyAgICAgICAgICAgIGV4aXN0aW5nTG9hZGVyLT50cmFuc2ZlclRvTmV3V2ViUHJvY2Vzcygq
dGhpcywgaWRlbnRpZmllcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAic2NoZWR1
bGVSZXNvdXJjZUxvYWQ6IENvdWxkIG5vdCBmaW5kIGV4aXN0aW5nIE5ldHdvcmtSZXNvdXJjZUxv
YWRlciB0byByZXN1bWUsIHdpbGwgZG8gYSBmcmVzaCBsb2FkIik7CisgICAgfQorCiAgICAgYXV0
byYgbG9hZGVyID0gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgKnRoaXMp
KS5pdGVyYXRvci0+dmFsdWU7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0xMjY5
LDYgKzEyODEsMTEgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJpb3Jp
dGl6ZVJlc291cmNlTG9hZHMoVmVjdG9yPFJlc291cmNlTG9hZEkKICAgICBzZXNzaW9uLT5uZXR3
b3JrTG9hZFNjaGVkdWxlcigpLnByaW9yaXRpemVMb2Fkcyhsb2Fkcyk7CiB9CiAKK1JlZlB0cjxO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0YWtl
TmV0d29ya1Jlc291cmNlTG9hZGVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpCit7
CisgICByZXR1cm4gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRha2UocmVzb3VyY2VMb2FkSWRl
bnRpZmllcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElP
Tl9SRUxFQVNFX0xPRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDVlMDcwOTFlMzczNi4u
ZjRhMGFiNzE5M2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlc1JlcGxpZXMu
aCIKICNpbmNsdWRlICJOZXR3b3JrTUROU1JlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1JU
Q1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmgiCiAjaW5jbHVkZSAiUG9saWN5RGVj
aXNpb24uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBAIC0xODYsNiArMTg3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgY29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChXZWJDb3JlOjpI
VFRQQ29va2llQWNjZXB0UG9saWN5KTsKIAogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3Nh
Z2UoSlNDOjpNZXNzYWdlU291cmNlLCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29ya1Jl
c291cmNlTG9hZGVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogCiBwcml2YXRl
OgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIpOwpAQCAtMjAzLDcgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKTsKIAotICAgIHZvaWQgc2NoZWR1bGVSZXNvdXJjZUxv
YWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7CisgICAgdm9pZCBzY2hlZHVsZVJl
c291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFs
PE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ0xvYWRlclRvUmVzdW1lKTsK
ICAgICB2b2lkIHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmJiwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3Jt
U3luY2hyb25vdXNMb2FkRGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgdGVzdFByb2Nlc3NJbmNv
bWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VGVzdFByb2Nl
c3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVsYXllZFJlcGx5
JiYpOwogICAgIHZvaWQgbG9hZFBpbmcoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiZTkyNDRl
ODZmY2QuLjczZjNlODkxNjI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAotICAgIFNjaGVkdWxlUmVzb3VyY2VM
b2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFy
YW1ldGVycykKKyAgICBTY2hlZHVsZVJlc291cmNlTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8V2Vi
S2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdMb2FkZXJUb1Jlc3Vt
ZSkKICAgICBQZXJmb3JtU3luY2hyb25vdXNMb2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVycykgLT4gKFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgZXJyb3IsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFZlY3Rvcjx1
aW50OF90PiBkYXRhKSBTeW5jaHJvbm91cwogICAgIFRlc3RQcm9jZXNzSW5jb21pbmdTeW5jTWVz
c2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlEKSAtPiAoYm9vbCBoYW5kbGVkKSBTeW5jaHJvbm91cwogICAgIExvYWRQaW5nKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVy
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
aW5kZXggNWQ2ODI5YjI4ODAyLi4xNDBiNzIzZWUyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMTksNiArMTE5LDggQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK2NvbnN0ZXhwciBT
ZWNvbmRzIGNhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlckxpZmV0aW1lIHsgMzBfcyB9OworCiBz
dGF0aWMgdm9pZCBjYWxsRXhpdFNvb24oSVBDOjpDb25uZWN0aW9uKikKIHsKICAgICAvLyBJZiB0
aGUgY29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQgYW5kIHdlIGhhdmVuJ3QgcmVzcG9uZGVkIGlu
IHRoZSBtYWluIHRocmVhZCBmb3IgMTAgc2Vjb25kcwpAQCAtMjgxNSw2ICsyODE3LDQ4IEBAIFJU
Q0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5JiBOZXR3b3JrUHJvY2Vzczo6cnRjRGF0YUNo
YW5uZWxQcm94eSgpCiB9CiAjZW5kaWYKIAorTmV0d29ya1Byb2Nlc3M6OkNhY2hlZE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Q2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyKFJlZjxOZXR3b3JrUmVz
b3VyY2VMb2FkZXI+JiYgbG9hZGVyKQorICAgIDogbV9leHBpcmF0aW9uVGltZXIoKnRoaXMsICZD
YWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmV4cGlyYXRpb25UaW1lckZpcmVkKQorICAgICwg
bV9sb2FkZXIoV1RGTW92ZShsb2FkZXIpKQoreworICAgIG1fZXhwaXJhdGlvblRpbWVyLnN0YXJ0
T25lU2hvdChjYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXJMaWZldGltZSk7Cit9CisKK1JlZjxO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI+IE5ldHdvcmtQcm9jZXNzOjpDYWNoZWROZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnRha2VMb2FkZXIoKQoreworICAgIHJldHVybiBtX2xvYWRlci5yZWxlYXNlTm9u
TnVsbCgpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpDYWNoZWROZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmV4cGlyYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBhdXRvIGxvYWRlciA9IG1fbG9h
ZGVyLT5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS50YWtlTG9hZGVy
QXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIobV9sb2FkZXItPmlkZW50aWZpZXIoKSk7CisgICAg
QVNTRVJUX1VOVVNFRChsb2FkZXIsIGxvYWRlcik7Cit9CisKK1JlZlB0cjxOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI+IE5ldHdvcmtQcm9jZXNzOjp0YWtlTG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNzVHJh
bnNmZXIoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBh
dXRvIGNhY2hlZFJlc291cmNlTG9hZGVyID0gbV9sb2FkZXJzQXdhaXRpbmdXZWJQcm9jZXNzVHJh
bnNmZXIudGFrZShpZGVudGlmaWVyKTsKKyAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2VMb2FkZXIt
PnRha2VMb2FkZXIoKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZUxvYWRGb3JX
ZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vz
c0lkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChyZXNvdXJjZUxvYWRJZGVudGlm
aWVyKTsKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oc291cmNl
UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CisKKyAgICBhdXRvIGxvYWRlciA9IGNv
bm5lY3Rpb24tPnRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIocmVzb3VyY2VMb2FkSWRlbnRpZmll
cik7CisgICAgaWYgKCFsb2FkZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihz
dGQ6Om51bGxvcHQpOworCisgICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLT5pZGVudGlmaWVy
KCk7CisgICAgbV9sb2FkZXJzQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIuYWRkKGlkZW50aWZp
ZXIsIG1ha2VVbmlxdWU8Q2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyPihsb2FkZXIucmVsZWFz
ZU5vbk51bGwoKSkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZpZXIpOworfQorCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZU5l
dHdvcmtQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNlc3Npb24gPSBuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGVhOTFlZDU5NDAzZS4uNDJlMjAzYzcwZmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1h
bmFnZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgpAQCAtMzg5LDYgKzM5
MCw4IEBAIHB1YmxpYzoKICAgICBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eSYgcnRj
RGF0YUNoYW5uZWxQcm94eSgpOwogI2VuZGlmCiAKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNl
TG9hZGVyPiB0YWtlTG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIoTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXIpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
KTsKIApAQCAtNDIyLDYgKzQyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBkaWRSZWNlaXZlU3lu
Y05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBV
bmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9j
ZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgY3JlYXRl
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIs
IFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8SVBD
OjpBdHRhY2htZW50PiYmLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJik7Cisg
ICAgdm9pZCBwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2Fk
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRh
KFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdl
YnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRh
JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTYwOSw2ICs2MTMsMTkgQEAgcHJpdmF0ZToKIAogICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpVc2VyQ29u
dGVudFVSTFBhdHRlcm4+PiBtX2V4dGVuc2lvbkNPUlNEaXNhYmxpbmdQYXR0ZXJuczsKIAorICAg
IGNsYXNzIENhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlciB7CisgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQ2FjaGVkTmV0d29y
a1Jlc291cmNlTG9hZGVyKFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+JiYpOworICAgICAgICBS
ZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTG9hZGVyKCk7CisgICAgcHJpdmF0ZToKKyAg
ICAgICAgdm9pZCBleHBpcmF0aW9uVGltZXJGaXJlZCgpOworICAgICAgICBXZWJDb3JlOjpUaW1l
ciBtX2V4cGlyYXRpb25UaW1lcjsKKyAgICAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRl
cj4gbV9sb2FkZXI7CisgICAgfTsKKworICAgIEhhc2hNYXA8TmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXI+PiBt
X2xvYWRlcnNBd2FpdGluZ1dlYlByb2Nlc3NUcmFuc2ZlcjsKKwogICAgIGJvb2wgbV9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggZDc5OTc0NTFjNDU0Li5jYWViOGQ5YmI4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTk1
LDYgKzE5NSw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBDbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpIC0+ICgpIEFzeW5jCiAjZW5kaWYKIAorICAgIFByZXBhcmVMb2FkRm9yV2ViUHJvY2Vz
c1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNvdXJjZVByb2Nlc3NJZGVudGlm
aWVyLCB1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSAtPiAoc3RkOjpvcHRpb25hbDxX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBuZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllcikgQXN5bmMKKwogICAgIEFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIFdlYktpdDo6V2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpCiAgICAgUmVt
b3ZlV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
S2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkKICAgICBDb3VudE5vbkRlZmF1bHRT
ZXNzaW9uU2V0cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChzaXplX3QgY291bnQpIEFz
eW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggODJmMWU1MzAxNDRmLi4yOTZkNDUxMDJiZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTUyMiw2ICs1MjIsMTYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFi
b3J0KCkKICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OkNhbmNlbCk7CiB9CiAKK3ZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjp0cmFuc2ZlclRvTmV3V2ViUHJvY2VzcyhOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgbmV3Q29ubmVjdGlvbiwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBuZXdD
b3JlSWRlbnRpZmllcikKK3sKKyAgICBtX2Nvbm5lY3Rpb24gPSBuZXdDb25uZWN0aW9uOworICAg
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyID0gbmV3Q29yZUlkZW50aWZpZXI7CisKKyAgICBBU1NF
UlQobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIHx8IG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSB8fCBtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spOwor
ICAgIGJvb2wgd2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IHRydWU7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7
IG1fcmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfSk7Cit9
CisKIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZy
YW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIHhGcmFtZU9wdGlvbnMsIGNvbnN0IFVSTCYgdXJsKQog
ewogICAgIGlmIChpc01haW5GcmFtZUxvYWQoKSkKQEAgLTU0NiwxMiArNTU2LDEyIEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9u
cyhjb25zdCBTdHJpbmcmIHhGCiAgICAgfQogICAgIGNhc2UgWEZyYW1lT3B0aW9uc0Rpc3Bvc2l0
aW9uOjpDb25mbGljdDogewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIk11bHRpcGxl
ICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlcnMgd2l0aCBjb25mbGljdGluZyB2YWx1ZXMgKCciICsg
eEZyYW1lT3B0aW9ucyArICInKSBlbmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcgJyIgKyB1cmwuc3Ry
aW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJy4gRmFsbGluZyBiYWNrIHRvICdERU5Z
Jy4iOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2Fn
ZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlEKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgWEZy
YW1lT3B0aW9uc0Rpc3Bvc2l0aW9uOjpJbnZhbGlkOiB7CiAgICAgICAgIFN0cmluZyBlcnJvck1l
c3NhZ2UgPSAiSW52YWxpZCAnWC1GcmFtZS1PcHRpb25zJyBoZWFkZXIgZW5jb3VudGVyZWQgd2hl
biBsb2FkaW5nICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIic6
ICciICsgeEZyYW1lT3B0aW9ucyArICInIGlzIG5vdCBhIHJlY29nbml6ZWQgZGlyZWN0aXZlLiBU
aGUgaGVhZGVyIHdpbGwgYmUgaWdub3JlZC4iOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmll
cigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlk
ZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICB9CkBAIC01NzgsNyArNTg4LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFuY2VzdG9yc09yWEZyYW1l
T3B0aW8KICAgICAgICAgU3RyaW5nIHhGcmFtZU9wdGlvbnMgPSBtX3Jlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6WEZyYW1lT3B0aW9ucyk7CiAgICAgICAgIGlmICgheEZy
YW1lT3B0aW9ucy5pc051bGwoKSAmJiBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9u
cyh4RnJhbWVPcHRpb25zLCByZXNwb25zZS51cmwoKSkpIHsKICAgICAgICAgICAgIFN0cmluZyBl
cnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGRpc3BsYXkgJyIsIHJlc3BvbnNl
LnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyBpbiBhIGZyYW1lIGJl
Y2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICciLCB4RnJhbWVPcHRpb25zLCAiJy4i
KTsKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdl
IHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVz
c2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRD
b25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6
U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZp
ZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgfQpAQCAtNTk1LDcgKzYwNSw3IEBAIGJvb2wgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHROYXZpZ2F0aW9uRm9yQ3Jvc3NPcmlnaW5FbWJlZGRl
clBvbGljCiAgICAgICAgIGF1dG8gcmVzcG9uc2VDT0VQID0gV2ViQ29yZTo6b2J0YWluQ3Jvc3NP
cmlnaW5FbWJlZGRlclBvbGljeShyZXNwb25zZSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi0+
aXNQb3RlbnRpYWxseVRydXN0d29ydGh5KCkgPyBJc1NlY3VyZUNvbnRleHQ6OlllcyA6IElzU2Vj
dXJlQ29udGV4dDo6Tm8pOwogICAgICAgICBpZiAocmVzcG9uc2VDT0VQLnZhbHVlICE9IFdlYkNv
cmU6OkNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3lWYWx1ZTo6UmVxdWlyZUNPUlApIHsKICAgICAg
ICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGRpc3Bs
YXkgJyIsIHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAi
JyBpbiBhIGZyYW1lIGJlY2F1c2Ugb2YgQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeS4iKTsK
LSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsg
bV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25z
b2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZpZXIo
KSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAgICAgfQpAQCAtNjExLDcgKzYyMSw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRXb3JrZXJMb2FkRm9yQ3Jvc3NPcmlnaW5FbWJlZGRlclBv
bGljCiAgICAgICAgIGF1dG8gcmVzcG9uc2VDT0VQID0gV2ViQ29yZTo6b2J0YWluQ3Jvc3NPcmln
aW5FbWJlZGRlclBvbGljeShyZXNwb25zZSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi0+aXNQ
b3RlbnRpYWxseVRydXN0d29ydGh5KCkgPyBJc1NlY3VyZUNvbnRleHQ6OlllcyA6IElzU2VjdXJl
Q29udGV4dDo6Tm8pOwogICAgICAgICBpZiAocmVzcG9uc2VDT0VQLnZhbHVlICE9IFdlYkNvcmU6
OkNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3lWYWx1ZTo6UmVxdWlyZUNPUlApIHsKICAgICAgICAg
ICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgJyIs
IHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyB3b3Jr
ZXIgYmVjYXVzZSBvZiBDcm9zcy1PcmlnaW4tRW1iZWRkZXItUG9saWN5LiIpOwotICAgICAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
KTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdl
IHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVz
c2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
ICAgICB9CkBAIC02MzAsNyArNjQwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICBp
ZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgJiYgbV9uZXR3b3JrTG9h
ZENoZWNrZXIpIHsKICAgICAgICAgYXV0byBpbmZvcm1hdGlvbiA9IG1fbmV0d29ya0xvYWRDaGVj
a2VyLT50YWtlTmV0d29ya0xvYWRJbmZvcm1hdGlvbigpOwogICAgICAgICBpbmZvcm1hdGlvbi5y
ZXNwb25zZSA9IG1fcmVzcG9uc2U7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xv
YWRJbmZvcm1hdGlvbihpZGVudGlmaWVyKCksIFdURk1vdmUoaW5mb3JtYXRpb24pKTsKKyAgICAg
ICAgbV9jb25uZWN0aW9uLT5hZGROZXR3b3JrTG9hZEluZm9ybWF0aW9uKGNvcmVJZGVudGlmaWVy
KCksIFdURk1vdmUoaW5mb3JtYXRpb24pKTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0
L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0
aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4K
QEAgLTc1OCw3ICs3NjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogICAgIExPQURFUl9S
RUxFQVNFX0xPRygiZGlkRmluaXNoTG9hZGluZzogKG51bUJ5dGVzUmVjZWl2ZWQ9JXpkLCBoYXND
YWNoZUVudHJ5Rm9yVmFsaWRhdGlvbj0lZCkiLCBtX251bUJ5dGVzUmVjZWl2ZWQsICEhbV9jYWNo
ZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29y
a0xvYWRNZXRyaWNzKCkpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xvYWRJbmZv
cm1hdGlvbk1ldHJpY3MoaWRlbnRpZmllcigpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAg
ICBtX2Nvbm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb25NZXRyaWNzKGNvcmVJZGVu
dGlmaWVyKCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9y
VmFsaWRhdGlvbikgewogICAgICAgICAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04MDEsNyArODEx
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQogICAgIFVOVVNFRF9WQVJJQUJMRSh3YXNTZXJ2aWNlV29ya2Vy
TG9hZCk7CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkp
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTmV0d29ya0xvYWRJbmZvcm1hdGlvbihpZGVu
dGlmaWVyKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU5ldHdvcmtMb2FkSW5mb3Jt
YXRpb24oY29yZUlkZW50aWZpZXIoKSk7CiAKICAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpKTsK
IApAQCAtMTIwMiw5ICsxMjEyLDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZXRyaWV2ZUNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6CiAgICAgTE9B
REVSX1JFTEVBU0VfTE9HKCJkaWRSZXRyaWV2ZUNhY2hlRW50cnk6IFNlbmRpbmcgV2ViUmVzb3Vy
Y2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSBJUEMgKG5lZWRzQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlPSVkKSIsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJl
c3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
IH0pOwogCi0gICAgaWYgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQor
ICAgIGlmIChuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgeworICAgICAg
ICBtX3Jlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7CiAgICAgICAgIG1fY2FjaGVFbnRyeVdh
aXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IFdURk1vdmUoZW50cnkpOwotICAg
IGVsc2UgeworICAgIH0gZWxzZSB7CiAgICAgICAgIHNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KFdU
Rk1vdmUoZW50cnkpKTsKICAgICAgICAgY2xlYW51cChMb2FkUmVzdWx0OjpTdWNjZXNzKTsKICAg
ICB9CkBAIC0xMzU5LDcgKzEzNzAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9n
Q29va2llSW5mb3JtYXRpb24oKSBjb25zdAogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQoKSk7CiAgICAgQVNTRVJUKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7CiAKLSAgICBsb2dDb29r
aWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwg
b3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpj
cmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2lu
YWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGlkZW50aWZp
ZXIoKSk7CisgICAgbG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29ya1Jl
c291cmNlTG9hZGVyIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3
b3JrU3RvcmFnZVNlc3Npb24sIG9yaWdpbmFsUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVz
KCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKG9yaWdpbmFsUmVxdWVzdCgpKSwgb3JpZ2luYWxSZXF1
ZXN0KCkudXJsKCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBmcmFtZUlEKCks
IHBhZ2VJRCgpLCBjb3JlSWRlbnRpZmllcigpKTsKIH0KIAogc3RhdGljIHZvaWQgbG9nQmxvY2tl
ZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0
aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKQEAgLTE0NjMsNyArMTQ3NCw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgbWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxl
dmVsIG1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nKQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsICBtZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2Us
IGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCAgbWVzc2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBtZXNzYWdlLCBjb3JlSWRlbnRpZmllcigp
IH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c2VuZENTUFZpb2xhdGlvblJlcG9ydChVUkwmJiByZXBvcnRVUkwsIFJlZjxGb3JtRGF0
YT4mJiByZXBvcnQpCkBAIC0xNTM0LDcgKzE1NDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKiBm
ZQogICAgIFJFTEVBU0VfQVNTRVJUKG1fc2VydmljZVdvcmtlckZldGNoVGFzay5nZXQoKSA9PSBm
ZXRjaFRhc2spOwogICAgIGlmIChtX3BhcmFtZXRlcnMuc2VydmljZVdvcmtlcnNNb2RlID09IFNl
cnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0dfRVJS
T1IoInNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGU6IEFib3J0aW5nIGxvYWQgYmVjYXVzZSB0aGUg
c2VydmljZSB3b3JrZXIgZGlkIG5vdCBoYW5kbGUgdGhlIGxvYWQgYW5kIHNlcnZpY2VXb3JrZXJN
b2RlIG9ubHkgYWxsb3dzIHNlcnZpY2Ugd29ya2VycyIpOwotICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRlcjo6U2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSB7IH0sIGlkZW50
aWZpZXIoKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2
aWNlV29ya2VyRGlkTm90SGFuZGxlIHsgfSwgY29yZUlkZW50aWZpZXIoKSk7CiAgICAgICAgIGFi
b3J0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBjZWY2NTQ3OWI3ZTYu
LmQ5MmQzMDM4YTFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC04NSwxOSArODUsMjMgQEAgcHVibGljOgogICAg
IHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIGFib3J0KCk7CiAKKyAgICB2b2lkIHRyYW5zZmVyVG9O
ZXdXZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVzb3VyY2VMb2Fk
SWRlbnRpZmllcik7CisKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVj
ZWl2ZU5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJik7CiAKICAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3Jl
ZGVudGlhbHMpOwogCisgICAgdm9pZCBzZXRSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UpIHsgbV9yZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpOyB9CiAgICAg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3BvbnNlOyB9CiAKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29u
bmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQogICAg
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi0+
c2Vzc2lvbklEKCk7IH0KLSAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcjsgfQorICAgIFJlc291cmNlTG9h
ZElkZW50aWZpZXIgY29yZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllcjsgfQogICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQ7IH0KICAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
OyB9CiAgICAgY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMo
KSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KKyAgICBOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRJRDsg
fQogCiAgICAgTmV0d29ya0NhY2hlOjpHbG9iYWxGcmFtZUlEIGdsb2JhbEZyYW1lSUQoKSB7IHJl
dHVybiB7IG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgcGFnZUlEKCksIGZyYW1lSUQoKSB9
OyB9CiAKQEAgLTIxMCw3ICsyMTQsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VMb2FkSW5m
byByZXNvdXJjZUxvYWRJbmZvKCk7CiAKLSAgICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyBtX3BhcmFtZXRlcnM7CisgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMg
bV9wYXJhbWV0ZXJzOwogCiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBt
X2Nvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApp
bmRleCBhZjk1MWQ1YTBiNTkuLmQ0NTU5MzUyNTNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcApAQCAtNzgsNyArNzgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBN
ZXNzYWdlPiBib29sIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb1NlcnZpY2VXb3JrZXIo
TWVzcwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OnNlbmRUb0NsaWVudChNZXNzYWdlJiYgbWVzc2FnZSkKIHsKLSAgICByZXR1cm4gbV9s
b2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKHN0ZDo6Zm9y
d2FyZDxNZXNzYWdlPihtZXNzYWdlKSwgbV9sb2FkZXIuaWRlbnRpZmllcigpKTsKKyAgICByZXR1
cm4gbV9sb2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKHN0
ZDo6Zm9yd2FyZDxNZXNzYWdlPihtZXNzYWdlKSwgbV9sb2FkZXIuY29yZUlkZW50aWZpZXIoKSk7
CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6c3RhcnQoV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJiBzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikKQEAgLTE2Miw2ICsxNjIs
OCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvbwogCiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJl
c291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2VydmljZVdvcmtlcik7CiAgICAgc2VuZFRvQ2xpZW50
KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9u
c2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOworICAgIGlmIChu
ZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKKyAgICAgICAgbV9sb2FkZXIu
c2V0UmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
aW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0
ZXJzLmNwcAppbmRleCBlY2ExMWEzYTAwYzIuLjM0NmY3ZDhkODQ1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcApAQCAtNTcsNiArNTcsNyBAQCB2b2lkIExvYWRQYXJh
bWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgbG9ja0JhY2tGb3J3YXJkTGlzdDsKICAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291
cmNlRm9ySGlzdG9yeTsKICAgICBlbmNvZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW47CisgICAgZW5jb2RlciA8PCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
VG9SZXN1bWU7CiAgICAgZW5jb2RlciA8PCBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk7CiAKICAg
ICBwbGF0Zm9ybUVuY29kZShlbmNvZGVyKTsKQEAgLTEzNyw2ICsxMzgsOSBAQCBib29sIExvYWRQ
YXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYg
ZGF0YSkKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZGF0YS5leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShkYXRhLnNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCmluZGV4IGU1YzU3YjA0MDQ5Yy4uMGMw
NTQwYjA0NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVy
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUG9saWN5
RGVjaXNpb24uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiVXNl
ckRhdGEuaCIKQEAgLTc0LDYgKzc1LDcgQEAgc3RydWN0IExvYWRQYXJhbWV0ZXJzIHsKICAgICBX
ZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSB7IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9y
eVZpc2liaWxpdHk6OlZpc2libGUgfTsKICAgICBTdHJpbmcgY2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5OwogICAgIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllclRvUmVzdW1lOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPE5TRGlj
dGlvbmFyeT4gZGF0YURldGVjdGlvbkNvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2NzFhZGQ0
YWEyN2MuLmIxYWMzZDQzOGEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC00NzUsNiArNDc1LDE3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdv
cmtlclByb2Nlc3NlcyhXZWJDb3JlOjpQCiAgICAgfQogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnByZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyLCB1aW50NjRfdCByZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByZXBh
cmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyOiBzb3VyY2VQcm9jZXNzSWRlbnRpZmllcjogJSIg
UFJJdTY0ICIsIHJlc291cmNlTG9hZElkZW50aWZpZXI6ICUiIFBSSXU2NCwgdGhpcywgc291cmNl
UHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFyZXNvdXJjZUxvYWRJZGVudGlmaWVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFu
c2Zlcihzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
dWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewog
ICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAppbmRleCA1OGE4YThlOTRiZjMuLjRlNWJiNDU5YTNkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzUHJveHkuaCIKICNp
bmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3Nh
Z2VzUmVwbGllcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxl
ci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKQEAgLTIxNCw2ICsyMTUs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OlRlc3RQcm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseURlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHRlcm1pbmF0ZVVucmVz
cG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIp
OwogCisgICAgdm9pZCBwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgdWludDY0X3QgcmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYpOworCiAgICAgUHJvY2Vzc1Rocm90dGxl
ciYgdGhyb3R0bGVyKCkgZmluYWwgeyByZXR1cm4gbV90aHJvdHRsZXI7IH0KICAgICB2b2lkIHVw
ZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDQxY2QzNWRiZmE4ZC4uNzVhNjVjNDMzNzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwCkBAIC0xNzEsOSArMTcxLDkgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERh
dGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGEKICAgICBtX3Bh
Z2UubG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dl
YlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwgbWltZVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1
c2VyRGF0YSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIG5hdmlnYXRpb24ubGFzdE5hdmln
YXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzZXNzaW9uSGlzdG9y
eVZpc2liaWxpdHkpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVz
dChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwg
c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3Zv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
VG9SZXN1bWUpCiB7Ci0gICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vz
c1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6Iik7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVM
RUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6IGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZT0lIiBQUkl1NjQsIGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZS52YWx1ZV9vcihOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciB7IH0pLnRvVUludDY0KCkpOwogICAgIEFTU0VSVChzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQgIT0gV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObyk7
CiAKICAgICAvLyBJZiB0aGlzIGlzIGEgY2xpZW50LXNpZGUgcmVkaXJlY3QgY29udGludWluZyBp
biBhIG5ldyBwcm9jZXNzLCB0aGVuIHRoZSBuZXcgcHJvY2VzcyB3aWxsIG92ZXJ3cml0ZSB0aGUg
ZnJvbUl0ZW0ncyBVUkwuIEluIHRoaXMgY2FzZSwKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIFdlYkNvcmU6OlJlcwogICAgIGlmIChuYXZpZ2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdh
dGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCkgPT0gV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlz
dDo6WWVzKQogICAgICAgICBuYXZpZ2F0aW9uLmZyb21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRl
bnRpZmllcihtX3Byb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKIAotICAgIG1fcGFn
ZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1f
d2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3RO
YXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEs
IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICBtX3BhZ2UubG9hZFJlcXVlc3RXaXRo
TmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdh
dGlvbiwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigp
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0
ZVBvbGljaWVzKSwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1l
KTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShB
UEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0s
IFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMpCkBAIC0zMzAs
MTIgKzMzMCwxMiBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uQXN5bmMoRnJhbWVJZGVudGlmaWVyCiAgICAgbV9wYWdlLmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBt
X3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZp
Z2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKG9yaWdpbmF0
aW5nRnJhbWVJbmZvKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92
ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25z
ZSksIHVzZXJEYXRhLCBsaXN0ZW5lcklEKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBi
b29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRs
ZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQogewogICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9u
SUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1v
dmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVz
dCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0
ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIGxpc3RlbmVySUQsIHVz
ZXJEYXRhKTsKKyAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9j
ZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwg
aWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVU
eXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRz
QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBs
aXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRl
eCAyNzE0YjJhNWI1NDcuLjBhYmVhOWRhNmJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90
dGxlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTEwNSw3ICsxMDYsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQgbG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGlj
aWVzRGF0YT4mJiwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJp
bGl0eSk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxv
cHQpOworICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0
LCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgPSBzdGQ6Om51bGxvcHQpOwogICAg
IHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mLCBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtJiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmKTsKICAgICB2b2lkIGNh
bmNlbCgpOwogCkBAIC0xMjQsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNlbmRNZXNz
YWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+
LCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVj
b2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZv
RGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5n
RnJhbWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEm
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0
YSYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRC
dW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlz
dGVuZXJJRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVzZXJE
YXRhJik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9p
ZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFVzZXJEYXRhJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxMTEzMTlkOGQzZWYuLjVmYTBk
OTk0ODM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0x
MzgxLDcgKzEzODEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6Omxv
YWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwogICAgIHJldHVybiBuYXZp
Z2F0aW9uOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlv
blNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwg
c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3Zv
aWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBzdGQ6Om9wdGlvbmFsPE5ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyVG9SZXN1bWUpCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAtMTQwNCw2
ICsxNDA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBsb2FkUGFyYW1ldGVycy5s
b2NrQmFja0ZvcndhcmRMaXN0ID0gbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCk7CiAg
ICAgbG9hZFBhcmFtZXRlcnMuY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5ID0gbmF2aWdh
dGlvbi5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKTsKICAgICBsb2FkUGFyYW1ldGVy
cy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbjsKKyAgICBsb2FkUGFyYW1ldGVycy5leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyVG9SZXN1bWUgPSBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9S
ZXN1bWU7CiAgICAgbWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShwcm9jZXNz
LCB1cmwsIG1fcGFnZUxvYWRTdGF0ZS5yZXNvdXJjZURpcmVjdG9yeVVSTCgpLCBsb2FkUGFyYW1l
dGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFt
ZXRlcnMocHJvY2VzcywgbG9hZFBhcmFtZXRlcnMpOwpAQCAtMzYyMCw3ICszNjIxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgRnJhbWVJbmZvRGF0YSYKICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRpZENvbW1p
dFByb3Zpc2lvbmFsUGFnZShvbGRXZWJQYWdlSUQsIG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRp
b24mIG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3Vz
cGVuZGVkUGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBuZXdQcm9jZXNzLCBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFJlZlB0cjxB
UEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdh
dGlvbiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdl
LCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIG5ld1Byb2Nlc3MsIFByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgUmVmUHRyPEFQSTo6V2Vic2l0
ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcywgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lKQogewogICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiY29udGlu
dWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzOiBuZXdQcm9jZXNzUElEPSVpLCBoYXNTdXNwZW5kZWRQ
YWdlPSVpIiwgbmV3UHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdl
KTsKICAgICBMT0coTG9hZGluZywgIkNvbnRpbnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAn
JXMnIGluIGEgbmV3IHdlYiBwcm9jZXNzIiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2
aWdhdGlvbi5sb2dnaW5nU3RyaW5nKCkpOwpAQCAtMzYzNyw3ICszNjM4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24m
IG5hdmlnYXRpb24sIHMKICAgICBib29sIGlzU2VydmVyU2lkZVJlZGlyZWN0ID0gc2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkID09IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0
ZXJOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gJiYgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElz
UmVkaXJlY3QoKTsKICAgICBib29sIHNob3VsZENsb3NlUHJldmlvdXNQYWdlQWZ0ZXJDb21taXQg
PSBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkOjpZZXNBZnRlclJlc3BvbnNlUG9saWN5RGVjaXNpb247CiAgICAgbV9wcm92aXNpb25hbFBh
Z2UgPSBtYWtlVW5pcXVlPFByb3Zpc2lvbmFsUGFnZVByb3h5PigqdGhpcywgV1RGTW92ZShuZXdQ
cm9jZXNzKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdlKSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQo
KSwgaXNTZXJ2ZXJTaWRlUmVkaXJlY3QsIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgc2hvdWxkQ2xvc2VQcmV2aW91c1BhZ2VBZnRlckNv
bW1pdCwgd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKLSAgICBhdXRvIGNvbnRpbnVhdGlvbiA9IFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5hdmlnYXRpb24gPSBtYWtlUmVm
KG5hdmlnYXRpb24pLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHdlYnNpdGVQb2xpY2ll
cyA9IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNvbnRp
bnVhdGlvbiA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5hdmlnYXRp
b24gPSBtYWtlUmVmKG5hdmlnYXRpb24pLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHdl
YnNpdGVQb2xpY2llcyA9IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSwgZXhpc3RpbmdOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lXSgpIG11dGFibGUgewogICAgICAgICBpZiAo
YXV0byogaXRlbSA9IG5hdmlnYXRpb24tPnRhcmdldEl0ZW0oKSkgewogICAgICAgICAgICAgTE9H
KExvYWRpbmcsICJXZWJQYWdlUHJveHkgJXAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
IHRvIGJhY2sgaXRlbSBVUkwgJXMiLCB0aGlzLCBpdGVtLT51cmwoKS51dGY4KCkuZGF0YSgpKTsK
IApAQCAtMzY2MCwxMCArMzY2MSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZp
Z2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogCiAgICAg
ICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0
IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCiAgICAgICAgIEFTU0VSVCghbmF2aWdhdGlvbi0+Y3VycmVu
dFJlcXVlc3QoKS5pc0VtcHR5KCkpOworICAgICAgICBBU1NFUlQoIWV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSB8fCAhbmF2aWdhdGlvbi0+c3Vic3RpdHV0ZURh
dGEoKSk7CiAgICAgICAgIGlmIChhdXRvJiBzdWJzdGl0dXRlRGF0YSA9IG5hdmlnYXRpb24tPnN1
YnN0aXR1dGVEYXRhKCkpCiAgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZERhdGEo
bmF2aWdhdGlvbiwgeyBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5kYXRhKCksIHN1YnN0aXR1dGVE
YXRhLT5jb250ZW50LnNpemUoKSB9LCBzdWJzdGl0dXRlRGF0YS0+TUlNRVR5cGUsIHN1YnN0aXR1
dGVEYXRhLT5lbmNvZGluZywgc3Vic3RpdHV0ZURhdGEtPmJhc2VVUkwsIHN1YnN0aXR1dGVEYXRh
LT51c2VyRGF0YS5nZXQoKSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSksIHN1YnN0
aXR1dGVEYXRhLT5zZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZFJlcXVlc3QobmF2aWdhdGlvbiwgUmVzb3Vy
Y2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSB9LCBudWxscHRyLCBzaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwg
V1RGTW92ZSh3ZWJzaXRlUG9saWNpZXNEYXRhKSk7CisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFs
UGFnZS0+bG9hZFJlcXVlc3QobmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlv
bi0+Y3VycmVudFJlcXVlc3QoKSB9LCBudWxscHRyLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNp
ZXNEYXRhKSwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKTsK
ICAgICB9OwogICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXItPnNob3VsZFBhdXNlTG9hZGlu
ZygqbV9wcm92aXNpb25hbFBhZ2UpKQogICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNl
dENvbnRpbnVlTG9hZGluZ0NhbGxiYWNrKCptX3Byb3Zpc2lvbmFsUGFnZSwgV1RGTW92ZShjb250
aW51YXRpb24pKTsKQEAgLTU2MTcsMTIgKzU2MTksMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWUKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lk
ZW50aWZpZXIgaWRlbnRpZmllciwKICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLAot
ICAgIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQorICAgIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50
aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsK
LSAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBt
X3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZp
Z2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0
cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaCwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAgIGRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBX
VEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJl
cXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUlu
amVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBtYWluUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIg
aWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2Vk
QnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1
aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIg
aWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2Vk
QnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1
aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJv
dGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTU2MzUsMTMgKzU2MzcsMTMgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzcywKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uID0g
bmF2aWdhdGlvbklEID8gbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklE
KSA6IG51bGxwdHI7CiAgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRp
b25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUlu
Zm8pLCB0aGlzKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSwgZG93
bmxvYWRBdHRyaWJ1dGUpOwogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNl
dFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCB3ZWJQYWdlSUQsIGZyYW1lSUQsIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gs
IGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24p
LAorICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVy
UHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2ViUGFnZUlELCBm
cmFtZUlELCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBtYWluUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUo
bmF2aWdhdGlvbiksCiAgICAgICAgIHByb2Nlc3MsIG5hdmlnYXRpb25SZXNwb25zZV0gKFBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2Fm
ZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBzdGQ6Om9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBt
dXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNp
ZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVy
VXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8p
OwogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3Np
bmdXYXJuaW5nKTsKIAotICAgICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVy
OjpjcmVhdGUoaWRlbnRpZmllciwgW3dlYlBhZ2VJRCwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJv
Y2VzcyA9IFdURk1vdmUocHJvY2VzcyldIChjb25zdCBhdXRvJiBwb2xpY3lEZWNpc2lvbikgewor
ICAgICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRp
ZmllciwgW3dlYlBhZ2VJRCwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2Vzc10gKGNvbnN0IGF1
dG8mIHBvbGljeURlY2lzaW9uKSB7CiAgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwg
cG9saWN5RGVjaXNpb24sIGNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJveEV4dGVuc2lvbnMo
cHJvY2VzcykpLCB3ZWJQYWdlSUQpOwogICAgICAgICB9KTsKIApAQCAtNTY0OSwxMiArNTY1MSwx
NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgICAgICBpZiAocG9saWN5QWN0aW9uID09
IFBvbGljeUFjdGlvbjo6VXNlICYmIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2ggJiYg
bmF2aWdhdGlvbikgewogICAgICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gcmVzcG9uc2VEb21h
aW4geyBuYXZpZ2F0aW9uUmVzcG9uc2UtPnJlc3BvbnNlKCkudXJsKCkgfTsKICAgICAgICAgICAg
IC8vIEF2b2lkIHByb2Nlc3Mtc3dhcHBpbmcgaW4gY2FzZXMgd2hlcmUgdGhlIHByb2Nlc3Mgb25s
eSBjb250YWlucyBhIHNpbmdsZSBwYWdlIGFuZCBpcyBvcmlnaW4tY2xlYW4uCi0gICAgICAgICAg
ICBpZiAodGhpcy0+cHJvY2VzcygpLnBhZ2VDb3VudCgpID4gMSB8fCAodGhpcy0+cHJvY2Vzcygp
Lm9wdGlvbmFsUmVnaXN0cmFibGVEb21haW4oKSAmJiAqdGhpcy0+cHJvY2VzcygpLm9wdGlvbmFs
UmVnaXN0cmFibGVEb21haW4oKSAhPSByZXNwb25zZURvbWFpbikpIHsKKyAgICAgICAgICAgIGlm
IChwcm9jZXNzLT5wYWdlQ291bnQoKSA+IDEgfHwgKHByb2Nlc3MtPm9wdGlvbmFsUmVnaXN0cmFi
bGVEb21haW4oKSAmJiAqcHJvY2Vzcy0+b3B0aW9uYWxSZWdpc3RyYWJsZURvbWFpbigpICE9IHJl
c3BvbnNlRG9tYWluKSkgewogICAgICAgICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzU3dhcHBpbmcsICJkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZDogUHJvY2Vz
cy1zd2FwcGluZyBkdWUgdG8gQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiKTsKLSAgICAgICAg
ICAgICAgICBwb2xpY3lBY3Rpb24gPSBQb2xpY3lBY3Rpb246Oklnbm9yZTsKLSAgICAgICAgICAg
ICAgICBhdXRvIHByb2Nlc3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgp
LnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbih3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJl
c3BvbnNlRG9tYWluKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1By
b2Nlc3MoKm5hdmlnYXRpb24sIG51bGxwdHIsIFdURk1vdmUocHJvY2Vzc0Zvck5hdmlnYXRpb24p
LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObywgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkOjpZZXNBZnRlclJlc3BvbnNlUG9saWN5RGVjaXNpb24sIG51bGxwdHIpOwotICAgICAg
ICAgICAgICAgIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGludWVMb2Fk
SW5OZXdQcm9jZXNzOjpZZXM7CisgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5l
dHdvcmtQcm9jZXNzKCkucHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIocHJvY2Vzcy0+
Y29yZVByb2Nlc3NJZGVudGlmaWVyKCksIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHJlc3BvbnNlRG9tYWlu
ID0gV1RGTW92ZShyZXNwb25zZURvbWFpbiksIG5hdmlnYXRpb24sIG5hdmlnYXRpb25SZXNwb25z
ZSA9IFdURk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIp
XShhdXRvIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBt
X3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHdlYnNp
dGVEYXRhU3RvcmUoKSwgdGhpcywgcmVzcG9uc2VEb21haW4pOworICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoKm5hdmlnYXRpb24sIG51bGxwdHIsIFdU
Rk1vdmUocHJvY2Vzc0Zvck5hdmlnYXRpb24pLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
OjpObywgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclJlc3BvbnNlUG9saWN5
RGVjaXNpb24sIG51bGxwdHIsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJU
b1Jlc3VtZSk7CisKKyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQ
b2xpY3lBY3Rpb246Oklnbm9yZSwgbmF2aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShu
YXZpZ2F0aW9uUmVzcG9uc2UpLCBXVEZNb3ZlKHNlbmRlciksIHsgfSwgV2lsbENvbnRpbnVlTG9h
ZEluTmV3UHJvY2Vzczo6WWVzKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDI2YjgwNmMzNmJhZi4uZjc5NDgyNjZmM2Q3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNDMsNiArNDMsNyBA
QAogI2luY2x1ZGUgIk1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrU3RhdGUuaCIKICNpbmNsdWRlICJNZXNzYWdlU2Vu
ZGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJQREZQbHVnaW5JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGFnZUxvYWRTdGF0ZS5oIgog
I2luY2x1ZGUgIlBhc3RlYm9hcmRBY2Nlc3NJbnRlbnQuaCIKQEAgLTE3NDEsMTAgKzE3NDIsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVS
TEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJh
bWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdp
bmF0aW5nRnJhbWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9y
aWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9E
YXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxv
YWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNl
ckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVy
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwg
Y29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3Rl
ZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNl
ckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFza1NoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVVJMU2NoZW1lVGFza1BhcmFtZXRl
cnMmJik7CiAgICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBXZWJDb3Jl
OjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5KTsKLSAgICB2b2lkIGxv
YWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkUmVxdWVz
dFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xp
Y2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jl
c3VtZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlz
dENvdW50cyYpPiYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciwgYm9vbCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdl
YlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNEZWxheWVk
UmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCkBAIC0yMDYwLDcgKzIwNjEsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKLSAgICAgICAgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJv
b2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29s
IHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgICAg
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHVuYWJs
ZVRvSW1wbGVtZW50UG9saWN5KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBiZWdpblNhZmVC
cm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIGJvb2wsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eSYpOwogCkBAIC0yNDYyLDcgKzI0NjMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXBvcnRQ
YWdlTG9hZFJlc3VsdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiA9IHsgfSk7CiAKLSAg
ICB2b2lkIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mLCBz
dGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJik7CisgICAgdm9p
ZCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiwgc3RkOjp1
bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYsIHN0ZDo6b3B0aW9uYWw8
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICB2b2lkIHNldE5lZWRz
Rm9udEF0dHJpYnV0ZXMoYm9vbCk7CiAgICAgdm9pZCB1cGRhdGVGb250QXR0cmlidXRlc0FmdGVy
RWRpdG9yU3RhdGVDaGFuZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiODgwM2NkNTIyMmIuLjkyNTUzNWM1NmQzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMTA3LDcgKzEwNyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAog
ICAgICMgUG9saWN5IG1lc3NhZ2VzCi0gICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEg
ZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dN
SU1FVHlwZSwgU3RyaW5nIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVj
dGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgU3RyaW5nIGRvd25sb2FkQXR0cmlidXRlLCBib29s
IHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBs
aXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRh
LCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRp
bmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVl
c3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiAgICAgRGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJ
bmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVy
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VQcm94
eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoc3RydWN0IFdl
YktpdDo6UG9saWN5RGVjaXNpb24gUG9saWN5RGVjaXNpb24pIFN5bmNocm9ub3VzCiAgICAgRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6
TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDZlOTY5MDcyNTRh
NC4uMzQ5ZWEyYzYzNjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC00MTIsOCArNDEyLDExIEBAIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJj
ZUxvYWRlciYgcmVzb3VyY2VMCiAKICAgICBBU1NFUlQoKGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJ
RCAmJiBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlEKSB8fCBsb2FkUGFyYW1ldGVycy5jbGllbnRD
cmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVu
dEZvckNyZWRlbnRpYWxzKTsKIAotICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HKCJz
Y2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3Jr
UHJvY2VzcyAocHJpb3JpdHk9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5y
ZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChs
b2FkUGFyYW1ldGVycyksIDApKSB7CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVz
dW1lOworICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24pCisgICAg
ICAgIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6
ZXhjaGFuZ2UobV9leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUs
IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVk
dWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9j
ZXNzIChwcmlvcml0eT0lZCwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lPSUiIFBSSXU2NCAiKSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVx
dWVzdCgpLnByaW9yaXR5KCkpLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
VG9SZXN1bWUudmFsdWVfb3IoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgeyB9KS50b1VJ
bnQ2NCgpKTsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFtZXRlcnMs
IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSksIDApKSB7CiAg
ICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HX0VSUk9SKCJzY2hlZHVsZUxvYWQ6
IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJp
b3JpdHk9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJp
b3JpdHkoKSkpOwogICAgICAgICAvLyBXZSBwcm9iYWJseSBmYWlsZWQgdG8gc2NoZWR1bGUgdGhp
cyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIGJlY2F1c2UgaXQgaGFkIGNyYXNoZWQuCiAg
ICAgICAgIC8vIFRoaXMgbG9hZCB3aWxsIG5ldmVyIHN1Y2NlZWQgc28gd2Ugd2lsbCBzY2hlZHVs
ZSBpdCB0byBmYWlsIGFzeW5jaHJvbm91c2x5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXggY2EyMzQ5OTU4NjY2Li4y
NGI2OTM3OTAxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
V2ViUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CkBAIC05MSw2ICs5Miw4IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CiAK
KyAgICB2b2lkIHNldEV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZShzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpIHsgbV9leGlzdGluZ05ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgPSBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyVG9SZXN1bWU7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlTG9h
ZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlKiwgYm9v
bCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KTsKICAgICB2b2lkIHNj
aGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImKTsKQEAg
LTEzMyw2ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUGlu
Z0xvYWRDb21wbGV0aW9uSGFuZGxlcj4gbV9waW5nTG9hZENvbXBsZXRpb25IYW5kbGVyczsKICAg
ICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcj4gbV9w
cmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXJzOwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKGJv
b2wpPj4gbV9vbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyczsKKyAgICBzdGQ6Om9wdGlvbmFsPE5l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXJUb1Jlc3VtZTsKICAgICBib29sIG1faXNPbkxpbmUgeyB0cnVlIH07CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA0OTRkOWU1MDE0OWQuLmFjNjYy
NGFlMTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC05MSw2ICs5MSw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVUlFdmVudFdpdGhLZXlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2lkZ2V0Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgpAQCAtODQ4LDExICs4NDksMTIgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnMKICAgICBhdXRvKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLT5j
b3JlRnJhbWUoKTsKICAgICBhdXRvKiBwb2xpY3lEb2N1bWVudExvYWRlciA9IGNvcmVGcmFtZSA/
IGNvcmVGcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpIDogbnVsbHB0
cjsKICAgICBhdXRvIG5hdmlnYXRpb25JRCA9IHBvbGljeURvY3VtZW50TG9hZGVyID8gc3RhdGlj
X2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqcG9saWN5RG9jdW1lbnRMb2FkZXIpLm5hdmlnYXRp
b25JRCgpIDogMDsKKyAgICB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciA9IHBv
bGljeURvY3VtZW50TG9hZGVyICYmIHBvbGljeURvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VM
b2FkZXIoKSA/IHBvbGljeURvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+aWRl
bnRpZmllcigpIDogMDsKIAogICAgIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUgPSBw
b2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlOwogICAgIGF1dG8gcHJvdGVjdG9y
ID0gbV9mcmFtZS5jb3B5UmVmKCk7CiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUt
PnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZy
YW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7Ci0gICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUtPmZy
YW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3Bv
bnNlLCByZXF1ZXN0LCBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0cmlidXRlLCB3YXNBbGxv
d2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgbGlz
dGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0
c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSkpIHsKKyAgICBpZiAoIXdlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9m
cmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25J
RCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dSZXNwb25zZSwgZG93bmxvYWRBdHRyaWJ1dGUs
IHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dp
dGNoLCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5n
ZXQoKSkuZ2V0KCkpKSkpIHsKICAgICAgICAgV0VCRlJBTUVMT0FERVJDTElFTlRfUkVMRUFTRV9M
T0coTmV0d29yaywgImRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2U6IGlnbm9yaW5nIGJl
Y2F1c2UgV2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSBmYWlsZWQiKTsKICAg
ICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGlj
eURlY2lzaW9uIHsgaWRlbnRpZmllciwgc3RkOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246Oklnbm9y
ZSwgMCwgeyB9LCB7IH0gfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAppbmRleCBjZmJlNTRmMDI2MzQuLmM3ZGQ0OWIyZGFiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI1OSw2ICsy
NTksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2ViR0xTdGF0ZVRyYWNrZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1dyaXRpbmdEaXJlY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL21hcmt1cC5o
PgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNp
bmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTE2
ODksNiArMTY5MCwxMSBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KExvYWRQYXJhbWV0ZXJz
JiYgbG9hZFBhcmFtZXRlcnMpCiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihs
b2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUu
Z2V0KCkpOwogI2VuZGlmCiAKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJT
dHJhdGVneSgpLnNldEV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZShsb2FkUGFyYW1ldGVycy5leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9S
ZXN1bWUpOworICAgIGF1dG8gcmVzdW1pbmdMb2FkU2NvcGUgPSBtYWtlU2NvcGVFeGl0KFtdIHsK
KyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zZXRF
eGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUoc3RkOjpudWxsb3B0
KTsKKyAgICB9KTsKKwogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyOwog
CiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklE
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDFlNjE0
YzczOWVhNS4uNWY5NzkwZWE5MDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4
dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJQbHVnaW4uaCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436511</attachid>
            <date>2021-08-26 08:01:44 -0700</date>
            <delta_ts>2021-08-26 13:08:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229465-20210826080144.patch</filename>
            <type>text/plain</type>
            <size>81335</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEwZjM2ODk4NmU2NGFhN2E3
YjkwZjc5NzJjNDFhNzJlNDM5ZmU5NzIuLjBmNmZkM2RhZWE3NWUwOWE1ZjhhN2IyNjAxMmVkOTM1
ZWU5YWEwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMjEtMDgtMjYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBSZXVzZSB0aGUgc2FtZSBu
ZXR3b3JrIGxvYWQgd2hlbiBwcm9jZXNzLXN3YXBwaW5nIG9uIHJlc291cmNlIHJlc3BvbnNlIGR1
ZSB0byBDT09QCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjk0NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyMzA3NjExPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHIyODE1MTYgYWRkZWQgc3VwcG9y
dCBmb3IgcHJvY2Vzcy1zd2FwcGluZyBiYXNlZCBvbiBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGlj
eSBoZWFkZXIKKyAgICAgICAgaW4gSFRUUCByZXNwb25zZXMuIEhvd2V2ZXIsIG9uIHByb2Nlc3Mt
c3dhcCwgd2Ugd291bGQgYWJvcnQgdGhlIGV4aXN0aW5nIG5ldHdvcmsgbG9hZAorICAgICAgICB0
aGF0IHdhcyBzdGFydGVkIGJ5IHRoZSBvcmlnaW5hbCBXZWJQcm9jZXNzIGFuZCBzdGFydCBhIGZy
ZXNoIG5ldHdvcmsgbG9hZCBpbiB0aGUgbmV3CisgICAgICAgIFdlYlByb2Nlc3MuIFRoaXMgd2Fz
IHN1Ym9wdGltYWwgYW5kIGNvdWxkIGxlYWQgdG8gaXNzdWVzIHdpdGggcmVzb3VyY2VzIHRoYXQg
cHJvdmlkZQorICAgICAgICBvbmUtdGltZSBiZWhhdmlvcnMuIFRoaXMgcGF0Y2ggYWRkcmVzc2Vz
IHRoZSBpc3N1ZSBieSB0cmFuc2ZlcnJpbmcgdGhlIG5ldHdvcmsgbG9hZAorICAgICAgICBpbiB0
aGUgbmV0d29yayBwcm9jZXNzIGZyb20gdGhlIG9sZCBXZWJQcm9jZXNzIHRvIHRoZSBuZXcgV2Vi
UHJvY2VzcyB3aGVuIHByb2Nlc3MKKyAgICAgICAgc3dhcHBpbmcuCisKKyAgICAgICAgV2hlbiB0
aGUgVUlQcm9jZXNzIGRlY2lkZXMgdG8gcHJvY2Vzcy1zd2FwIG9uIHJlc3BvbnNlIHBvbGljeSBk
ZWNpc2lvbiwgaXQgZmlyc3QKKyAgICAgICAgc2VuZHMgSVBDIHRvIHRoZSBuZXR3b3JrIHByb2Nl
c3MgdG8gYXNrIGl0IHRvIHByZXBhcmUgdGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAg
ICBmb3Igb3duZXJzaGlwIHRyYW5zZmVyLiBUaGUgbmV0d29yayBwcm9jZXNzIHRha2VzIHRoZSBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgZnJvbSBpdHMgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgYW5kIHN0b3JlcyBpdCBpbiBhIHRlbXBvcmFyeSBjYWNoZSwgdGhlbgorICAg
ICAgICByZXNwb25kcyB0byB0aGUgVUlQcm9jZXNzIHdpdGggdGhlIE5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyIG9mIHRoZSBsb2FkZXIuCisgICAgICAgIFVwb24gcmVjZWl2aW5nIHRoZSBy
ZXNwb25zZSwgdGhlIFVJUHJvY2VzcyBwcm9jZWVkcyB3aXRoIHRoZSBwcm9jZXNzLXN3YXAsIGl0
CisgICAgICAgIHJlamVjdHMgcmVzcG9uc2UgcHJvY2Vzc2luZyBpbiB0aGUgb2xkIHByb2Nlc3Mg
YW5kIGRvZXMgYSBsb2FkUmVxdWVzdCBpbiBhIG5ldworICAgICAgICBXZWJQcm9jZXNzLiBXaGVu
IHN0YXJ0aW5nIHNlbmRpbmcgdGhlIExvYWRSZXF1ZXN0IElQQyB0byB0aGUgbmV3IFdlYlByb2Nl
c3MsIGl0CisgICAgICAgIHBhc3NlcyBhbG9uZyB0aGUgTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXIgb2YgdGhlIGNhY2hlZCBsb2FkZXIgaW4gdGhlIG5ldHdvcmsKKyAgICAgICAgcHJvY2Vz
cy4gV2hlbiB0aGUgV2ViUHJvY2VzcyBlbmRzIHVwIHNjaGVkdWxpbmcgdGhlIGxvYWQgd2l0aCB0
aGUgbmV0d29yayBwcm9jZXNzLAorICAgICAgICBpdCBwYXNzZXMgYWdhaW4gdGhlIE5ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLiBVcG9uIHJlY2VpdmluZyB0aGUgbG9hZCByZXF1ZXN0LAor
ICAgICAgICB0aGUgbmV0d29yayBwcm9jZXNzIGNoZWNrcyBpZiBhIE5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyIGlzIHByb3ZpZGVkIGZvcgorICAgICAgICBjb250aW51aW5nIGEgbG9hZC4g
SWYgbm9uZSBpcyBwcm92aWRlZCwgd2UgdXNlIHRoZSByZWd1bGFyIGNvZGUgcGF0aCBhbmQgYWN0
dWFsbHkKKyAgICAgICAgY29uc3RydWN0IGEgbmV3IE5ldHdvcmtSZXNvdXJjZUxvYWRlci4gSG93
ZXZlciwgaWYgYSBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcgorICAgICAgICBpcyBwcm92
aWRlZCwgd2UgdGFrZSB0aGUgY29ycmVzcG9uZGluZyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgZnJv
bSB0aGUgY2FjaGUsCisgICAgICAgIHRyYW5zZmVyIGl0IHRvIHRoZSBuZXcgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgYW5kIGhhdmUgaXQgc2VuZCB0aGUKKyAgICAgICAgRGlkUmVjZWl2
ZVJlc3BvbnNlIElQQyB0byB0aGUgV2ViUHJvY2VzcyB0byBjb250aW51ZSB0aGUgbG9hZCB3aXRo
IHRoZSBuZXcKKyAgICAgICAgV2ViUHJvY2Vzcy4KKworICAgICAgICBUZXN0OiBodHRwL3dwdC9j
cm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXIuaHRtbAor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
Q2xlYW51cFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnRyYW5zZmVyS2VwdEFsaXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNlTG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0YWtlTmV0d29y
a1Jlc291cmNlTG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OkNh
Y2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Q2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OkNhY2hlZE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6dGFrZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpDYWNo
ZWROZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmV4cGlyYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnRha2VMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NUcmFu
c2Zlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlTG9hZEZvcldl
YlByb2Nlc3NUcmFuc2Zlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyYW5zZmVyVG9OZXdXZWJQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJ
bnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JY
RnJhbWVPcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
aG91bGRJbnRlcnJ1cHROYXZpZ2F0aW9uRm9yQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0V29y
a2VyTG9hZEZvckNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRp
b24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFkZENv
bnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
ZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpzZW5kVG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFNoYXJlZC9M
b2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNp
b25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5h
dmlnYXRpb25TaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRpbnVl
TmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMjEtMDgtMjYgIEtp
bW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdGVHcmFw
aGljc0NvbnRleHRHTCByZWZlcnMgdG8gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNpbXVsYXRl
ZEV2ZW50Rm9yVGVzdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkOTYyYTk4
YWY1NDY3NTQ0ZmI0MDg3YzQ4MWFhMjJlYTdlYTVmNjIwLi4xOWViZjViMGIxZjgyOGNjZGY1Nzhk
Mzc5MjI4ZjhjMjYzNzlmODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtODUs
NiArODUsNyBAQAogI2VuZGlmCiAKICNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhjaGFu
bmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJZGVu
dGlmaWVyPSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6IiBmbXQs
IHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikg
UkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUi
IFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIHdl
YlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKIAogI2RlZmlu
ZSBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE5FVFdPUktfUFJPQ0VT
U19NRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCAodm9pZCkwKQogI2RlZmluZSBO
RVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKGFzc2VydGlvbiwgY29tcGxl
dGlvbikgZG8geyBcCkBAIC0xNjYsNyArMTY3LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFuZ2VkKGJvb2wgaGFzVXBsb2FkKQogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIo
TmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQobG9h
ZGVyLmlkZW50aWZpZXIoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobG9hZGVyLmNvcmVJZGVudGlm
aWVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlm
IChsb2FkZXIuaXNLZXB0QWxpdmUoKSkgewpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xlYW51cFJlc291cmNlTG9hZGVyKE5ldHdv
cmtSZXNvdXJjZUxvYWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX25l
dHdvcmtSZXNvdXJjZUxvYWRlcnMuZ2V0KGxvYWRlci5pZGVudGlmaWVyKCkpID09ICZsb2FkZXIp
OwotICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5yZW1vdmUobG9hZGVyLmlkZW50aWZpZXIo
KSk7CisgICAgQVNTRVJUKG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5nZXQobG9hZGVyLmNvcmVJ
ZGVudGlmaWVyKCkpID09ICZsb2FkZXIpOworICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5y
ZW1vdmUobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp0cmFuc2ZlcktlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9h
ZGVyJiBsb2FkZXIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
ICAgIEFTU0VSVChsb2FkZXIuaXNLZXB0QWxpdmUoKSk7Ci0gICAgQVNTRVJUKG1fbmV0d29ya1Jl
c291cmNlTG9hZGVycy5nZXQobG9hZGVyLmlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7Ci0gICAg
aWYgKGF1dG8gdGFrZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2Fk
ZXIuaWRlbnRpZmllcigpKSkKKyAgICBBU1NFUlQobV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmdl
dChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7CisgICAgaWYgKGF1dG8gdGFr
ZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2FkZXIuY29yZUlkZW50
aWZpZXIoKSkpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZEtlcHRBbGl2ZUxvYWQodGFr
ZW5Mb2FkZXIucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTQ4NiwyNyArNDg3LDM4IEBAIHN0
ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y3JlYXRlRmV0CiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiYgbG9hZFBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpCiB7Ci0gICAgQ09OTkVDVElPTl9SRUxFQVNF
X0xPRyhMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJjZUxvYWQ6IChwYXJlbnRQSUQ9JWQsIHBhZ2VQ
cm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIpIiwgbG9hZFBhcmFtZXRlcnMucGFyZW50UElE
LCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVy
cy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2
NCgpLCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0Vf
TE9HKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDogKHBhcmVudFBJRD0lZCwgcGFnZVBy
b3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZT0lIiBQ
Ukl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQsIGxvYWRQYXJhbWV0ZXJzLndlYlBh
Z2VQcm94eUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUudmFsdWVfb3IoTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNl
c3Npb24obV9zZXNzaW9uSUQpOwogICAgIGlmICghc2VydmVyLmlzSW1wb3J0Q29tcGxldGVkKCkp
IHsKLSAgICAgICAgc2VydmVyLndoZW5JbXBvcnRJc0NvbXBsZXRlZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkUGFyYW1ldGVycyA9IFdURk1vdmUobG9hZFBhcmFt
ZXRlcnMpXSgpIG11dGFibGUgeworICAgICAgICBzZXJ2ZXIud2hlbkltcG9ydElzQ29tcGxldGVk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGxvYWRQYXJhbWV0ZXJzID0g
V1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWVdKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NDb25uZWN0
aW9uKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24obV9z
ZXNzaW9uSUQpLmlzSW1wb3J0Q29tcGxldGVkKCkpOwotICAgICAgICAgICAgc2NoZWR1bGVSZXNv
dXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycykpOworICAgICAgICAgICAgc2NoZWR1bGVS
ZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0aW5nTG9hZGVyVG9SZXN1
bWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorCiAgICAg
YXV0byBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcjsKICAgICBSRUxFQVNF
X0FTU0VSVChpZGVudGlmaWVyKTsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMoaWRlbnRp
ZmllcikpOwogCisgICAgaWYgKGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpIHsKKyAgICAgICAgaWYg
KGF1dG8gZXhpc3RpbmdMb2FkZXIgPSBuZXR3b3JrUHJvY2VzcygpLnRha2VMb2FkZXJBd2FpdGlu
Z1dlYlByb2Nlc3NUcmFuc2ZlcigqZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZSkpIHsKKyAgICAgICAg
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coTG9hZGluZywgInNjaGVkdWxlUmVzb3VyY2VMb2Fk
OiBSZXN1bWluZyBleGlzdGluZyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIiKTsKKyAgICAgICAgICAg
IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5hZGQoaWRlbnRpZmllciwgKmV4aXN0aW5nTG9hZGVy
KTsKKyAgICAgICAgICAgIGV4aXN0aW5nTG9hZGVyLT50cmFuc2ZlclRvTmV3V2ViUHJvY2Vzcygq
dGhpcywgaWRlbnRpZmllcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJj
ZUxvYWQ6IENvdWxkIG5vdCBmaW5kIGV4aXN0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciB0byBy
ZXN1bWUsIHdpbGwgZG8gYSBmcmVzaCBsb2FkIik7CisgICAgfQorCiAgICAgYXV0byYgbG9hZGVy
ID0gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZShXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgKnRoaXMpKS5pdGVyYXRv
ci0+dmFsdWU7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0xMjY5LDYgKzEyODEs
MTEgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJpb3JpdGl6ZVJlc291
cmNlTG9hZHMoVmVjdG9yPFJlc291cmNlTG9hZEkKICAgICBzZXNzaW9uLT5uZXR3b3JrTG9hZFNj
aGVkdWxlcigpLnByaW9yaXRpemVMb2Fkcyhsb2Fkcyk7CiB9CiAKK1JlZlB0cjxOZXR3b3JrUmVz
b3VyY2VMb2FkZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0YWtlTmV0d29ya1Jl
c291cmNlTG9hZGVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpCit7CisgICAgcmV0
dXJuIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy50YWtlKHJlc291cmNlTG9hZElkZW50aWZpZXIp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFT
RV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA1ZTA3MDkxZTM3MzZkZTM1MjE5MmNm
ZTc4Njc5Y2I2MjJiMjNkZjJmLi5mNGEwYWI3MTkzZWZjNmNmZmFjNjBmZWZjZGNkMzhmYmFlOWYw
OTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNs
dWRlICJOZXR3b3JrTUROU1JlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1JUQ1Byb3ZpZGVy
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmgiCiAjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIK
ICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBAIC0xODYsNiArMTg3LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChXZWJDb3JlOjpIVFRQQ29va2ll
QWNjZXB0UG9saWN5KTsKIAogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpN
ZXNzYWdlU291cmNlLCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
KyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29ya1Jlc291cmNlTG9h
ZGVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZp
ZXIpOwpAQCAtMjAzLDcgKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpOwogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVm
PElQQzo6RW5jb2Rlcj4mKTsKIAotICAgIHZvaWQgc2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7CisgICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9h
ZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ0xvYWRlclRvUmVzdW1lKTsKICAgICB2b2lk
IHBlcmZvcm1TeW5jaHJvbm91c0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25v
dXNMb2FkRGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgdGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNN
ZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VGVzdFByb2Nlc3NJbmNvbWlu
Z1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVsYXllZFJlcGx5JiYpOwogICAg
IHZvaWQgbG9hZFBpbmcoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiZTkyNDRlODZmY2RlMzVj
OThjNjBjNzA0Y2JhZWYyNDAyZmQwZDZhLi43M2YzZTg5MTYyOWUyMjM0NDllNDc1MzJkZDE0MjQ3
MzVlM2Q0YjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTIyLDcgKzIyLDcgQEAKIAogbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCi0gICAgU2NoZWR1bGVSZXNvdXJjZUxvYWQoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKQor
ICAgIFNjaGVkdWxlUmVzb3VyY2VMb2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVycywgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ0xvYWRlclRvUmVzdW1lKQogICAgIFBl
cmZvcm1TeW5jaHJvbm91c0xvYWQoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cyByZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJv
ciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGEpIFN5bmNocm9ub3VzCiAgICAgVGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5X
YWl0aW5nRm9yU3luY1JlcGx5KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQp
IC0+IChib29sIGhhbmRsZWQpIFN5bmNocm9ub3VzCiAgICAgTG9hZFBpbmcoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA1ZDY4
MjliMjg4MDI1NGJkMDExMzEwYTlmZDI5ZDc4NWVkYjZlMDU1Li4xNDBiNzIzZWUyZTBlNDZmYmVl
MjE2YTExZTIyN2IyYTI5YzI2ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTE5LDYgKzExOSw4IEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCitjb25zdGV4cHIgU2Vjb25kcyBjYWNo
ZWROZXR3b3JrUmVzb3VyY2VMb2FkZXJMaWZldGltZSB7IDMwX3MgfTsKKwogc3RhdGljIHZvaWQg
Y2FsbEV4aXRTb29uKElQQzo6Q29ubmVjdGlvbiopCiB7CiAgICAgLy8gSWYgdGhlIGNvbm5lY3Rp
b24gaGFzIGJlZW4gY2xvc2VkIGFuZCB3ZSBoYXZlbid0IHJlc3BvbmRlZCBpbiB0aGUgbWFpbiB0
aHJlYWQgZm9yIDEwIHNlY29uZHMKQEAgLTI4MTUsNiArMjgxNyw0OCBAQCBSVENEYXRhQ2hhbm5l
bFJlbW90ZU1hbmFnZXJQcm94eSYgTmV0d29ya1Byb2Nlc3M6OnJ0Y0RhdGFDaGFubmVsUHJveHko
KQogfQogI2VuZGlmCiAKK05ldHdvcmtQcm9jZXNzOjpDYWNoZWROZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OkNhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcihSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVy
PiYmIGxvYWRlcikKKyAgICA6IG1fZXhwaXJhdGlvblRpbWVyKCp0aGlzLCAmQ2FjaGVkTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpleHBpcmF0aW9uVGltZXJGaXJlZCkKKyAgICAsIG1fbG9hZGVyKFdU
Rk1vdmUobG9hZGVyKSkKK3sKKyAgICBtX2V4cGlyYXRpb25UaW1lci5zdGFydE9uZVNob3QoY2Fj
aGVkTmV0d29ya1Jlc291cmNlTG9hZGVyTGlmZXRpbWUpOworfQorCitSZWY8TmV0d29ya1Jlc291
cmNlTG9hZGVyPiBOZXR3b3JrUHJvY2Vzczo6Q2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0
YWtlTG9hZGVyKCkKK3sKKyAgICByZXR1cm4gbV9sb2FkZXIucmVsZWFzZU5vbk51bGwoKTsKK30K
Kwordm9pZCBOZXR3b3JrUHJvY2Vzczo6Q2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyOjpleHBp
cmF0aW9uVGltZXJGaXJlZCgpCit7CisgICAgYXV0byBsb2FkZXIgPSBtX2xvYWRlci0+Y29ubmVj
dGlvblRvV2ViUHJvY2VzcygpLm5ldHdvcmtQcm9jZXNzKCkudGFrZUxvYWRlckF3YWl0aW5nV2Vi
UHJvY2Vzc1RyYW5zZmVyKG1fbG9hZGVyLT5pZGVudGlmaWVyKCkpOworICAgIEFTU0VSVF9VTlVT
RUQobG9hZGVyLCBsb2FkZXIpOworfQorCitSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBO
ZXR3b3JrUHJvY2Vzczo6dGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKE5ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBjYWNoZWRS
ZXNvdXJjZUxvYWRlciA9IG1fbG9hZGVyc0F3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyLnRha2Uo
aWRlbnRpZmllcik7CisgICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNhY2hlZFJlc291cmNlTG9hZGVyLT50YWtlTG9hZGVy
KCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1Ry
YW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNvdXJjZVByb2Nlc3NJZGVudGlmaWVy
LCB1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQocmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CisgICAg
YXV0byogY29ubmVjdGlvbiA9IHdlYlByb2Nlc3NDb25uZWN0aW9uKHNvdXJjZVByb2Nlc3NJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6Om51bGxvcHQpOworCisgICAgYXV0byBsb2FkZXIgPSBjb25uZWN0aW9uLT50
YWtlTmV0d29ya1Jlc291cmNlTG9hZGVyKHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgIGlm
ICghbG9hZGVyKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0
KTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9IGxvYWRlci0+aWRlbnRpZmllcigpOworICAgIG1f
bG9hZGVyc0F3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyLmFkZChpZGVudGlmaWVyLCBtYWtlVW5p
cXVlPENhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4obG9hZGVyLnJlbGVhc2VOb25OdWxsKCkp
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihpZGVudGlmaWVyKTsKK30KKwogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6YWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VOZXR3b3JrUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgYXV0byBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAppbmRleCBlYTkxZWQ1OTQwM2U0OWZlMjdkYTY4MTkzMTY3MWU5NmZmN2JmOWE3Li40MmUy
MDNjNzBmYzM3ZjQzYTc3ODNkZDc5ZjE0ZmIyZDU2Y2M5NmViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKKyNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0Rh
dGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgIldlYklEQlNlcnZlci5oIgpAQCAtMzg5LDYgKzM5MCw4IEBAIHB1Ymxp
YzoKICAgICBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eSYgcnRjRGF0YUNoYW5uZWxQ
cm94eSgpOwogI2VuZGlmCiAKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtl
TG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIoTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXIpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1By
b2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApAQCAtNDIy
LDYgKzQyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9j
ZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBD
OjpFbmNvZGVyPiYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50
PiYmLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJik7CisgICAgdm9pZCBwcmVw
YXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBz
b3VyY2VQcm9jZXNzSWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyPik+JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lv
bklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb24+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhJiYpPiYmKTsKICAg
ICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKQEAgLTYwOSw2ICs2MTMsMTkgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpVc2VyQ29udGVudFVSTFBhdHRl
cm4+PiBtX2V4dGVuc2lvbkNPUlNEaXNhYmxpbmdQYXR0ZXJuczsKIAorICAgIGNsYXNzIENhY2hl
ZE5ldHdvcmtSZXNvdXJjZUxvYWRlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQ2FjaGVkTmV0d29ya1Jlc291cmNlTG9h
ZGVyKFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+JiYpOworICAgICAgICBSZWY8TmV0d29ya1Jl
c291cmNlTG9hZGVyPiB0YWtlTG9hZGVyKCk7CisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBl
eHBpcmF0aW9uVGltZXJGaXJlZCgpOworICAgICAgICBXZWJDb3JlOjpUaW1lciBtX2V4cGlyYXRp
b25UaW1lcjsKKyAgICAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7
CisgICAgfTsKKworICAgIEhhc2hNYXA8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIsIHN0
ZDo6dW5pcXVlX3B0cjxDYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXI+PiBtX2xvYWRlcnNBd2Fp
dGluZ1dlYlByb2Nlc3NUcmFuc2ZlcjsKKwogICAgIGJvb2wgbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50
RGVidWdNb2RlRW5hYmxlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZDc5OTc0
NTFjNDU0MGNjM2Q3NTY1MzQ4Yzc2YTIzNDQ5MTM4MmY5YS4uY2FlYjhkOWJiODQ4YzY5MDBhZTk1
NTVkMDc1OWY5MmQ1OWJmMjQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xOTUsNiArMTk1LDggQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsZWFyQXBw
UHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkg
QXN5bmMKICNlbmRpZgogCisgICAgUHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90
IHJlc291cmNlTG9hZElkZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXI+IG5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyKSBB
c3luYworCiAgICAgQWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpX
ZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMgcGFyYW1ldGVycykKICAgICBSZW1vdmVXZWJQYWdlTmV0
d29ya1BhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlEKQogICAgIENvdW50Tm9uRGVmYXVsdFNlc3Npb25TZXRzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKHNpemVfdCBjb3VudCkgQXN5bmMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCA4MmYxZTUzMDE0NGZhMGZmMmRhYjExZTY0NGMwOWI3ZjY4NjFhMDAwLi4yOTZkNDUx
MDJiZDE4ZDNmZWZkY2YzMDE1NDM3ZmQ4YzNmYzBlMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MjIs
NiArNTIyLDE2IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgY2xl
YW51cChMb2FkUmVzdWx0OjpDYW5jZWwpOwogfQogCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6dHJhbnNmZXJUb05ld1dlYlByb2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IG5ld0Nvbm5lY3Rpb24sIFJlc291cmNlTG9hZElkZW50aWZpZXIgbmV3Q29yZUlkZW50aWZpZXIp
Cit7CisgICAgbV9jb25uZWN0aW9uID0gbmV3Q29ubmVjdGlvbjsKKyAgICBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllciA9IG5ld0NvcmVJZGVudGlmaWVyOworCisgICAgQVNTRVJUKG1fcmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciB8fCBtX2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2UgfHwgbV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKTsKKyAgICBib29sIHdpbGxX
YWl0Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgPSB0cnVlOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyBtX3Jlc3BvbnNlLCB3
aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIH0pOworfQorCiBib29sIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29u
c3QgU3RyaW5nJiB4RnJhbWVPcHRpb25zLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoaXNN
YWluRnJhbWVMb2FkKCkpCkBAIC01NDYsMTIgKzU1NiwxMiBAQCBib29sIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5n
JiB4RgogICAgIH0KICAgICBjYXNlIFhGcmFtZU9wdGlvbnNEaXNwb3NpdGlvbjo6Q29uZmxpY3Q6
IHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9ICJNdWx0aXBsZSAnWC1GcmFtZS1PcHRp
b25zJyBoZWFkZXJzIHdpdGggY29uZmxpY3RpbmcgdmFsdWVzICgnIiArIHhGcmFtZU9wdGlvbnMg
KyAiJykgZW5jb3VudGVyZWQgd2hlbiBsb2FkaW5nICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCgpICsgIicuIEZhbGxpbmcgYmFjayB0byAnREVOWScuIjsKLSAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJv
ck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBl
cnJvck1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBjYXNlIFhGcmFtZU9wdGlvbnNEaXNw
b3NpdGlvbjo6SW52YWxpZDogewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIkludmFs
aWQgJ1gtRnJhbWUtT3B0aW9ucycgaGVhZGVyIGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiAr
IHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInOiAnIiArIHhGcmFtZU9w
dGlvbnMgKyAiJyBpcyBub3QgYSByZWNvZ25pemVkIGRpcmVjdGl2ZS4gVGhlIGhlYWRlciB3aWxs
IGJlIGlnbm9yZWQuIjsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29s
ZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29u
c29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpT
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyKCkgfSwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgfQpAQCAtNTc4LDcgKzU4OCw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91
bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvCiAgICAgICAg
IFN0cmluZyB4RnJhbWVPcHRpb25zID0gbV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OlhGcmFtZU9wdGlvbnMpOwogICAgICAgICBpZiAoIXhGcmFtZU9wdGlvbnMuaXNO
dWxsKCkgJiYgc2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoeEZyYW1lT3B0aW9u
cywgcmVzcG9uc2UudXJsKCkpKSB7CiAgICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0g
bWFrZVN0cmluZygiUmVmdXNlZCB0byBkaXNwbGF5ICciLCByZXNwb25zZS51cmwoKS5zdHJpbmdD
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIicgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAn
WC1GcmFtZS1PcHRpb25zJyB0byAnIiwgeEZyYW1lT3B0aW9ucywgIicuIik7Ci0gICAgICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQp
OworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2Ug
eyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyKCkgfSwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTU5NSw3ICs2MDUsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hv
dWxkSW50ZXJydXB0TmF2aWdhdGlvbkZvckNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpYwogICAgICAg
ICBhdXRvIHJlc3BvbnNlQ09FUCA9IFdlYkNvcmU6Om9idGFpbkNyb3NzT3JpZ2luRW1iZWRkZXJQ
b2xpY3kocmVzcG9uc2UsIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4tPmlzUG90ZW50aWFsbHlU
cnVzdHdvcnRoeSgpID8gSXNTZWN1cmVDb250ZXh0OjpZZXMgOiBJc1NlY3VyZUNvbnRleHQ6Ok5v
KTsKICAgICAgICAgaWYgKHJlc3BvbnNlQ09FUC52YWx1ZSAhPSBXZWJDb3JlOjpDcm9zc09yaWdp
bkVtYmVkZGVyUG9saWN5VmFsdWU6OlJlcXVpcmVDT1JQKSB7CiAgICAgICAgICAgICBTdHJpbmcg
ZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0byBkaXNwbGF5ICciLCByZXNwb25z
ZS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIicgaW4gYSBmcmFtZSBi
ZWNhdXNlIG9mIENyb3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3kuIik7Ci0gICAgICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwor
ICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAg
IH0KQEAgLTYxMSw3ICs2MjEsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxk
SW50ZXJydXB0V29ya2VyTG9hZEZvckNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpYwogICAgICAgICBh
dXRvIHJlc3BvbnNlQ09FUCA9IFdlYkNvcmU6Om9idGFpbkNyb3NzT3JpZ2luRW1iZWRkZXJQb2xp
Y3kocmVzcG9uc2UsIG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4tPmlzUG90ZW50aWFsbHlUcnVz
dHdvcnRoeSgpID8gSXNTZWN1cmVDb250ZXh0OjpZZXMgOiBJc1NlY3VyZUNvbnRleHQ6Ok5vKTsK
ICAgICAgICAgaWYgKHJlc3BvbnNlQ09FUC52YWx1ZSAhPSBXZWJDb3JlOjpDcm9zc09yaWdpbkVt
YmVkZGVyUG9saWN5VmFsdWU6OlJlcXVpcmVDT1JQKSB7CiAgICAgICAgICAgICBTdHJpbmcgZXJy
b3JNZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0byBsb2FkICciLCByZXNwb25zZS51cmwo
KS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIicgd29ya2VyIGJlY2F1c2Ugb2Yg
Q3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeS4iKTsKLSAgICAgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
ICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNz
YWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFn
ZUlEKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtNjMw
LDcgKzY0MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgaWYgKHNob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpICYmIG1fbmV0d29ya0xvYWRDaGVja2VyKSB7CiAg
ICAgICAgIGF1dG8gaW5mb3JtYXRpb24gPSBtX25ldHdvcmtMb2FkQ2hlY2tlci0+dGFrZU5ldHdv
cmtMb2FkSW5mb3JtYXRpb24oKTsKICAgICAgICAgaW5mb3JtYXRpb24ucmVzcG9uc2UgPSBtX3Jl
c3BvbnNlOwotICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb24o
aWRlbnRpZmllcigpLCBXVEZNb3ZlKGluZm9ybWF0aW9uKSk7CisgICAgICAgIG1fY29ubmVjdGlv
bi0+YWRkTmV0d29ya0xvYWRJbmZvcm1hdGlvbihjb3JlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGlu
Zm9ybWF0aW9uKSk7CiAgICAgfQogCiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxh
Y2UgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5k
IGJ1ZmZlcmluZyB3b3VsZCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCkBAIC03NTgsNyArNzY4
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRp
ZEZpbmlzaExvYWRpbmc6IChudW1CeXRlc1JlY2VpdmVkPSV6ZCwgaGFzQ2FjaGVFbnRyeUZvclZh
bGlkYXRpb249JWQpIiwgbV9udW1CeXRlc1JlY2VpdmVkLCAhIW1fY2FjaGVFbnRyeUZvclZhbGlk
YXRpb24pOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygp
KQotICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb25NZXRyaWNz
KGlkZW50aWZpZXIoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgbV9jb25uZWN0aW9u
LT5hZGROZXR3b3JrTG9hZEluZm9ybWF0aW9uTWV0cmljcyhjb3JlSWRlbnRpZmllcigpLCBuZXR3
b3JrTG9hZE1ldHJpY3MpOwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsK
ICAgICAgICAgLy8gMzA0IE5vdCBNb2RpZmllZApAQCAtODAxLDcgKzgxMSw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsTG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKICAgICBVTlVTRURfVkFSSUFCTEUod2FzU2VydmljZVdvcmtlckxvYWQpOwogCiAgICAg
aWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpKQotICAgICAgICBtX2Nv
bm5lY3Rpb24tPnJlbW92ZU5ldHdvcmtMb2FkSW5mb3JtYXRpb24oaWRlbnRpZmllcigpKTsKKyAg
ICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGNvcmVJZGVu
dGlmaWVyKCkpOwogCiAgICAgQVNTRVJUKCFlcnJvci5pc051bGwoKSk7CiAKQEAgLTEyMDIsOSAr
MTIxMiwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDYWNoZUVu
dHJ5KHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OgogICAgIExPQURFUl9SRUxFQVNFX0xP
RygiZGlkUmV0cmlldmVDYWNoZUVudHJ5OiBTZW5kaW5nIFdlYlJlc291cmNlTG9hZGVyOjpEaWRS
ZWNlaXZlUmVzcG9uc2UgSVBDIChuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2Fn
ZT0lZCkiLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3Bv
bnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsKIAotICAgIGlm
IChuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKKyAgICBpZiAobmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpIHsKKyAgICAgICAgbV9yZXNwb25zZSA9
IFdURk1vdmUocmVzcG9uc2UpOwogICAgICAgICBtX2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2UgPSBXVEZNb3ZlKGVudHJ5KTsKLSAgICBlbHNlIHsKKyAgICB9
IGVsc2UgewogICAgICAgICBzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7
CiAgICAgICAgIGNsZWFudXAoTG9hZFJlc3VsdDo6U3VjY2Vzcyk7CiAgICAgfQpAQCAtMTM1OSw3
ICsxMzcwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0
aW9uKCkgY29uc3QKICAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBtX2Nvbm5lY3Rp
b24tPm5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKCkpOwogICAgIEFT
U0VSVChuZXR3b3JrU3RvcmFnZVNlc3Npb24pOwogCi0gICAgbG9nQ29va2llSW5mb3JtYXRpb24o
bV9jb25uZWN0aW9uLCAiTmV0d29ya1Jlc291cmNlTG9hZGVyIiwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG9yaWdpbmFsUmVxdWVz
dCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKG9yaWdpbmFs
UmVxdWVzdCgpKSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0
dHBSZWZlcnJlcigpLCBmcmFtZUlEKCksIHBhZ2VJRCgpLCBpZGVudGlmaWVyKCkpOworICAgIGxv
Z0Nvb2tpZUluZm9ybWF0aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLCBvcmlnaW5hbFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUlu
Zm86OmNyZWF0ZShvcmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBv
cmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgY29y
ZUlkZW50aWZpZXIoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1h
dGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9u
YWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCkBAIC0xNDYzLDcgKzE0NzQsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlIG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZykKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCAgbWVzc2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBtZXNzYWdlLCBpZGVudGlmaWVyKCkg
fSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIG1lc3NhZ2VTb3Vy
Y2UsIG1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlEKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRDU1BW
aW9sYXRpb25SZXBvcnQoVVJMJiYgcmVwb3J0VVJMLCBSZWY8Rm9ybURhdGE+JiYgcmVwb3J0KQpA
QCAtMTUzNCw3ICsxNTQ1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlcnZpY2VX
b3JrZXJEaWROb3RIYW5kbGUoU2VydmljZVdvcmtlckZldGNoVGFzayogZmUKICAgICBSRUxFQVNF
X0FTU0VSVChtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2suZ2V0KCkgPT0gZmV0Y2hUYXNrKTsKICAg
ICBpZiAobV9wYXJhbWV0ZXJzLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01v
ZGU6Ok9ubHkpIHsKICAgICAgICAgTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SKCJzZXJ2aWNlV29y
a2VyRGlkTm90SGFuZGxlOiBBYm9ydGluZyBsb2FkIGJlY2F1c2UgdGhlIHNlcnZpY2Ugd29ya2Vy
IGRpZCBub3QgaGFuZGxlIHRoZSBsb2FkIGFuZCBzZXJ2aWNlV29ya2VyTW9kZSBvbmx5IGFsbG93
cyBzZXJ2aWNlIHdvcmtlcnMiKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OlNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUgeyB9LCBpZGVudGlmaWVyKCkpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6U2VydmljZVdvcmtlckRpZE5v
dEhhbmRsZSB7IH0sIGNvcmVJZGVudGlmaWVyKCkpOwogICAgICAgICBhYm9ydCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggY2VmNjU0NzliN2U2YmNmZjI1Y2ZmMDE4MjVj
MmJkM2EwYzc2ODdlZi4uZDkyZDMwMzhhMWRlZjEzMWI4YzA0ZDVkY2Y0NWFkMWQ1NTU4M2NjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5oCkBAIC04NSwxOSArODUsMjMgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnQoKTsK
ICAgICB2b2lkIGFib3J0KCk7CiAKKyAgICB2b2lkIHRyYW5zZmVyVG9OZXdXZWJQcm9jZXNzKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CisK
ICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtSZXNv
dXJjZUxvYWRlck1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKICAg
ICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IG5ld1JlcXVlc3QsIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMpOwogCisg
ICAgdm9pZCBzZXRSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Up
IHsgbV9yZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9
CiAKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbjsgfQogICAgIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi0+c2Vzc2lvbklEKCk7IH0K
LSAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X3BhcmFtZXRlcnMuaWRlbnRpZmllcjsgfQorICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgY29y
ZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcjsgfQog
ICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQ7IH0KICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2ViUGFnZUlEOyB9CiAgICAgY29uc3Qg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVy
biBtX3BhcmFtZXRlcnM7IH0KKyAgICBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRJRDsgfQogCiAgICAgTmV0d29y
a0NhY2hlOjpHbG9iYWxGcmFtZUlEIGdsb2JhbEZyYW1lSUQoKSB7IHJldHVybiB7IG1fcGFyYW1l
dGVycy53ZWJQYWdlUHJveHlJRCwgcGFnZUlEKCksIGZyYW1lSUQoKSB9OyB9CiAKQEAgLTIxMCw3
ICsyMTQsNyBAQCBwcml2YXRlOgogCiAgICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJ
bmZvKCk7CiAKLSAgICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBtX3BhcmFt
ZXRlcnM7CisgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwog
CiAgICAgUmVmPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb247CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCBhZjk1MWQ1YTBi
NTlmNjkxNjdiNzA0ZmI0MmIzMGYxYjgwMDFlMjg3Li5kNDU1OTM1MjUzZjc5ZjVjMDQzMWRiYWVl
ZjkyOTMzNjA3MDRlYTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwCkBAIC03OCw3ICs3OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE1lc3NhZ2U+IGJvb2wgU2Vy
dmljZVdvcmtlckZldGNoVGFzazo6c2VuZFRvU2VydmljZVdvcmtlcihNZXNzCiAKIHRlbXBsYXRl
PHR5cGVuYW1lIE1lc3NhZ2U+IGJvb2wgU2VydmljZVdvcmtlckZldGNoVGFzazo6c2VuZFRvQ2xp
ZW50KE1lc3NhZ2UmJiBtZXNzYWdlKQogewotICAgIHJldHVybiBtX2xvYWRlci5jb25uZWN0aW9u
VG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoc3RkOjpmb3J3YXJkPE1lc3NhZ2U+KG1l
c3NhZ2UpLCBtX2xvYWRlci5pZGVudGlmaWVyKCkpOworICAgIHJldHVybiBtX2xvYWRlci5jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoc3RkOjpmb3J3YXJkPE1lc3Nh
Z2U+KG1lc3NhZ2UpLCBtX2xvYWRlci5jb3JlSWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24m
IHNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKQpAQCAtMTYyLDYgKzE2Miw4IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgYm9vCiAKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6
U291cmNlOjpTZXJ2aWNlV29ya2VyKTsKICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJl
c291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CisgICAgaWYgKG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQorICAgICAgICBtX2xvYWRlci5zZXRSZXNwb25zZShXVEZN
b3ZlKHJlc3BvbnNlKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWRE
YXRhTGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGVj
YTExYTNhMDBjMjM0Mzc1MDdlMDFkOTZjYjBlNDk4MTAxODY0YzQuLjM0NmY3ZDhkODQ1MGI2ZmJk
MGU4MDY2MWYxMGRjYmU1OTU5ODUyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1l
dGVycy5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGxvY2tCYWNrRm9yd2Fy
ZExpc3Q7CiAgICAgZW5jb2RlciA8PCBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAg
ICAgZW5jb2RlciA8PCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGVuY29kZXIg
PDwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOwogICAgIGVu
Y29kZXIgPDwgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OwogCiAgICAgcGxhdGZvcm1FbmNvZGUo
ZW5jb2Rlcik7CkBAIC0xMzcsNiArMTM4LDkgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAgICAgCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zZXNzaW9uSGlz
dG9yeVZpc2liaWxpdHkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
TG9hZFBhcmFtZXRlcnMuaAppbmRleCBlNWM1N2IwNDA0OWM4YjIwYjZiZDYxMWNmYzhmNmIwMWY3
OGMwN2ZjLi4wYzA1NDBiMDQ2ZTRhMWNjNGIxOTE1ZGVhMTM0MGY5ZGEwNjZjYjEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNpbmNs
dWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKQEAgLTc0LDYg
Kzc1LDcgQEAgc3RydWN0IExvYWRQYXJhbWV0ZXJzIHsKICAgICBXZWJDb3JlOjpTdWJzdGl0dXRl
RGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSB7
IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OlZpc2li
bGUgfTsKICAgICBTdHJpbmcgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAgIHN0
ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW47CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
Zmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOwogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZGF0YURldGVj
dGlvbkNvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2NzFhZGQ0YWEyN2NkMTdlYmI2NzkwZWZl
MTZhNTVhMWMxNDM2NmViLi5iMWFjM2Q0MzhhMmVhMDQ0MGNmMjNjYWE0NzVkNDc5ZjY5OWY3Yjky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKQEAgLTQ3NSw2ICs0NzUsMTcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojp0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNv
cmU6OlAKICAgICB9CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRG
b3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJv
Y2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2Fw
cGluZywgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNz
VHJhbnNmZXI6IHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyOiAlIiBQUkl1NjQgIiwgcmVzb3VyY2VM
b2FkSWRlbnRpZmllcjogJSIgUFJJdTY0LCB0aGlzLCBzb3VyY2VQcm9jZXNzSWRlbnRpZmllci50
b1VJbnQ2NCgpLCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlc291cmNlTG9h
ZElkZW50aWZpZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlByZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKHNvdXJjZVByb2Nlc3NJ
ZGVudGlmaWVyLCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFJlc3VsdChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBw
YWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDU4
YThhOGU5NGJmM2NmZTdiZjhjNzc5Nzk4NWNjMTJiZDNhYjY4YmUuLjRlNWJiNDU5YTNkNzJlM2Qx
ZGQ3MGIyZTVlZjIyYmY0NDA4MTcyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5o
IgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb2Nlc3NM
YXVuY2hlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQcm9j
ZXNzVGhyb3R0bGVyQ2xpZW50LmgiCkBAIC0yMTQsNiArMjE1LDggQEAgcHVibGljOgogICAgIHZv
aWQgdGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpU
ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlEZWxh
eWVkUmVwbHkmJik7CiAgICAgdm9pZCB0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgcHJlcGFy
ZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291
cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllcj4pPiYmKTsKKwogICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIGZpbmFs
IHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAgICAgdm9pZCB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9u
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcAppbmRleCA0MWNkMzVkYmZhOGQwZTM0YmQxZWI0OWY1ZDU3NGYyYzM3MDBiZDU4Li43NWE2
NWM0MzM3MDY1NDc4MDBlNjIwYWQwNWY0NTZjMzYwNDFlZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0xNzEsOSArMTcxLDkg
QEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBu
YXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGEKICAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2aWdh
dGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwg
ZGF0YSwgbWltZVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgc2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdl
YnNpdGVQb2xpY2llcyksIG5hdmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5zaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkpOwogfQogCi12
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBz
dGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0
ZVBvbGljaWVzLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBl
eGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpCiB7Ci0gICAgUFJP
VklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVl
c3Q6Iik7CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBw
aW5nLCAibG9hZFJlcXVlc3Q6IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJU
b1Jlc3VtZT0lIiBQUkl1NjQsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJU
b1Jlc3VtZS52YWx1ZV9vcihOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciB7IH0pLnRvVUlu
dDY0KCkpOwogICAgIEFTU0VSVChzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgIT0gV2ViQ29y
ZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObyk7CiAKICAgICAvLyBJZiB0aGlzIGlz
IGEgY2xpZW50LXNpZGUgcmVkaXJlY3QgY29udGludWluZyBpbiBhIG5ldyBwcm9jZXNzLCB0aGVu
IHRoZSBuZXcgcHJvY2VzcyB3aWxsIG92ZXJ3cml0ZSB0aGUgZnJvbUl0ZW0ncyBVUkwuIEluIHRo
aXMgY2FzZSwKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojps
b2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogICAg
IGlmIChuYXZpZ2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRM
aXN0KCkgPT0gV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQogICAgICAgICBuYXZp
Z2F0aW9uLmZyb21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNv
cmVQcm9jZXNzSWRlbnRpZmllcigpKTsKIAotICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZp
Z2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9u
LCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIHNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9s
aWNpZXMpKTsKKyAgICBtX3BhZ2UubG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3By
b2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgV1RGTW92ZShyZXF1ZXN0
KSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3ksIHVzZXJEYXRhLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSwgZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKTsKIH0KIAogdm9pZCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mIG5hdmln
YXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIFJlZlB0cjxBUEk6OldlYnNpdGVQ
b2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMpCkBAIC0zMzAsMTIgKzMzMCwxMiBAQCB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMo
RnJhbWVJZGVudGlmaWVyCiAgICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25Bc3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwg
V1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvKSwgb3JpZ2lu
YXRpbmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShy
ZXF1ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBsaXN0ZW5l
cklEKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8s
IFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVj
dGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJp
YnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlm
ICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNv
cHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRp
ZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBk
b3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRzQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2gsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKKyAgICBtX3BhZ2Uu
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQ
YWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlv
bklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0
ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7
CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVj
dChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlv
blVSTFN0cmluZywgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCAyNzE0YjJhNWI1NDdmMjY2N2Zj
YjQ2ZmNlZjFiNTc4NGZiY2Y1ODEwLi4wYWJlYTlkYTZiYmQyMDExNGZmNTRjMWI4ZDcxY2FmZGJm
NzIzNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUG9saWN5
RGVjaXNpb24uaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgpAQCAtMTA1LDcgKzEwNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgdm9pZCBsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25z
dCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBXZWJDb3JlOjpT
dWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5KTsKLSAgICB2b2lkIGxvYWRS
ZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwg
c3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkUmVx
dWVzdChBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0
ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQsIHN0ZDo6b3B0aW9uYWw8TmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJ
dGVtKEFQSTo6TmF2aWdhdGlvbiYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJ
OjpXZWJzaXRlUG9saWNpZXM+JiYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKQEAgLTEyNCw3ICsx
MjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5j
b2Rlcj4mJiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIHN0ZDo6b3B0aW9uYWw8c3RkOjpw
YWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYp
IGZpbmFsOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMo
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIHN0ZDo6b3B0aW9u
YWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50
NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hv
d01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93
ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEm
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50NjRfdCBtYWlu
UmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENo
YW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJSZWRp
cmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5h
dGlvblVSTFN0cmluZywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgVXNlckRhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IDVmYjMwODk1MDE1NjI0ODY2NjE1M2M2MjRmNDAzNGVhNGE4ODRmZGYu
LjdiZWY5NjU4NzExYzFiNjI4N2EzN2Y1ZTAwMGJiMTUxODZmMjdiN2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTM4MSw3ICsxMzgxLDcgQEAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBTaG8KICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6
Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJl
cXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Ms
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdl
YnNpdGVQb2xpY2llcywgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
cj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKQogewogICAg
IEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAKQEAgLTE0MDQsNiArMTQwNCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzCiAgICAgbG9hZFBhcmFtZXRlcnMubG9ja0JhY2tGb3J3YXJkTGlzdCA9IG5h
dmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVu
dFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IG5hdmlnYXRpb24uY2xpZW50UmVkaXJlY3RTb3Vy
Y2VGb3JIaXN0b3J5KCk7CiAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAgbG9hZFBhcmFtZXRl
cnMuZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gZXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOwogICAgIG1heWJlSW5pdGlh
bGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUocHJvY2VzcywgdXJsLCBtX3BhZ2VMb2FkU3RhdGUu
cmVzb3VyY2VEaXJlY3RvcnlVUkwoKSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSk7CiAKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKHByb2Nlc3MsIGxvYWRQYXJh
bWV0ZXJzKTsKQEAgLTM2MjAsNyArMzYyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQ
cm92aXNpb25hbFBhZ2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAg
ICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5kaWRDb21taXRQcm92aXNpb25hbFBhZ2Uob2xkV2Vi
UGFnZUlELCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5h
dmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVu
aXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UsIFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgbmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYg
d2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbklu
TmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxT
dXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBuZXdQcm9jZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9s
aWNpZXMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0
aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkKIHsKICAgICBXRUJQQUdF
UFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vz
czogbmV3UHJvY2Vzc1BJRD0laSwgaGFzU3VzcGVuZGVkUGFnZT0laSIsIG5ld1Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZSk7CiAgICAgTE9HKExvYWRpbmcsICJD
b250aW51aW5nIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2Vz
cyIsIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygp
KTsKQEAgLTM2MzcsNyArMzYzOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmln
YXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgYm9v
bCBpc1NlcnZlclNpZGVSZWRpcmVjdCA9IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA9PSBT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uICYmIG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCk7CiAgICAgYm9vbCBz
aG91bGRDbG9zZVByZXZpb3VzUGFnZUFmdGVyQ29tbWl0ID0gc2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkID09IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25zZVBv
bGljeURlY2lzaW9uOwogICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbWFrZVVuaXF1ZTxQcm92aXNp
b25hbFBhZ2VQcm94eT4oKnRoaXMsIFdURk1vdmUobmV3UHJvY2VzcyksIFdURk1vdmUoc3VzcGVu
ZGVkUGFnZSksIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIGlzU2VydmVyU2lkZVJlZGlyZWN0
LCBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQsIHNob3VsZENsb3NlUHJldmlvdXNQYWdlQWZ0ZXJDb21taXQsIHdlYnNpdGVQb2xpY2llcy5n
ZXQoKSk7Ci0gICAgYXV0byBjb250aW51YXRpb24gPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgc2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xp
Y2llcyldKCkgbXV0YWJsZSB7CisgICAgYXV0byBjb250aW51YXRpb24gPSBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9u
KSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3Zl
KHdlYnNpdGVQb2xpY2llcyksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJU
b1Jlc3VtZV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9u
LT50YXJnZXRJdGVtKCkpIHsKICAgICAgICAgICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5
ICVwIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyB0byBiYWNrIGl0ZW0gVVJMICVzIiwg
dGhpcywgaXRlbS0+dXJsKCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTM2NjAsMTAgKzM2NjEsMTEg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHMKIAogICAgICAgICAvLyBGSVhNRTogV29yayBvdXQg
dGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0Ywog
ICAgICAgICBBU1NFUlQoIW5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkuaXNFbXB0eSgpKTsK
KyAgICAgICAgQVNTRVJUKCFleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9S
ZXN1bWUgfHwgIW5hdmlnYXRpb24tPnN1YnN0aXR1dGVEYXRhKCkpOwogICAgICAgICBpZiAoYXV0
byYgc3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKQogICAgICAg
ICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0
ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwg
c3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0
aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBX
VEZNb3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEpLCBzdWJzdGl0dXRlRGF0YS0+c2Vzc2lvbkhpc3Rv
cnlWaXNpYmlsaXR5KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9wcm92aXNpb25hbFBh
Z2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24t
PmN1cnJlbnRSZXF1ZXN0KCkgfSwgbnVsbHB0ciwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVz
RGF0YSkpOworICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmln
YXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkgfSwg
bnVsbHB0ciwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSksIGV4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CiAgICAgfTsKICAgICBpZiAobV9pbnNw
ZWN0b3JDb250cm9sbGVyLT5zaG91bGRQYXVzZUxvYWRpbmcoKm1fcHJvdmlzaW9uYWxQYWdlKSkK
ICAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zZXRDb250aW51ZUxvYWRpbmdDYWxsYmFj
aygqbV9wcm92aXNpb25hbFBhZ2UsIFdURk1vdmUoY29udGludWF0aW9uKSk7CkBAIC01NjE3LDEy
ICs1NjE5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAg
ICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwg
Y29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwKLSAgICBib29sIHdhc0FsbG93ZWRCeUlu
amVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAgICBib29sIHdhc0Fs
bG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0
Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdU
Rk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVx
dWVzdCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5q
ZWN0ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIGxpc3RlbmVySUQs
IHVzZXJEYXRhKTsKKyAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3Mu
Y29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVu
dGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUs
IGRvd25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3Rl
bmVySUQsIHVzZXJEYXRhKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
clJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50
aWZpZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wg
bmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
clJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50
aWZpZXIgd2ViUGFnZUlELCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wg
bmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9h
ZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwog
CkBAIC01NjM1LDEzICs1NjM3LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JRCA/IG1fbmF2aWdh
dGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRyOwogICAgIGF1dG8g
bmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6
OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCksIHJlcXVl
c3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKIAotICAg
IGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHko
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2ViUGFnZUlELCBmcmFtZUlE
LCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBpZGVudGlmaWVyLCBsaXN0ZW5lcklE
LCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwKKyAgICBhdXRvIGxpc3RlbmVyID0g
bWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHdlYlBhZ2VJRCwgZnJhbWVJRCwgbmVlZHNCcm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGlkZW50aWZpZXIs
IGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pLAogICAgICAgICBw
cm9jZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBB
UEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2Fm
ZUJyb3dzaW5nV2FybmluZywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25j
ZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5
LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNF
RChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CiAKLSAgICAgICAg
YXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3
ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3Mp
XSAoY29uc3QgYXV0byYgcG9saWN5RGVjaXNpb24pIHsKKyAgICAgICAgYXV0byBzZW5kZXIgPSBQ
b2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1l
SUQsIGxpc3RlbmVySUQsIHByb2Nlc3NdIChjb25zdCBhdXRvJiBwb2xpY3lEZWNpc2lvbikgewog
ICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uLCBjcmVhdGVO
ZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnNpb25zKHByb2Nlc3MpKSwgd2ViUGFnZUlEKTsK
ICAgICAgICAgfSk7CiAKQEAgLTU2NDksMTIgKzU2NTEsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzcywKICAgICAgICAgaWYgKHBvbGljeUFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OlVzZSAmJiBu
ZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoICYmIG5hdmlnYXRpb24pIHsKICAgICAgICAg
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlc3BvbnNlRG9tYWluIHsgbmF2aWdhdGlvblJlc3BvbnNl
LT5yZXNwb25zZSgpLnVybCgpIH07CiAgICAgICAgICAgICAvLyBBdm9pZCBwcm9jZXNzLXN3YXBw
aW5nIGluIGNhc2VzIHdoZXJlIHRoZSBwcm9jZXNzIG9ubHkgY29udGFpbnMgYSBzaW5nbGUgcGFn
ZSBhbmQgaXMgb3JpZ2luLWNsZWFuLgotICAgICAgICAgICAgaWYgKHRoaXMtPnByb2Nlc3MoKS5w
YWdlQ291bnQoKSA+IDEgfHwgKHRoaXMtPnByb2Nlc3MoKS5vcHRpb25hbFJlZ2lzdHJhYmxlRG9t
YWluKCkgJiYgKnRoaXMtPnByb2Nlc3MoKS5vcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgIT0g
cmVzcG9uc2VEb21haW4pKSB7CisgICAgICAgICAgICBpZiAocHJvY2Vzcy0+cGFnZUNvdW50KCkg
PiAxIHx8IChwcm9jZXNzLT5vcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgJiYgKnByb2Nlc3Mt
Pm9wdGlvbmFsUmVnaXN0cmFibGVEb21haW4oKSAhPSByZXNwb25zZURvbWFpbikpIHsKICAgICAg
ICAgICAgICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQ6IFByb2Nlc3Mtc3dhcHBpbmcgZHVlIHRvIENyb3Nz
LU9yaWdpbi1PcGVuZXItUG9saWN5Iik7Ci0gICAgICAgICAgICAgICAgcG9saWN5QWN0aW9uID0g
UG9saWN5QWN0aW9uOjpJZ25vcmU7Ci0gICAgICAgICAgICAgICAgYXV0byBwcm9jZXNzRm9yTmF2
aWdhdGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yUmVnaXN0cmFibGVE
b21haW4od2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXNwb25zZURvbWFpbik7Ci0gICAgICAg
ICAgICAgICAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKCpuYXZpZ2F0aW9uLCBudWxs
cHRyLCBXVEZNb3ZlKHByb2Nlc3NGb3JOYXZpZ2F0aW9uKSwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudDo6Tm8sIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25z
ZVBvbGljeURlY2lzaW9uLCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICB3aWxsQ29udGludWVM
b2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzOworICAg
ICAgICAgICAgICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnByZXBhcmVM
b2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKHByb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmllcigp
LCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCByZXNwb25zZURvbWFpbiA9IFdURk1vdmUocmVzcG9uc2VEb21h
aW4pLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBXVEZNb3ZlKG5hdmlnYXRpb25S
ZXNwb25zZSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKV0oYXV0byBleGlzdGluZ05ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpIG11dGFibGUgeworICAgICAgICAgICAgICAg
ICAgICBhdXRvIHByb2Nlc3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgp
LnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbih3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJl
c3BvbnNlRG9tYWluKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKCpuYXZpZ2F0aW9uLCBudWxscHRyLCBXVEZNb3ZlKHByb2Nlc3NGb3JOYXZpZ2F0
aW9uKSwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8sIFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25zZVBvbGljeURlY2lzaW9uLCBudWxscHRyLCBleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOworCisgICAgICAgICAg
ICAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIG5h
dmlnYXRpb24uZ2V0KCksIG51bGxwdHIsIFdURk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RG
TW92ZShzZW5kZXIpLCB7IH0sIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Olllcyk7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCBlYTFjMjJmYjZiMTFiZTk2ODk5MjgyNjRkM2JmM2ZjODQ3MTA5YjhkLi5mZmY4NWI1
NTFhZjAzNjkxMGU0MTJlYWQ3MTJiZWNjMTNjOTFiZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIk1lZGlhS2V5U3lz
dGVtUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJNZWRpYVBsYXli
YWNrU3RhdGUuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQREZQbHVnaW5JZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiUGFnZUxvYWRTdGF0ZS5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRBY2Nl
c3NJbnRlbnQuaCIKQEAgLTE3NDEsMTAgKzE3NDIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
TmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
Y29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7
CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
QXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBzdGQ6Om9w
dGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwg
dWludDY0X3QgbGlzdGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5T
aG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxs
b3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEm
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0
VVJMU2NoZW1lVGFza1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkRGF0
YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lv
bkhpc3RvcnlWaXNpYmlsaXR5KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQ
STo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6
OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0
ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmln
YXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxv
cHQsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5n
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6bnVsbG9wdCk7CiAg
ICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsKICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFtZSwgRnJh
bWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdp
bmF0aW5nRnJhbWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9y
aWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNL
X0xPT0spCkBAIC0yMDYwLDcgKzIwNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZv
RGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYsCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2
b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJh
bWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVu
ZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2Vk
QnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1
aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5KFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0
IFVzZXJEYXRhJik7CiAgICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYs
IGJvb2wsIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYpOwogCkBAIC0yNDYyLDcgKzI0NjMs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiA9IHsgfSk7CiAKLSAgICB2b2lkIGNvbnRpbnVlTmF2aWdhdGlv
bkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVk
UGFnZVByb3h5PiYmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBQcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFJlZlB0cjxB
UEk6OldlYnNpdGVQb2xpY2llcz4mJik7CisgICAgdm9pZCBjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQ
cm94eT4mJiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBSZWZQdHI8QVBJOjpX
ZWJzaXRlUG9saWNpZXM+JiYsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0
ZDo6bnVsbG9wdCk7CiAKICAgICB2b2lkIHNldE5lZWRzRm9udEF0dHJpYnV0ZXMoYm9vbCk7CiAg
ICAgdm9pZCB1cGRhdGVGb250QXR0cmlidXRlc0FmdGVyRWRpdG9yU3RhdGVDaGFuZ2UoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCBiYzM3YjhmYzZhZGYzZWFkMTg3MmQxMTU1ZmYwY2JkMDA5ZGMwYWY5Li44MTk2YjExOWE4ZjAy
ZTdhMDA2MDQwODUwMjhlOTFhZTIzMTg2NTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMDcsNyArMTA3LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKICNlbmRpZgogCiAgICAgIyBQb2xpY3kgbWVzc2FnZXMKLSAg
ICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxvYWRB
dHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKKyAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUlu
Zm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBl
LCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5k
bGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCiAgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9E
YXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNr
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0
aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpX
ZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCkKICAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
YyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgc3Ry
dWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
c3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBz
dGQ6Om9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQ
YWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RC
b2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEpIC0+IChzdHJ1Y3QgV2ViS2l0OjpQb2xpY3lEZWNpc2lvbiBQb2xp
Y3lEZWNpc2lvbikgU3luY2hyb25vdXMKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5
Q2hlY2tJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmlu
ZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKaW5kZXggNmU5NjkwNzI1NGE0YmQxNTVmNThkZjEzNzg0OGI2MDUzMTlm
NTE1NS4uMzQ5ZWEyYzYzNjkyYWI4MDhmYzczZjVkODg2YTJhYTllNWNjZjIyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcApAQCAtNDEyLDggKzQxMiwxMSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAogCiAgICAg
QVNTRVJUKChsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgJiYgbG9hZFBhcmFtZXRlcnMud2ViRnJh
bWVJRCkgfHwgbG9hZFBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRD
cmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscyk7CiAKLSAgICBX
RUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBi
ZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkKSIsIHN0
YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpKTsKLSAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFtZXRlcnMpLCAwKSkgeworICAg
IHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKKyAgICBpZiAobG9hZFBhcmFtZXRl
cnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uKQorICAgICAgICBleGlzdGluZ05ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgPSBzdGQ6OmV4Y2hhbmdlKG1fZXhpc3RpbmdOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLCBzdGQ6Om51bGxvcHQpOworICAgIFdFQkxP
QURFUlNUUkFURUdZX1JFTEVBU0VfTE9HKCJzY2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5n
IHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQsIGV4aXN0aW5n
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZT0lIiBQUkl1NjQgIikiLCBzdGF0
aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgZXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLnZhbHVlX29yKE5ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSk7CisgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVk
dWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyVG9SZXN1bWUpLCAwKSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9S
RUxFQVNFX0xPR19FUlJPUigic2NoZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3Vy
Y2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkKSIsIHN0YXRpY19jYXN0PGlu
dD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpKTsKICAgICAgICAgLy8gV2Ug
cHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJv
Y2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgogICAgICAgICAvLyBUaGlzIGxvYWQgd2lsbCBu
ZXZlciBzdWNjZWVkIHNvIHdlIHdpbGwgc2NoZWR1bGUgaXQgdG8gZmFpbCBhc3luY2hyb25vdXNs
eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5oCmluZGV4IGNhMjM0OTk1ODY2NmE4MDFiMGUwYTZiZDc2N2RiYmNjY2ZiNzE2YWUu
LjI0YjY5Mzc5MDE3ZDU0MzliYmIxZTFiM2QxYTk1YzhiNzkyMzYwZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAt
MjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+CkBAIC05MSw2ICs5Miw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB1aW50NjRf
dCBnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CiAKKyAgICB2b2lkIHNldEV4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZShzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
VG9SZXN1bWUpIHsgbV9leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUgPSBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7IH0KKwog
cHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYs
IFdlYkNvcmU6OkNhY2hlZFJlc291cmNlKiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0KTsKICAgICB2b2lkIHNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImKTsKQEAgLTEzMyw2ICsxMzYsNyBAQCBwcml2YXRlOgog
ICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcj4gbV9w
aW5nTG9hZENvbXBsZXRpb25IYW5kbGVyczsKICAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFBy
ZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcj4gbV9wcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXJz
OwogICAgIFZlY3RvcjxGdW5jdGlvbjx2b2lkKGJvb2wpPj4gbV9vbmxpbmVTdGF0ZUNoYW5nZUxp
c3RlbmVyczsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
PiBtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKICAgICBi
b29sIG1faXNPbkxpbmUgeyB0cnVlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAppbmRleCA3MjMxNWE1NzU4NzM1ZWQ1ZWYxOTY2NjI5MWU2MTBkMzhjYzBlOWUxLi44YmIz
Y2U4OTEwODkyZmRkMDc5YmRjZDljOWRiZmM0MDA0MDY3NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTkxLDYgKzkxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Njcmlw
dENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N1YnJlc291
cmNlTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9VSUV2ZW50V2l0aEtleVN0YXRlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9XaWRnZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1
cmVzLmg+CkBAIC04NDgsMTEgKzg0OSwxMiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAg
IGF1dG8qIGNvcmVGcmFtZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGF1dG8qIHBvbGlj
eURvY3VtZW50TG9hZGVyID0gY29yZUZyYW1lID8gY29yZUZyYW1lLT5sb2FkZXIoKS5wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyKCkgOiBudWxscHRyOwogICAgIGF1dG8gbmF2aWdhdGlvbklEID0g
cG9saWN5RG9jdW1lbnRMb2FkZXIgPyBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlciY+KCpw
b2xpY3lEb2N1bWVudExvYWRlcikubmF2aWdhdGlvbklEKCkgOiAwOworICAgIHVpbnQ2NF90IG1h
aW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gcG9saWN5RG9jdW1lbnRMb2FkZXIgJiYgcG9saWN5
RG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRlcigpID8gcG9saWN5RG9jdW1lbnRMb2Fk
ZXItPm1haW5SZXNvdXJjZUxvYWRlcigpLT5pZGVudGlmaWVyKCkgOiAwOwogCiAgICAgYm9vbCB3
YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSA9IHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lB
Y3Rpb25Vc2U7CiAgICAgYXV0byBwcm90ZWN0b3IgPSBtX2ZyYW1lLmNvcHlSZWYoKTsKICAgICB1
aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlm
aWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5v
KTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIGlk
ZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dSZXNwb25z
ZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5n
ZXQoKSkpKSkgeworICAgIGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmlu
Zm8oKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hv
d1Jlc3BvbnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUs
IG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlm
aWVyLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkgewogICAgICAgICBX
RUJGUkFNRUxPQURFUkNMSUVOVF9SRUxFQVNFX0xPRyhOZXR3b3JrLCAiZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZTogaWdub3JpbmcgYmVjYXVzZSBXZWJQYWdlUHJveHk6OkRlY2lkZVBv
bGljeUZvclJlc3BvbnNlIGZhaWxlZCIpOwogICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBzdGQ6
Om51bGxvcHQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDA0ZTNh
ZTIwMTQzZjJmM2RiZDIwNjRhMzAyZjAxYjg0ZWRjYTk2NDUuLmZlNGY0OWE2NDVjN2Y2MDQ5MTQx
ODgxZjI4MDIxNTA0ZWEzOGZhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0yNjIsNiArMjYyLDcgQEAKICNpbmNsdWRlIDxwYWwvU2Vzc2lv
bklELmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+
CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0
U3RyZWFtLmg+CkBAIC0xNjg5LDYgKzE2OTAsMTEgQEAgdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVz
dChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogICAgIHNldElzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4obG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgJm1fbWFpbkZyYW1lLmdldCgpKTsKICNlbmRpZgogCisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zZXRFeGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyVG9SZXN1bWUobG9hZFBhcmFtZXRlcnMuZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllclRvUmVzdW1lKTsKKyAgICBhdXRvIHJlc3VtaW5nTG9hZFNjb3BlID0gbWFr
ZVNjb3BlRXhpdChbXSB7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRl
clN0cmF0ZWd5KCkuc2V0RXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVz
dW1lKHN0ZDo6bnVsbG9wdCk7CisgICAgfSk7CisKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNz
VGltZXIgc3RvcHBlcjsKIAogICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IGxvYWRQYXJhbWV0
ZXJzLm5hdmlnYXRpb25JRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCAxODgxYTVmMzY2MzIzYzczNDBjMDA4ZmZmODY2NGUzOTVkYmM5NWQzLi4wZWZj
ZDVkYWI5NWE0MjBkOWJhMDI2NDUxMTQ1MzRlZTQ1MDQ5MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAi
TGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIlBERlBs
dWdpbklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQbHVnaW4uaCIKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1NmYxNzBhODBh
YmE4N2MyNzIzNThkMjA2MTU1MjViY2Y2MDdlYzhhLi43YmQwZjA3YTY2ZDE2MDAwYmE2MzE5NTc5
YjA3OWVmNjIzNjk4NDkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDgtMjYgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBSZXVzZSB0aGUgc2Ft
ZSBuZXR3b3JrIGxvYWQgd2hlbiBwcm9jZXNzLXN3YXBwaW5nIG9uIHJlc291cmNlIHJlc3BvbnNl
IGR1ZSB0byBDT09QCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjk0NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyMzA3NjExPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBj
b3ZlcmFnZS4KKworICAgICAgICAqIGh0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5
L3Jlc291cmNlcy9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXItcG9wdXAucHk6IEFkZGVkLgorICAg
ICAgICAobWFpbik6CisgICAgICAgICogaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xp
Y3kvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8t
c2VydmVyLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA4LTI2ICBFbnJpcXVlIE9jYcOxYSBHb256w6Fs
ZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdW01lZGlhXSBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jaGFuZ2V0
eXBlLXBsYXktd2l0aG91dC1jb2RlY3MtcGFyYW1ldGVyLmh0bWwgZmFpbHMgYWZ0ZXIgcjI4MTYx
NwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1w
b2xpY3kvcmVzb3VyY2VzL3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci1wb3B1cC5weSBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3Jlc291cmNlcy9zaW5n
bGUtcmVxdWVzdC10by1zZXJ2ZXItcG9wdXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQyYjNiZGNiMjlmNzhh
MTZkMDQ1Y2YzMDkyNDg2MmUyODZlOGEzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3Jlc291cmNlcy9zaW5nbGUtcmVx
dWVzdC10by1zZXJ2ZXItcG9wdXAucHkKQEAgLTAsMCArMSwxMyBAQAorZGVmIG1haW4ocmVxdWVz
dCwgcmVzcG9uc2UpOgorICAgIHRva2VuID0gcmVxdWVzdC5HRVRbYid0b2tlbiddCisgICAgdmFs
dWUgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHRva2VuKQorICAgIGFscmVhZHlfbG9hZGVk
X3N0cmluZyA9ICJub3RfYWxyZWFkeV9sb2FkZWQiCisgICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6
CisgICAgICAgIGFscmVhZHlfbG9hZGVkX3N0cmluZyA9ICJhbHJlYWR5X2xvYWRlZCIKKyAgICBl
bHNlOgorICAgICAgICByZXF1ZXN0LnNlcnZlci5zdGFzaC5wdXQodG9rZW4sIFRydWUpCisgICAg
cmV0dXJuIChbCisgICAgICAgIChiJ0NhY2hlLUNvbnRyb2wnLCBiJ25vLXN0b3JlJyksCisgICAg
ICAgIChiJ0Nyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5JywgYidzYW1lLW9yaWdpbicpLAorICAg
ICAgICAoYidDb250ZW50LVR5cGUnLCBiJ3RleHQvaHRtbCcpXSwKKyAgICAgICAgdSc8c2NyaXB0
PnZhciBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCJzaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXIi
KTsgYmMucG9zdE1lc3NhZ2UoIiVzIik7PC9zY3JpcHQ+XG4nICUgYWxyZWFkeV9sb2FkZWRfc3Ry
aW5nKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5l
ci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRv
LXNlcnZlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjY1NzdlY2U5ZjViN2JhZmJhZjZkNGQy
MjlmMGYzMDlkNjZhZDA0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgTWFrZSBzdXJlIHdlIG1ha2UgYSBzaW5n
bGUgcmVxdWVzdCB0byB0aGUgSFRUUCBzZXJ2ZXIgd2hlbiBzd2l0Y2hpbmcgYnJvd3NpbmcgY29u
dGV4dCBncm91cAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmln
aW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXIuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRv
LXNlcnZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyMmYwZGRlNjhlZTE3ZTg1NTBiOTc5YjNiMjM1OGEx
ZmE1YTc3YzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1v
cmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXIuaHRtbApAQCAtMCww
ICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0
PXV0Zi04PgorPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL2NvbW1vbi91dGlscy5qcyI+PC9zY3JpcHQKKzwvaGVhZD4KKzxib2R5Pgor
PHNjcmlwdD4KK2FzeW5jX3Rlc3QoKHQpID0+IHsKKyAgICB2YXIgYmMgPSBuZXcgQnJvYWRjYXN0
Q2hhbm5lbCgnc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyJyk7CisgICAgbGV0IHcgPSBvcGVuKCJy
ZXNvdXJjZXMvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLXBvcHVwLnB5P3Rva2VuPSIgKyB0b2tl
bigpKTsKKyAgICBiYy5vbm1lc3NhZ2UgPSB0LnN0ZXBfZnVuYygoZXZlbnQpID0+IHsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhldmVudC5kYXRhLCAibm90X2FscmVhZHlfbG9hZGVkIik7CisgICAg
ICAgIGFzc2VydF90cnVlKHcuY2xvc2VkLCAiU2hvdWxkIHN3aXRjaCBicm93c2luZyBjb250ZXh0
IGdyb3VwIik7CisgICAgICAgIHQuZG9uZSgpOworICAgIH0pOworfSwgIk1ha2Ugc3VyZSB3ZSBt
YWtlIGEgc2luZ2xlIHJlcXVlc3QgdG8gdGhlIEhUVFAgc2VydmVyIHdoZW4gc3dpdGNoaW5nIGJy
b3dzaW5nIGNvbnRleHQgZ3JvdXAiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436553</attachid>
            <date>2021-08-26 13:08:16 -0700</date>
            <delta_ts>2021-08-26 13:26:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229465-20210826130815.patch</filename>
            <type>text/plain</type>
            <size>81274</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNmMDAwYWZjYjJkNTE2OWRm
MTc4OTQ5MDJiZWVlYWI5ZmFjOTA4NDEuLmU2YWUyNTcyN2E4Y2NmYjZmOGJiNGQ2OTQ1YWY4MjBl
ZDYyYTc1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMjEtMDgtMjYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBSZXVzZSB0aGUgc2FtZSBu
ZXR3b3JrIGxvYWQgd2hlbiBwcm9jZXNzLXN3YXBwaW5nIG9uIHJlc291cmNlIHJlc3BvbnNlIGR1
ZSB0byBDT09QCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjk0NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyMzA3NjExPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHIyODE1MTYgYWRkZWQgc3VwcG9y
dCBmb3IgcHJvY2Vzcy1zd2FwcGluZyBiYXNlZCBvbiBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGlj
eSBoZWFkZXIKKyAgICAgICAgaW4gSFRUUCByZXNwb25zZXMuIEhvd2V2ZXIsIG9uIHByb2Nlc3Mt
c3dhcCwgd2Ugd291bGQgYWJvcnQgdGhlIGV4aXN0aW5nIG5ldHdvcmsgbG9hZAorICAgICAgICB0
aGF0IHdhcyBzdGFydGVkIGJ5IHRoZSBvcmlnaW5hbCBXZWJQcm9jZXNzIGFuZCBzdGFydCBhIGZy
ZXNoIG5ldHdvcmsgbG9hZCBpbiB0aGUgbmV3CisgICAgICAgIFdlYlByb2Nlc3MuIFRoaXMgd2Fz
IHN1Ym9wdGltYWwgYW5kIGNvdWxkIGxlYWQgdG8gaXNzdWVzIHdpdGggcmVzb3VyY2VzIHRoYXQg
cHJvdmlkZQorICAgICAgICBvbmUtdGltZSBiZWhhdmlvcnMuIFRoaXMgcGF0Y2ggYWRkcmVzc2Vz
IHRoZSBpc3N1ZSBieSB0cmFuc2ZlcnJpbmcgdGhlIG5ldHdvcmsgbG9hZAorICAgICAgICBpbiB0
aGUgbmV0d29yayBwcm9jZXNzIGZyb20gdGhlIG9sZCBXZWJQcm9jZXNzIHRvIHRoZSBuZXcgV2Vi
UHJvY2VzcyB3aGVuIHByb2Nlc3MKKyAgICAgICAgc3dhcHBpbmcuCisKKyAgICAgICAgV2hlbiB0
aGUgVUlQcm9jZXNzIGRlY2lkZXMgdG8gcHJvY2Vzcy1zd2FwIG9uIHJlc3BvbnNlIHBvbGljeSBk
ZWNpc2lvbiwgaXQgZmlyc3QKKyAgICAgICAgc2VuZHMgSVBDIHRvIHRoZSBuZXR3b3JrIHByb2Nl
c3MgdG8gYXNrIGl0IHRvIHByZXBhcmUgdGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAg
ICBmb3Igb3duZXJzaGlwIHRyYW5zZmVyLiBUaGUgbmV0d29yayBwcm9jZXNzIHRha2VzIHRoZSBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgZnJvbSBpdHMgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgYW5kIHN0b3JlcyBpdCBpbiBhIHRlbXBvcmFyeSBjYWNoZSwgdGhlbgorICAg
ICAgICByZXNwb25kcyB0byB0aGUgVUlQcm9jZXNzIHdpdGggdGhlIE5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyIG9mIHRoZSBsb2FkZXIuCisgICAgICAgIFVwb24gcmVjZWl2aW5nIHRoZSBy
ZXNwb25zZSwgdGhlIFVJUHJvY2VzcyBwcm9jZWVkcyB3aXRoIHRoZSBwcm9jZXNzLXN3YXAsIGl0
CisgICAgICAgIHJlamVjdHMgcmVzcG9uc2UgcHJvY2Vzc2luZyBpbiB0aGUgb2xkIHByb2Nlc3Mg
YW5kIGRvZXMgYSBsb2FkUmVxdWVzdCBpbiBhIG5ldworICAgICAgICBXZWJQcm9jZXNzLiBXaGVu
IHN0YXJ0aW5nIHNlbmRpbmcgdGhlIExvYWRSZXF1ZXN0IElQQyB0byB0aGUgbmV3IFdlYlByb2Nl
c3MsIGl0CisgICAgICAgIHBhc3NlcyBhbG9uZyB0aGUgTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXIgb2YgdGhlIGNhY2hlZCBsb2FkZXIgaW4gdGhlIG5ldHdvcmsKKyAgICAgICAgcHJvY2Vz
cy4gV2hlbiB0aGUgV2ViUHJvY2VzcyBlbmRzIHVwIHNjaGVkdWxpbmcgdGhlIGxvYWQgd2l0aCB0
aGUgbmV0d29yayBwcm9jZXNzLAorICAgICAgICBpdCBwYXNzZXMgYWdhaW4gdGhlIE5ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLiBVcG9uIHJlY2VpdmluZyB0aGUgbG9hZCByZXF1ZXN0LAor
ICAgICAgICB0aGUgbmV0d29yayBwcm9jZXNzIGNoZWNrcyBpZiBhIE5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyIGlzIHByb3ZpZGVkIGZvcgorICAgICAgICBjb250aW51aW5nIGEgbG9hZC4g
SWYgbm9uZSBpcyBwcm92aWRlZCwgd2UgdXNlIHRoZSByZWd1bGFyIGNvZGUgcGF0aCBhbmQgYWN0
dWFsbHkKKyAgICAgICAgY29uc3RydWN0IGEgbmV3IE5ldHdvcmtSZXNvdXJjZUxvYWRlci4gSG93
ZXZlciwgaWYgYSBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcgorICAgICAgICBpcyBwcm92
aWRlZCwgd2UgdGFrZSB0aGUgY29ycmVzcG9uZGluZyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgZnJv
bSB0aGUgY2FjaGUsCisgICAgICAgIHRyYW5zZmVyIGl0IHRvIHRoZSBuZXcgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgYW5kIGhhdmUgaXQgc2VuZCB0aGUKKyAgICAgICAgRGlkUmVjZWl2
ZVJlc3BvbnNlIElQQyB0byB0aGUgV2ViUHJvY2VzcyB0byBjb250aW51ZSB0aGUgbG9hZCB3aXRo
IHRoZSBuZXcKKyAgICAgICAgV2ViUHJvY2Vzcy4KKworICAgICAgICBUZXN0OiBodHRwL3dwdC9j
cm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXIuaHRtbAor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
Q2xlYW51cFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnRyYW5zZmVyS2VwdEFsaXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNlTG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0YWtlTmV0d29y
a1Jlc291cmNlTG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OkNh
Y2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Q2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OkNhY2hlZE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6dGFrZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpDYWNo
ZWROZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmV4cGlyYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnRha2VMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NUcmFu
c2Zlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlTG9hZEZvcldl
YlByb2Nlc3NUcmFuc2Zlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyYW5zZmVyVG9OZXdXZWJQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJ
bnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JY
RnJhbWVPcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
aG91bGRJbnRlcnJ1cHROYXZpZ2F0aW9uRm9yQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0V29y
a2VyTG9hZEZvckNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRp
b24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFkZENv
bnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
ZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpzZW5kVG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFNoYXJlZC9M
b2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNp
b25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5h
dmlnYXRpb25TaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRpbnVl
TmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMjEtMDgtMjYgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1
cCBsb2dnaW5nICNpbmNsdWRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkOTYy
YTk4YWY1NDY3NTQ0ZmI0MDg3YzQ4MWFhMjJlYTdlYTVmNjIwLi41NTc5Y2RmYTc4ZGQxNGQxZjVi
N2UzYmY0MGJjMjNlNDc3YmFlNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
ODUsNiArODUsNyBAQAogI2VuZGlmCiAKICNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhj
aGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJ
ZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6IiBm
bXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1Nf
XykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4u
LikgUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVy
PSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMs
IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKIAogI2Rl
ZmluZSBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE5FVFdPUktfUFJP
Q0VTU19NRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCAodm9pZCkwKQogI2RlZmlu
ZSBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKGFzc2VydGlvbiwgY29t
cGxldGlvbikgZG8geyBcCkBAIC0xNjYsNyArMTY3LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFuZ2VkKGJvb2wgaGFzVXBsb2FkKQogCiB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbGVhbnVwUmVzb3VyY2VMb2Fk
ZXIoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
bG9hZGVyLmlkZW50aWZpZXIoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobG9hZGVyLmNvcmVJZGVu
dGlmaWVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IGlmIChsb2FkZXIuaXNLZXB0QWxpdmUoKSkgewpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xlYW51cFJlc291cmNlTG9hZGVyKE5l
dHdvcmtSZXNvdXJjZUxvYWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVCht
X25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuZ2V0KGxvYWRlci5pZGVudGlmaWVyKCkpID09ICZsb2Fk
ZXIpOwotICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5yZW1vdmUobG9hZGVyLmlkZW50aWZp
ZXIoKSk7CisgICAgQVNTRVJUKG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5nZXQobG9hZGVyLmNv
cmVJZGVudGlmaWVyKCkpID09ICZsb2FkZXIpOworICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVy
cy5yZW1vdmUobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjp0cmFuc2ZlcktlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNl
TG9hZGVyJiBsb2FkZXIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIEFTU0VSVChsb2FkZXIuaXNLZXB0QWxpdmUoKSk7Ci0gICAgQVNTRVJUKG1fbmV0d29y
a1Jlc291cmNlTG9hZGVycy5nZXQobG9hZGVyLmlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7Ci0g
ICAgaWYgKGF1dG8gdGFrZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShs
b2FkZXIuaWRlbnRpZmllcigpKSkKKyAgICBBU1NFUlQobV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJz
LmdldChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7CisgICAgaWYgKGF1dG8g
dGFrZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2FkZXIuY29yZUlk
ZW50aWZpZXIoKSkpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZEtlcHRBbGl2ZUxvYWQo
dGFrZW5Mb2FkZXIucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTQ4NiwyNyArNDg3LDM4IEBA
IHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y3JlYXRlRmV0CiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpCiB7Ci0gICAgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRyhMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJjZUxvYWQ6IChwYXJlbnRQSUQ9JWQsIHBh
Z2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIg
UFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIpIiwgbG9hZFBhcmFtZXRlcnMucGFyZW50
UElELCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJ
bnQ2NCgpLCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDogKHBhcmVudFBJRD0lZCwgcGFn
ZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZT0l
IiBQUkl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQsIGxvYWRQYXJhbWV0ZXJzLndl
YlBhZ2VQcm94eUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2
NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUudmFsdWVfb3IoTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZv
clNlc3Npb24obV9zZXNzaW9uSUQpOwogICAgIGlmICghc2VydmVyLmlzSW1wb3J0Q29tcGxldGVk
KCkpIHsKLSAgICAgICAgc2VydmVyLndoZW5JbXBvcnRJc0NvbXBsZXRlZChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkUGFyYW1ldGVycyA9IFdURk1vdmUobG9hZFBh
cmFtZXRlcnMpXSgpIG11dGFibGUgeworICAgICAgICBzZXJ2ZXIud2hlbkltcG9ydElzQ29tcGxl
dGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGxvYWRQYXJhbWV0ZXJz
ID0gV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWVdKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NDb25u
ZWN0aW9uKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24o
bV9zZXNzaW9uSUQpLmlzSW1wb3J0Q29tcGxldGVkKCkpOwotICAgICAgICAgICAgc2NoZWR1bGVS
ZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycykpOworICAgICAgICAgICAgc2NoZWR1
bGVSZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0aW5nTG9hZGVyVG9S
ZXN1bWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorCiAg
ICAgYXV0byBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcjsKICAgICBSRUxF
QVNFX0FTU0VSVChpZGVudGlmaWVyKTsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMoaWRl
bnRpZmllcikpOwogCisgICAgaWYgKGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpIHsKKyAgICAgICAg
aWYgKGF1dG8gZXhpc3RpbmdMb2FkZXIgPSBuZXR3b3JrUHJvY2VzcygpLnRha2VMb2FkZXJBd2Fp
dGluZ1dlYlByb2Nlc3NUcmFuc2ZlcigqZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZSkpIHsKKyAgICAg
ICAgICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coTG9hZGluZywgInNjaGVkdWxlUmVzb3VyY2VM
b2FkOiBSZXN1bWluZyBleGlzdGluZyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIiKTsKKyAgICAgICAg
ICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5hZGQoaWRlbnRpZmllciwgKmV4aXN0aW5nTG9h
ZGVyKTsKKyAgICAgICAgICAgIGV4aXN0aW5nTG9hZGVyLT50cmFuc2ZlclRvTmV3V2ViUHJvY2Vz
cygqdGhpcywgaWRlbnRpZmllcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAic2NoZWR1bGVSZXNv
dXJjZUxvYWQ6IENvdWxkIG5vdCBmaW5kIGV4aXN0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciB0
byByZXN1bWUsIHdpbGwgZG8gYSBmcmVzaCBsb2FkIik7CisgICAgfQorCiAgICAgYXV0byYgbG9h
ZGVyID0gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZShXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgKnRoaXMpKS5pdGVy
YXRvci0+dmFsdWU7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0xMjY5LDYgKzEy
ODEsMTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJpb3JpdGl6ZVJl
c291cmNlTG9hZHMoVmVjdG9yPFJlc291cmNlTG9hZEkKICAgICBzZXNzaW9uLT5uZXR3b3JrTG9h
ZFNjaGVkdWxlcigpLnByaW9yaXRpemVMb2Fkcyhsb2Fkcyk7CiB9CiAKK1JlZlB0cjxOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0YWtlTmV0d29y
a1Jlc291cmNlTG9hZGVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpCit7CisgICAg
aWYgKCFtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuaXNWYWxpZEtleShyZXNvdXJjZUxvYWRJZGVu
dGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fbmV0d29ya1Jl
c291cmNlTG9hZGVycy50YWtlKHJlc291cmNlTG9hZElkZW50aWZpZXIpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIENPTk5FQ1RJT05fUkVMRUFTRV9MT0cKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAppbmRleCA1ZTA3MDkxZTM3MzZkZTM1MjE5MmNmZTc4Njc5Y2I2MjJiMjNk
ZjJmLi5mNGEwYWI3MTkzZWZjNmNmZmFjNjBmZWZjZGNkMzhmYmFlOWYwOTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlc1JlcGxpZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrTURO
U1JlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1JUQ1Byb3ZpZGVyLmgiCisjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3Vy
Y2VMb2FkTWFwLmgiCiAjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCkBAIC0xODYsNiArMTg3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29v
a2llQWNjZXB0UG9saWN5Q2hhbmdlZChXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5KTsK
IAogICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlU291cmNlLCBK
U0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICBSZWZQdHI8TmV0
d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTmV0d29ya1Jlc291cmNlTG9hZGVyKHVpbnQ2NF90IHJl
c291cmNlTG9hZElkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIs
IFBBTDo6U2Vzc2lvbklELCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwpAQCAtMjAzLDcg
KzIwNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAg
IGJvb2wgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4m
KTsKIAotICAgIHZvaWQgc2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJik7CisgICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyPiBleGlzdGluZ0xvYWRlclRvUmVzdW1lKTsKICAgICB2b2lkIHBlcmZvcm1TeW5jaHJv
bm91c0xvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVsYXllZFJl
cGx5JiYpOwogICAgIHZvaWQgdGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0
aW5nRm9yU3luY1JlcGx5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1do
ZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgbG9hZFBpbmco
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiZTkyNDRlODZmY2RlMzVjOThjNjBjNzA0Y2JhZWYy
NDAyZmQwZDZhLi43M2YzZTg5MTYyOWUyMjM0NDllNDc1MzJkZDE0MjQ3MzVlM2Q0YjBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDcg
QEAKIAogbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVj
ZWl2ZXIgewogCi0gICAgU2NoZWR1bGVSZXNvdXJjZUxvYWQoV2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyByZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKQorICAgIFNjaGVkdWxlUmVz
b3VyY2VMb2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VM
b2FkUGFyYW1ldGVycywgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyPiBleGlzdGluZ0xvYWRlclRvUmVzdW1lKQogICAgIFBlcmZvcm1TeW5jaHJvbm91
c0xvYWQoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSwgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEpIFN5bmNocm9ub3Vz
CiAgICAgVGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhbmRs
ZWQpIFN5bmNocm9ub3VzCiAgICAgTG9hZFBpbmcoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyByZXNvdXJjZUxvYWRQYXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA1ZDY4MjliMjg4MDI1NGJkMDEx
MzEwYTlmZDI5ZDc4NWVkYjZlMDU1Li4xNDBiNzIzZWUyZTBlNDZmYmVlMjE2YTExZTIyN2IyYTI5
YzI2ZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcApAQCAtMTE5LDYgKzExOSw4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCitjb25zdGV4cHIgU2Vjb25kcyBjYWNoZWROZXR3b3JrUmVzb3Vy
Y2VMb2FkZXJMaWZldGltZSB7IDMwX3MgfTsKKwogc3RhdGljIHZvaWQgY2FsbEV4aXRTb29uKElQ
Qzo6Q29ubmVjdGlvbiopCiB7CiAgICAgLy8gSWYgdGhlIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xv
c2VkIGFuZCB3ZSBoYXZlbid0IHJlc3BvbmRlZCBpbiB0aGUgbWFpbiB0aHJlYWQgZm9yIDEwIHNl
Y29uZHMKQEAgLTI4MTUsNiArMjgxNyw0OCBAQCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQ
cm94eSYgTmV0d29ya1Byb2Nlc3M6OnJ0Y0RhdGFDaGFubmVsUHJveHkoKQogfQogI2VuZGlmCiAK
K05ldHdvcmtQcm9jZXNzOjpDYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNhY2hlZE5ldHdv
cmtSZXNvdXJjZUxvYWRlcihSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiYmIGxvYWRlcikKKyAg
ICA6IG1fZXhwaXJhdGlvblRpbWVyKCp0aGlzLCAmQ2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpleHBpcmF0aW9uVGltZXJGaXJlZCkKKyAgICAsIG1fbG9hZGVyKFdURk1vdmUobG9hZGVyKSkK
K3sKKyAgICBtX2V4cGlyYXRpb25UaW1lci5zdGFydE9uZVNob3QoY2FjaGVkTmV0d29ya1Jlc291
cmNlTG9hZGVyTGlmZXRpbWUpOworfQorCitSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBOZXR3
b3JrUHJvY2Vzczo6Q2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0YWtlTG9hZGVyKCkKK3sK
KyAgICByZXR1cm4gbV9sb2FkZXIucmVsZWFzZU5vbk51bGwoKTsKK30KKwordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Q2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyOjpleHBpcmF0aW9uVGltZXJGaXJl
ZCgpCit7CisgICAgYXV0byBsb2FkZXIgPSBtX2xvYWRlci0+Y29ubmVjdGlvblRvV2ViUHJvY2Vz
cygpLm5ldHdvcmtQcm9jZXNzKCkudGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVy
KG1fbG9hZGVyLT5pZGVudGlmaWVyKCkpOworICAgIEFTU0VSVF9VTlVTRUQobG9hZGVyLCBsb2Fk
ZXIpOworfQorCitSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBOZXR3b3JrUHJvY2Vzczo6
dGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKE5ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBjYWNoZWRSZXNvdXJjZUxvYWRlciA9
IG1fbG9hZGVyc0F3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyLnRha2UoaWRlbnRpZmllcik7Cisg
ICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIGNhY2hlZFJlc291cmNlTG9hZGVyLT50YWtlTG9hZGVyKCk7Cit9CisKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyLCB1aW50NjRfdCByZXNv
dXJjZUxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBBU1NFUlQocmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CisgICAgYXV0byogY29ubmVjdGlv
biA9IHdlYlByb2Nlc3NDb25uZWN0aW9uKHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBp
ZiAoIWNvbm5lY3Rpb24pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51
bGxvcHQpOworCisgICAgYXV0byBsb2FkZXIgPSBjb25uZWN0aW9uLT50YWtlTmV0d29ya1Jlc291
cmNlTG9hZGVyKHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgIGlmICghbG9hZGVyKQorICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKKworICAgIGF1dG8g
aWRlbnRpZmllciA9IGxvYWRlci0+aWRlbnRpZmllcigpOworICAgIG1fbG9hZGVyc0F3YWl0aW5n
V2ViUHJvY2Vzc1RyYW5zZmVyLmFkZChpZGVudGlmaWVyLCBtYWtlVW5pcXVlPENhY2hlZE5ldHdv
cmtSZXNvdXJjZUxvYWRlcj4obG9hZGVyLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihpZGVudGlmaWVyKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWRkV2Vi
UGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiB7CiAgICAgYXV0byBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBlYTkx
ZWQ1OTQwM2U0OWZlMjdkYTY4MTkzMTY3MWU5NmZmN2JmOWE3Li40MmUyMDNjNzBmYzM3ZjQzYTc3
ODNkZDc5ZjE0ZmIyZDU2Y2M5NmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRN
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5j
bHVkZSAiTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUg
IldlYklEQlNlcnZlci5oIgpAQCAtMzg5LDYgKzM5MCw4IEBAIHB1YmxpYzoKICAgICBSVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eSYgcnRjRGF0YUNoYW5uZWxQcm94eSgpOwogI2VuZGlm
CiAKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTG9hZGVyQXdhaXRpbmdX
ZWJQcm9jZXNzVHJhbnNmZXIoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIpOworCiBwcml2
YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApAQCAtNDIyLDYgKzQyNSw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtQcm9jZXNzTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgY3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8SVBDOjpBdHRhY2htZW50PiYmLCBXZWJDb3JlOjpI
VFRQQ29va2llQWNjZXB0UG9saWN5KT4mJik7CisgICAgdm9pZCBwcmVwYXJlTG9hZEZvcldlYlBy
b2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRl
bnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYp
OwogCiAgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYnNpdGVEYXRhJiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTYw
OSw2ICs2MTMsMTkgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpVc2VyQ29udGVudFVSTFBhdHRlcm4+PiBtX2V4dGVuc2lv
bkNPUlNEaXNhYmxpbmdQYXR0ZXJuczsKIAorICAgIGNsYXNzIENhY2hlZE5ldHdvcmtSZXNvdXJj
ZUxvYWRlciB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoK
KyAgICAgICAgZXhwbGljaXQgQ2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyKFJlZjxOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI+JiYpOworICAgICAgICBSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0
YWtlTG9hZGVyKCk7CisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBleHBpcmF0aW9uVGltZXJG
aXJlZCgpOworICAgICAgICBXZWJDb3JlOjpUaW1lciBtX2V4cGlyYXRpb25UaW1lcjsKKyAgICAg
ICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CisgICAgfTsKKworICAg
IEhhc2hNYXA8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxD
YWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXI+PiBtX2xvYWRlcnNBd2FpdGluZ1dlYlByb2Nlc3NU
cmFuc2ZlcjsKKwogICAgIGJvb2wgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEVuYWJsZWQgeyB0
cnVlIH07CiAgICAgYm9vbCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxl
ZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZDc5OTc0NTFjNDU0MGNjM2Q3NTY1
MzQ4Yzc2YTIzNDQ5MTM4MmY5YS4uY2FlYjhkOWJiODQ4YzY5MDBhZTk1NTVkMDc1OWY5MmQ1OWJm
MjQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xOTUsNiArMTk1LDggQEAgbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsZWFyQXBwUHJpdmFjeVJlcG9ydFRl
c3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICNlbmRpZgog
CisgICAgUHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElk
ZW50aWZpZXIpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXI+IG5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyKSBBc3luYworCiAgICAgQWRk
V2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0
OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlTmV0d29ya1Bh
cmFtZXRlcnMgcGFyYW1ldGVycykKICAgICBSZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlEKQogICAgIENvdW50Tm9uRGVmYXVsdFNlc3Npb25TZXRzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkgLT4gKHNpemVfdCBjb3VudCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA4MmYxZTUz
MDE0NGZhMGZmMmRhYjExZTY0NGMwOWI3ZjY4NjFhMDAwLi4yOTZkNDUxMDJiZDE4ZDNmZWZkY2Yz
MDE1NDM3ZmQ4YzNmYzBlMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MjIsNiArNTIyLDE2IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgY2xlYW51cChMb2FkUmVzdWx0
OjpDYW5jZWwpOwogfQogCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJhbnNmZXJUb05l
d1dlYlByb2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG5ld0Nvbm5lY3Rpb24s
IFJlc291cmNlTG9hZElkZW50aWZpZXIgbmV3Q29yZUlkZW50aWZpZXIpCit7CisgICAgbV9jb25u
ZWN0aW9uID0gbmV3Q29ubmVjdGlvbjsKKyAgICBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciA9IG5l
d0NvcmVJZGVudGlmaWVyOworCisgICAgQVNTRVJUKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
ciB8fCBtX2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfHwg
bV9zZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKTsKKyAgICBib29sIHdpbGxXYWl0Rm9yQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2UgPSB0cnVlOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyBtX3Jlc3BvbnNlLCB3aWxsV2FpdEZvckNvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlIH0pOworfQorCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiB4RnJh
bWVPcHRpb25zLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoaXNNYWluRnJhbWVMb2FkKCkp
CkBAIC01NDYsMTIgKzU1NiwxMiBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxk
SW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiB4RgogICAgIH0KICAg
ICBjYXNlIFhGcmFtZU9wdGlvbnNEaXNwb3NpdGlvbjo6Q29uZmxpY3Q6IHsKICAgICAgICAgU3Ry
aW5nIGVycm9yTWVzc2FnZSA9ICJNdWx0aXBsZSAnWC1GcmFtZS1PcHRpb25zJyBoZWFkZXJzIHdp
dGggY29uZmxpY3RpbmcgdmFsdWVzICgnIiArIHhGcmFtZU9wdGlvbnMgKyAiJykgZW5jb3VudGVy
ZWQgd2hlbiBsb2FkaW5nICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
ICsgIicuIEZhbGxpbmcgYmFjayB0byAnREVOWScuIjsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50
aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwg
IE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNv
cmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICBjYXNlIFhGcmFtZU9wdGlvbnNEaXNwb3NpdGlvbjo6SW52YWxp
ZDogewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIkludmFsaWQgJ1gtRnJhbWUtT3B0
aW9ucycgaGVhZGVyIGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5zdHJpbmdDZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInOiAnIiArIHhGcmFtZU9wdGlvbnMgKyAiJyBpcyBu
b3QgYSByZWNvZ25pemVkIGRpcmVjdGl2ZS4gVGhlIGhlYWRlciB3aWxsIGJlIGlnbm9yZWQuIjsK
LSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
KTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgfQpAQCAtNTc4LDcg
KzU4OCw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2Fk
Rm9yQ1NQRnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvCiAgICAgICAgIFN0cmluZyB4RnJhbWVP
cHRpb25zID0gbV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlhGcmFt
ZU9wdGlvbnMpOwogICAgICAgICBpZiAoIXhGcmFtZU9wdGlvbnMuaXNOdWxsKCkgJiYgc2hvdWxk
SW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoeEZyYW1lT3B0aW9ucywgcmVzcG9uc2UudXJs
KCkpKSB7CiAgICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWFrZVN0cmluZygiUmVm
dXNlZCB0byBkaXNwbGF5ICciLCByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVk
VG9MZW5ndGgoKSwgIicgaW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25z
JyB0byAnIiwgeEZyYW1lT3B0aW9ucywgIicuIik7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAg
TWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2Fn
ZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBlcnJvck1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTU5NSw3
ICs2MDUsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TmF2
aWdhdGlvbkZvckNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpYwogICAgICAgICBhdXRvIHJlc3BvbnNl
Q09FUCA9IFdlYkNvcmU6Om9idGFpbkNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kocmVzcG9uc2Us
IG1fcGFyYW1ldGVycy5zb3VyY2VPcmlnaW4tPmlzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSgpID8g
SXNTZWN1cmVDb250ZXh0OjpZZXMgOiBJc1NlY3VyZUNvbnRleHQ6Ok5vKTsKICAgICAgICAgaWYg
KHJlc3BvbnNlQ09FUC52YWx1ZSAhPSBXZWJDb3JlOjpDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5
VmFsdWU6OlJlcXVpcmVDT1JQKSB7CiAgICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0g
bWFrZVN0cmluZygiUmVmdXNlZCB0byBkaXNwbGF5ICciLCByZXNwb25zZS51cmwoKS5zdHJpbmdD
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIicgaW4gYSBmcmFtZSBiZWNhdXNlIG9mIENyb3Nz
LU9yaWdpbi1FbWJlZGRlci1Qb2xpY3kuIik7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVz
c2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwg
aWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBl
cnJvck1lc3NhZ2UsIGNvcmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTYxMSw3ICs2
MjEsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0V29ya2Vy
TG9hZEZvckNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpYwogICAgICAgICBhdXRvIHJlc3BvbnNlQ09F
UCA9IFdlYkNvcmU6Om9idGFpbkNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kocmVzcG9uc2UsIG1f
cGFyYW1ldGVycy5zb3VyY2VPcmlnaW4tPmlzUG90ZW50aWFsbHlUcnVzdHdvcnRoeSgpID8gSXNT
ZWN1cmVDb250ZXh0OjpZZXMgOiBJc1NlY3VyZUNvbnRleHQ6Ok5vKTsKICAgICAgICAgaWYgKHJl
c3BvbnNlQ09FUC52YWx1ZSAhPSBXZWJDb3JlOjpDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5VmFs
dWU6OlJlcXVpcmVDT1JQKSB7CiAgICAgICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gbWFr
ZVN0cmluZygiUmVmdXNlZCB0byBsb2FkICciLCByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgoKSwgIicgd29ya2VyIGJlY2F1c2Ugb2YgQ3Jvc3MtT3JpZ2luLUVt
YmVkZGVyLVBvbGljeS4iKTsKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFk
ZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNl
OjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVy
KCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAg
TWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2Fn
ZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtNjMwLDcgKzY0MCw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNw
b25zZSYmIHJlY2VpdmVkUmVzcG9uCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcygpICYmIG1fbmV0d29ya0xvYWRDaGVja2VyKSB7CiAgICAgICAgIGF1dG8gaW5m
b3JtYXRpb24gPSBtX25ldHdvcmtMb2FkQ2hlY2tlci0+dGFrZU5ldHdvcmtMb2FkSW5mb3JtYXRp
b24oKTsKICAgICAgICAgaW5mb3JtYXRpb24ucmVzcG9uc2UgPSBtX3Jlc3BvbnNlOwotICAgICAg
ICBtX2Nvbm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb24oaWRlbnRpZmllcigpLCBX
VEZNb3ZlKGluZm9ybWF0aW9uKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xv
YWRJbmZvcm1hdGlvbihjb3JlSWRlbnRpZmllcigpLCBXVEZNb3ZlKGluZm9ybWF0aW9uKSk7CiAg
ICAgfQogCiAgICAgLy8gRm9yIG11bHRpcGFydC94LW1peGVkLXJlcGxhY2UgZGlkUmVjZWl2ZVJl
c3BvbnNlQXN5bmMgZ2V0cyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYW5kIGJ1ZmZlcmluZyB3b3Vs
ZCByZXF1aXJlIHNwZWNpYWwgaGFuZGxpbmcuCkBAIC03NTgsNyArNzY4LDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRy
aWNzJiBuZXR3b3JrTG8KICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZEZpbmlzaExvYWRpbmc6
IChudW1CeXRlc1JlY2VpdmVkPSV6ZCwgaGFzQ2FjaGVFbnRyeUZvclZhbGlkYXRpb249JWQpIiwg
bV9udW1CeXRlc1JlY2VpdmVkLCAhIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwogCiAgICAg
aWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpKQotICAgICAgICBtX2Nv
bm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb25NZXRyaWNzKGlkZW50aWZpZXIoKSwg
bmV0d29ya0xvYWRNZXRyaWNzKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5hZGROZXR3b3JrTG9h
ZEluZm9ybWF0aW9uTWV0cmljcyhjb3JlSWRlbnRpZmllcigpLCBuZXR3b3JrTG9hZE1ldHJpY3Mp
OwogCiAgICAgaWYgKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pIHsKICAgICAgICAgLy8gMzA0
IE5vdCBNb2RpZmllZApAQCAtODAxLDcgKzgxMSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRGYWlsTG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBVTlVT
RURfVkFSSUFCTEUod2FzU2VydmljZVdvcmtlckxvYWQpOwogCiAgICAgaWYgKHNob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92
ZU5ldHdvcmtMb2FkSW5mb3JtYXRpb24oaWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9jb25uZWN0
aW9uLT5yZW1vdmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGNvcmVJZGVudGlmaWVyKCkpOwogCiAg
ICAgQVNTRVJUKCFlcnJvci5pc051bGwoKSk7CiAKQEAgLTEyMDIsOSArMTIxMiwxMCBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5KHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrQ2FjaGU6OgogICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkUmV0cmlldmVD
YWNoZUVudHJ5OiBTZW5kaW5nIFdlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2Ug
SVBDIChuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZT0lZCkiLCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsKIAotICAgIGlmIChuZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKKyAgICBpZiAobmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpIHsKKyAgICAgICAgbV9yZXNwb25zZSA9IFdURk1vdmUocmVzcG9u
c2UpOwogICAgICAgICBtX2NhY2hlRW50cnlXYWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UgPSBXVEZNb3ZlKGVudHJ5KTsKLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogICAgICAg
ICBzZW5kUmVzdWx0Rm9yQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIGNsZWFu
dXAoTG9hZFJlc3VsdDo6U3VjY2Vzcyk7CiAgICAgfQpAQCAtMTM1OSw3ICsxMzcwLDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKICAg
ICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9j
ZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKCkpOwogICAgIEFTU0VSVChuZXR3b3JrU3Rv
cmFnZVNlc3Npb24pOwogCi0gICAgbG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAi
TmV0d29ya1Jlc291cmNlTG9hZGVyIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhp
cyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG9yaWdpbmFsUmVxdWVzdCgpLmZpcnN0UGFydHlG
b3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKG9yaWdpbmFsUmVxdWVzdCgpKSwgb3Jp
Z2luYWxSZXF1ZXN0KCkudXJsKCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBm
cmFtZUlEKCksIHBhZ2VJRCgpLCBpZGVudGlmaWVyKCkpOworICAgIGxvZ0Nvb2tpZUluZm9ybWF0
aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJl
cXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmln
aW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3Qo
KS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgY29yZUlkZW50aWZpZXIoKSk7
CiB9CiAKIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29u
c3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIsIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBzdGQ6Om9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGlk
ZW50aWZpZXIpCkBAIC0xNDYzLDcgKzE0NzQsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6bG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmCiAK
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlIG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgbWVzc2FnZVNv
dXJjZSwgbWVzc2FnZUxldmVsLCBtZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3Nh
Z2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIG1lc3NhZ2VTb3VyY2UsIG1lc3NhZ2VMZXZl
bCwgbWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsK
IH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQo
VVJMJiYgcmVwb3J0VVJMLCBSZWY8Rm9ybURhdGE+JiYgcmVwb3J0KQpAQCAtMTUzNCw3ICsxNTQ1
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5k
bGUoU2VydmljZVdvcmtlckZldGNoVGFzayogZmUKICAgICBSRUxFQVNFX0FTU0VSVChtX3NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suZ2V0KCkgPT0gZmV0Y2hUYXNrKTsKICAgICBpZiAobV9wYXJhbWV0
ZXJzLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkpIHsKICAg
ICAgICAgTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SKCJzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxl
OiBBYm9ydGluZyBsb2FkIGJlY2F1c2UgdGhlIHNlcnZpY2Ugd29ya2VyIGRpZCBub3QgaGFuZGxl
IHRoZSBsb2FkIGFuZCBzZXJ2aWNlV29ya2VyTW9kZSBvbmx5IGFsbG93cyBzZXJ2aWNlIHdvcmtl
cnMiKTsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OlNlcnZpY2VX
b3JrZXJEaWROb3RIYW5kbGUgeyB9LCBpZGVudGlmaWVyKCkpOworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6U2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSB7IH0sIGNv
cmVJZGVudGlmaWVyKCkpOwogICAgICAgICBhYm9ydCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKaW5kZXggY2VmNjU0NzliN2U2YmNmZjI1Y2ZmMDE4MjVjMmJkM2EwYzc2ODdlZi4u
ZDkyZDMwMzhhMWRlZjEzMWI4YzA0ZDVkY2Y0NWFkMWQ1NTU4M2NjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC04
NSwxOSArODUsMjMgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIGFib3J0
KCk7CiAKKyAgICB2b2lkIHRyYW5zZmVyVG9OZXdXZWJQcm9jZXNzKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CisKICAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtSZXNvdXJjZUxvYWRlck1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAKICAgICB2b2lkIGNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGJv
b2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMpOwogCisgICAgdm9pZCBzZXRSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpIHsgbV9yZXNwb25zZSA9
IFdURk1vdmUocmVzcG9uc2UpOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAKICAgICBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvblRvV2ViUHJvY2VzcygpIGNvbnN0IHsg
cmV0dXJuIG1fY29ubmVjdGlvbjsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29ubmVjdGlvbi0+c2Vzc2lvbklEKCk7IH0KLSAgICBSZXNvdXJjZUxv
YWRJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRl
bnRpZmllcjsgfQorICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgY29yZUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcjsgfQogICAgIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQ7IH0KICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnMud2ViUGFnZUlEOyB9CiAgICAgY29uc3QgTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7
IH0KKyAgICBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXNvdXJjZUxvYWRJRDsgfQogCiAgICAgTmV0d29ya0NhY2hlOjpHbG9iYWxG
cmFtZUlEIGdsb2JhbEZyYW1lSUQoKSB7IHJldHVybiB7IG1fcGFyYW1ldGVycy53ZWJQYWdlUHJv
eHlJRCwgcGFnZUlEKCksIGZyYW1lSUQoKSB9OyB9CiAKQEAgLTIxMCw3ICsyMTQsNyBAQCBwcml2
YXRlOgogCiAgICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvKCk7CiAKLSAgICBj
b25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CisgICAgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbV9wYXJhbWV0ZXJzOwogCiAgICAgUmVmPE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPiBtX2Nvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCBhZjk1MWQ1YTBiNTlmNjkxNjdiNzA0ZmI0
MmIzMGYxYjgwMDFlMjg3Li5kNDU1OTM1MjUzZjc5ZjVjMDQzMWRiYWVlZjkyOTMzNjA3MDRlYTI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC03OCw3ICs3
OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIE1lc3NhZ2U+IGJvb2wgU2VydmljZVdvcmtlckZldGNo
VGFzazo6c2VuZFRvU2VydmljZVdvcmtlcihNZXNzCiAKIHRlbXBsYXRlPHR5cGVuYW1lIE1lc3Nh
Z2U+IGJvb2wgU2VydmljZVdvcmtlckZldGNoVGFzazo6c2VuZFRvQ2xpZW50KE1lc3NhZ2UmJiBt
ZXNzYWdlKQogewotICAgIHJldHVybiBtX2xvYWRlci5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCku
Y29ubmVjdGlvbigpLnNlbmQoc3RkOjpmb3J3YXJkPE1lc3NhZ2U+KG1lc3NhZ2UpLCBtX2xvYWRl
ci5pZGVudGlmaWVyKCkpOworICAgIHJldHVybiBtX2xvYWRlci5jb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCkuY29ubmVjdGlvbigpLnNlbmQoc3RkOjpmb3J3YXJkPE1lc3NhZ2U+KG1lc3NhZ2UpLCBt
X2xvYWRlci5jb3JlSWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpzdGFydChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIHNlcnZpY2VXb3JrZXJD
b25uZWN0aW9uKQpAQCAtMTYyLDYgKzE2Miw4IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vCiAK
ICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNl
V29ya2VyKTsKICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpE
aWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UgfSk7CisgICAgaWYgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlKQorICAgICAgICBtX2xvYWRlci5zZXRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7
CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZURhdGEoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGVjYTExYTNhMDBjMjM0Mzc1
MDdlMDFkOTZjYjBlNDk4MTAxODY0YzQuLjM0NmY3ZDhkODQ1MGI2ZmJkMGU4MDY2MWYxMGRjYmU1
OTU5ODUyYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKQEAgLTU3
LDYgKzU3LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGxvY2tCYWNrRm9yd2FyZExpc3Q7CiAgICAgZW5j
b2RlciA8PCBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgZW5jb2RlciA8PCBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGVuY29kZXIgPDwgZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOwogICAgIGVuY29kZXIgPDwgc2Vzc2lv
bkhpc3RvcnlWaXNpYmlsaXR5OwogCiAgICAgcGxhdGZvcm1FbmNvZGUoZW5jb2Rlcik7CkBAIC0x
MzcsNiArMTM4LDkgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkYXRhLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuZXhpc3RpbmdOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5zZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Mb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMu
aAppbmRleCBlNWM1N2IwNDA0OWM4YjIwYjZiZDYxMWNmYzhmNmIwMWY3OGMwN2ZjLi4wYzA1NDBi
MDQ2ZTRhMWNjNGIxOTE1ZGVhMTM0MGY5ZGEwNjZjYjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xv
YWRQYXJhbWV0ZXJzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0
ZW5zaW9uLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKQEAgLTc0LDYgKzc1LDcgQEAgc3RydWN0
IExvYWRQYXJhbWV0ZXJzIHsKICAgICBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhp
c3RvcnlWaXNpYmlsaXR5IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSB7IFdlYkNvcmU6OlN1YnN0
aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OlZpc2libGUgfTsKICAgICBTdHJp
bmcgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAgIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47Cisg
ICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZGF0YURldGVjdGlvbkNvbnRleHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA2NzFhZGQ0YWEyN2NkMTdlYmI2NzkwZWZlMTZhNTVhMWMxNDM2NmVi
Li5iMWFjM2Q0MzhhMmVhMDQ0MGNmMjNjYWE0NzVkNDc5ZjY5OWY3YjkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTQ3NSw2ICs0NzUsMTcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5h
dGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNvcmU6OlAKICAgICB9CiB9
CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJh
bnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIs
IHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0gTmV0
d29ya1Byb2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXI6IHNvdXJj
ZVByb2Nlc3NJZGVudGlmaWVyOiAlIiBQUkl1NjQgIiwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcjog
JSIgUFJJdTY0LCB0aGlzLCBzb3VyY2VQcm9jZXNzSWRlbnRpZmllci50b1VJbnQ2NCgpLCByZXNv
dXJjZUxvYWRJZGVudGlmaWVyKTsKKyAgICBpZiAoIXJlc291cmNlTG9hZElkZW50aWZpZXIpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZXBh
cmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyLCByZXNv
dXJjZUxvYWRJZGVudGlmaWVyKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNh
bXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vz
c1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDU4YThhOGU5NGJmM2NmZTdi
ZjhjNzc5Nzk4NWNjMTJiZDNhYjY4YmUuLjRlNWJiNDU5YTNkNzJlM2QxZGQ3MGIyZTVlZjIyYmY0
NDA4MTcyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlc1JlcGxpZXMuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogI2lu
Y2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xp
ZW50LmgiCkBAIC0yMTQsNiArMjE1LDggQEAgcHVibGljOgogICAgIHZvaWQgdGVzdFByb2Nlc3NJ
bmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXN0UHJvY2Vzc0luY29t
aW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlEZWxheWVkUmVwbHkmJik7CiAg
ICAgdm9pZCB0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgcHJlcGFyZUxvYWRGb3JXZWJQcm9j
ZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50
aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4pPiYmKTsK
KwogICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1fdGhy
b3R0bGVyOyB9CiAgICAgdm9pZCB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA0MWNk
MzVkYmZhOGQwZTM0YmQxZWI0OWY1ZDU3NGYyYzM3MDBiZDU4Li43NWE2NWM0MzM3MDY1NDc4MDBl
NjIwYWQwNWY0NTZjMzYwNDFlZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0xNzEsOSArMTcxLDkgQEAgdm9pZCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25z
dCBJUEM6OkRhdGEKICAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3By
b2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwgbWltZVR5cGUs
IGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyks
IG5hdmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5LCBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkpOwogfQogCi12b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2Vi
Q29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
IHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0
KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBz
dGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBzdGQ6
Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpCiB7Ci0gICAgUFJPVklTSU9OQUxQQUdFUFJP
WFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6Iik7CisgICAgUFJP
VklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVl
c3Q6IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZT0lIiBQUkl1
NjQsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZS52YWx1ZV9v
cihOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCkpOwogICAgIEFT
U0VSVChzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgIT0gV2ViQ29yZTo6U2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkOjpObyk7CiAKICAgICAvLyBJZiB0aGlzIGlzIGEgY2xpZW50LXNpZGUg
cmVkaXJlY3QgY29udGludWluZyBpbiBhIG5ldyBwcm9jZXNzLCB0aGVuIHRoZSBuZXcgcHJvY2Vz
cyB3aWxsIG92ZXJ3cml0ZSB0aGUgZnJvbUl0ZW0ncyBVUkwuIEluIHRoaXMgY2FzZSwKQEAgLTE4
Miw3ICsxODIsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogICAgIGlmIChuYXZpZ2F0aW9u
LmZyb21JdGVtKCkgJiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCkgPT0gV2ViQ29y
ZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQogICAgICAgICBuYXZpZ2F0aW9uLmZyb21JdGVt
KCktPnNldExhc3RQcm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRp
ZmllcigpKTsKIAotICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1f
cHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVl
c3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSwgdXNlckRhdGEsIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICBt
X3BhZ2UubG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigp
LCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbi5s
YXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJE
YXRhLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllclRvUmVzdW1lKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJz
aXRlUG9saWNpZXMpCkBAIC0zMzAsMTIgKzMzMCwxMiBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoRnJhbWVJZGVudGlmaWVy
CiAgICAgbV9wYWdlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZCht
X3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUlu
Zm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRh
dGEpLCBXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvKSwgb3JpZ2luYXRpbmdQYWdlSUQsIG9y
aWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSksIFdU
Rk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBsaXN0ZW5lcklEKTsKIH0KIAotdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29s
IG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNh
blNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNB
bGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dp
dGNoLCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIGlmICghdmFsaWRhdGVJbnB1
dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2Uu
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQ
YWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlv
bklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0
ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBT
d2l0Y2gsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKKyAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQs
IFdURk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwg
cmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5
SW5qZWN0ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CiB9CiAKIHZvaWQgUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaAppbmRleCAyNzE0YjJhNWI1NDdmMjY2N2ZjYjQ2ZmNlZjFiNTc4NGZi
Y2Y1ODEwLi4wYWJlYTlkYTZiYmQyMDExNGZmNTRjMWI4ZDcxY2FmZGJmNzIzNzYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNp
bmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5o
IgpAQCAtMTA1LDcgKzEwNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBsb2FkRGF0
YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgc3RkOjpv
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6
U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0KEFQSTo6TmF2
aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkUmVxdWVzdChBUEk6Ok5hdmln
YXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgPSBzdGQ6Om51bGxvcHQsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9
IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdh
dGlvbiYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNp
ZXM+JiYpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKQEAgLTEyNCw3ICsxMjUsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgc2VuZE1lc3NhZ2UoVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mJiwgT3B0aW9u
U2V0PElQQzo6U2VuZE9wdGlvbj4sIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYpIGZpbmFsOwogCiAgICAg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUlu
Zm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5
SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklE
KTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVu
ZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29s
IGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3
YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRl
bnRpZmllciwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFs
VVJMRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFVSTCYmKTsKICAgICB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
VXNlckRhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IDVmYjMwODk1MDE1NjI0ODY2NjE1M2M2MjRmNDAzNGVhNGE4ODRmZGYuLjdiZWY5NjU4NzExYzFi
NjI4N2EzN2Y1ZTAwMGJiMTUxODZmMjdiN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtMTM4MSw3ICsxMzgxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBT
aG8KICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRS
ZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRh
dGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3
ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdh
dGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywg
c3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKQogewogICAgIEFTU0VSVCghbV9pc0Ns
b3NlZCk7CiAKQEAgLTE0MDQsNiArMTQwNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAg
ICAgbG9hZFBhcmFtZXRlcnMubG9ja0JhY2tGb3J3YXJkTGlzdCA9IG5hdmlnYXRpb24ubG9ja0Jh
Y2tGb3J3YXJkTGlzdCgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudFJlZGlyZWN0U291cmNl
Rm9ySGlzdG9yeSA9IG5hdmlnYXRpb24uY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCk7
CiAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAgbG9hZFBhcmFtZXRlcnMuZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gZXhpc3RpbmdOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOwogICAgIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRl
bnNpb25IYW5kbGUocHJvY2VzcywgdXJsLCBtX3BhZ2VMb2FkU3RhdGUucmVzb3VyY2VEaXJlY3Rv
cnlVUkwoKSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBh
ZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKHByb2Nlc3MsIGxvYWRQYXJhbWV0ZXJzKTsKQEAgLTM2
MjAsNyArMzYyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2Uo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAgICAgbV9pbnNwZWN0b3JD
b250cm9sbGVyLT5kaWRDb21taXRQcm92aXNpb25hbFBhZ2Uob2xkV2ViUGFnZUlELCBtX3dlYlBh
Z2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1By
b2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVu
ZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgbmV3
UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVz
KQordm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJv
eHk+JiYgc3VzcGVuZGVkUGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBuZXdQcm9jZXNzLCBQ
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQs
IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQs
IFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMsIHN0ZDo6b3B0
aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkKIHsKICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9M
T0coTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzczogbmV3UHJvY2Vzc1BJ
RD0laSwgaGFzU3VzcGVuZGVkUGFnZT0laSIsIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksICEhc3VzcGVuZGVkUGFnZSk7CiAgICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5hdmln
YXRpb24gJSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24u
bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsKQEAgLTM2MzcsNyAr
MzYzOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nl
c3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgYm9vbCBpc1NlcnZlclNpZGVS
ZWRpcmVjdCA9IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA9PSBTaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQ6Olllc0FmdGVyTmF2aWdhdGlvblBvbGljeURlY2lzaW9uICYmIG5hdmlnYXRp
b24uY3VycmVudFJlcXVlc3RJc1JlZGlyZWN0KCk7CiAgICAgYm9vbCBzaG91bGRDbG9zZVByZXZp
b3VzUGFnZUFmdGVyQ29tbWl0ID0gc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkID09IFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25zZVBvbGljeURlY2lzaW9uOwog
ICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbWFrZVVuaXF1ZTxQcm92aXNpb25hbFBhZ2VQcm94eT4o
KnRoaXMsIFdURk1vdmUobmV3UHJvY2VzcyksIFdURk1vdmUoc3VzcGVuZGVkUGFnZSksIG5hdmln
YXRpb24ubmF2aWdhdGlvbklEKCksIGlzU2VydmVyU2lkZVJlZGlyZWN0LCBuYXZpZ2F0aW9uLmN1
cnJlbnRSZXF1ZXN0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHNob3VsZENsb3Nl
UHJldmlvdXNQYWdlQWZ0ZXJDb21taXQsIHdlYnNpdGVQb2xpY2llcy5nZXQoKSk7Ci0gICAgYXV0
byBjb250aW51YXRpb24gPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBu
YXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyldKCkgbXV0YWJs
ZSB7CisgICAgYXV0byBjb250aW51YXRpb24gPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgc2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2ll
cyksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZV0oKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKGF1dG8qIGl0ZW0gPSBuYXZpZ2F0aW9uLT50YXJnZXRJdGVtKCkp
IHsKICAgICAgICAgICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICVwIGNvbnRpbnVlTmF2
aWdhdGlvbkluTmV3UHJvY2VzcyB0byBiYWNrIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS0+dXJs
KCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTM2NjAsMTAgKzM2NjEsMTEgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIHMKIAogICAgICAgICAvLyBGSVhNRTogV29yayBvdXQgdGltaW5nIG9mIHJlc3Bv
bmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0YwogICAgICAgICBBU1NFUlQo
IW5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkuaXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJU
KCFleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgfHwgIW5hdmln
YXRpb24tPnN1YnN0aXR1dGVEYXRhKCkpOwogICAgICAgICBpZiAoYXV0byYgc3Vic3RpdHV0ZURh
dGEgPSBuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKQogICAgICAgICAgICAgbV9wcm92aXNp
b25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQu
ZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3RpdHV0ZURhdGEt
Pk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5iYXNl
VVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIHNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNpdGVQ
b2xpY2llc0RhdGEpLCBzdWJzdGl0dXRlRGF0YS0+c2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5KTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0
KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0
KCkgfSwgbnVsbHB0ciwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSkpOworICAgICAg
ICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291cmNl
UmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkgfSwgbnVsbHB0ciwgc2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdU
Rk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXJUb1Jlc3VtZSk7CiAgICAgfTsKICAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVy
LT5zaG91bGRQYXVzZUxvYWRpbmcoKm1fcHJvdmlzaW9uYWxQYWdlKSkKICAgICAgICAgbV9pbnNw
ZWN0b3JDb250cm9sbGVyLT5zZXRDb250aW51ZUxvYWRpbmdDYWxsYmFjaygqbV9wcm92aXNpb25h
bFBhZ2UsIFdURk1vdmUoY29udGludWF0aW9uKSk7CkBAIC01NjE3LDEyICs1NjE5LDEyIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSwKLSAgICBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBi
b29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKKyAgICBib29sIHdhc0FsbG93ZWRCeUluamVjdGVk
QnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1h
aW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9w
cm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZv
KSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01J
TUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5l
ZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKKyAg
ICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dl
YlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0
aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmli
dXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91
cFN3aXRjaCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVySUQsIHVzZXJEYXRh
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9s
aWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1
dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9s
aWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1
dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0Nv
bnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01NjM1LDEzICs1
NjM3LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JRCA/IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZp
Z2F0aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRyOwogICAgIGF1dG8gbmF2aWdhdGlvblJlc3Bv
bnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZyYW1lSW5mbzo6Y3Jl
YXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBj
YW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKIAotICAgIGF1dG8gbGlzdGVuZXIg
PSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2ViUGFnZUlELCBmcmFtZUlELCBuZWVkc0Jyb3dzaW5n
Q29udGV4dEdyb3VwU3dpdGNoLCBpZGVudGlmaWVyLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uID0g
V1RGTW92ZShuYXZpZ2F0aW9uKSwKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+
c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHdlYlBhZ2VJRCwgZnJhbWVJRCwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5h
dmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pLAogICAgICAgICBwcm9jZXNzLCBuYXZpZ2F0
aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xp
Y2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2Fybmlu
Zywgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhl
IEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdL
RnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxF
QVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdX
YXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CiAKLSAgICAgICAgYXV0byBzZW5kZXIgPSBQ
b2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1l
SUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpXSAoY29uc3QgYXV0byYg
cG9saWN5RGVjaXNpb24pIHsKKyAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNl
bmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQs
IHByb2Nlc3NdIChjb25zdCBhdXRvJiBwb2xpY3lEZWNpc2lvbikgewogICAgICAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZy
YW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uLCBjcmVhdGVOZXR3b3JrRXh0ZW5zaW9u
c1NhbmRib3hFeHRlbnNpb25zKHByb2Nlc3MpKSwgd2ViUGFnZUlEKTsKICAgICAgICAgfSk7CiAK
QEAgLTU2NDksMTIgKzU2NTEsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
clJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICAgICAg
aWYgKHBvbGljeUFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OlVzZSAmJiBuZWVkc0Jyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoICYmIG5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIFJlZ2lzdHJhYmxl
RG9tYWluIHJlc3BvbnNlRG9tYWluIHsgbmF2aWdhdGlvblJlc3BvbnNlLT5yZXNwb25zZSgpLnVy
bCgpIH07CiAgICAgICAgICAgICAvLyBBdm9pZCBwcm9jZXNzLXN3YXBwaW5nIGluIGNhc2VzIHdo
ZXJlIHRoZSBwcm9jZXNzIG9ubHkgY29udGFpbnMgYSBzaW5nbGUgcGFnZSBhbmQgaXMgb3JpZ2lu
LWNsZWFuLgotICAgICAgICAgICAgaWYgKHRoaXMtPnByb2Nlc3MoKS5wYWdlQ291bnQoKSA+IDEg
fHwgKHRoaXMtPnByb2Nlc3MoKS5vcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgJiYgKnRoaXMt
PnByb2Nlc3MoKS5vcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgIT0gcmVzcG9uc2VEb21haW4p
KSB7CisgICAgICAgICAgICBpZiAocHJvY2Vzcy0+cGFnZUNvdW50KCkgPiAxIHx8IChwcm9jZXNz
LT5vcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgJiYgKnByb2Nlc3MtPm9wdGlvbmFsUmVnaXN0
cmFibGVEb21haW4oKSAhPSByZXNwb25zZURvbWFpbikpIHsKICAgICAgICAgICAgICAgICBXRUJQ
QUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VTaGFyZWQ6IFByb2Nlc3Mtc3dhcHBpbmcgZHVlIHRvIENyb3NzLU9yaWdpbi1PcGVuZXIt
UG9saWN5Iik7Ci0gICAgICAgICAgICAgICAgcG9saWN5QWN0aW9uID0gUG9saWN5QWN0aW9uOjpJ
Z25vcmU7Ci0gICAgICAgICAgICAgICAgYXV0byBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1fcHJv
Y2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4od2Vic2l0ZURh
dGFTdG9yZSgpLCB0aGlzLCByZXNwb25zZURvbWFpbik7Ci0gICAgICAgICAgICAgICAgY29udGlu
dWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKCpuYXZpZ2F0aW9uLCBudWxscHRyLCBXVEZNb3ZlKHBy
b2Nlc3NGb3JOYXZpZ2F0aW9uKSwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8sIFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJSZXNwb25zZVBvbGljeURlY2lzaW9u
LCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNz
ID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzOworICAgICAgICAgICAgICAgIHdl
YnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnByZXBhcmVMb2FkRm9yV2ViUHJvY2Vz
c1RyYW5zZmVyKHByb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCBtYWluUmVzb3VyY2VM
b2FkSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCByZXNwb25zZURvbWFpbiA9IFdURk1vdmUocmVzcG9uc2VEb21haW4pLCBuYXZpZ2F0aW9u
LCBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIHNlbmRl
ciA9IFdURk1vdmUoc2VuZGVyKV0oYXV0byBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyVG9SZXN1bWUpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBhdXRvIHByb2Nl
c3NGb3JOYXZpZ2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JSZWdp
c3RyYWJsZURvbWFpbih3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3BvbnNlRG9tYWluKTsK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKCpuYXZp
Z2F0aW9uLCBudWxscHRyLCBXVEZNb3ZlKHByb2Nlc3NGb3JOYXZpZ2F0aW9uKSwgUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8sIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVz
QWZ0ZXJSZXNwb25zZVBvbGljeURlY2lzaW9uLCBudWxscHRyLCBleGlzdGluZ05ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOworCisgICAgICAgICAgICAgICAgICAgIHJlY2Vp
dmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIG5hdmlnYXRpb24uZ2V0KCks
IG51bGxwdHIsIFdURk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92ZShzZW5kZXIpLCB7
IH0sIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Olllcyk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBlYTFjMjJm
YjZiMTFiZTk2ODk5MjgyNjRkM2JmM2ZjODQ3MTA5YjhkLi5mZmY4NWI1NTFhZjAzNjkxMGU0MTJl
YWQ3MTJiZWNjMTNjOTFiZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIk1lZGlhS2V5U3lzdGVtUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJNZWRpYVBsYXliYWNrU3RhdGUuaCIKICNp
bmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJQREZQbHVnaW5JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UGFnZUxvYWRTdGF0ZS5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRBY2Nlc3NJbnRlbnQuaCIKQEAg
LTE3NDEsMTAgKzE3NDIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViTmF2aWdh
dGlvbkRhdGFTdG9yZSYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRD
aGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7
CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJh
bWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVu
ZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRC
dW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29s
IGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3
YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3Vw
U3dpdGNoLCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFza1No
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVVJM
U2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9u
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBB
UEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkws
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgc3RkOjpvcHRp
b25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmls
aXR5KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4s
IHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCk7Cisg
ICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQsIHN0ZDo6b3B0aW9u
YWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCBiYWNrRm9y
d2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5GcmFtZSwgRnJhbWVJbmZvRGF0YSYmLCBX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZv
LCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9k
eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVz
ZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmNEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCkBAIC0yMDYw
LDcgKzIwNjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAg
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKLSAg
ICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25s
b2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRz
QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVz
ZXJEYXRhJik7CisgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRs
ZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEm
KTsKICAgICB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5KFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCBiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIGJvb2wsIFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eSYpOwogCkBAIC0yNDYyLDcgKzI0NjMsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCByZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiA9IHsgfSk7CiAKLSAgICB2b2lkIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhB
UEk6Ok5hdmlnYXRpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmLCBS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJD
b3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xp
Y2llcz4mJik7CisgICAgdm9pZCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpO
YXZpZ2F0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiwgUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViQ29yZTo6
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+
JiYsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5n
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6bnVsbG9wdCk7CiAK
ICAgICB2b2lkIHNldE5lZWRzRm9udEF0dHJpYnV0ZXMoYm9vbCk7CiAgICAgdm9pZCB1cGRhdGVG
b250QXR0cmlidXRlc0FmdGVyRWRpdG9yU3RhdGVDaGFuZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiYzM3YjhmYzZhZGYz
ZWFkMTg3MmQxMTU1ZmYwY2JkMDA5ZGMwYWY5Li44MTk2YjExOWE4ZjAyZTdhMDA2MDQwODUwMjhl
OTFhZTIzMTg2NTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0xMDcsNyArMTA3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVBy
b3h5IHsKICNlbmRpZgogCiAgICAgIyBQb2xpY3kgbWVzc2FnZXMKLSAgICBEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktp
dDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wg
d2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91
cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkK
KyAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxv
YWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50
aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAg
ICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEsIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJl
Y3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJ
RCkKICAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyhXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgc3RydWN0IFdlYktpdDo6RnJh
bWVJbmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xp
Y3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6
TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBzdGQ6Om9wdGlvbmFsPFdl
YktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpIC0+IChzdHJ1Y3QgV2ViS2l0OjpQb2xpY3lEZWNpc2lvbiBQb2xpY3lEZWNpc2lvbikgU3lu
Y2hyb25vdXMKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJ
bmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAK
aW5kZXggNmU5NjkwNzI1NGE0YmQxNTVmNThkZjEzNzg0OGI2MDUzMTlmNTE1NS4uMzQ5ZWEyYzYz
NjkyYWI4MDhmYzczZjVkODg2YTJhYTllNWNjZjIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtNDEyLDgg
KzQxMiwxMSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29y
a1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAogCiAgICAgQVNTRVJUKChsb2FkUGFy
YW1ldGVycy53ZWJQYWdlSUQgJiYgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCkgfHwgbG9hZFBh
cmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5
OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscyk7CiAKLSAgICBXRUJMT0FERVJTVFJBVEVH
WV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVsZWQg
d2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkKSIsIHN0YXRpY19jYXN0PGludD4o
cmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpKTsKLSAgICBpZiAoIVdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1
bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFtZXRlcnMpLCAwKSkgeworICAgIHN0ZDo6b3B0aW9uYWw8
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXJUb1Jlc3VtZTsKKyAgICBpZiAobG9hZFBhcmFtZXRlcnMuaXNNYWluRnJhbWVO
YXZpZ2F0aW9uKQorICAgICAgICBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
VG9SZXN1bWUgPSBzdGQ6OmV4Y2hhbmdlKG1fZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lLCBzdGQ6Om51bGxvcHQpOworICAgIFdFQkxPQURFUlNUUkFURUdZX1JF
TEVBU0VfTE9HKCJzY2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNjaGVkdWxlZCB3aXRo
IHRoZSBOZXR3b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXJUb1Jlc3VtZT0lIiBQUkl1NjQgIikiLCBzdGF0aWNfY2FzdDxpbnQ+KHJl
c291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgZXhpc3RpbmdOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLnZhbHVlX29yKE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyIHsgfSkudG9VSW50NjQoKSk7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2Fk
KGxvYWRQYXJhbWV0ZXJzLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9S
ZXN1bWUpLCAwKSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPR19FUlJP
Uigic2NoZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0
d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkKSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2Fk
ZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpKTsKICAgICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVk
IHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0
IGhhZCBjcmFzaGVkLgogICAgICAgICAvLyBUaGlzIGxvYWQgd2lsbCBuZXZlciBzdWNjZWVkIHNv
IHdlIHdpbGwgc2NoZWR1bGUgaXQgdG8gZmFpbCBhc3luY2hyb25vdXNseS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4
IGNhMjM0OTk1ODY2NmE4MDFiMGUwYTZiZDc2N2RiYmNjY2ZiNzE2YWUuLjI0YjY5Mzc5MDE3ZDU0
MzliYmIxZTFiM2QxYTk1YzhiNzkyMzYwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjUsNiArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xv
YWRlclN0cmF0ZWd5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CkBAIC05
MSw2ICs5Miw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUxvYWRJ
ZGVudGlmaWVyKCk7CiAKKyAgICB2b2lkIHNldEV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXJUb1Jlc3VtZShzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpIHsgbV9l
eGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgPSBleGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7IH0KKwogcHJpdmF0ZToKICAgICB2
b2lkIHNjaGVkdWxlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlKiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
KTsKICAgICB2b2lkIHNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXImKTsKQEAgLTEzMyw2ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dW5z
aWduZWQgbG9uZywgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlcj4gbV9waW5nTG9hZENvbXBsZXRp
b25IYW5kbGVyczsKICAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFByZWNvbm5lY3RDb21wbGV0
aW9uSGFuZGxlcj4gbV9wcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXJzOwogICAgIFZlY3RvcjxG
dW5jdGlvbjx2b2lkKGJvb2wpPj4gbV9vbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyczsKKyAgICBz
dGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBtX2V4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKICAgICBib29sIG1faXNPbkxpbmUg
eyB0cnVlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA3MjMx
NWE1NzU4NzM1ZWQ1ZWYxOTY2NjI5MWU2MTBkMzhjYzBlOWUxLi44YmIzY2U4OTEwODkyZmRkMDc5
YmRjZDljOWRiZmM0MDA0MDY3NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
QEAgLTkxLDYgKzkxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1N1YnJlc291cmNlTG9hZGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9VSUV2ZW50V2l0aEtleVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9XaWRnZXQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CkBAIC04NDgs
MTEgKzg0OSwxMiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAgIGF1dG8qIGNvcmVGcmFt
ZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGF1dG8qIHBvbGljeURvY3VtZW50TG9hZGVy
ID0gY29yZUZyYW1lID8gY29yZUZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyKCkgOiBudWxscHRyOwogICAgIGF1dG8gbmF2aWdhdGlvbklEID0gcG9saWN5RG9jdW1lbnRM
b2FkZXIgPyBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlciY+KCpwb2xpY3lEb2N1bWVudExv
YWRlcikubmF2aWdhdGlvbklEKCkgOiAwOworICAgIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyID0gcG9saWN5RG9jdW1lbnRMb2FkZXIgJiYgcG9saWN5RG9jdW1lbnRMb2FkZXIt
Pm1haW5SZXNvdXJjZUxvYWRlcigpID8gcG9saWN5RG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJj
ZUxvYWRlcigpLT5pZGVudGlmaWVyKCkgOiAwOwogCiAgICAgYm9vbCB3YXNBbGxvd2VkQnlJbmpl
Y3RlZEJ1bmRsZSA9IHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2U7CiAgICAg
YXV0byBwcm90ZWN0b3IgPSBtX2ZyYW1lLmNvcHlSZWYoKTsKICAgICB1aW50NjRfdCBsaXN0ZW5l
cklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1
bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKLSAgICBpZiAoIXdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIGlkZW50aWZpZXIsIG5hdmln
YXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dSZXNwb25zZSwgZG93bmxvYWRBdHRy
aWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdy
b3VwU3dpdGNoLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkgeworICAg
IGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgaWRlbnRpZmll
ciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd1Jlc3BvbnNlLCBkb3du
bG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdD
b250ZXh0R3JvdXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBsaXN0ZW5lcklE
LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkgewogICAgICAgICBXRUJGUkFNRUxPQURFUkNM
SUVOVF9SRUxFQVNFX0xPRyhOZXR3b3JrLCAiZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZTogaWdub3JpbmcgYmVjYXVzZSBXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNl
IGZhaWxlZCIpOwogICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlz
dGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQsIFBvbGlj
eUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDA0ZTNhZTIwMTQzZjJmM2RiZDIw
NjRhMzAyZjAxYjg0ZWRjYTk2NDUuLmZlNGY0OWE2NDVjN2Y2MDQ5MTQxODgxZjI4MDIxNTA0ZWEz
OGZhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0yNjIsNiArMjYyLDcgQEAKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVk
ZSA8d3RmL1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8
d3RmL1Njb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3Rm
L1N5c3RlbVRyYWNpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkBAIC0x
Njg5LDYgKzE2OTAsMTEgQEAgdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVy
cyYmIGxvYWRQYXJhbWV0ZXJzKQogICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4o
bG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgJm1fbWFpbkZyYW1l
LmdldCgpKTsKICNlbmRpZgogCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVy
U3RyYXRlZ3koKS5zZXRFeGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWUobG9hZFBhcmFtZXRlcnMuZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lKTsKKyAgICBhdXRvIHJlc3VtaW5nTG9hZFNjb3BlID0gbWFrZVNjb3BlRXhpdChbXSB7
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2V0
RXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKHN0ZDo6bnVsbG9w
dCk7CisgICAgfSk7CisKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsK
IAogICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25J
RDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxODgx
YTVmMzY2MzIzYzczNDBjMDA4ZmZmODY2NGUzOTVkYmM5NWQzLi4wZWZjZDVkYWI5NWE0MjBkOWJh
MDI2NDUxMTQ1MzRlZTQ1MDQ5MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4
dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgIk9wdGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJQbHVnaW4uaCIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhYzNiZDAzZjAwOWI4N2UwNTlkZDhjYTk0
NjA4YzBlZjZjMzA4NGNmLi45ZDZiYzRjYzMwYWVhNmFmYjExNzRjMjU0YWY5MDk3YmUzN2IzYTI5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDgtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBSZXVzZSB0aGUgc2FtZSBuZXR3b3JrIGxvYWQg
d2hlbiBwcm9jZXNzLXN3YXBwaW5nIG9uIHJlc291cmNlIHJlc3BvbnNlIGR1ZSB0byBDT09QCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk0NjUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyMzA3NjExPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAg
ICAgICAqIGh0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3Jlc291cmNlcy9zaW5n
bGUtcmVxdWVzdC10by1zZXJ2ZXItcG9wdXAucHk6IEFkZGVkLgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVl
c3QtdG8tc2VydmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvY3Jv
c3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLmh0bWw6IEFk
ZGVkLgorCiAyMDIxLTA4LTI2ICBFcmljIEh1dGNoaXNvbiAgPGVodXRjaGlzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFVwZGF0ZSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3Igd2ViZ2wgdGVzdHMuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGlj
eS9yZXNvdXJjZXMvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLXBvcHVwLnB5IGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvcmVzb3VyY2VzL3NpbmdsZS1y
ZXF1ZXN0LXRvLXNlcnZlci1wb3B1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDJiM2JkY2IyOWY3OGExNmQw
NDVjZjMwOTI0ODYyZTI4NmU4YTMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvcmVzb3VyY2VzL3NpbmdsZS1yZXF1ZXN0
LXRvLXNlcnZlci1wb3B1cC5weQpAQCAtMCwwICsxLDEzIEBACitkZWYgbWFpbihyZXF1ZXN0LCBy
ZXNwb25zZSk6CisgICAgdG9rZW4gPSByZXF1ZXN0LkdFVFtiJ3Rva2VuJ10KKyAgICB2YWx1ZSA9
IHJlcXVlc3Quc2VydmVyLnN0YXNoLnRha2UodG9rZW4pCisgICAgYWxyZWFkeV9sb2FkZWRfc3Ry
aW5nID0gIm5vdF9hbHJlYWR5X2xvYWRlZCIKKyAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKKyAg
ICAgICAgYWxyZWFkeV9sb2FkZWRfc3RyaW5nID0gImFscmVhZHlfbG9hZGVkIgorICAgIGVsc2U6
CisgICAgICAgIHJlcXVlc3Quc2VydmVyLnN0YXNoLnB1dCh0b2tlbiwgVHJ1ZSkKKyAgICByZXR1
cm4gKFsKKyAgICAgICAgKGInQ2FjaGUtQ29udHJvbCcsIGInbm8tc3RvcmUnKSwKKyAgICAgICAg
KGInQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3knLCBiJ3NhbWUtb3JpZ2luJyksCisgICAgICAg
IChiJ0NvbnRlbnQtVHlwZScsIGIndGV4dC9odG1sJyldLAorICAgICAgICB1JzxzY3JpcHQ+dmFy
IGJjID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoInNpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlciIpOyBi
Yy5wb3N0TWVzc2FnZSgiJXMiKTs8L3NjcmlwdD5cbicgJSBhbHJlYWR5X2xvYWRlZF9zdHJpbmcp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBv
bGljeS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2Vy
dmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjU3N2VjZTlmNWI3YmFmYmFmNmQ0ZDIyOWYw
ZjMwOWQ2NmFkMDQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3Jv
c3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBNYWtlIHN1cmUgd2UgbWFrZSBhIHNpbmdsZSBy
ZXF1ZXN0IHRvIHRoZSBIVFRQIHNlcnZlciB3aGVuIHN3aXRjaGluZyBicm93c2luZyBjb250ZXh0
IGdyb3VwCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1v
cGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2Vy
dmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjIyZjBkZGU2OGVlMTdlODU1MGI5NzliM2IyMzU4YTFmYTVh
NzdjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdp
bi1vcGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci5odG1sCkBAIC0wLDAgKzEs
MjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9dXRm
LTg+Cis8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvY29tbW9uL3V0aWxzLmpzIj48L3NjcmlwdAorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0PgorYXN5bmNfdGVzdCgodCkgPT4geworICAgIHZhciBiYyA9IG5ldyBCcm9hZGNhc3RDaGFu
bmVsKCdzaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXInKTsKKyAgICBsZXQgdyA9IG9wZW4oInJlc291
cmNlcy9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXItcG9wdXAucHk/dG9rZW49IiArIHRva2VuKCkp
OworICAgIGJjLm9ubWVzc2FnZSA9IHQuc3RlcF9mdW5jKChldmVudCkgPT4geworICAgICAgICBh
c3NlcnRfZXF1YWxzKGV2ZW50LmRhdGEsICJub3RfYWxyZWFkeV9sb2FkZWQiKTsKKyAgICAgICAg
YXNzZXJ0X3RydWUody5jbG9zZWQsICJTaG91bGQgc3dpdGNoIGJyb3dzaW5nIGNvbnRleHQgZ3Jv
dXAiKTsKKyAgICAgICAgdC5kb25lKCk7CisgICAgfSk7Cit9LCAiTWFrZSBzdXJlIHdlIG1ha2Ug
YSBzaW5nbGUgcmVxdWVzdCB0byB0aGUgSFRUUCBzZXJ2ZXIgd2hlbiBzd2l0Y2hpbmcgYnJvd3Np
bmcgY29udGV4dCBncm91cCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="459609"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436556</attachid>
            <date>2021-08-26 13:21:11 -0700</date>
            <delta_ts>2021-08-27 08:03:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229465-20210826132110.patch</filename>
            <type>text/plain</type>
            <size>81282</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNmMDAwYWZjYjJkNTE2OWRm
MTc4OTQ5MDJiZWVlYWI5ZmFjOTA4NDEuLmU2YWUyNTcyN2E4Y2NmYjZmOGJiNGQ2OTQ1YWY4MjBl
ZDYyYTc1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMjEtMDgtMjYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBSZXVzZSB0aGUgc2FtZSBu
ZXR3b3JrIGxvYWQgd2hlbiBwcm9jZXNzLXN3YXBwaW5nIG9uIHJlc291cmNlIHJlc3BvbnNlIGR1
ZSB0byBDT09QCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjk0NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyMzA3NjExPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHIyODE1MTYgYWRkZWQgc3VwcG9y
dCBmb3IgcHJvY2Vzcy1zd2FwcGluZyBiYXNlZCBvbiBDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGlj
eSBoZWFkZXIKKyAgICAgICAgaW4gSFRUUCByZXNwb25zZXMuIEhvd2V2ZXIsIG9uIHByb2Nlc3Mt
c3dhcCwgd2Ugd291bGQgYWJvcnQgdGhlIGV4aXN0aW5nIG5ldHdvcmsgbG9hZAorICAgICAgICB0
aGF0IHdhcyBzdGFydGVkIGJ5IHRoZSBvcmlnaW5hbCBXZWJQcm9jZXNzIGFuZCBzdGFydCBhIGZy
ZXNoIG5ldHdvcmsgbG9hZCBpbiB0aGUgbmV3CisgICAgICAgIFdlYlByb2Nlc3MuIFRoaXMgd2Fz
IHN1Ym9wdGltYWwgYW5kIGNvdWxkIGxlYWQgdG8gaXNzdWVzIHdpdGggcmVzb3VyY2VzIHRoYXQg
cHJvdmlkZQorICAgICAgICBvbmUtdGltZSBiZWhhdmlvcnMuIFRoaXMgcGF0Y2ggYWRkcmVzc2Vz
IHRoZSBpc3N1ZSBieSB0cmFuc2ZlcnJpbmcgdGhlIG5ldHdvcmsgbG9hZAorICAgICAgICBpbiB0
aGUgbmV0d29yayBwcm9jZXNzIGZyb20gdGhlIG9sZCBXZWJQcm9jZXNzIHRvIHRoZSBuZXcgV2Vi
UHJvY2VzcyB3aGVuIHByb2Nlc3MKKyAgICAgICAgc3dhcHBpbmcuCisKKyAgICAgICAgV2hlbiB0
aGUgVUlQcm9jZXNzIGRlY2lkZXMgdG8gcHJvY2Vzcy1zd2FwIG9uIHJlc3BvbnNlIHBvbGljeSBk
ZWNpc2lvbiwgaXQgZmlyc3QKKyAgICAgICAgc2VuZHMgSVBDIHRvIHRoZSBuZXR3b3JrIHByb2Nl
c3MgdG8gYXNrIGl0IHRvIHByZXBhcmUgdGhlIE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAg
ICBmb3Igb3duZXJzaGlwIHRyYW5zZmVyLiBUaGUgbmV0d29yayBwcm9jZXNzIHRha2VzIHRoZSBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIKKyAgICAgICAgZnJvbSBpdHMgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgYW5kIHN0b3JlcyBpdCBpbiBhIHRlbXBvcmFyeSBjYWNoZSwgdGhlbgorICAg
ICAgICByZXNwb25kcyB0byB0aGUgVUlQcm9jZXNzIHdpdGggdGhlIE5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyIG9mIHRoZSBsb2FkZXIuCisgICAgICAgIFVwb24gcmVjZWl2aW5nIHRoZSBy
ZXNwb25zZSwgdGhlIFVJUHJvY2VzcyBwcm9jZWVkcyB3aXRoIHRoZSBwcm9jZXNzLXN3YXAsIGl0
CisgICAgICAgIHJlamVjdHMgcmVzcG9uc2UgcHJvY2Vzc2luZyBpbiB0aGUgb2xkIHByb2Nlc3Mg
YW5kIGRvZXMgYSBsb2FkUmVxdWVzdCBpbiBhIG5ldworICAgICAgICBXZWJQcm9jZXNzLiBXaGVu
IHN0YXJ0aW5nIHNlbmRpbmcgdGhlIExvYWRSZXF1ZXN0IElQQyB0byB0aGUgbmV3IFdlYlByb2Nl
c3MsIGl0CisgICAgICAgIHBhc3NlcyBhbG9uZyB0aGUgTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXIgb2YgdGhlIGNhY2hlZCBsb2FkZXIgaW4gdGhlIG5ldHdvcmsKKyAgICAgICAgcHJvY2Vz
cy4gV2hlbiB0aGUgV2ViUHJvY2VzcyBlbmRzIHVwIHNjaGVkdWxpbmcgdGhlIGxvYWQgd2l0aCB0
aGUgbmV0d29yayBwcm9jZXNzLAorICAgICAgICBpdCBwYXNzZXMgYWdhaW4gdGhlIE5ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLiBVcG9uIHJlY2VpdmluZyB0aGUgbG9hZCByZXF1ZXN0LAor
ICAgICAgICB0aGUgbmV0d29yayBwcm9jZXNzIGNoZWNrcyBpZiBhIE5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyIGlzIHByb3ZpZGVkIGZvcgorICAgICAgICBjb250aW51aW5nIGEgbG9hZC4g
SWYgbm9uZSBpcyBwcm92aWRlZCwgd2UgdXNlIHRoZSByZWd1bGFyIGNvZGUgcGF0aCBhbmQgYWN0
dWFsbHkKKyAgICAgICAgY29uc3RydWN0IGEgbmV3IE5ldHdvcmtSZXNvdXJjZUxvYWRlci4gSG93
ZXZlciwgaWYgYSBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcgorICAgICAgICBpcyBwcm92
aWRlZCwgd2UgdGFrZSB0aGUgY29ycmVzcG9uZGluZyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgZnJv
bSB0aGUgY2FjaGUsCisgICAgICAgIHRyYW5zZmVyIGl0IHRvIHRoZSBuZXcgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgYW5kIGhhdmUgaXQgc2VuZCB0aGUKKyAgICAgICAgRGlkUmVjZWl2
ZVJlc3BvbnNlIElQQyB0byB0aGUgV2ViUHJvY2VzcyB0byBjb250aW51ZSB0aGUgbG9hZCB3aXRo
IHRoZSBuZXcKKyAgICAgICAgV2ViUHJvY2Vzcy4KKworICAgICAgICBUZXN0OiBodHRwL3dwdC9j
cm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXIuaHRtbAor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
Q2xlYW51cFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnRyYW5zZmVyS2VwdEFsaXZlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNlTG9hZCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0YWtlTmV0d29y
a1Jlc291cmNlTG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OkNh
Y2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Q2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OkNhY2hlZE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6dGFrZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpDYWNo
ZWROZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmV4cGlyYXRpb25UaW1lckZpcmVkKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnRha2VMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NUcmFu
c2Zlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlTG9hZEZvcldl
YlByb2Nlc3NUcmFuc2Zlcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyYW5zZmVyVG9OZXdXZWJQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJ
bnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JY
RnJhbWVPcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
aG91bGRJbnRlcnJ1cHROYXZpZ2F0aW9uRm9yQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0V29y
a2VyTG9hZEZvckNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRp
b24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFkZENv
bnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
ZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpzZW5kVG9DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIFNoYXJlZC9M
b2FkUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6cHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNp
b25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5h
dmlnYXRpb25TaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbnRpbnVl
TmF2aWdhdGlvbkluTmV3UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMjEtMDgtMjYgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1
cCBsb2dnaW5nICNpbmNsdWRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBkOTYy
YTk4YWY1NDY3NTQ0ZmI0MDg3YzQ4MWFhMjJlYTdlYTVmNjIwLi42MmIxYWU0NjAyZTVlMzE4ZWJm
MjcyYTljYmJiZDM4NDk3ZTk2YWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAt
ODUsNiArODUsNyBAQAogI2VuZGlmCiAKICNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhj
aGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJ
ZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6IiBm
bXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1Nf
XykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4u
LikgUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVy
PSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMs
IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKIAogI2Rl
ZmluZSBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDSyhhc3NlcnRpb24pIE5FVFdPUktfUFJP
Q0VTU19NRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNzZXJ0aW9uLCAodm9pZCkwKQogI2RlZmlu
ZSBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKGFzc2VydGlvbiwgY29t
cGxldGlvbikgZG8geyBcCkBAIC0xNjYsNyArMTY3LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFuZ2VkKGJvb2wgaGFzVXBsb2FkKQogCiB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkaWRDbGVhbnVwUmVzb3VyY2VMb2Fk
ZXIoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
bG9hZGVyLmlkZW50aWZpZXIoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobG9hZGVyLmNvcmVJZGVu
dGlmaWVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IGlmIChsb2FkZXIuaXNLZXB0QWxpdmUoKSkgewpAQCAtMTc0LDE2ICsxNzUsMTYgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlkQ2xlYW51cFJlc291cmNlTG9hZGVyKE5l
dHdvcmtSZXNvdXJjZUxvYWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVCht
X25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuZ2V0KGxvYWRlci5pZGVudGlmaWVyKCkpID09ICZsb2Fk
ZXIpOwotICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5yZW1vdmUobG9hZGVyLmlkZW50aWZp
ZXIoKSk7CisgICAgQVNTRVJUKG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5nZXQobG9hZGVyLmNv
cmVJZGVudGlmaWVyKCkpID09ICZsb2FkZXIpOworICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVy
cy5yZW1vdmUobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjp0cmFuc2ZlcktlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNl
TG9hZGVyJiBsb2FkZXIpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIEFTU0VSVChsb2FkZXIuaXNLZXB0QWxpdmUoKSk7Ci0gICAgQVNTRVJUKG1fbmV0d29y
a1Jlc291cmNlTG9hZGVycy5nZXQobG9hZGVyLmlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7Ci0g
ICAgaWYgKGF1dG8gdGFrZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShs
b2FkZXIuaWRlbnRpZmllcigpKSkKKyAgICBBU1NFUlQobV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJz
LmdldChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkgPT0gJmxvYWRlcik7CisgICAgaWYgKGF1dG8g
dGFrZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2FkZXIuY29yZUlk
ZW50aWZpZXIoKSkpCiAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmFkZEtlcHRBbGl2ZUxvYWQo
dGFrZW5Mb2FkZXIucmVsZWFzZU5vbk51bGwoKSk7CiB9CiAKQEAgLTQ4NiwyNyArNDg3LDM4IEBA
IHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y3JlYXRlRmV0CiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpCiB7Ci0gICAgQ09OTkVDVElPTl9SRUxF
QVNFX0xPRyhMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJjZUxvYWQ6IChwYXJlbnRQSUQ9JWQsIHBh
Z2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIg
UFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIpIiwgbG9hZFBhcmFtZXRlcnMucGFyZW50
UElELCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJ
bnQ2NCgpLCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDogKHBhcmVudFBJRD0lZCwgcGFn
ZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZT0l
IiBQUkl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQsIGxvYWRQYXJhbWV0ZXJzLndl
YlBhZ2VQcm94eUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2
NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUudmFsdWVfb3IoTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZv
clNlc3Npb24obV9zZXNzaW9uSUQpOwogICAgIGlmICghc2VydmVyLmlzSW1wb3J0Q29tcGxldGVk
KCkpIHsKLSAgICAgICAgc2VydmVyLndoZW5JbXBvcnRJc0NvbXBsZXRlZChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkUGFyYW1ldGVycyA9IFdURk1vdmUobG9hZFBh
cmFtZXRlcnMpXSgpIG11dGFibGUgeworICAgICAgICBzZXJ2ZXIud2hlbkltcG9ydElzQ29tcGxl
dGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGxvYWRQYXJhbWV0ZXJz
ID0gV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWVdKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NDb25u
ZWN0aW9uKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkpKQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24o
bV9zZXNzaW9uSUQpLmlzSW1wb3J0Q29tcGxldGVkKCkpOwotICAgICAgICAgICAgc2NoZWR1bGVS
ZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycykpOworICAgICAgICAgICAgc2NoZWR1
bGVSZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0aW5nTG9hZGVyVG9S
ZXN1bWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgorCiAg
ICAgYXV0byBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcjsKICAgICBSRUxF
QVNFX0FTU0VSVChpZGVudGlmaWVyKTsKICAgICBSRUxFQVNFX0FTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMoaWRl
bnRpZmllcikpOwogCisgICAgaWYgKGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpIHsKKyAgICAgICAg
aWYgKGF1dG8gZXhpc3RpbmdMb2FkZXIgPSBuZXR3b3JrUHJvY2VzcygpLnRha2VMb2FkZXJBd2Fp
dGluZ1dlYlByb2Nlc3NUcmFuc2ZlcigqZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZSkpIHsKKyAgICAg
ICAgICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coTG9hZGluZywgInNjaGVkdWxlUmVzb3VyY2VM
b2FkOiBSZXN1bWluZyBleGlzdGluZyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIiKTsKKyAgICAgICAg
ICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5hZGQoaWRlbnRpZmllciwgKmV4aXN0aW5nTG9h
ZGVyKTsKKyAgICAgICAgICAgIGV4aXN0aW5nTG9hZGVyLT50cmFuc2ZlclRvTmV3V2ViUHJvY2Vz
cygqdGhpcywgaWRlbnRpZmllcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAic2NoZWR1bGVSZXNv
dXJjZUxvYWQ6IENvdWxkIG5vdCBmaW5kIGV4aXN0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciB0
byByZXN1bWUsIHdpbGwgZG8gYSBmcmVzaCBsb2FkIik7CisgICAgfQorCiAgICAgYXV0byYgbG9h
ZGVyID0gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZShXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgKnRoaXMpKS5pdGVy
YXRvci0+dmFsdWU7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0xMjY5LDYgKzEy
ODEsMTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJpb3JpdGl6ZVJl
c291cmNlTG9hZHMoVmVjdG9yPFJlc291cmNlTG9hZEkKICAgICBzZXNzaW9uLT5uZXR3b3JrTG9h
ZFNjaGVkdWxlcigpLnByaW9yaXRpemVMb2Fkcyhsb2Fkcyk7CiB9CiAKK1JlZlB0cjxOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0YWtlTmV0d29y
a1Jlc291cmNlTG9hZGVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpCit7CisgICAg
aWYgKCFOZXR3b3JrUmVzb3VyY2VMb2FkTWFwOjpNYXBUeXBlOjppc1ZhbGlkS2V5KHJlc291cmNl
TG9hZElkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9u
ZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRha2UocmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDVlMDcwOTFlMzczNmRlMzUyMTkyY2ZlNzg2Nzlj
YjYyMmIyM2RmMmYuLmY0YTBhYjcxOTNlZmM2Y2ZmYWM2MGZlZmNkY2QzOGZiYWU5ZjA5NTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtNRE5TUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUlRDUHJvdmlkZXIuaCIKKyNp
bmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdv
cmtSZXNvdXJjZUxvYWRNYXAuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgogI2luY2x1
ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTE4Niw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQ
b2xpY3kpOwogCiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VT
b3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIFJl
ZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIodWlu
dDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CkBA
IC0yMDMsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jik7CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpF
bmNvZGVyPiYpOwogCi0gICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpOwogICAgIHZvaWQgcGVyZm9y
bVN5bmNocm9ub3VzTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWRE
ZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCB0ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2Vz
V2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpUZXN0UHJvY2Vzc0luY29taW5nU3luY01l
c3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBs
b2FkUGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJlOTI0NGU4NmZjZGUzNWM5OGM2MGM3
MDRjYmFlZjI0MDJmZDBkNmEuLjczZjNlODkxNjI5ZTIyMzQ0OWU0NzUzMmRkMTQyNDczNWUzZDRi
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjIs
NyArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAKLSAgICBTY2hlZHVsZVJlc291cmNlTG9hZChXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCisgICAgU2No
ZWR1bGVSZXNvdXJjZUxvYWQoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBy
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpCiAgICAgUGVyZm9ybVN5
bmNocm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291
cmNlTG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBWZWN0b3I8dWludDhfdD4gZGF0YSkgU3lu
Y2hyb25vdXMKICAgICBUZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHkoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJv
b2wgaGFuZGxlZCkgU3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDVkNjgyOWIyODgw
MjU0YmQwMTEzMTBhOWZkMjlkNzg1ZWRiNmUwNTUuLjE0MGI3MjNlZTJlMGU0NmZiZWUyMTZhMTFl
MjI3YjJhMjljMjZmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCkBAIC0xMTksNiArMTE5LDggQEAKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKK2NvbnN0ZXhwciBTZWNvbmRzIGNhY2hlZE5ldHdv
cmtSZXNvdXJjZUxvYWRlckxpZmV0aW1lIHsgMzBfcyB9OworCiBzdGF0aWMgdm9pZCBjYWxsRXhp
dFNvb24oSVBDOjpDb25uZWN0aW9uKikKIHsKICAgICAvLyBJZiB0aGUgY29ubmVjdGlvbiBoYXMg
YmVlbiBjbG9zZWQgYW5kIHdlIGhhdmVuJ3QgcmVzcG9uZGVkIGluIHRoZSBtYWluIHRocmVhZCBm
b3IgMTAgc2Vjb25kcwpAQCAtMjgxNSw2ICsyODE3LDQ4IEBAIFJUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlclByb3h5JiBOZXR3b3JrUHJvY2Vzczo6cnRjRGF0YUNoYW5uZWxQcm94eSgpCiB9CiAj
ZW5kaWYKIAorTmV0d29ya1Byb2Nlc3M6OkNhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Q2Fj
aGVkTmV0d29ya1Jlc291cmNlTG9hZGVyKFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+JiYgbG9h
ZGVyKQorICAgIDogbV9leHBpcmF0aW9uVGltZXIoKnRoaXMsICZDYWNoZWROZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmV4cGlyYXRpb25UaW1lckZpcmVkKQorICAgICwgbV9sb2FkZXIoV1RGTW92ZShs
b2FkZXIpKQoreworICAgIG1fZXhwaXJhdGlvblRpbWVyLnN0YXJ0T25lU2hvdChjYWNoZWROZXR3
b3JrUmVzb3VyY2VMb2FkZXJMaWZldGltZSk7Cit9CisKK1JlZjxOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI+IE5ldHdvcmtQcm9jZXNzOjpDYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRha2VMb2Fk
ZXIoKQoreworICAgIHJldHVybiBtX2xvYWRlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpDYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmV4cGlyYXRpb25U
aW1lckZpcmVkKCkKK3sKKyAgICBhdXRvIGxvYWRlciA9IG1fbG9hZGVyLT5jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS50YWtlTG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNz
VHJhbnNmZXIobV9sb2FkZXItPmlkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUX1VOVVNFRChsb2Fk
ZXIsIGxvYWRlcik7Cit9CisKK1JlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IE5ldHdvcmtQ
cm9jZXNzOjp0YWtlTG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIoTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGNhY2hlZFJlc291cmNl
TG9hZGVyID0gbV9sb2FkZXJzQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIudGFrZShpZGVudGlm
aWVyKTsKKyAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2VMb2FkZXItPnRha2VMb2FkZXIoKTsKK30K
Kwordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIo
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHVpbnQ2
NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIEFTU0VSVChyZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKyAgICBhdXRvKiBj
b25uZWN0aW9uID0gd2ViUHJvY2Vzc0Nvbm5lY3Rpb24oc291cmNlUHJvY2Vzc0lkZW50aWZpZXIp
OworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHN0ZDo6bnVsbG9wdCk7CisKKyAgICBhdXRvIGxvYWRlciA9IGNvbm5lY3Rpb24tPnRha2VOZXR3
b3JrUmVzb3VyY2VMb2FkZXIocmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CisgICAgaWYgKCFsb2Fk
ZXIpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOworCisg
ICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLT5pZGVudGlmaWVyKCk7CisgICAgbV9sb2FkZXJz
QXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIuYWRkKGlkZW50aWZpZXIsIG1ha2VVbmlxdWU8Q2Fj
aGVkTmV0d29ya1Jlc291cmNlTG9hZGVyPihsb2FkZXIucmVsZWFzZU5vbk51bGwoKSkpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZpZXIpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNz
OjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmlu
ZGV4IGVhOTFlZDU5NDAzZTQ5ZmUyN2RhNjgxOTMxNjcxZTk2ZmY3YmY5YTcuLjQyZTIwM2M3MGZj
MzdmNDNhNzc4M2RkNzlmMTRmYjJkNTZjYzk2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJE
b3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
aCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlci5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5u
ZWxSZW1vdGVNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAj
aW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCkBAIC0zODksNiArMzkwLDggQEAgcHVibGljOgogICAg
IFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5JiBydGNEYXRhQ2hhbm5lbFByb3h5KCk7
CiAjZW5kaWYKIAorICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VMb2FkZXJB
d2FpdGluZ1dlYlByb2Nlc3NUcmFuc2ZlcihOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7
CisKIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhj
b25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogCkBAIC00MjIsNiArNDI1
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTmV0d29ya1Byb2Nlc3NNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29k
ZXI+Jik7CiAgICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6OkF0dGFjaG1lbnQ+JiYsIFdl
YkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmKTsKKyAgICB2b2lkIHByZXBhcmVMb2Fk
Rm9yV2ViUHJvY2Vzc1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNvdXJjZVBy
b2Nlc3NJZGVudGlmaWVyLCB1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXI+KT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlv
bj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEmJik+JiYpOwogICAgIHZvaWQg
ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwpAQCAtNjA5LDYgKzYxMywxOSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OlVzZXJDb250ZW50VVJMUGF0dGVybj4+IG1f
ZXh0ZW5zaW9uQ09SU0Rpc2FibGluZ1BhdHRlcm5zOwogCisgICAgY2xhc3MgQ2FjaGVkTmV0d29y
a1Jlc291cmNlTG9hZGVyIHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAg
cHVibGljOgorICAgICAgICBleHBsaWNpdCBDYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXIoUmVm
PE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4mJik7CisgICAgICAgIFJlZjxOZXR3b3JrUmVzb3VyY2VM
b2FkZXI+IHRha2VMb2FkZXIoKTsKKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIGV4cGlyYXRp
b25UaW1lckZpcmVkKCk7CisgICAgICAgIFdlYkNvcmU6OlRpbWVyIG1fZXhwaXJhdGlvblRpbWVy
OworICAgICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKKyAgICB9
OworCisgICAgSGFzaE1hcDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgc3RkOjp1bmlx
dWVfcHRyPENhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4+IG1fbG9hZGVyc0F3YWl0aW5nV2Vi
UHJvY2Vzc1RyYW5zZmVyOworCiAgICAgYm9vbCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50RW5h
YmxlZCB7IHRydWUgfTsKICAgICBib29sIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01v
ZGVFbmFibGVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkNzk5NzQ1MWM0NTQw
Y2MzZDc1NjUzNDhjNzZhMjM0NDkxMzgyZjlhLi5jYWViOGQ5YmI4NDhjNjkwMGFlOTU1NWQwNzU5
ZjkyZDU5YmYyNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE5NSw2ICsxOTUsOCBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2xlYXJBcHBQcml2YWN5
UmVwb3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwog
I2VuZGlmCiAKKyAgICBQcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwgdWludDY0X3QgcmVzb3Vy
Y2VMb2FkSWRlbnRpZmllcikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllcj4gbmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIpIEFzeW5jCisK
ICAgICBBZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VO
ZXR3b3JrUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQogICAgIFJlbW92ZVdlYlBhZ2VOZXR3b3JrUGFy
YW1ldGVycyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQpCiAgICAgQ291bnROb25EZWZhdWx0U2Vzc2lvblNldHMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoc2l6ZV90IGNvdW50KSBBc3luYwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDgyZjFlNTMwMTQ0ZmEwZmYyZGFiMTFlNjQ0YzA5YjdmNjg2MWEwMDAuLjI5NmQ0NTEwMmJkMThk
M2ZlZmRjZjMwMTU0MzdmZDhjM2ZjMGUyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUyMiw2ICs1MjIs
MTYgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKICAgICBjbGVhbnVwKExv
YWRSZXN1bHQ6OkNhbmNlbCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cmFu
c2ZlclRvTmV3V2ViUHJvY2VzcyhOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbmV3Q29u
bmVjdGlvbiwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBuZXdDb3JlSWRlbnRpZmllcikKK3sKKyAg
ICBtX2Nvbm5lY3Rpb24gPSBuZXdDb25uZWN0aW9uOworICAgIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyID0gbmV3Q29yZUlkZW50aWZpZXI7CisKKyAgICBBU1NFUlQobV9yZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyIHx8IG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSB8fCBtX3NlcnZpY2VXb3JrZXJGZXRjaFRhc2spOworICAgIGJvb2wgd2lsbFdhaXRGb3JD
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9IHRydWU7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IG1fcmVzcG9uc2UsIHdpbGxXYWl0
Rm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgfSk7Cit9CisKIGJvb2wgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJp
bmcmIHhGcmFtZU9wdGlvbnMsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmIChpc01haW5GcmFt
ZUxvYWQoKSkKQEAgLTU0NiwxMiArNTU2LDEyIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIHhGCiAg
ICAgfQogICAgIGNhc2UgWEZyYW1lT3B0aW9uc0Rpc3Bvc2l0aW9uOjpDb25mbGljdDogewogICAg
ICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIk11bHRpcGxlICdYLUZyYW1lLU9wdGlvbnMnIGhl
YWRlcnMgd2l0aCBjb25mbGljdGluZyB2YWx1ZXMgKCciICsgeEZyYW1lT3B0aW9ucyArICInKSBl
bmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcgJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRv
TGVuZ3RoKCkgKyAiJy4gRmFsbGluZyBiYWNrIHRvICdERU5ZJy4iOwotICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2Fn
ZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVz
c2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgWEZyYW1lT3B0aW9uc0Rpc3Bvc2l0aW9u
OjpJbnZhbGlkOiB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSAiSW52YWxpZCAnWC1G
cmFtZS1PcHRpb25zJyBoZWFkZXIgZW5jb3VudGVyZWQgd2hlbiBsb2FkaW5nICciICsgdXJsLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIic6ICciICsgeEZyYW1lT3B0aW9ucyAr
ICInIGlzIG5vdCBhIHJlY29nbml6ZWQgZGlyZWN0aXZlLiBUaGUgaGVhZGVyIHdpbGwgYmUgaWdu
b3JlZC4iOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2Fn
ZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVz
c2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlEKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB9CkBA
IC01NzgsNyArNTg4LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVy
cnVwdExvYWRGb3JDU1BGcmFtZUFuY2VzdG9yc09yWEZyYW1lT3B0aW8KICAgICAgICAgU3RyaW5n
IHhGcmFtZU9wdGlvbnMgPSBtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6WEZyYW1lT3B0aW9ucyk7CiAgICAgICAgIGlmICgheEZyYW1lT3B0aW9ucy5pc051bGwoKSAm
JiBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyh4RnJhbWVPcHRpb25zLCByZXNw
b25zZS51cmwoKSkpIHsKICAgICAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3Ry
aW5nKCJSZWZ1c2VkIHRvIGRpc3BsYXkgJyIsIHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1l
LU9wdGlvbnMnIHRvICciLCB4RnJhbWVPcHRpb25zLCAiJy4iKTsKLSAgICAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJy
b3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAg
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMu
d2ViUGFnZUlEKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpA
QCAtNTk1LDcgKzYwNSw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRl
cnJ1cHROYXZpZ2F0aW9uRm9yQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljCiAgICAgICAgIGF1dG8g
cmVzcG9uc2VDT0VQID0gV2ViQ29yZTo6b2J0YWluQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeShy
ZXNwb25zZSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi0+aXNQb3RlbnRpYWxseVRydXN0d29y
dGh5KCkgPyBJc1NlY3VyZUNvbnRleHQ6OlllcyA6IElzU2VjdXJlQ29udGV4dDo6Tm8pOwogICAg
ICAgICBpZiAocmVzcG9uc2VDT0VQLnZhbHVlICE9IFdlYkNvcmU6OkNyb3NzT3JpZ2luRW1iZWRk
ZXJQb2xpY3lWYWx1ZTo6UmVxdWlyZUNPUlApIHsKICAgICAgICAgICAgIFN0cmluZyBlcnJvck1l
c3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGRpc3BsYXkgJyIsIHJlc3BvbnNlLnVybCgp
LnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyBpbiBhIGZyYW1lIGJlY2F1c2Ug
b2YgQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeS4iKTsKLSAgICAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlEKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAt
NjExLDcgKzYyMSw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1
cHRXb3JrZXJMb2FkRm9yQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljCiAgICAgICAgIGF1dG8gcmVz
cG9uc2VDT0VQID0gV2ViQ29yZTo6b2J0YWluQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeShyZXNw
b25zZSwgbV9wYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbi0+aXNQb3RlbnRpYWxseVRydXN0d29ydGh5
KCkgPyBJc1NlY3VyZUNvbnRleHQ6OlllcyA6IElzU2VjdXJlQ29udGV4dDo6Tm8pOwogICAgICAg
ICBpZiAocmVzcG9uc2VDT0VQLnZhbHVlICE9IFdlYkNvcmU6OkNyb3NzT3JpZ2luRW1iZWRkZXJQ
b2xpY3lWYWx1ZTo6UmVxdWlyZUNPUlApIHsKICAgICAgICAgICAgIFN0cmluZyBlcnJvck1lc3Nh
Z2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGxvYWQgJyIsIHJlc3BvbnNlLnVybCgpLnN0cmlu
Z0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyB3b3JrZXIgYmVjYXVzZSBvZiBDcm9zcy1P
cmlnaW4tRW1iZWRkZXItUG9saWN5LiIpOwotICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3Nh
Z2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlk
ZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJy
b3JNZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC02MzAsNyArNjQw
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzKCkgJiYgbV9uZXR3b3JrTG9hZENoZWNrZXIpIHsKICAgICAgICAg
YXV0byBpbmZvcm1hdGlvbiA9IG1fbmV0d29ya0xvYWRDaGVja2VyLT50YWtlTmV0d29ya0xvYWRJ
bmZvcm1hdGlvbigpOwogICAgICAgICBpbmZvcm1hdGlvbi5yZXNwb25zZSA9IG1fcmVzcG9uc2U7
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xvYWRJbmZvcm1hdGlvbihpZGVudGlm
aWVyKCksIFdURk1vdmUoaW5mb3JtYXRpb24pKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5hZGRO
ZXR3b3JrTG9hZEluZm9ybWF0aW9uKGNvcmVJZGVudGlmaWVyKCksIFdURk1vdmUoaW5mb3JtYXRp
b24pKTsKICAgICB9CiAKICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRS
ZWNlaXZlUmVzcG9uc2VBc3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVy
aW5nIHdvdWxkIHJlcXVpcmUgc3BlY2lhbCBoYW5kbGluZy4KQEAgLTc1OCw3ICs3NjgsNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkRmluaXNo
TG9hZGluZzogKG51bUJ5dGVzUmVjZWl2ZWQ9JXpkLCBoYXNDYWNoZUVudHJ5Rm9yVmFsaWRhdGlv
bj0lZCkiLCBtX251bUJ5dGVzUmVjZWl2ZWQsICEhbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7
CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpCi0gICAg
ICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJpY3MoaWRlbnRp
ZmllcigpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE5l
dHdvcmtMb2FkSW5mb3JtYXRpb25NZXRyaWNzKGNvcmVJZGVudGlmaWVyKCksIG5ldHdvcmtMb2Fk
TWV0cmljcyk7CiAKICAgICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAg
ICAvLyAzMDQgTm90IE1vZGlmaWVkCkBAIC04MDEsNyArODExLDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ICAgIFVOVVNFRF9WQVJJQUJMRSh3YXNTZXJ2aWNlV29ya2VyTG9hZCk7CiAKICAgICBpZiAoc2hv
dWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpCi0gICAgICAgIG1fY29ubmVjdGlv
bi0+cmVtb3ZlTmV0d29ya0xvYWRJbmZvcm1hdGlvbihpZGVudGlmaWVyKCkpOworICAgICAgICBt
X2Nvbm5lY3Rpb24tPnJlbW92ZU5ldHdvcmtMb2FkSW5mb3JtYXRpb24oY29yZUlkZW50aWZpZXIo
KSk7CiAKICAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpKTsKIApAQCAtMTIwMiw5ICsxMjEyLDEw
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUNhY2hlRW50cnkoc3Rk
Ojp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRS
ZXRyaWV2ZUNhY2hlRW50cnk6IFNlbmRpbmcgV2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVS
ZXNwb25zZSBJUEMgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlPSVkKSIs
IG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOwogCi0gICAgaWYgKG5lZWRz
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQorICAgIGlmIChuZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkgeworICAgICAgICBtX3Jlc3BvbnNlID0gV1RGTW92
ZShyZXNwb25zZSk7CiAgICAgICAgIG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZSA9IFdURk1vdmUoZW50cnkpOwotICAgIGVsc2UgeworICAgIH0gZWxzZSB7
CiAgICAgICAgIHNlbmRSZXN1bHRGb3JDYWNoZUVudHJ5KFdURk1vdmUoZW50cnkpKTsKICAgICAg
ICAgY2xlYW51cChMb2FkUmVzdWx0OjpTdWNjZXNzKTsKICAgICB9CkBAIC0xMzU5LDcgKzEzNzAs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBj
b25zdAogICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0
d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQoKSk7CiAgICAgQVNTRVJUKG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbik7CiAKLSAgICBsb2dDb29raWVJbmZvcm1hdGlvbihtX2Nvbm5l
Y3Rpb24sICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZv
aWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0
KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVy
cmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGlkZW50aWZpZXIoKSk7CisgICAgbG9nQ29va2ll
SW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29ya1Jlc291cmNlTG9hZGVyIiwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG9y
aWdpbmFsUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3Jl
YXRlKG9yaWdpbmFsUmVxdWVzdCgpKSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCksIG9yaWdpbmFs
UmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBmcmFtZUlEKCksIHBhZ2VJRCgpLCBjb3JlSWRlbnRp
ZmllcigpKTsKIH0KIAogc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxh
YmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlciwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gaWRlbnRpZmllcikKQEAgLTE0NjMsNyArMTQ3NCw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2UgbWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nKQogewotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBt
ZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25z
b2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgbWVzc2FnZVNvdXJjZSwgbWVz
c2FnZUxldmVsLCBtZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZENTUFZpb2xhdGlv
blJlcG9ydChVUkwmJiByZXBvcnRVUkwsIFJlZjxGb3JtRGF0YT4mJiByZXBvcnQpCkBAIC0xNTM0
LDcgKzE1NDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRp
ZE5vdEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKiBmZQogICAgIFJFTEVBU0VfQVNTRVJU
KG1fc2VydmljZVdvcmtlckZldGNoVGFzay5nZXQoKSA9PSBmZXRjaFRhc2spOwogICAgIGlmICht
X3BhcmFtZXRlcnMuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25s
eSkgewogICAgICAgICBMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoInNlcnZpY2VXb3JrZXJEaWRO
b3RIYW5kbGU6IEFib3J0aW5nIGxvYWQgYmVjYXVzZSB0aGUgc2VydmljZSB3b3JrZXIgZGlkIG5v
dCBoYW5kbGUgdGhlIGxvYWQgYW5kIHNlcnZpY2VXb3JrZXJNb2RlIG9ubHkgYWxsb3dzIHNlcnZp
Y2Ugd29ya2VycyIpOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6
U2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSB7IH0sIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxl
IHsgfSwgY29yZUlkZW50aWZpZXIoKSk7CiAgICAgICAgIGFib3J0KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaAppbmRleCBjZWY2NTQ3OWI3ZTZiY2ZmMjVjZmYwMTgyNWMyYmQzYTBj
NzY4N2VmLi5kOTJkMzAzOGExZGVmMTMxYjhjMDRkNWRjZjQ1YWQxZDU1NTgzY2NmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKQEAgLTg1LDE5ICs4NSwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZv
aWQgYWJvcnQoKTsKIAorICAgIHZvaWQgdHJhbnNmZXJUb05ld1dlYlByb2Nlc3MoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKwogICAgIC8v
IE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Jlc291cmNlTG9h
ZGVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAogICAgIHZvaWQg
Y29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVx
dWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7CiAKKyAgICB2b2lk
IHNldFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkgeyBtX3Jl
c3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAogICAg
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0aW9uLT5zZXNzaW9uSUQoKTsgfQotICAgIFJl
c291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyOyB9CisgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBjb3JlSWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9CiAgICAgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRDsgfQogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KICAgICBjb25zdCBOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
YW1ldGVyczsgfQorICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlTG9hZElEOyB9CiAKICAgICBOZXR3b3JrQ2FjaGU6
Okdsb2JhbEZyYW1lSUQgZ2xvYmFsRnJhbWVJRCgpIHsgcmV0dXJuIHsgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VQcm94eUlELCBwYWdlSUQoKSwgZnJhbWVJRCgpIH07IH0KIApAQCAtMjEwLDcgKzIxNCw3
IEBAIHByaXZhdGU6CiAKICAgICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8oKTsK
IAotICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsK
KyAgICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAKICAgICBS
ZWY8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+IG1fY29ubmVjdGlvbjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IGFmOTUxZDVhMGI1OWY2OTE2
N2I3MDRmYjQyYjMwZjFiODAwMWUyODcuLmQ0NTU5MzUyNTNmNzlmNWMwNDMxZGJhZWVmOTI5MzM2
MDcwNGVhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAg
LTc4LDcgKzc4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3MKIAogdGVtcGxhdGU8dHlwZW5h
bWUgTWVzc2FnZT4gYm9vbCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzZW5kVG9DbGllbnQoTWVz
c2FnZSYmIG1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKS5jb25uZWN0aW9uKCkuc2VuZChzdGQ6OmZvcndhcmQ8TWVzc2FnZT4obWVzc2FnZSks
IG1fbG9hZGVyLmlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIG1fbG9hZGVyLmNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2VuZChzdGQ6OmZvcndhcmQ8TWVzc2FnZT4obWVz
c2FnZSksIG1fbG9hZGVyLmNvcmVJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OnN0YXJ0KFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgc2Vydmlj
ZVdvcmtlckNvbm5lY3Rpb24pCkBAIC0xNjIsNiArMTYyLDggQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBib28KIAogICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6
OlNlcnZpY2VXb3JrZXIpOwogICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VM
b2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsKKyAgICBpZiAobmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UpCisgICAgICAgIG1fbG9hZGVyLnNldFJlc3BvbnNlKFdURk1vdmUocmVz
cG9uc2UpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlRGF0
YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggZWNhMTFhM2Ew
MGMyMzQzNzUwN2UwMWQ5NmNiMGU0OTgxMDE4NjRjNC4uMzQ2ZjdkOGQ4NDUwYjZmYmQwZTgwNjYx
ZjEwZGNiZTU5NTk4NTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBh
cmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNw
cApAQCAtNTcsNiArNTcsNyBAQCB2b2lkIExvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbG9ja0JhY2tGb3J3YXJkTGlzdDsK
ICAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKICAgICBlbmNv
ZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAgZW5jb2RlciA8PCBleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CiAgICAgZW5jb2RlciA8
PCBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk7CiAKICAgICBwbGF0Zm9ybUVuY29kZShlbmNvZGVy
KTsKQEAgLTEzNyw2ICsxMzgsOSBAQCBib29sIExvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYgZGF0YSkKICAgICAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5leGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnNlc3Npb25IaXN0b3J5Vmlz
aWJpbGl0eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFy
YW1ldGVycy5oCmluZGV4IGU1YzU3YjA0MDQ5YzhiMjBiNmJkNjExY2ZjOGY2YjAxZjc4YzA3ZmMu
LjBjMDU0MGIwNDZlNGExY2M0YjE5MTVkZWExMzQwZjlkYTA2NmNiMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgogI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgpAQCAtNzQsNiArNzUsNyBA
QCBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpT
ZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHsgV2ViQ29y
ZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6VmlzaWJsZSB9Owog
ICAgIFN0cmluZyBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBl
eGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkYXRhRGV0ZWN0aW9uQ29u
dGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDY3MWFkZDRhYTI3Y2QxN2ViYjY3OTBlZmUxNmE1NWEx
YzE0MzY2ZWIuLmIxYWMzZDQzOGEyZWEwNDQwY2YyM2NhYTQ3NWQ0NzlmNjk5ZjdiOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcApAQCAtNDc1LDYgKzQ3NSwxNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UAog
ICAgIH0KIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldlYlBy
b2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRl
bnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAi
JXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2Zl
cjogc291cmNlUHJvY2Vzc0lkZW50aWZpZXI6ICUiIFBSSXU2NCAiLCByZXNvdXJjZUxvYWRJZGVu
dGlmaWVyOiAlIiBQUkl1NjQsIHRoaXMsIHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0
KCksIHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgIGlmICghcmVzb3VyY2VMb2FkSWRlbnRp
ZmllcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoc291cmNlUHJvY2Vzc0lkZW50aWZp
ZXIsIHJlc291cmNlTG9hZElkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
UmVzdWx0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBX
ZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNThhOGE4ZTk0
YmYzY2ZlN2JmOGM3Nzk3OTg1Y2MxMmJkM2FiNjhiZS4uNGU1YmI0NTlhM2Q3MmUzZDFkZDcwYjJl
NWVmMjJiZjQ0MDgxNzIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJBdXhpbGlhcnlQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1ZGUgIk5l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVy
LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJv
dHRsZXJDbGllbnQuaCIKQEAgLTIxNCw2ICsyMTUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXN0
UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlc3RQcm9j
ZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseURlbGF5ZWRSZXBs
eSYmKTsKICAgICB2b2lkIHRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogCisgICAgdm9pZCBwcmVwYXJlTG9hZEZv
cldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9j
ZXNzSWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
Pik+JiYpOworCiAgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgZmluYWwgeyByZXR1
cm4gbV90aHJvdHRsZXI7IH0KICAgICB2b2lkIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmlu
ZGV4IDQxY2QzNWRiZmE4ZDBlMzRiZDFlYjQ5ZjVkNTc0ZjJjMzcwMGJkNTguLjc1YTY1YzQzMzcw
NjU0NzgwMGU2MjBhZDA1ZjQ1NmMzNjA0MWVmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTE3MSw5ICsxNzEsOSBAQCB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIGNvbnN0IElQQzo6RGF0YQogICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hh
cmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBt
aW1lVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBzaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0ZVBv
bGljaWVzKSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSk7CiB9CiAKLXZvaWQgUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9h
ZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNp
ZXMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5n
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkKIHsKLSAgICBQUk9WSVNJT05B
TFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDoiKTsK
KyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJs
b2FkUmVxdWVzdDogZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1l
PSUiIFBSSXU2NCwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1l
LnZhbHVlX29yKE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSk7
CiAgICAgQVNTRVJUKHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCAhPSBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBjbGll
bnQtc2lkZSByZWRpcmVjdCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5l
dyBwcm9jZXNzIHdpbGwgb3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNl
LApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1
ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzCiAgICAgaWYgKG5h
dmlnYXRpb24uZnJvbUl0ZW0oKSAmJiBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKSA9
PSBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMpCiAgICAgICAgIG5hdmlnYXRpb24u
ZnJvbUl0ZW0oKS0+c2V0TGFzdFByb2Nlc3NJZGVudGlmaWVyKG1fcHJvY2Vzcy0+Y29yZVByb2Nl
c3NJZGVudGlmaWVyKCkpOwogCi0gICAgbV9wYWdlLmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIFdURk1v
dmUocmVxdWVzdCksIG5hdmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5LCB1c2VyRGF0YSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykp
OworICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5j
b3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZp
Z2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSwgdXNlckRhdGEsIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBleGlzdGluZ05ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVz
PiYmIHdlYnNpdGVQb2xpY2llcykKQEAgLTMzMCwxMiArMzMwLDEyIEBAIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhGcmFtZUlk
ZW50aWZpZXIKICAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
U2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3Zl
KGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uRGF0YSksIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RC
b2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3RlbmVySUQpOwog
fQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgV2ViQ29y
ZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5k
bGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBi
b29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCF2YWxp
ZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigp
LCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBu
YXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2Fk
QXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaCwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAgIG1fcGFnZS5kZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwg
ZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJl
c3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlLCB3YXNB
bGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwg
bWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKIH0KIAog
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0
IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3Ry
aW5nLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDI3MTRiMmE1YjU0N2YyNjY3ZmNiNDZmY2Vm
MWI1Nzg0ZmJjZjU4MTAuLjBhYmVhOWRhNmJiZDIwMTE0ZmY1NGMxYjhkNzFjYWZkYmY3MjM3NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lv
bi5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0
ZW5zaW9uLmgiCkBAIC0xMDUsNyArMTA2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lk
IGxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmlu
ZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFdlYkNvcmU6OlN1YnN0aXR1
dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkpOwotICAgIHZvaWQgbG9hZFJlcXVlc3Qo
QVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0KEFQ
STo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJ
OjpOYXZpZ2F0aW9uJiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYsIFJlZlB0cjxBUEk6OldlYnNp
dGVQb2xpY2llcz4mJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIApAQCAtMTI0LDcgKzEyNSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYm
LCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikgZmluYWw7
CiAKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYs
IEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxXZWJQ
YWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxp
c3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5q
ZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0
X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZv
clJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRl
LCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQ2NF90IG1haW5SZXNvdXJj
ZUxvYWRJZGVudGlmaWVyLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJv
dmlzaW9uYWxVUkxGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNv
bnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJM
U3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBVc2VyRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggNWZiMzA4OTUwMTU2MjQ4NjY2MTUzYzYyNGY0MDM0ZWE0YTg4NGZkZi4uN2JlZjk2
NTg3MTFjMWI2Mjg3YTM3ZjVlMDAwYmIxNTE4NmYyN2I3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMzgxLDcgKzEzODEsNyBAQCBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFNobwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0
aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNE
YXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdp
dGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBv
bGljaWVzLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpCiB7CiAgICAgQVNTRVJU
KCFtX2lzQ2xvc2VkKTsKIApAQCAtMTQwNCw2ICsxNDA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBw
cm9jZXMKICAgICBsb2FkUGFyYW1ldGVycy5sb2NrQmFja0ZvcndhcmRMaXN0ID0gbmF2aWdhdGlv
bi5sb2NrQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbG9hZFBhcmFtZXRlcnMuY2xpZW50UmVkaXJl
Y3RTb3VyY2VGb3JIaXN0b3J5ID0gbmF2aWdhdGlvbi5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhp
c3RvcnkoKTsKICAgICBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
ID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBsb2FkUGFyYW1ldGVycy5leGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgPSBleGlzdGluZ05ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CiAgICAgbWF5YmVJbml0aWFsaXplU2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZShwcm9jZXNzLCB1cmwsIG1fcGFnZUxvYWRTdGF0ZS5yZXNvdXJj
ZURpcmVjdG9yeVVSTCgpLCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsK
IAogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMocHJvY2VzcywgbG9hZFBhcmFtZXRlcnMp
OwpAQCAtMzYyMCw3ICszNjIxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lv
bmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYKICAgICBtX2lu
c3BlY3RvckNvbnRyb2xsZXItPmRpZENvbW1pdFByb3Zpc2lvbmFsUGFnZShvbGRXZWJQYWdlSUQs
IG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlv
bkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0
cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBuZXdQcm9jZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRl
UG9saWNpZXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9j
ZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRl
ZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIG5ld1By
b2Nlc3MsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcywg
c3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKQogewogICAgIFdFQlBBR0VQUk9YWV9S
RUxFQVNFX0xPRyhMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzOiBuZXdQ
cm9jZXNzUElEPSVpLCBoYXNTdXNwZW5kZWRQYWdlPSVpIiwgbmV3UHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlKTsKICAgICBMT0coTG9hZGluZywgIkNvbnRpbnVp
bmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIGluIGEgbmV3IHdlYiBwcm9jZXNzIiwgbmF2
aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5sb2dnaW5nU3RyaW5nKCkpOwpAQCAt
MzYzNyw3ICszNjM4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbklu
TmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHMKICAgICBib29sIGlzU2Vy
dmVyU2lkZVJlZGlyZWN0ID0gc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkID09IFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gJiYg
bmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKTsKICAgICBib29sIHNob3VsZENs
b3NlUHJldmlvdXNQYWdlQWZ0ZXJDb21taXQgPSBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQg
PT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclJlc3BvbnNlUG9saWN5RGVj
aXNpb247CiAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBtYWtlVW5pcXVlPFByb3Zpc2lvbmFsUGFn
ZVByb3h5PigqdGhpcywgV1RGTW92ZShuZXdQcm9jZXNzKSwgV1RGTW92ZShzdXNwZW5kZWRQYWdl
KSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgaXNTZXJ2ZXJTaWRlUmVkaXJlY3QsIG5hdmln
YXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgc2hv
dWxkQ2xvc2VQcmV2aW91c1BhZ2VBZnRlckNvbW1pdCwgd2Vic2l0ZVBvbGljaWVzLmdldCgpKTsK
LSAgICBhdXRvIGNvbnRpbnVhdGlvbiA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIG5hdmlnYXRpb24gPSBtYWtlUmVmKG5hdmlnYXRpb24pLCBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIHdlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKV0o
KSBtdXRhYmxlIHsKKyAgICBhdXRvIGNvbnRpbnVhdGlvbiA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIG5hdmlnYXRpb24gPSBtYWtlUmVmKG5hdmlnYXRpb24pLCBzaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHdlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUod2Vic2l0
ZVBvbGljaWVzKSwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1l
XSgpIG11dGFibGUgewogICAgICAgICBpZiAoYXV0byogaXRlbSA9IG5hdmlnYXRpb24tPnRhcmdl
dEl0ZW0oKSkgewogICAgICAgICAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJXAgY29u
dGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzIHRvIGJhY2sgaXRlbSBVUkwgJXMiLCB0aGlzLCBp
dGVtLT51cmwoKS51dGY4KCkuZGF0YSgpKTsKIApAQCAtMzY2MCwxMCArMzY2MSwxMSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdh
dGlvbiYgbmF2aWdhdGlvbiwgcwogCiAgICAgICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1pbmcg
b2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCiAgICAgICAg
IEFTU0VSVCghbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOworICAgICAg
ICBBU1NFUlQoIWV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSB8
fCAhbmF2aWdhdGlvbi0+c3Vic3RpdHV0ZURhdGEoKSk7CiAgICAgICAgIGlmIChhdXRvJiBzdWJz
dGl0dXRlRGF0YSA9IG5hdmlnYXRpb24tPnN1YnN0aXR1dGVEYXRhKCkpCiAgICAgICAgICAgICBt
X3Byb3Zpc2lvbmFsUGFnZS0+bG9hZERhdGEobmF2aWdhdGlvbiwgeyBzdWJzdGl0dXRlRGF0YS0+
Y29udGVudC5kYXRhKCksIHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LnNpemUoKSB9LCBzdWJzdGl0
dXRlRGF0YS0+TUlNRVR5cGUsIHN1YnN0aXR1dGVEYXRhLT5lbmNvZGluZywgc3Vic3RpdHV0ZURh
dGEtPmJhc2VVUkwsIHN1YnN0aXR1dGVEYXRhLT51c2VyRGF0YS5nZXQoKSwgc2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURk1vdmUo
d2Vic2l0ZVBvbGljaWVzRGF0YSksIHN1YnN0aXR1dGVEYXRhLT5zZXNzaW9uSGlzdG9yeVZpc2li
aWxpdHkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9h
ZFJlcXVlc3QobmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi0+Y3VycmVu
dFJlcXVlc3QoKSB9LCBudWxscHRyLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXNEYXRhKSk7
CisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZFJlcXVlc3QobmF2aWdhdGlvbiwg
UmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSB9LCBudWxscHRy
LCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4oKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXNEYXRhKSwgZXhpc3RpbmdOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKTsKICAgICB9OwogICAgIGlmIChtX2luc3BlY3RvckNv
bnRyb2xsZXItPnNob3VsZFBhdXNlTG9hZGluZygqbV9wcm92aXNpb25hbFBhZ2UpKQogICAgICAg
ICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNldENvbnRpbnVlTG9hZGluZ0NhbGxiYWNrKCptX3By
b3Zpc2lvbmFsUGFnZSwgV1RGTW92ZShjb250aW51YXRpb24pKTsKQEAgLTU2MTcsMTIgKzU2MTks
MTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKICAgICB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLAotICAgIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRC
dW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQorICAgIGJvb2wgd2FzQWxsb3dlZEJ5
SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNo
YXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShm
cmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBj
YW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1
bmRsZSwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgbGlzdGVuZXJJRCwgdXNlckRh
dGEpOworICAgIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVm
KCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIs
IG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxv
YWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoLCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgbGlzdGVuZXJJRCwg
dXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciB3
ZWJQYWdlSUQsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJ
bmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9h
ZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciB3
ZWJQYWdlSUQsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJ
bmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9h
ZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jy
b3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewog
ICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTU2
MzUsMTMgKzU2MzcsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvbklEID8gbV9uYXZpZ2F0aW9uU3Rh
dGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSA6IG51bGxwdHI7CiAgICAgYXV0byBuYXZpZ2F0
aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJ
bmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKS5nZXQoKSwgcmVxdWVzdCwgcmVz
cG9uc2UsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUpOwogCi0gICAgYXV0byBs
aXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3ZWJQYWdlSUQsIGZyYW1lSUQsIG5lZWRz
QnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmln
YXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pLAorICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVm
KGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgd2ViUGFnZUlELCBmcmFtZUlELCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdy
b3VwU3dpdGNoLCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgaWRlbnRpZmllciwgbGlzdGVu
ZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksCiAgICAgICAgIHByb2Nlc3Ms
IG5hdmlnYXRpb25SZXNwb25zZV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vi
c2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3Np
bmdXYXJuaW5nLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IEFz
c2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVu
dHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVC
cm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKIAotICAgICAgICBhdXRvIHNl
bmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3dlYlBhZ2VJ
RCwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IFdURk1vdmUocHJvY2VzcyldIChjb25z
dCBhdXRvJiBwb2xpY3lEZWNpc2lvbikgeworICAgICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURl
Y2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3dlYlBhZ2VJRCwgZnJhbWVJRCwgbGlz
dGVuZXJJRCwgcHJvY2Vzc10gKGNvbnN0IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7CiAgICAgICAg
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNpb24sIGNyZWF0ZU5ldHdvcmtF
eHRlbnNpb25zU2FuZGJveEV4dGVuc2lvbnMocHJvY2VzcykpLCB3ZWJQYWdlSUQpOwogICAgICAg
ICB9KTsKIApAQCAtNTY0OSwxMiArNTY1MSwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAog
ICAgICAgICBpZiAocG9saWN5QWN0aW9uID09IFBvbGljeUFjdGlvbjo6VXNlICYmIG5lZWRzQnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2ggJiYgbmF2aWdhdGlvbikgewogICAgICAgICAgICAgUmVn
aXN0cmFibGVEb21haW4gcmVzcG9uc2VEb21haW4geyBuYXZpZ2F0aW9uUmVzcG9uc2UtPnJlc3Bv
bnNlKCkudXJsKCkgfTsKICAgICAgICAgICAgIC8vIEF2b2lkIHByb2Nlc3Mtc3dhcHBpbmcgaW4g
Y2FzZXMgd2hlcmUgdGhlIHByb2Nlc3Mgb25seSBjb250YWlucyBhIHNpbmdsZSBwYWdlIGFuZCBp
cyBvcmlnaW4tY2xlYW4uCi0gICAgICAgICAgICBpZiAodGhpcy0+cHJvY2VzcygpLnBhZ2VDb3Vu
dCgpID4gMSB8fCAodGhpcy0+cHJvY2VzcygpLm9wdGlvbmFsUmVnaXN0cmFibGVEb21haW4oKSAm
JiAqdGhpcy0+cHJvY2VzcygpLm9wdGlvbmFsUmVnaXN0cmFibGVEb21haW4oKSAhPSByZXNwb25z
ZURvbWFpbikpIHsKKyAgICAgICAgICAgIGlmIChwcm9jZXNzLT5wYWdlQ291bnQoKSA+IDEgfHwg
KHByb2Nlc3MtPm9wdGlvbmFsUmVnaXN0cmFibGVEb21haW4oKSAmJiAqcHJvY2Vzcy0+b3B0aW9u
YWxSZWdpc3RyYWJsZURvbWFpbigpICE9IHJlc3BvbnNlRG9tYWluKSkgewogICAgICAgICAgICAg
ICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVNoYXJlZDogUHJvY2Vzcy1zd2FwcGluZyBkdWUgdG8gQ3Jvc3MtT3JpZ2lu
LU9wZW5lci1Qb2xpY3kiKTsKLSAgICAgICAgICAgICAgICBwb2xpY3lBY3Rpb24gPSBQb2xpY3lB
Y3Rpb246Oklnbm9yZTsKLSAgICAgICAgICAgICAgICBhdXRvIHByb2Nlc3NGb3JOYXZpZ2F0aW9u
ID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbih3
ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3BvbnNlRG9tYWluKTsKLSAgICAgICAgICAgICAg
ICBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoKm5hdmlnYXRpb24sIG51bGxwdHIsIFdU
Rk1vdmUocHJvY2Vzc0Zvck5hdmlnYXRpb24pLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
OjpObywgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclJlc3BvbnNlUG9saWN5
RGVjaXNpb24sIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIHdpbGxDb250aW51ZUxvYWRJbk5l
d1Byb2Nlc3MgPSBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpZZXM7CisgICAgICAgICAg
ICAgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkucHJlcGFyZUxvYWRGb3JX
ZWJQcm9jZXNzVHJhbnNmZXIocHJvY2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCksIG1haW5S
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIHJlc3BvbnNlRG9tYWluID0gV1RGTW92ZShyZXNwb25zZURvbWFpbiksIG5h
dmlnYXRpb24sIG5hdmlnYXRpb25SZXNwb25zZSA9IFdURk1vdmUobmF2aWdhdGlvblJlc3BvbnNl
KSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpXShhdXRvIGV4aXN0aW5nTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXJUb1Jlc3VtZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8gcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucHJvY2Vz
c0ZvclJlZ2lzdHJhYmxlRG9tYWluKHdlYnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVzcG9uc2VE
b21haW4pOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nl
c3MoKm5hdmlnYXRpb24sIG51bGxwdHIsIFdURk1vdmUocHJvY2Vzc0Zvck5hdmlnYXRpb24pLCBQ
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObywgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkOjpZZXNBZnRlclJlc3BvbnNlUG9saWN5RGVjaXNpb24sIG51bGxwdHIsIGV4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CisKKyAgICAgICAgICAgICAgICAg
ICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbmF2aWdhdGlv
bi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBXVEZNb3ZlKHNl
bmRlciksIHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IGVhMWMyMmZiNmIxMWJlOTY4OTkyODI2NGQzYmYzZmM4NDcxMDliOGQuLmZmZjg1YjU1MWFmMDM2
OTEwZTQxMmVhZDcxMmJlY2MxM2M5MWJmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTWVkaWFLZXlTeXN0ZW1QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWJhY2tTdGF0
ZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJQYWdlTG9hZFN0YXRlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEFjY2Vzc0ludGVu
dC5oIgpAQCAtMTc0MSwxMCArMTc0MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROYXZpZ2F0
ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBX
ZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2
b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFVSTCYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1No
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIHN0ZDo6b3B0aW9uYWw8
V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRf
dCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1F
VHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJ
bmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRl
LCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hl
bWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGxvYWREYXRhV2l0aE5h
dmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYg
YmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBz
dGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3ksIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9y
eVZpc2liaWxpdHkpOwotICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZp
Z2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxs
b3B0KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4s
IHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCwgc3Rk
OjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lk
IGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3Qg
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBGcmFtZUluZm9E
YXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdG
cmFtZUluZm8sIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwg
Y29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJQ0tfTE9PSykK
QEAgLTIwNjAsNyArMjA2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYs
IFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwK
ICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9E
YXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELAotICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJv
b2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmKTsKKyAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVj
dGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90
IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRh
dGEmKTsKICAgICB2b2lkIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiwgYm9vbCwg
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CiAKQEAgLTI0NjIsNyArMjQ2Myw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHJlcG9ydFBhZ2VMb2FkUmVzdWx0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImID0geyB9KTsKIAotICAgIHZvaWQgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQ
cm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJv
eHk+JiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgUmVmUHRyPEFQSTo6V2Vi
c2l0ZVBvbGljaWVzPiYmKTsKKyAgICB2b2lkIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vz
cyhBUEk6Ok5hdmlnYXRpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYm
LCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBX
ZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFJlZlB0cjxBUEk6OldlYnNpdGVQ
b2xpY2llcz4mJiwgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4g
ZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpudWxs
b3B0KTsKIAogICAgIHZvaWQgc2V0TmVlZHNGb250QXR0cmlidXRlcyhib29sKTsKICAgICB2b2lk
IHVwZGF0ZUZvbnRBdHRyaWJ1dGVzQWZ0ZXJFZGl0b3JTdGF0ZUNoYW5nZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJjMzdi
OGZjNmFkZjNlYWQxODcyZDExNTVmZjBjYmQwMDlkYzBhZjkuLjgxOTZiMTE5YThmMDJlN2EwMDYw
NDA4NTAyOGU5MWFlMjMxODY1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTEwNyw3ICsxMDcsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAgICAjIFBvbGljeSBtZXNzYWdlcwotICAgIERlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1
Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIFN0cmluZyBkb3dubG9hZEF0dHJpYnV0
ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQorICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIFN0cmlu
ZyBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9v
bCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBtYWluUmVzb3VyY2VM
b2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2Vy
RGF0YSkKICAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJh
bWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRh
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VQ
cm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50NjRfdCBs
aXN0ZW5lcklEKQogICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3Qg
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0
IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHN0ZDo6b3B0
aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlBvbGljeURlY2lzaW9uIFBvbGljeURlY2lz
aW9uKSBTeW5jaHJvbm91cwogICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0
YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1l
TmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcAppbmRleCA2ZTk2OTA3MjU0YTRiZDE1NWY1OGRmMTM3ODQ4YjYwNTMxOWY1MTU1Li4z
NDllYTJjNjM2OTJhYjgwOGZjNzNmNWQ4ODZhMmFhOWU1Y2NmMjJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBA
IC00MTIsOCArNDEyLDExIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZy
b21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAKICAgICBBU1NFUlQo
KGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCAmJiBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlEKSB8
fCBsb2FkUGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRp
YWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzKTsKIAotICAgIFdFQkxPQURF
UlNUUkFURUdZX1JFTEVBU0VfTE9HKCJzY2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNj
aGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQpIiwgc3RhdGljX2Nh
c3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwotICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVycyksIDApKSB7CisgICAgc3RkOjpv
cHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOworICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc01h
aW5GcmFtZU5hdmlnYXRpb24pCisgICAgICAgIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6ZXhjaGFuZ2UobV9leGlzdGluZ05ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUsIHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCTE9BREVSU1RS
QVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1
bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhpc3RpbmdOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIHN0YXRpY19jYXN0
PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBleGlzdGluZ05ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUudmFsdWVfb3IoTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNv
dXJjZUxvYWQobG9hZFBhcmFtZXRlcnMsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXJUb1Jlc3VtZSksIDApKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0Vf
TE9HX0VSUk9SKCJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRo
IHRoZSBOZXR3b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNv
dXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwogICAgICAgICAvLyBXZSBwcm9iYWJs
eSBmYWlsZWQgdG8gc2NoZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIGJl
Y2F1c2UgaXQgaGFkIGNyYXNoZWQuCiAgICAgICAgIC8vIFRoaXMgbG9hZCB3aWxsIG5ldmVyIHN1
Y2NlZWQgc28gd2Ugd2lsbCBzY2hlZHVsZSBpdCB0byBmYWlsIGFzeW5jaHJvbm91c2x5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmgKaW5kZXggY2EyMzQ5OTU4NjY2YTgwMWIwZTBhNmJkNzY3ZGJiY2NjZmI3MTZhZS4uMjRiNjkz
NzkwMTdkNTQzOWJiYjFlMWIzZDFhOTVjOGI3OTIzNjBlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KQEAgLTkxLDYgKzkyLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVy
YXRlTG9hZElkZW50aWZpZXIoKTsKIAorICAgIHZvaWQgc2V0RXhpc3RpbmdOZXR3b3JrUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZSkgeyBtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IGV4
aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsgfQorCiBwcml2YXRl
OgogICAgIHZvaWQgc2NoZWR1bGVMb2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2UqLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QpOwogICAgIHZvaWQgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlciYpOwpAQCAtMTMzLDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgSGFz
aE1hcDx1bnNpZ25lZCBsb25nLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyPiBtX3BpbmdMb2Fk
Q29tcGxldGlvbkhhbmRsZXJzOwogICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUHJlY29ubmVj
dENvbXBsZXRpb25IYW5kbGVyPiBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcnM7CiAgICAg
VmVjdG9yPEZ1bmN0aW9uPHZvaWQoYm9vbCk+PiBtX29ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXJz
OworICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IG1fZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOwogICAgIGJvb2wgbV9p
c09uTGluZSB7IHRydWUgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDcyMzE1YTU3NTg3MzVlZDVlZjE5NjY2MjkxZTYxMGQzOGNjMGU5ZTEuLjhiYjNjZTg5MTA4
OTJmZGQwNzliZGNkOWM5ZGJmYzQwMDQwNjc0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcApAQCAtOTEsNiArOTEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJv
bGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3VicmVzb3VyY2VMb2Fk
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VJRXZlbnRXaXRoS2V5U3RhdGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1dpZGdldC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93RmVhdHVyZXMuaD4K
QEAgLTg0OCwxMSArODQ5LDEyIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zCiAgICAgYXV0byog
Y29yZUZyYW1lID0gbV9mcmFtZS0+Y29yZUZyYW1lKCk7CiAgICAgYXV0byogcG9saWN5RG9jdW1l
bnRMb2FkZXIgPSBjb3JlRnJhbWUgPyBjb3JlRnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXIoKSA6IG51bGxwdHI7CiAgICAgYXV0byBuYXZpZ2F0aW9uSUQgPSBwb2xpY3lE
b2N1bWVudExvYWRlciA/IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyJj4oKnBvbGljeURv
Y3VtZW50TG9hZGVyKS5uYXZpZ2F0aW9uSUQoKSA6IDA7CisgICAgdWludDY0X3QgbWFpblJlc291
cmNlTG9hZElkZW50aWZpZXIgPSBwb2xpY3lEb2N1bWVudExvYWRlciAmJiBwb2xpY3lEb2N1bWVu
dExvYWRlci0+bWFpblJlc291cmNlTG9hZGVyKCkgPyBwb2xpY3lEb2N1bWVudExvYWRlci0+bWFp
blJlc291cmNlTG9hZGVyKCktPmlkZW50aWZpZXIoKSA6IDA7CiAKICAgICBib29sIHdhc0FsbG93
ZWRCeUluamVjdGVkQnVuZGxlID0gcG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVz
ZTsKICAgICBhdXRvIHByb3RlY3RvciA9IG1fZnJhbWUuY29weVJlZigpOwogICAgIHVpbnQ2NF90
IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIsIFdU
Rk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOwotICAg
IGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgaWRlbnRpZmll
ciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd1Jlc3BvbnNlLCBkb3du
bG9hZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdD
b250ZXh0R3JvdXBTd2l0Y2gsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkp
KSB7CisgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCBp
ZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93UmVzcG9u
c2UsIGRvd25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxp
c3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpKSB7CiAgICAgICAgIFdFQkZSQU1F
TE9BREVSQ0xJRU5UX1JFTEVBU0VfTE9HKE5ldHdvcmssICJkaXNwYXRjaERlY2lkZVBvbGljeUZv
clJlc3BvbnNlOiBpZ25vcmluZyBiZWNhdXNlIFdlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UgZmFpbGVkIik7CiAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIHN0ZDo6bnVsbG9w
dCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMDRlM2FlMjAxNDNm
MmYzZGJkMjA2NGEzMDJmMDFiODRlZGNhOTY0NS4uZmU0ZjQ5YTY0NWM3ZjYwNDkxNDE4ODFmMjgw
MjE1MDRlYTM4ZmE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTI2Miw2ICsyNjIsNyBAQAogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4K
ICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNp
bmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNs
dWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0u
aD4KQEAgLTE2ODksNiArMTY5MCwxMSBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KExvYWRQ
YXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbihsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9t
YWluRnJhbWUuZ2V0KCkpOwogI2VuZGlmCiAKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJMb2FkZXJTdHJhdGVneSgpLnNldEV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXJUb1Jlc3VtZShsb2FkUGFyYW1ldGVycy5leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyVG9SZXN1bWUpOworICAgIGF1dG8gcmVzdW1pbmdMb2FkU2NvcGUgPSBtYWtlU2NvcGVF
eGl0KFtdIHsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRl
Z3koKS5zZXRFeGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUoc3Rk
OjpudWxsb3B0KTsKKyAgICB9KTsKKwogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBz
dG9wcGVyOwogCiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbG9hZFBhcmFtZXRlcnMubmF2
aWdhdGlvbklEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IDE4ODFhNWYzNjYzMjNjNzM0MGMwMDhmZmY4NjY0ZTM5NWRiYzk1ZDMuLjBlZmNkNWRhYjk1
YTQyMGQ5YmEwMjY0NTExNDUzNGVlNDUwNDkxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJMYXllclRy
ZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSAiT3B0aW9uYWxDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiUERGUGx1Z2luSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlBsdWdpbi5oIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFjM2JkMDNmMDA5Yjg3ZTA1
OWRkOGNhOTQ2MDhjMGVmNmMzMDg0Y2YuLjlkNmJjNGNjMzBhZWE2YWZiMTE3NGMyNTRhZjkwOTdi
ZTM3YjNhMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wOC0yNiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFJldXNlIHRoZSBzYW1lIG5ldHdv
cmsgbG9hZCB3aGVuIHByb2Nlc3Mtc3dhcHBpbmcgb24gcmVzb3VyY2UgcmVzcG9uc2UgZHVlIHRv
IENPT1AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
OTQ2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODIzMDc2MTE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdl
LgorCisgICAgICAgICogaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvcmVzb3Vy
Y2VzL3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci1wb3B1cC5weTogQWRkZWQuCisgICAgICAgICht
YWluKToKKyAgICAgICAgKiBodHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5n
bGUtcmVxdWVzdC10by1zZXJ2ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXIu
aHRtbDogQWRkZWQuCisKIDIwMjEtMDgtMjYgIEVyaWMgSHV0Y2hpc29uICA8ZWh1dGNoaXNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHRlc3QgZXhwZWN0YXRpb25zIGZvciB3ZWJnbCB0
ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVu
ZXItcG9saWN5L3Jlc291cmNlcy9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXItcG9wdXAucHkgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9yZXNvdXJjZXMv
c2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLXBvcHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MmIzYmRjYjI5
Zjc4YTE2ZDA0NWNmMzA5MjQ4NjJlMjg2ZThhMzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9yZXNvdXJjZXMvc2luZ2xl
LXJlcXVlc3QtdG8tc2VydmVyLXBvcHVwLnB5CkBAIC0wLDAgKzEsMTMgQEAKK2RlZiBtYWluKHJl
cXVlc3QsIHJlc3BvbnNlKToKKyAgICB0b2tlbiA9IHJlcXVlc3QuR0VUW2IndG9rZW4nXQorICAg
IHZhbHVlID0gcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gudGFrZSh0b2tlbikKKyAgICBhbHJlYWR5X2xv
YWRlZF9zdHJpbmcgPSAibm90X2FscmVhZHlfbG9hZGVkIgorICAgIGlmIHZhbHVlIGlzIG5vdCBO
b25lOgorICAgICAgICBhbHJlYWR5X2xvYWRlZF9zdHJpbmcgPSAiYWxyZWFkeV9sb2FkZWQiCisg
ICAgZWxzZToKKyAgICAgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KHRva2VuLCBUcnVlKQor
ICAgIHJldHVybiAoWworICAgICAgICAoYidDYWNoZS1Db250cm9sJywgYiduby1zdG9yZScpLAor
ICAgICAgICAoYidDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeScsIGInc2FtZS1vcmlnaW4nKSwK
KyAgICAgICAgKGInQ29udGVudC1UeXBlJywgYid0ZXh0L2h0bWwnKV0sCisgICAgICAgIHUnPHNj
cmlwdD52YXIgYmMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgic2luZ2xlLXJlcXVlc3QtdG8tc2Vy
dmVyIik7IGJjLnBvc3RNZXNzYWdlKCIlcyIpOzwvc2NyaXB0PlxuJyAlIGFscmVhZHlfbG9hZGVk
X3N0cmluZykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1v
cGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVxdWVz
dC10by1zZXJ2ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2NTc3ZWNlOWY1YjdiYWZiYWY2
ZDRkMjI5ZjBmMzA5ZDY2YWQwNDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXIt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIE1ha2Ugc3VyZSB3ZSBtYWtlIGEg
c2luZ2xlIHJlcXVlc3QgdG8gdGhlIEhUVFAgc2VydmVyIHdoZW4gc3dpdGNoaW5nIGJyb3dzaW5n
IGNvbnRleHQgZ3JvdXAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3Jvc3Mt
b3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVxdWVz
dC10by1zZXJ2ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjJmMGRkZTY4ZWUxN2U4NTUwYjk3OWIzYjIz
NThhMWZhNWE3N2M1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3Jv
c3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLmh0bWwKQEAg
LTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD11dGYtOD4KKzxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9jb21tb24vdXRpbHMuanMiPjwvc2NyaXB0Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQ+Cithc3luY190ZXN0KCh0KSA9PiB7CisgICAgdmFyIGJjID0gbmV3IEJyb2Fk
Y2FzdENoYW5uZWwoJ3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlcicpOworICAgIGxldCB3ID0gb3Bl
bigicmVzb3VyY2VzL3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci1wb3B1cC5weT90b2tlbj0iICsg
dG9rZW4oKSk7CisgICAgYmMub25tZXNzYWdlID0gdC5zdGVwX2Z1bmMoKGV2ZW50KSA9PiB7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuZGF0YSwgIm5vdF9hbHJlYWR5X2xvYWRlZCIpOwor
ICAgICAgICBhc3NlcnRfdHJ1ZSh3LmNsb3NlZCwgIlNob3VsZCBzd2l0Y2ggYnJvd3NpbmcgY29u
dGV4dCBncm91cCIpOworICAgICAgICB0LmRvbmUoKTsKKyAgICB9KTsKK30sICJNYWtlIHN1cmUg
d2UgbWFrZSBhIHNpbmdsZSByZXF1ZXN0IHRvIHRoZSBIVFRQIHNlcnZlciB3aGVuIHN3aXRjaGlu
ZyBicm93c2luZyBjb250ZXh0IGdyb3VwIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436626</attachid>
            <date>2021-08-27 08:03:14 -0700</date>
            <delta_ts>2021-08-27 08:08:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229465-20210827080313.patch</filename>
            <type>text/plain</type>
            <size>84055</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVjNTdjMGU2ZTIzNDc4MmJj
ODY1NmNiNmVkYTY0MTEyNjEzOGEwYTUuLjNmYjlhYzZmMWEyMWM2MDA5MjA0NDJkZTQyYjg3N2E0
MDc2ZDZlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMjEtMDgtMjYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBSZXVzZSB0aGUgc2FtZSBu
ZXR3b3JrIGxvYWQgd2hlbiBwcm9jZXNzLXN3YXBwaW5nIG9uIHJlc291cmNlIHJlc3BvbnNlIGR1
ZSB0byBDT09QCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjk0NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyMzA3NjExPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgcjI4MTUxNiBhZGRlZCBzdXBw
b3J0IGZvciBwcm9jZXNzLXN3YXBwaW5nIGJhc2VkIG9uIENyb3NzLU9yaWdpbi1PcGVuZXItUG9s
aWN5IGhlYWRlcgorICAgICAgICBpbiBIVFRQIHJlc3BvbnNlcy4gSG93ZXZlciwgb24gcHJvY2Vz
cy1zd2FwLCB3ZSB3b3VsZCBhYm9ydCB0aGUgZXhpc3RpbmcgbmV0d29yayBsb2FkCisgICAgICAg
IHRoYXQgd2FzIHN0YXJ0ZWQgYnkgdGhlIG9yaWdpbmFsIFdlYlByb2Nlc3MgYW5kIHN0YXJ0IGEg
ZnJlc2ggbmV0d29yayBsb2FkIGluIHRoZSBuZXcKKyAgICAgICAgV2ViUHJvY2Vzcy4gVGhpcyB3
YXMgc3Vib3B0aW1hbCBhbmQgY291bGQgbGVhZCB0byBpc3N1ZXMgd2l0aCByZXNvdXJjZXMgdGhh
dCBwcm92aWRlCisgICAgICAgIG9uZS10aW1lIGJlaGF2aW9ycy4gVGhpcyBwYXRjaCBhZGRyZXNz
ZXMgdGhlIGlzc3VlIGJ5IHRyYW5zZmVycmluZyB0aGUgbmV0d29yayBsb2FkCisgICAgICAgIGlu
IHRoZSBuZXR3b3JrIHByb2Nlc3MgZnJvbSB0aGUgb2xkIFdlYlByb2Nlc3MgdG8gdGhlIG5ldyBX
ZWJQcm9jZXNzIHdoZW4gcHJvY2VzcworICAgICAgICBzd2FwcGluZy4KKworICAgICAgICBXaGVu
IHRoZSBVSVByb2Nlc3MgZGVjaWRlcyB0byBwcm9jZXNzLXN3YXAgb24gcmVzcG9uc2UgcG9saWN5
IGRlY2lzaW9uLCBpdCBmaXJzdAorICAgICAgICBzZW5kcyBJUEMgdG8gdGhlIG5ldHdvcmsgcHJv
Y2VzcyB0byBhc2sgaXQgdG8gcHJlcGFyZSB0aGUgTmV0d29ya1Jlc291cmNlTG9hZGVyCisgICAg
ICAgIGZvciBvd25lcnNoaXAgdHJhbnNmZXIuIFRoZSBuZXR3b3JrIHByb2Nlc3MgdGFrZXMgdGhl
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAgICBmcm9tIGl0cyBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyBhbmQgc3RvcmVzIGl0IGluIGEgdGVtcG9yYXJ5IGNhY2hlLCB0aGVuCisg
ICAgICAgIHJlc3BvbmRzIHRvIHRoZSBVSVByb2Nlc3Mgd2l0aCB0aGUgTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIgb2YgdGhlIGxvYWRlci4KKyAgICAgICAgVXBvbiByZWNlaXZpbmcgdGhl
IHJlc3BvbnNlLCB0aGUgVUlQcm9jZXNzIHByb2NlZWRzIHdpdGggdGhlIHByb2Nlc3Mtc3dhcCwg
aXQKKyAgICAgICAgcmVqZWN0cyByZXNwb25zZSBwcm9jZXNzaW5nIGluIHRoZSBvbGQgcHJvY2Vz
cyBhbmQgZG9lcyBhIGxvYWRSZXF1ZXN0IGluIGEgbmV3CisgICAgICAgIFdlYlByb2Nlc3MuIFdo
ZW4gc3RhcnRpbmcgc2VuZGluZyB0aGUgTG9hZFJlcXVlc3QgSVBDIHRvIHRoZSBuZXcgV2ViUHJv
Y2VzcywgaXQKKyAgICAgICAgcGFzc2VzIGFsb25nIHRoZSBOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllciBvZiB0aGUgY2FjaGVkIGxvYWRlciBpbiB0aGUgbmV0d29yaworICAgICAgICBwcm9j
ZXNzLiBXaGVuIHRoZSBXZWJQcm9jZXNzIGVuZHMgdXAgc2NoZWR1bGluZyB0aGUgbG9hZCB3aXRo
IHRoZSBuZXR3b3JrIHByb2Nlc3MsCisgICAgICAgIGl0IHBhc3NlcyBhZ2FpbiB0aGUgTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXIuIFVwb24gcmVjZWl2aW5nIHRoZSBsb2FkIHJlcXVlc3Qs
CisgICAgICAgIHRoZSBuZXR3b3JrIHByb2Nlc3MgY2hlY2tzIGlmIGEgTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIgaXMgcHJvdmlkZWQgZm9yCisgICAgICAgIGNvbnRpbnVpbmcgYSBsb2Fk
LiBJZiBub25lIGlzIHByb3ZpZGVkLCB3ZSB1c2UgdGhlIHJlZ3VsYXIgY29kZSBwYXRoIGFuZCBh
Y3R1YWxseQorICAgICAgICBjb25zdHJ1Y3QgYSBuZXcgTmV0d29ya1Jlc291cmNlTG9hZGVyLiBI
b3dldmVyLCBpZiBhIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyCisgICAgICAgIGlzIHBy
b3ZpZGVkLCB3ZSB0YWtlIHRoZSBjb3JyZXNwb25kaW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBm
cm9tIHRoZSBjYWNoZSwKKyAgICAgICAgdHJhbnNmZXIgaXQgdG8gdGhlIG5ldyBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyBhbmQgaGF2ZSBpdCBzZW5kIHRoZQorICAgICAgICBEaWRSZWNl
aXZlUmVzcG9uc2UgSVBDIHRvIHRoZSBXZWJQcm9jZXNzIHRvIGNvbnRpbnVlIHRoZSBsb2FkIHdp
dGggdGhlIG5ldworICAgICAgICBXZWJQcm9jZXNzLgorCisgICAgICAgIFRlc3Q6IGh0dHAvd3B0
L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci5odG1s
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dHJhbnNmZXJLZXB0QWxpdmVMb2FkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnRha2VOZXR3
b3JrUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
Q2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyOjpDYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Q2FjaGVkTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp0YWtlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OkNh
Y2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZXhwaXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6dGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1Ry
YW5zZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVMb2FkRm9y
V2ViUHJvY2Vzc1RyYW5zZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJhbnNmZXJUb05ld1dl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3Vs
ZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNP
clhGcmFtZU9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZEludGVycnVwdE5hdmlnYXRpb25Gb3JDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRX
b3JrZXJMb2FkRm9yQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1h
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWRk
Q29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogU2hhcmVk
L0xvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9Mb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2Zlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lv
bmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRo
TmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGlu
dWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0
d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAyMS0wOC0yNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYSB0
eXBvIGluIGBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZSgpYApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAppbmRleCBkOTYyYTk4YWY1NDY3NTQ0ZmI0MDg3YzQ4MWFhMjJlYTdlYTVm
NjIwLi4wZTY3OWUwODg5NTVhY2U5MGMwZDc1YTdiNzBmMDhhMTFjZDdlOWU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtODUsNiArODUsNyBAQAogI2VuZGlmCiAKICNkZWZpbmUg
Q09OTkVDVElPTl9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hh
bm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCku
dG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xP
R19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVw
IC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQo
KSwgIyNfX1ZBX0FSR1NfXykKIAogI2RlZmluZSBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVD
Syhhc3NlcnRpb24pIE5FVFdPUktfUFJPQ0VTU19NRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNz
ZXJ0aW9uLCAodm9pZCkwKQogI2RlZmluZSBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDS19D
T01QTEVUSU9OKGFzc2VydGlvbiwgY29tcGxldGlvbikgZG8geyBcCkBAIC0xNjYsNyArMTY3LDcg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFu
Z2VkKGJvb2wgaGFzVXBsb2FkKQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIp
CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQobG9hZGVyLmlkZW50aWZpZXIoKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChsb2FkZXIuaXNLZXB0QWxpdmUoKSkgewpAQCAt
MTc0LDE2ICsxNzUsMTYgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
Q2xlYW51cFJlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWQKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIEFTU0VSVChtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuZ2V0KGxvYWRl
ci5pZGVudGlmaWVyKCkpID09ICZsb2FkZXIpOwotICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVy
cy5yZW1vdmUobG9hZGVyLmlkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKG1fbmV0d29ya1Jlc291
cmNlTG9hZGVycy5nZXQobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkpID09ICZsb2FkZXIpOworICAg
IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5yZW1vdmUobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkp
OwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0cmFuc2ZlcktlcHRB
bGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChsb2FkZXIuaXNLZXB0QWxpdmUo
KSk7Ci0gICAgQVNTRVJUKG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5nZXQobG9hZGVyLmlkZW50
aWZpZXIoKSkgPT0gJmxvYWRlcik7Ci0gICAgaWYgKGF1dG8gdGFrZW5Mb2FkZXIgPSBtX25ldHdv
cmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2FkZXIuaWRlbnRpZmllcigpKSkKKyAgICBBU1NFUlQo
bV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmdldChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkgPT0g
JmxvYWRlcik7CisgICAgaWYgKGF1dG8gdGFrZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxv
YWRlcnMudGFrZShsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkpCiAgICAgICAgIG1fbmV0d29ya1By
b2Nlc3MtPmFkZEtlcHRBbGl2ZUxvYWQodGFrZW5Mb2FkZXIucmVsZWFzZU5vbk51bGwoKSk7CiB9
CiAKQEAgLTQ4NiwyNyArNDg3LDQxIEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlRmV0CiB9CiAjZW5k
aWYKIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJj
ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9u
YWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUp
CiB7Ci0gICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJj
ZUxvYWQ6IChwYXJlbnRQSUQ9JWQsIHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9
JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIp
IiwgbG9hZFBhcmFtZXRlcnMucGFyZW50UElELCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBh
cmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVy
KTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNl
TG9hZDogKHBhcmVudFBJRD0lZCwgcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0l
IiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwg
ZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZT0lIiBQUkl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJl
bnRQSUQsIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIGxvYWRQYXJh
bWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRv
VUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGV4aXN0aW5nTG9hZGVyVG9SZXN1
bWUudmFsdWVfb3IoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgp
KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25l
dHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24obV9zZXNzaW9uSUQpOwogICAgIGlmICgh
c2VydmVyLmlzSW1wb3J0Q29tcGxldGVkKCkpIHsKLSAgICAgICAgc2VydmVyLndoZW5JbXBvcnRJ
c0NvbXBsZXRlZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkUGFy
YW1ldGVycyA9IFdURk1vdmUobG9hZFBhcmFtZXRlcnMpXSgpIG11dGFibGUgeworICAgICAgICBz
ZXJ2ZXIud2hlbkltcG9ydElzQ29tcGxldGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGxvYWRQYXJhbWV0ZXJzID0gV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0
aW5nTG9hZGVyVG9SZXN1bWVdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1fbmV0d29y
a1Byb2Nlc3MtPndlYlByb2Nlc3NDb25uZWN0aW9uKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9j
ZXNzLT5zd1NlcnZlckZvclNlc3Npb24obV9zZXNzaW9uSUQpLmlzSW1wb3J0Q29tcGxldGVkKCkp
OwotICAgICAgICAgICAgc2NoZWR1bGVSZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVy
cykpOworICAgICAgICAgICAgc2NoZWR1bGVSZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1l
dGVycyksIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgorCiAgICAgYXV0byBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRl
cnMuaWRlbnRpZmllcjsKICAgICBSRUxFQVNFX0FTU0VSVChpZGVudGlmaWVyKTsKICAgICBSRUxF
QVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtSZXNv
dXJjZUxvYWRlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogCisgICAgaWYgKGV4aXN0aW5nTG9h
ZGVyVG9SZXN1bWUpIHsKKyAgICAgICAgaWYgKGF1dG8gc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGV4aXN0aW5nTG9hZGVyID0gc2Vzc2lvbi0+dGFr
ZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKCpleGlzdGluZ0xvYWRlclRvUmVzdW1l
KSkgeworICAgICAgICAgICAgICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coTG9hZGluZywgInNj
aGVkdWxlUmVzb3VyY2VMb2FkOiBSZXN1bWluZyBleGlzdGluZyBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIiKTsKKyAgICAgICAgICAgICAgICBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuYWRkKGlkZW50
aWZpZXIsICpleGlzdGluZ0xvYWRlcik7CisgICAgICAgICAgICAgICAgZXhpc3RpbmdMb2FkZXIt
PnRyYW5zZmVyVG9OZXdXZWJQcm9jZXNzKCp0aGlzLCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HX0VSUk9SKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDogQ291bGQgbm90IGZp
bmQgZXhpc3RpbmcgTmV0d29ya1Jlc291cmNlTG9hZGVyIHRvIHJlc3VtZSwgd2lsbCBkbyBhIGZy
ZXNoIGxvYWQiKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HX0VSUk9SKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDogQ291bGQgbm90IGZp
bmQgbmV0d29yayBzZXNzaW9uIG9mIGV4aXN0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciB0byBy
ZXN1bWUsIHdpbGwgZG8gYSBmcmVzaCBsb2FkIik7CisgICAgfQorCiAgICAgYXV0byYgbG9hZGVy
ID0gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZShXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgKnRoaXMpKS5pdGVyYXRv
ci0+dmFsdWU7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0xMjY5LDYgKzEyODQs
MTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJpb3JpdGl6ZVJlc291
cmNlTG9hZHMoVmVjdG9yPFJlc291cmNlTG9hZEkKICAgICBzZXNzaW9uLT5uZXR3b3JrTG9hZFNj
aGVkdWxlcigpLnByaW9yaXRpemVMb2Fkcyhsb2Fkcyk7CiB9CiAKK1JlZlB0cjxOZXR3b3JrUmVz
b3VyY2VMb2FkZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0YWtlTmV0d29ya1Jl
c291cmNlTG9hZGVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpCit7CisgICAgaWYg
KCFOZXR3b3JrUmVzb3VyY2VMb2FkTWFwOjpNYXBUeXBlOjppc1ZhbGlkS2V5KHJlc291cmNlTG9h
ZElkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9uZXR3
b3JrUmVzb3VyY2VMb2FkZXJzLnRha2UocmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDVlMDcwOTFlMzczNmRlMzUyMTkyY2ZlNzg2NzljYjYy
MmIyM2RmMmYuLmY0YTBhYjcxOTNlZmM2Y2ZmYWM2MGZlZmNkY2QzOGZiYWU5ZjA5NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtNRE5TUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUlRDUHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdvcmtS
ZXNvdXJjZUxvYWRNYXAuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgogI2luY2x1ZGUg
IlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTE4Niw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xp
Y3kpOwogCiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VTb3Vy
Y2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIFJlZlB0
cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIodWludDY0
X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CkBAIC0y
MDMsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYpOwogCi0gICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpOwogICAgIHZvaWQgcGVyZm9ybVN5
bmNocm9ub3VzTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWREZWxh
eWVkUmVwbHkmJik7CiAgICAgdm9pZCB0ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpUZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3Nh
Z2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBsb2Fk
UGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJlOTI0NGU4NmZjZGUzNWM5OGM2MGM3MDRj
YmFlZjI0MDJmZDBkNmEuLjczZjNlODkxNjI5ZTIyMzQ0OWU0NzUzMmRkMTQyNDczNWUzZDRiMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjIsNyAr
MjIsNyBAQAogCiBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAKLSAgICBTY2hlZHVsZVJlc291cmNlTG9hZChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCisgICAgU2NoZWR1
bGVSZXNvdXJjZUxvYWQoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpCiAgICAgUGVyZm9ybVN5bmNo
cm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNl
TG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBWZWN0b3I8dWludDhfdD4gZGF0YSkgU3luY2hy
b25vdXMKICAgICBUZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wg
aGFuZGxlZCkgU3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDVkNjgyOWIyODgwMjU0
YmQwMTEzMTBhOWZkMjlkNzg1ZWRiNmUwNTUuLmIyOGYzOTljZDI2Y2JiOWFkNWRjMmNhOTVlYTY4
MjM5OGQ3YTkyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC0yODE1LDYgKzI4MTUsMjYgQEAgUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyUHJveHkmIE5ldHdvcmtQcm9jZXNzOjpydGNEYXRhQ2hhbm5lbFByb3h5KCkKIH0KICNl
bmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFu
c2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwg
dWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgQVNTRVJUKHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgIGF1
dG8qIGNvbm5lY3Rpb24gPSB3ZWJQcm9jZXNzQ29ubmVjdGlvbihzb3VyY2VQcm9jZXNzSWRlbnRp
Zmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoc3RkOjpudWxsb3B0KTsKKworICAgIGF1dG8gbG9hZGVyID0gY29ubmVjdGlvbi0+dGFr
ZU5ldHdvcmtSZXNvdXJjZUxvYWRlcihyZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKyAgICBpZiAo
IWxvYWRlcikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7
CisKKyAgICBhdXRvIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihsb2FkZXItPnNlc3Npb25JRCgp
KTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihz
dGQ6Om51bGxvcHQpOworCisgICAgYXV0byBpZGVudGlmaWVyID0gbG9hZGVyLT5pZGVudGlmaWVy
KCk7CisgICAgc2Vzc2lvbi0+YWRkTG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIobG9h
ZGVyLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGlkZW50aWZpZXIp
OworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBhdXRvIHNlc3Np
b24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGVhOTFlZDU5NDAzZTQ5ZmUyN2RhNjgxOTMx
NjcxZTk2ZmY3YmY5YTcuLjIwMjhhOTFmOGMwN2RjZWM0YjcxZThlNTE1MDE1MTAzOTRjMGYzNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29udGVudFJ1
bGVMaXN0TWFuYWdlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHkuaCIKICNpbmNs
dWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCkBAIC00
MjIsNiArNDIzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTmV0d29ya1By
b2Nlc3NNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJ
UEM6OkVuY29kZXI+Jik7CiAgICAgdm9pZCBpbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBjcmVhdGVOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxJUEM6OkF0dGFjaG1l
bnQ+JiYsIFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmKTsKKyAgICB2b2lkIHBy
ZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyLCB1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXI+KT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNz
aW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFG
ZXRjaE9wdGlvbj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEmJik+JiYpOwog
ICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZDc5OTc0NTFjNDU0MGNjM2Q3NTY1MzQ4Yzc2
YTIzNDQ5MTM4MmY5YS4uY2FlYjhkOWJiODQ4YzY5MDBhZTk1NTVkMDc1OWY5MmQ1OWJmMjQ5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCkBAIC0xOTUsNiArMTk1LDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICNlbmRpZgogCisgICAg
UHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZp
ZXIpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXI+IG5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyKSBBc3luYworCiAgICAgQWRkV2ViUGFn
ZU5ldHdvcmtQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlTmV0d29ya1BhcmFtZXRl
cnMgcGFyYW1ldGVycykKICAgICBSZW1vdmVXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlE
KQogICAgIENvdW50Tm9uRGVmYXVsdFNlc3Npb25TZXRzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkgLT4gKHNpemVfdCBjb3VudCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCA1
Nzk0MDBkZGE2ZTU1ZWNjMmRhZTRiNGNhNzA2ZWJiMTFhNzU3ODNmLi4wNGQ1YTcxNTlhMTZhNmJm
NzMzOWE2OGE4NGU2NDk0ZTJhYTA3ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4gcGFyZW50T3JpZ2luKCkgY29uc3Q7CiAKLSAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlk
ZW50aWZpZXIgeyAwIH07CisgICAgbXV0YWJsZSBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50
aWZpZXIgeyAwIH07CiAgICAgVmVjdG9yPFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPj4gcmVxdWVz
dEJvZHlTYW5kYm94RXh0ZW5zaW9uczsgLy8gQ3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZvciB0aGUg
c2VuZGVyLgogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiByZXNvdXJjZVNhbmRib3hFeHRl
bnNpb247IC8vIENyZWF0ZWQgYXV0b21hdGljYWxseSBmb3IgdGhlIHNlbmRlci4KICAgICBTZWNv
bmRzIG1heGltdW1CdWZmZXJpbmdUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDgyZjFlNTMwMTQ0ZmEw
ZmYyZGFiMTFlNjQ0YzA5YjdmNjg2MWEwMDAuLjI5NmQ0NTEwMmJkMThkM2ZlZmRjZjMwMTU0Mzdm
ZDhjM2ZjMGUyOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTUyMiw2ICs1MjIsMTYgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6OkNhbmNl
bCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp0cmFuc2ZlclRvTmV3V2ViUHJv
Y2VzcyhOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbmV3Q29ubmVjdGlvbiwgUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciBuZXdDb3JlSWRlbnRpZmllcikKK3sKKyAgICBtX2Nvbm5lY3Rpb24g
PSBuZXdDb25uZWN0aW9uOworICAgIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyID0gbmV3Q29yZUlk
ZW50aWZpZXI7CisKKyAgICBBU1NFUlQobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyIHx8IG1f
Y2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSB8fCBtX3NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2spOworICAgIGJvb2wgd2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSA9IHRydWU7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6
OkRpZFJlY2VpdmVSZXNwb25zZSB7IG1fcmVzcG9uc2UsIHdpbGxXYWl0Rm9yQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2UgfSk7Cit9CisKIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91
bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIHhGcmFtZU9wdGlv
bnMsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmIChpc01haW5GcmFtZUxvYWQoKSkKQEAgLTU0
NiwxMiArNTU2LDEyIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1
cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIHhGCiAgICAgfQogICAgIGNhc2Ug
WEZyYW1lT3B0aW9uc0Rpc3Bvc2l0aW9uOjpDb25mbGljdDogewogICAgICAgICBTdHJpbmcgZXJy
b3JNZXNzYWdlID0gIk11bHRpcGxlICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlcnMgd2l0aCBjb25m
bGljdGluZyB2YWx1ZXMgKCciICsgeEZyYW1lT3B0aW9ucyArICInKSBlbmNvdW50ZXJlZCB3aGVu
IGxvYWRpbmcgJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJy4g
RmFsbGluZyBiYWNrIHRvICdERU5ZJy4iOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigp
IH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgY29yZUlkZW50
aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIGNhc2UgWEZyYW1lT3B0aW9uc0Rpc3Bvc2l0aW9uOjpJbnZhbGlkOiB7CiAg
ICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSAiSW52YWxpZCAnWC1GcmFtZS1PcHRpb25zJyBo
ZWFkZXIgZW5jb3VudGVyZWQgd2hlbiBsb2FkaW5nICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCgpICsgIic6ICciICsgeEZyYW1lT3B0aW9ucyArICInIGlzIG5vdCBhIHJl
Y29nbml6ZWQgZGlyZWN0aXZlLiBUaGUgaGVhZGVyIHdpbGwgYmUgaWdub3JlZC4iOwotICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVy
cm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IGVycm9yTWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB9CkBAIC01NzgsNyArNTg4LDcg
QEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JDU1BG
cmFtZUFuY2VzdG9yc09yWEZyYW1lT3B0aW8KICAgICAgICAgU3RyaW5nIHhGcmFtZU9wdGlvbnMg
PSBtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6WEZyYW1lT3B0aW9u
cyk7CiAgICAgICAgIGlmICgheEZyYW1lT3B0aW9ucy5pc051bGwoKSAmJiBzaG91bGRJbnRlcnJ1
cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyh4RnJhbWVPcHRpb25zLCByZXNwb25zZS51cmwoKSkpIHsK
ICAgICAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRv
IGRpc3BsYXkgJyIsIHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0
aCgpLCAiJyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICci
LCB4RnJhbWVPcHRpb25zLCAiJy4iKTsKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdl
U291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVu
dGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9y
TWVzc2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtNTk1LDcgKzYwNSw3
IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHROYXZpZ2F0aW9u
Rm9yQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljCiAgICAgICAgIGF1dG8gcmVzcG9uc2VDT0VQID0g
V2ViQ29yZTo6b2J0YWluQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeShyZXNwb25zZSwgbV9wYXJh
bWV0ZXJzLnNvdXJjZU9yaWdpbi0+aXNQb3RlbnRpYWxseVRydXN0d29ydGh5KCkgPyBJc1NlY3Vy
ZUNvbnRleHQ6OlllcyA6IElzU2VjdXJlQ29udGV4dDo6Tm8pOwogICAgICAgICBpZiAocmVzcG9u
c2VDT0VQLnZhbHVlICE9IFdlYkNvcmU6OkNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3lWYWx1ZTo6
UmVxdWlyZUNPUlApIHsKICAgICAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3Ry
aW5nKCJSZWZ1c2VkIHRvIGRpc3BsYXkgJyIsIHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCgpLCAiJyBpbiBhIGZyYW1lIGJlY2F1c2Ugb2YgQ3Jvc3MtT3JpZ2lu
LUVtYmVkZGVyLVBvbGljeS4iKTsKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291
cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlm
aWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVz
c2FnZSwgY29yZUlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtNjExLDcgKzYyMSw3IEBA
IGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRXb3JrZXJMb2FkRm9y
Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljCiAgICAgICAgIGF1dG8gcmVzcG9uc2VDT0VQID0gV2Vi
Q29yZTo6b2J0YWluQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeShyZXNwb25zZSwgbV9wYXJhbWV0
ZXJzLnNvdXJjZU9yaWdpbi0+aXNQb3RlbnRpYWxseVRydXN0d29ydGh5KCkgPyBJc1NlY3VyZUNv
bnRleHQ6OlllcyA6IElzU2VjdXJlQ29udGV4dDo6Tm8pOwogICAgICAgICBpZiAocmVzcG9uc2VD
T0VQLnZhbHVlICE9IFdlYkNvcmU6OkNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3lWYWx1ZTo6UmVx
dWlyZUNPUlApIHsKICAgICAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBtYWtlU3RyaW5n
KCJSZWZ1c2VkIHRvIGxvYWQgJyIsIHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpLCAiJyB3b3JrZXIgYmVjYXVzZSBvZiBDcm9zcy1PcmlnaW4tRW1iZWRkZXIt
UG9saWN5LiIpOwotICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29s
ZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3Vy
aXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdl
U291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjb3Jl
SWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC02MzAsNyArNjQwLDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYg
cmVjZWl2ZWRSZXNwb24KICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzKCkgJiYgbV9uZXR3b3JrTG9hZENoZWNrZXIpIHsKICAgICAgICAgYXV0byBpbmZvcm1hdGlv
biA9IG1fbmV0d29ya0xvYWRDaGVja2VyLT50YWtlTmV0d29ya0xvYWRJbmZvcm1hdGlvbigpOwog
ICAgICAgICBpbmZvcm1hdGlvbi5yZXNwb25zZSA9IG1fcmVzcG9uc2U7Ci0gICAgICAgIG1fY29u
bmVjdGlvbi0+YWRkTmV0d29ya0xvYWRJbmZvcm1hdGlvbihpZGVudGlmaWVyKCksIFdURk1vdmUo
aW5mb3JtYXRpb24pKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5hZGROZXR3b3JrTG9hZEluZm9y
bWF0aW9uKGNvcmVJZGVudGlmaWVyKCksIFdURk1vdmUoaW5mb3JtYXRpb24pKTsKICAgICB9CiAK
ICAgICAvLyBGb3IgbXVsdGlwYXJ0L3gtbWl4ZWQtcmVwbGFjZSBkaWRSZWNlaXZlUmVzcG9uc2VB
c3luYyBnZXRzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBhbmQgYnVmZmVyaW5nIHdvdWxkIHJlcXVp
cmUgc3BlY2lhbCBoYW5kbGluZy4KQEAgLTc1OCw3ICs3NjgsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5l
dHdvcmtMbwogICAgIExPQURFUl9SRUxFQVNFX0xPRygiZGlkRmluaXNoTG9hZGluZzogKG51bUJ5
dGVzUmVjZWl2ZWQ9JXpkLCBoYXNDYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbj0lZCkiLCBtX251bUJ5
dGVzUmVjZWl2ZWQsICEhbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CiAKICAgICBpZiAoc2hv
dWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpCi0gICAgICAgIG1fY29ubmVjdGlv
bi0+YWRkTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJpY3MoaWRlbnRpZmllcigpLCBuZXR3b3Jr
TG9hZE1ldHJpY3MpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3Jt
YXRpb25NZXRyaWNzKGNvcmVJZGVudGlmaWVyKCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CiAKICAg
ICBpZiAobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikgewogICAgICAgICAvLyAzMDQgTm90IE1v
ZGlmaWVkCkBAIC04MDEsNyArODExLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZEZhaWxMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIFVOVVNFRF9WQVJJ
QUJMRSh3YXNTZXJ2aWNlV29ya2VyTG9hZCk7CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzKCkpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTmV0d29y
a0xvYWRJbmZvcm1hdGlvbihpZGVudGlmaWVyKCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnJl
bW92ZU5ldHdvcmtMb2FkSW5mb3JtYXRpb24oY29yZUlkZW50aWZpZXIoKSk7CiAKICAgICBBU1NF
UlQoIWVycm9yLmlzTnVsbCgpKTsKIApAQCAtMTIwMiw5ICsxMjEyLDEwIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZXRyaWV2ZUNhY2hlRW50cnkoc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtDYWNoZTo6CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRSZXRyaWV2ZUNhY2hlRW50
cnk6IFNlbmRpbmcgV2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSBJUEMgKG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlPSVkKSIsIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0pOwogCi0gICAgaWYgKG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlKQorICAgIGlmIChuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlTWVzc2FnZSkgeworICAgICAgICBtX3Jlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSk7CiAg
ICAgICAgIG1fY2FjaGVFbnRyeVdhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSA9
IFdURk1vdmUoZW50cnkpOwotICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAgICAgICAgIHNlbmRS
ZXN1bHRGb3JDYWNoZUVudHJ5KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgY2xlYW51cChMb2Fk
UmVzdWx0OjpTdWNjZXNzKTsKICAgICB9CkBAIC0xMzU5LDcgKzEzNzAsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdAogICAgIGF1dG8q
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5z
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQoKSk7CiAgICAgQVNTRVJUKG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbik7CiAKLSAgICBsb2dDb29raWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sICJOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJl
cXVlc3QoKS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQo
KSwgcGFnZUlEKCksIGlkZW50aWZpZXIoKSk7CisgICAgbG9nQ29va2llSW5mb3JtYXRpb24obV9j
b25uZWN0aW9uLCAiTmV0d29ya1Jlc291cmNlTG9hZGVyIiwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG9yaWdpbmFsUmVxdWVzdCgp
LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKG9yaWdpbmFsUmVx
dWVzdCgpKSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBS
ZWZlcnJlcigpLCBmcmFtZUlEKCksIHBhZ2VJRCgpLCBjb3JlSWRlbnRpZmllcigpKTsKIH0KIAog
c3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lk
KiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIHN0ZDo6b3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmll
cikKQEAgLTE0NjMsNyArMTQ3NCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dD
b29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYKIAogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgbWVz
c2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCB1bnNpZ25lZCBsb25nKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENv
bnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBtZXNzYWdlU291cmNlLCBt
ZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlELCAgbWVzc2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBtZXNz
YWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwogfQogCiB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VuZENTUFZpb2xhdGlvblJlcG9ydChVUkwmJiBy
ZXBvcnRVUkwsIFJlZjxGb3JtRGF0YT4mJiByZXBvcnQpCkBAIC0xNTM0LDcgKzE1NDUsNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZShTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrKiBmZQogICAgIFJFTEVBU0VfQVNTRVJUKG1fc2VydmljZVdvcmtl
ckZldGNoVGFzay5nZXQoKSA9PSBmZXRjaFRhc2spOwogICAgIGlmIChtX3BhcmFtZXRlcnMuc2Vy
dmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewogICAgICAgICBM
T0FERVJfUkVMRUFTRV9MT0dfRVJST1IoInNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGU6IEFib3J0
aW5nIGxvYWQgYmVjYXVzZSB0aGUgc2VydmljZSB3b3JrZXIgZGlkIG5vdCBoYW5kbGUgdGhlIGxv
YWQgYW5kIHNlcnZpY2VXb3JrZXJNb2RlIG9ubHkgYWxsb3dzIHNlcnZpY2Ugd29ya2VycyIpOwot
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6U2VydmljZVdvcmtlckRp
ZE5vdEhhbmRsZSB7IH0sIGlkZW50aWZpZXIoKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpTZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlIHsgfSwgY29yZUlkZW50
aWZpZXIoKSk7CiAgICAgICAgIGFib3J0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aAppbmRleCBjZWY2NTQ3OWI3ZTZiY2ZmMjVjZmYwMTgyNWMyYmQzYTBjNzY4N2VmLi43ZmY2MWVi
MWJlODI2NzM1MjgxY2QzYmM4MWIwNThjMGUwNmIxNjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTg1LDE5ICs4
NSwyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydCgpOwogICAgIHZvaWQgYWJvcnQoKTsKIAor
ICAgIHZvaWQgdHJhbnNmZXJUb05ld1dlYlByb2Nlc3MoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKwogICAgIC8vIE1lc3NhZ2UgaGFuZGxl
cnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Jlc291cmNlTG9hZGVyTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAogICAgIHZvaWQgY29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0Fs
bG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyk7CiAKKyAgICB2b2lkIHNldFJlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkgeyBtX3Jlc3BvbnNlID0gV1RGTW92
ZShyZXNwb25zZSk7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAogICAgIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4g
bV9jb25uZWN0aW9uOyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb25uZWN0aW9uLT5zZXNzaW9uSUQoKTsgfQotICAgIFJlc291cmNlTG9hZElkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
OyB9CisgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBjb3JlSWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9CiAgICAgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRDsg
fQogICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KICAgICBjb25zdCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorICAg
IE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX3Jlc291cmNlTG9hZElEOyB9CiAKICAgICBOZXR3b3JrQ2FjaGU6Okdsb2JhbEZyYW1lSUQg
Z2xvYmFsRnJhbWVJRCgpIHsgcmV0dXJuIHsgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBw
YWdlSUQoKSwgZnJhbWVJRCgpIH07IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCAzMzQ4OGU2OWVmZWJkNzFiNmQzMGJkMmJjN2M4
ZmM1MmE3MjgzMjdkLi5iZGFjZWUxMzJmOTBlYzJkZTkzN2EwOTJkNzI2ZTVmYWEwNDg4NmM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApA
QCAtNTYsNiArNTYsOCBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAorY29uc3RleHByIFNlY29uZHMgY2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyTGlm
ZXRpbWUgeyAzMF9zIH07CisKIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrU2Vzc2lvbj4gTmV0d29y
a1Nlc3Npb246OmNyZWF0ZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIE5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICNpZiBQTEFURk9STShD
T0NPQSkKQEAgLTM5MSw2ICszOTMsNDMgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6cmVtb3ZlS2Vw
dEFsaXZlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKICAgICBtX2tlcHRBbGl2
ZUxvYWRzLnJlbW92ZShsb2FkZXIpOwogfQogCitOZXR3b3JrU2Vzc2lvbjo6Q2FjaGVkTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpDYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXIoUmVmPE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIpCisgICAgOiBtX2V4cGlyYXRpb25UaW1lcigqdGhpcywg
JkNhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZXhwaXJhdGlvblRpbWVyRmlyZWQpCisgICAg
LCBtX2xvYWRlcihXVEZNb3ZlKGxvYWRlcikpCit7CisgICAgbV9leHBpcmF0aW9uVGltZXIuc3Rh
cnRPbmVTaG90KGNhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlckxpZmV0aW1lKTsKK30KKworUmVm
UHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gTmV0d29ya1Nlc3Npb246OkNhY2hlZE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6dGFrZUxvYWRlcigpCit7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2Uo
bV9sb2FkZXIsIG51bGxwdHIpOworfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uOjpDYWNoZWROZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmV4cGlyYXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBhdXRvIHNl
c3Npb24gPSBtX2xvYWRlci0+Y29ubmVjdGlvblRvV2ViUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9u
KCk7CisgICAgQVNTRVJUKHNlc3Npb24pOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBsb2FkZXIgPSBzZXNzaW9uLT50YWtlTG9hZGVyQXdhaXRpbmdXZWJQ
cm9jZXNzVHJhbnNmZXIobV9sb2FkZXItPmlkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChsb2FkZXIsIGxvYWRlcik7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OmFkZExvYWRlckF3
YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+JiYgbG9h
ZGVyKQoreworICAgIEFTU0VSVChtX3Nlc3Npb25JRCA9PSBsb2FkZXItPnNlc3Npb25JRCgpKTsK
KyAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXItPmlkZW50aWZpZXIoKTsKKyAgICBBU1NFUlQo
IW1fbG9hZGVyc0F3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyLmNvbnRhaW5zKGlkZW50aWZpZXIp
KTsKKyAgICBtX2xvYWRlcnNBd2FpdGluZ1dlYlByb2Nlc3NUcmFuc2Zlci5hZGQoaWRlbnRpZmll
ciwgbWFrZVVuaXF1ZTxDYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXI+KFdURk1vdmUobG9hZGVy
KSkpOworfQorCitSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBOZXR3b3JrU2Vzc2lvbjo6
dGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKE5ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBjYWNoZWRSZXNvdXJjZUxvYWRlciA9
IG1fbG9hZGVyc0F3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyLnRha2UoaWRlbnRpZmllcik7Cisg
ICAgcmV0dXJuIGNhY2hlZFJlc291cmNlTG9hZGVyID8gY2FjaGVkUmVzb3VyY2VMb2FkZXItPnRh
a2VMb2FkZXIoKSA6IG51bGxwdHI7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxXZWJTb2NrZXRUYXNr
PiBOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlV2ViU29ja2V0VGFzayhXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBOZXR3b3JrU29ja2V0Q2hhbm5lbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wpCiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggYTQ5NzE4
ZGVmZGEyMzk0ODQ2YWU4NWM0Yzc4NTJhZGExNTY0MTM0OS4uM2Q1ODg3NzI5ZGUxMzQzNzBlMTli
YTg0YzlkMzQ3NTRhMGUyOWFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb24uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQXBwUHJpdmFj
eVJlcG9ydC5oIgogI2luY2x1ZGUgIk5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQcmVmZXRj
aENhY2hlLmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVy
LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMTQwLDYgKzE0MSw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZEtlcHRBbGl2ZUxvYWQoUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRl
cj4mJik7CiAgICAgdm9pZCByZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRl
ciYpOwogCisgICAgdm9pZCBhZGRMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NUcmFuc2ZlcihSZWY8
TmV0d29ya1Jlc291cmNlTG9hZGVyPiYmKTsKKyAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9h
ZGVyPiB0YWtlTG9hZGVyQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIoTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIpOworCiAgICAgTmV0d29ya0NhY2hlOjpDYWNoZSogY2FjaGUoKSB7IHJl
dHVybiBtX2NhY2hlLmdldCgpOyB9CiAKICAgICBQcmVmZXRjaENhY2hlJiBwcmVmZXRjaENhY2hl
KCkgeyByZXR1cm4gbV9wcmVmZXRjaENhY2hlOyB9CkBAIC0yMTAsNiArMjE0LDE4IEBAIHByb3Rl
Y3RlZDoKIAogICAgIEhhc2hTZXQ8UmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4+IG1fa2VwdEFs
aXZlTG9hZHM7CiAKKyAgICBjbGFzcyBDYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXIgeworICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxp
Y2l0IENhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcihSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVy
PiYmKTsKKyAgICAgICAgUmVmUHRyPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gdGFrZUxvYWRlcigp
OworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgZXhwaXJhdGlvblRpbWVyRmlyZWQoKTsKKyAg
ICAgICAgV2ViQ29yZTo6VGltZXIgbV9leHBpcmF0aW9uVGltZXI7CisgICAgICAgIFJlZlB0cjxO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOworICAgIH07CisgICAgSGFzaE1hcDxOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPENhY2hlZE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcj4+IG1fbG9hZGVyc0F3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyOworCiAg
ICAgUHJlZmV0Y2hDYWNoZSBtX3ByZWZldGNoQ2FjaGU7CiAKICNpZiBBU1NFUlRfRU5BQkxFRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IGFmOTUxZDVhMGI1
OWY2OTE2N2I3MDRmYjQyYjMwZjFiODAwMWUyODcuLmQ0NTU5MzUyNTNmNzlmNWMwNDMxZGJhZWVm
OTI5MzM2MDcwNGVhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5j
cHAKQEAgLTc4LDcgKzc4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3MKIAogdGVtcGxhdGU8
dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzZW5kVG9DbGll
bnQoTWVzc2FnZSYmIG1lc3NhZ2UpCiB7Ci0gICAgcmV0dXJuIG1fbG9hZGVyLmNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2VuZChzdGQ6OmZvcndhcmQ8TWVzc2FnZT4obWVz
c2FnZSksIG1fbG9hZGVyLmlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIG1fbG9hZGVyLmNvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoKS5jb25uZWN0aW9uKCkuc2VuZChzdGQ6OmZvcndhcmQ8TWVzc2Fn
ZT4obWVzc2FnZSksIG1fbG9hZGVyLmNvcmVJZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0KFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYg
c2VydmljZVdvcmtlckNvbm5lY3Rpb24pCkBAIC0xNjIsNiArMTYyLDggQEAgdm9pZCBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnNlLCBib28KIAogICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpT
b3VyY2U6OlNlcnZpY2VXb3JrZXIpOwogICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVz
b3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsKKyAgICBpZiAobmVlZHNDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UpCisgICAgICAgIG1fbG9hZGVyLnNldFJlc3BvbnNlKFdURk1v
dmUocmVzcG9uc2UpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNl
aXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggZWNh
MTFhM2EwMGMyMzQzNzUwN2UwMWQ5NmNiMGU0OTgxMDE4NjRjNC4uMzQ2ZjdkOGQ4NDUwYjZmYmQw
ZTgwNjYxZjEwZGNiZTU5NTk4NTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
TG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0
ZXJzLmNwcApAQCAtNTcsNiArNTcsNyBAQCB2b2lkIExvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbG9ja0JhY2tGb3J3YXJk
TGlzdDsKICAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKICAg
ICBlbmNvZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAgZW5jb2RlciA8
PCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CiAgICAgZW5j
b2RlciA8PCBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk7CiAKICAgICBwbGF0Zm9ybUVuY29kZShl
bmNvZGVyKTsKQEAgLTEzNyw2ICsxMzgsOSBAQCBib29sIExvYWRQYXJhbWV0ZXJzOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBMb2FkUGFyYW1ldGVycyYgZGF0YSkKICAgICAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5leGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLnNlc3Npb25IaXN0
b3J5VmlzaWJpbGl0eSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9M
b2FkUGFyYW1ldGVycy5oCmluZGV4IGU1YzU3YjA0MDQ5YzhiMjBiNmJkNjExY2ZjOGY2YjAxZjc4
YzA3ZmMuLjBjMDU0MGIwNDZlNGExY2M0YjE5MTVkZWExMzQwZjlkYTA2NmNiMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgogI2luY2x1
ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgpAQCAtNzQsNiAr
NzUsNyBAQCBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6OlN1YnN0aXR1dGVE
YXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHsg
V2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6VmlzaWJs
ZSB9OwogICAgIFN0cmluZyBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAgICAgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjsKKyAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlm
aWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkYXRhRGV0ZWN0
aW9uQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDY3MWFkZDRhYTI3Y2QxN2ViYjY3OTBlZmUx
NmE1NWExYzE0MzY2ZWIuLmIxYWMzZDQzOGEyZWEwNDQwY2YyM2NhYTQ3NWQ0NzlmNjk5ZjdiOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtNDc1LDYgKzQ3NSwxNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29y
ZTo6UAogICAgIH0KIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZv
cldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9j
ZXNzSWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBw
aW5nLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NU
cmFuc2Zlcjogc291cmNlUHJvY2Vzc0lkZW50aWZpZXI6ICUiIFBSSXU2NCAiLCByZXNvdXJjZUxv
YWRJZGVudGlmaWVyOiAlIiBQUkl1NjQsIHRoaXMsIHNvdXJjZVByb2Nlc3NJZGVudGlmaWVyLnRv
VUludDY0KCksIHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgIGlmICghcmVzb3VyY2VMb2Fk
SWRlbnRpZmllcikgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6UHJlcGFyZUxvYWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoc291cmNlUHJvY2Vzc0lk
ZW50aWZpZXIsIHJlc291cmNlTG9hZElkZW50aWZpZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoUmVzdWx0KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBh
Z2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNThh
OGE4ZTk0YmYzY2ZlN2JmOGM3Nzk3OTg1Y2MxMmJkM2FiNjhiZS4uNGU1YmI0NTlhM2Q3MmUzZDFk
ZDcwYjJlNWVmMjJiZjQ0MDgxNzIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgorI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xh
dW5jaGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlByb2Nl
c3NUaHJvdHRsZXJDbGllbnQuaCIKQEAgLTIxNCw2ICsyMTUsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB0ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHko
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRl
c3RQcm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseURlbGF5
ZWRSZXBseSYmKTsKICAgICB2b2lkIHRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQ
cm9jZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogCisgICAgdm9pZCBwcmVwYXJl
TG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3Vy
Y2VQcm9jZXNzSWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyPik+JiYpOworCiAgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgZmluYWwg
eyByZXR1cm4gbV90aHJvdHRsZXI7IH0KICAgICB2b2lkIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb24o
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwCmluZGV4IDQxY2QzNWRiZmE4ZDBlMzRiZDFlYjQ5ZjVkNTc0ZjJjMzcwMGJkNTguLjc1YTY1
YzQzMzcwNjU0NzgwMGU2MjBhZDA1ZjQ1NmMzNjA0MWVmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTE3MSw5ICsxNzEsOSBA
QCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YQogICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0
aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBk
YXRhLCBtaW1lVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vi
c2l0ZVBvbGljaWVzKSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSk7CiB9CiAKLXZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0
ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRl
UG9saWNpZXMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4
aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkKIHsKLSAgICBQUk9W
SVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVz
dDoiKTsKKyAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBp
bmcsICJsb2FkUmVxdWVzdDogZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lPSUiIFBSSXU2NCwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lLnZhbHVlX29yKE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHsgfSkudG9VSW50
NjQoKSk7CiAgICAgQVNTRVJUKHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCAhPSBXZWJDb3Jl
OjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKIAogICAgIC8vIElmIHRoaXMgaXMg
YSBjbGllbnQtc2lkZSByZWRpcmVjdCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4g
dGhlIG5ldyBwcm9jZXNzIHdpbGwgb3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhp
cyBjYXNlLApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6Omxv
YWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzCiAgICAg
aWYgKG5hdmlnYXRpb24uZnJvbUl0ZW0oKSAmJiBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExp
c3QoKSA9PSBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMpCiAgICAgICAgIG5hdmln
YXRpb24uZnJvbUl0ZW0oKS0+c2V0TGFzdFByb2Nlc3NJZGVudGlmaWVyKG1fcHJvY2Vzcy0+Y29y
ZVByb2Nlc3NJZGVudGlmaWVyKCkpOwogCi0gICAgbV9wYWdlLmxvYWRSZXF1ZXN0V2l0aE5hdmln
YXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24s
IFdURk1vdmUocmVxdWVzdCksIG5hdmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5zaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1c2VyRGF0YSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xp
Y2llcykpOworICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJv
Y2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSwgdXNlckRhdGEsIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBleGlzdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOwogfQogCiB2b2lkIFByb3Zpc2lv
bmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdh
dGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBv
bGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcykKQEAgLTMzMCwxMiArMzMwLDEyIEBAIHZvaWQgUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhG
cmFtZUlkZW50aWZpZXIKICAgICBtX3BhZ2UuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBX
VEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm8pLCBvcmlnaW5h
dGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJl
cXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIGxpc3RlbmVy
SUQpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0
ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmli
dXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdD
b250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1
aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgaWYg
KCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29w
eVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlm
aWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRv
d25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93c2lu
Z0NvbnRleHRHcm91cFN3aXRjaCwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOworICAgIG1fcGFnZS5k
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBh
Z2VJRCwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9u
SUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRl
LCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsK
IH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0
KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
VVJMU3RyaW5nLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDI3MTRiMmE1YjU0N2YyNjY3ZmNi
NDZmY2VmMWI1Nzg0ZmJjZjU4MTAuLjBhYmVhOWRhNmJiZDIwMTE0ZmY1NGMxYjhkNzFjYWZkYmY3
MjM3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQb2xpY3lE
ZWNpc2lvbi5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJTYW5k
Ym94RXh0ZW5zaW9uLmgiCkBAIC0xMDUsNyArMTA2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAg
ICB2b2lkIGxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0
IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFdlYkNvcmU6OlN1
YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkpOwotICAgIHZvaWQgbG9hZFJl
cXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBz
dGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWRSZXF1
ZXN0KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9wdCwgc3RkOjpvcHRpb25hbDxOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllclRvUmVzdW1lID0gc3RkOjpudWxsb3B0KTsKICAgICB2b2lkIGdvVG9CYWNrRm9yd2FyZEl0
ZW0oQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYsIFJlZlB0cjxBUEk6
OldlYnNpdGVQb2xpY2llcz4mJik7CiAgICAgdm9pZCBjYW5jZWwoKTsKIApAQCAtMTI0LDcgKzEy
NSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZW5kTWVzc2FnZShVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYmLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgc3RkOjpvcHRpb25hbDxzdGQ6OnBh
aXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJikg
ZmluYWw7CiAKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25h
bDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2
NF90IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dl
ZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRlY2lkZVBv
bGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYm
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0
cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQ2NF90IG1haW5S
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGlkQ2hh
bmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJlZGly
ZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uVVJMU3RyaW5nLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBVc2VyRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggNzU4ZDFiMzk4ZWM3ODUyM2UzNGFhZjRhZTY0NTE5OTg1MWUwM2UwNC4u
Njg5OWUyODkyNzc1Yjg0YTdlNWMwN2ZmNTlkMzExYjdkYmZlNTI5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMzgxLDcgKzEzODEsNyBAQCBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNobwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpO
YXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmln
YXRpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vi
c2l0ZVBvbGljaWVzLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
PiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpCiB7CiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAtMTQwNCw2ICsxNDA0LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXMKICAgICBsb2FkUGFyYW1ldGVycy5sb2NrQmFja0ZvcndhcmRMaXN0ID0gbmF2
aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgbG9hZFBhcmFtZXRlcnMuY2xpZW50
UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5ID0gbmF2aWdhdGlvbi5jbGllbnRSZWRpcmVjdFNvdXJj
ZUZvckhpc3RvcnkoKTsKICAgICBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBsb2FkUGFyYW1ldGVy
cy5leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgPSBleGlzdGlu
Z05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CiAgICAgbWF5YmVJbml0aWFs
aXplU2FuZGJveEV4dGVuc2lvbkhhbmRsZShwcm9jZXNzLCB1cmwsIG1fcGFnZUxvYWRTdGF0ZS5y
ZXNvdXJjZURpcmVjdG9yeVVSTCgpLCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKTsKIAogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMocHJvY2VzcywgbG9hZFBhcmFt
ZXRlcnMpOwpAQCAtMzYyMCw3ICszNjIxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFBy
b3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYKICAg
ICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRpZENvbW1pdFByb3Zpc2lvbmFsUGFnZShvbGRXZWJQ
YWdlSUQsIG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2
aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6dW5p
cXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZSwgUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBuZXdQcm9jZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3
ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPFN1
c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IG5ld1Byb2Nlc3MsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xp
Y2llcywgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKQogewogICAgIFdFQlBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
OiBuZXdQcm9jZXNzUElEPSVpLCBoYXNTdXNwZW5kZWRQYWdlPSVpIiwgbmV3UHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlKTsKICAgICBMT0coTG9hZGluZywgIkNv
bnRpbnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIGluIGEgbmV3IHdlYiBwcm9jZXNz
IiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5sb2dnaW5nU3RyaW5nKCkp
OwpAQCAtMzYzNyw3ICszNjM4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdh
dGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHMKICAgICBib29s
IGlzU2VydmVyU2lkZVJlZGlyZWN0ID0gc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkID09IFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24gJiYgbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdElzUmVkaXJlY3QoKTsKICAgICBib29sIHNo
b3VsZENsb3NlUHJldmlvdXNQYWdlQWZ0ZXJDb21taXQgPSBzaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQgPT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclJlc3BvbnNlUG9s
aWN5RGVjaXNpb247CiAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBtYWtlVW5pcXVlPFByb3Zpc2lv
bmFsUGFnZVByb3h5PigqdGhpcywgV1RGTW92ZShuZXdQcm9jZXNzKSwgV1RGTW92ZShzdXNwZW5k
ZWRQYWdlKSwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgaXNTZXJ2ZXJTaWRlUmVkaXJlY3Qs
IG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3QoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgc2hvdWxkQ2xvc2VQcmV2aW91c1BhZ2VBZnRlckNvbW1pdCwgd2Vic2l0ZVBvbGljaWVzLmdl
dCgpKTsKLSAgICBhdXRvIGNvbnRpbnVhdGlvbiA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIG5hdmlnYXRpb24gPSBtYWtlUmVmKG5hdmlnYXRpb24pLCBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIHdlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUod2Vic2l0ZVBvbGlj
aWVzKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvIGNvbnRpbnVhdGlvbiA9IFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5hdmlnYXRpb24gPSBtYWtlUmVmKG5hdmlnYXRpb24p
LCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHdlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUo
d2Vic2l0ZVBvbGljaWVzKSwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lXSgpIG11dGFibGUgewogICAgICAgICBpZiAoYXV0byogaXRlbSA9IG5hdmlnYXRpb24t
PnRhcmdldEl0ZW0oKSkgewogICAgICAgICAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkg
JXAgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzIHRvIGJhY2sgaXRlbSBVUkwgJXMiLCB0
aGlzLCBpdGVtLT51cmwoKS51dGY4KCkuZGF0YSgpKTsKIApAQCAtMzY2MCwxMCArMzY2MSwxMSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogCiAgICAgICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0
aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCiAg
ICAgICAgIEFTU0VSVCghbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOwor
ICAgICAgICBBU1NFUlQoIWV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jl
c3VtZSB8fCAhbmF2aWdhdGlvbi0+c3Vic3RpdHV0ZURhdGEoKSk7CiAgICAgICAgIGlmIChhdXRv
JiBzdWJzdGl0dXRlRGF0YSA9IG5hdmlnYXRpb24tPnN1YnN0aXR1dGVEYXRhKCkpCiAgICAgICAg
ICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZERhdGEobmF2aWdhdGlvbiwgeyBzdWJzdGl0dXRl
RGF0YS0+Y29udGVudC5kYXRhKCksIHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LnNpemUoKSB9LCBz
dWJzdGl0dXRlRGF0YS0+TUlNRVR5cGUsIHN1YnN0aXR1dGVEYXRhLT5lbmNvZGluZywgc3Vic3Rp
dHV0ZURhdGEtPmJhc2VVUkwsIHN1YnN0aXR1dGVEYXRhLT51c2VyRGF0YS5nZXQoKSwgc2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdU
Rk1vdmUod2Vic2l0ZVBvbGljaWVzRGF0YSksIHN1YnN0aXR1dGVEYXRhLT5zZXNzaW9uSGlzdG9y
eVZpc2liaWxpdHkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFn
ZS0+bG9hZFJlcXVlc3QobmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi0+
Y3VycmVudFJlcXVlc3QoKSB9LCBudWxscHRyLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQs
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXNE
YXRhKSk7CisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZFJlcXVlc3QobmF2aWdh
dGlvbiwgUmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSB9LCBu
dWxscHRyLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4oKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXNEYXRhKSwgZXhpc3RpbmdOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKTsKICAgICB9OwogICAgIGlmIChtX2luc3Bl
Y3RvckNvbnRyb2xsZXItPnNob3VsZFBhdXNlTG9hZGluZygqbV9wcm92aXNpb25hbFBhZ2UpKQog
ICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNldENvbnRpbnVlTG9hZGluZ0NhbGxiYWNr
KCptX3Byb3Zpc2lvbmFsUGFnZSwgV1RGTW92ZShjb250aW51YXRpb24pKTsKQEAgLTU2MTcsMTIg
KzU2MTksMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKICAg
ICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLAotICAgIGJvb2wgd2FzQWxsb3dlZEJ5SW5q
ZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0
X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQorICAgIGJvb2wgd2FzQWxs
b3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRj
aCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZVNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgZnJhbWVJRCwgV1RG
TW92ZShmcmFtZUluZm8pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1
ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2VkQnlJbmpl
Y3RlZEJ1bmRsZSwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgbGlzdGVuZXJJRCwg
dXNlckRhdGEpOworICAgIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5j
b3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50
aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwg
ZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoLCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgbGlzdGVu
ZXJJRCwgdXNlckRhdGEpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYg
ZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBu
ZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYg
ZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBu
ZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
KQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAK
QEAgLTU2MzUsMTMgKzU2MzcsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
clJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvbklEID8gbV9uYXZpZ2F0
aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSA6IG51bGxwdHI7CiAgICAgYXV0byBu
YXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKS5nZXQoKSwgcmVxdWVz
dCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUpOwogCi0gICAg
YXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3ZWJQYWdlSUQsIGZyYW1lSUQs
IG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQs
IG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pLAorICAgIGF1dG8gbGlzdGVuZXIgPSBt
YWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgd2ViUGFnZUlELCBmcmFtZUlELCBuZWVkc0Jyb3dzaW5nQ29u
dGV4dEdyb3VwU3dpdGNoLCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgaWRlbnRpZmllciwg
bGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksCiAgICAgICAgIHBy
b2Nlc3MsIG5hdmlnYXRpb25SZXNwb25zZV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQ
STo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZl
QnJvd3NpbmdXYXJuaW5nLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklY
TUU6IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNl
IGNsaWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXku
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKIAotICAgICAgICBh
dXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3dl
YlBhZ2VJRCwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IFdURk1vdmUocHJvY2Vzcyld
IChjb25zdCBhdXRvJiBwb2xpY3lEZWNpc2lvbikgeworICAgICAgICBhdXRvIHNlbmRlciA9IFBv
bGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3dlYlBhZ2VJRCwgZnJhbWVJ
RCwgbGlzdGVuZXJJRCwgcHJvY2Vzc10gKGNvbnN0IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7CiAg
ICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNpb24sIGNyZWF0ZU5l
dHdvcmtFeHRlbnNpb25zU2FuZGJveEV4dGVuc2lvbnMocHJvY2VzcykpLCB3ZWJQYWdlSUQpOwog
ICAgICAgICB9KTsKIApAQCAtNTY0OSwxMiArNTY1MSwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLAogICAgICAgICBpZiAocG9saWN5QWN0aW9uID09IFBvbGljeUFjdGlvbjo6VXNlICYmIG5l
ZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2ggJiYgbmF2aWdhdGlvbikgewogICAgICAgICAg
ICAgUmVnaXN0cmFibGVEb21haW4gcmVzcG9uc2VEb21haW4geyBuYXZpZ2F0aW9uUmVzcG9uc2Ut
PnJlc3BvbnNlKCkudXJsKCkgfTsKICAgICAgICAgICAgIC8vIEF2b2lkIHByb2Nlc3Mtc3dhcHBp
bmcgaW4gY2FzZXMgd2hlcmUgdGhlIHByb2Nlc3Mgb25seSBjb250YWlucyBhIHNpbmdsZSBwYWdl
IGFuZCBpcyBvcmlnaW4tY2xlYW4uCi0gICAgICAgICAgICBpZiAodGhpcy0+cHJvY2VzcygpLnBh
Z2VDb3VudCgpID4gMSB8fCAodGhpcy0+cHJvY2VzcygpLm9wdGlvbmFsUmVnaXN0cmFibGVEb21h
aW4oKSAmJiAqdGhpcy0+cHJvY2VzcygpLm9wdGlvbmFsUmVnaXN0cmFibGVEb21haW4oKSAhPSBy
ZXNwb25zZURvbWFpbikpIHsKKyAgICAgICAgICAgIGlmIChwcm9jZXNzLT5wYWdlQ291bnQoKSA+
IDEgfHwgKHByb2Nlc3MtPm9wdGlvbmFsUmVnaXN0cmFibGVEb21haW4oKSAmJiAqcHJvY2Vzcy0+
b3B0aW9uYWxSZWdpc3RyYWJsZURvbWFpbigpICE9IHJlc3BvbnNlRG9tYWluKSkgewogICAgICAg
ICAgICAgICAgIFdFQlBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZDogUHJvY2Vzcy1zd2FwcGluZyBkdWUgdG8gQ3Jvc3Mt
T3JpZ2luLU9wZW5lci1Qb2xpY3kiKTsKLSAgICAgICAgICAgICAgICBwb2xpY3lBY3Rpb24gPSBQ
b2xpY3lBY3Rpb246Oklnbm9yZTsKLSAgICAgICAgICAgICAgICBhdXRvIHByb2Nlc3NGb3JOYXZp
Z2F0aW9uID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JSZWdpc3RyYWJsZURv
bWFpbih3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3BvbnNlRG9tYWluKTsKLSAgICAgICAg
ICAgICAgICBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoKm5hdmlnYXRpb24sIG51bGxw
dHIsIFdURk1vdmUocHJvY2Vzc0Zvck5hdmlnYXRpb24pLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50OjpObywgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlclJlc3BvbnNl
UG9saWN5RGVjaXNpb24sIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIHdpbGxDb250aW51ZUxv
YWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpZZXM7CisgICAg
ICAgICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkucHJlcGFyZUxv
YWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIocHJvY2Vzcy0+Y29yZVByb2Nlc3NJZGVudGlmaWVyKCks
IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIHJlc3BvbnNlRG9tYWluID0gV1RGTW92ZShyZXNwb25zZURvbWFp
biksIG5hdmlnYXRpb24sIG5hdmlnYXRpb25SZXNwb25zZSA9IFdURk1vdmUobmF2aWdhdGlvblJl
c3BvbnNlKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpXShhdXRvIGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gcHJvY2Vzc0Zvck5hdmlnYXRpb24gPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
cHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHdlYnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVz
cG9uc2VEb21haW4pOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3MoKm5hdmlnYXRpb24sIG51bGxwdHIsIFdURk1vdmUocHJvY2Vzc0Zvck5hdmlnYXRp
b24pLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObywgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkOjpZZXNBZnRlclJlc3BvbnNlUG9saWN5RGVjaXNpb24sIG51bGxwdHIsIGV4aXN0
aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CisKKyAgICAgICAgICAg
ICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbmF2
aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBXVEZN
b3ZlKHNlbmRlciksIHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IGVhMWMyMmZiNmIxMWJlOTY4OTkyODI2NGQzYmYzZmM4NDcxMDliOGQuLmZmZjg1YjU1
MWFmMDM2OTEwZTQxMmVhZDcxMmJlY2MxM2M5MWJmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTWVkaWFLZXlTeXN0
ZW1QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWJh
Y2tTdGF0ZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIu
aCIKICNpbmNsdWRlICJQYWdlTG9hZFN0YXRlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEFjY2Vz
c0ludGVudC5oIgpAQCAtMTc0MSwxMCArMTc0MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRO
YXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBj
b25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25B
c3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm8sIHN0ZDo6b3B0
aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1
aW50NjRfdCBsaXN0ZW5lcklEKTsKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNo
b3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxv
d2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYm
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0
cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3Np
bmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVy
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRV
UkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGxvYWREYXRh
V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhOjpTZXNzaW9u
SGlzdG9yeVZpc2liaWxpdHkpOwotICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJ
OjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6
U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3Rk
OjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdh
dGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IHN0ZDo6bnVsbG9w
dCwgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpudWxsb3B0KTsKICAg
ICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
Y29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwogICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBGcmFt
ZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2lu
YXRpbmdGcmFtZUluZm8sIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3Jp
Z2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY0RlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJQ0tf
TE9PSykKQEAgLTIwNjAsNyArMjA2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9E
YXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZv
aWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFt
ZUluZm9EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELAotICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5k
bGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKKyAgICAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01J
TUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRC
eUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVp
bnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBj
b25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3Qg
VXNlckRhdGEmKTsKICAgICB2b2lkIGJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiwg
Ym9vbCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Jik7CiAKQEAgLTI0NjIsNyArMjQ2Myw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlcG9ydFBhZ2VMb2FkUmVzdWx0KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImID0geyB9KTsKIAotICAgIHZvaWQgY29udGludWVOYXZpZ2F0aW9u
SW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQ
YWdlUHJveHk+JiYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgUmVmUHRyPEFQ
STo6V2Vic2l0ZVBvbGljaWVzPiYmKTsKKyAgICB2b2lkIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3
UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVBy
b3h5PiYmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFJlZlB0cjxBUEk6Oldl
YnNpdGVQb2xpY2llcz4mJiwgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
Zmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3Rk
OjpudWxsb3B0KTsKIAogICAgIHZvaWQgc2V0TmVlZHNGb250QXR0cmlidXRlcyhib29sKTsKICAg
ICB2b2lkIHVwZGF0ZUZvbnRBdHRyaWJ1dGVzQWZ0ZXJFZGl0b3JTdGF0ZUNoYW5nZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGJjMzdiOGZjNmFkZjNlYWQxODcyZDExNTVmZjBjYmQwMDlkYzBhZjkuLjgxOTZiMTE5YThmMDJl
N2EwMDYwNDA4NTAyOGU5MWFlMjMxODY1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTEwNyw3ICsxMDcsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAgICAjIFBvbGljeSBtZXNzYWdlcwotICAg
IERlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIFN0cmluZyBkb3dubG9hZEF0
dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dz
aW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJE
YXRhIHVzZXJEYXRhKQorICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5m
bywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNl
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUs
IFN0cmluZyBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRs
ZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBtYWluUmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKICAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0Rh
dGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRp
b25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50
NjRfdCBsaXN0ZW5lcklEKQogICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBzdHJ1
Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBz
dHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHN0
ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1Bh
Z2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpV
c2VyRGF0YSB1c2VyRGF0YSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlBvbGljeURlY2lzaW9uIFBvbGlj
eURlY2lzaW9uKSBTeW5jaHJvbm91cwogICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSBmcmFtZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lD
aGVja0lkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5n
IGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAppbmRleCA2ZTk2OTA3MjU0YTRiZDE1NWY1OGRmMTM3ODQ4YjYwNTMxOWY1
MTU1Li4zNDllYTJjNjM2OTJhYjgwOGZjNzNmNWQ4ODZhMmFhOWU1Y2NmMjJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwCkBAIC00MTIsOCArNDEyLDExIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxl
TG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAKICAgICBB
U1NFUlQoKGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCAmJiBsb2FkUGFyYW1ldGVycy53ZWJGcmFt
ZUlEKSB8fCBsb2FkUGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENy
ZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzKTsKIAotICAgIFdF
QkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HKCJzY2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJl
aW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQpIiwgc3Rh
dGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwotICAg
IGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVycyksIDApKSB7CisgICAg
c3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOworICAgIGlmIChsb2FkUGFyYW1ldGVy
cy5pc01haW5GcmFtZU5hdmlnYXRpb24pCisgICAgICAgIGV4aXN0aW5nTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IHN0ZDo6ZXhjaGFuZ2UobV9leGlzdGluZ05ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUsIHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCTE9B
REVSU1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcg
c2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIHN0YXRp
Y19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBleGlzdGlu
Z05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUudmFsdWVfb3IoTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKKyAgICBpZiAoIVdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1
bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFtZXRlcnMsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXJUb1Jlc3VtZSksIDApKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JF
TEVBU0VfTE9HX0VSUk9SKCJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJj
ZSB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQpIiwgc3RhdGljX2Nhc3Q8aW50
PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwogICAgICAgICAvLyBXZSBw
cm9iYWJseSBmYWlsZWQgdG8gc2NoZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9j
ZXNzIGJlY2F1c2UgaXQgaGFkIGNyYXNoZWQuCiAgICAgICAgIC8vIFRoaXMgbG9hZCB3aWxsIG5l
dmVyIHN1Y2NlZWQgc28gd2Ugd2lsbCBzY2hlZHVsZSBpdCB0byBmYWlsIGFzeW5jaHJvbm91c2x5
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmgKaW5kZXggY2EyMzQ5OTU4NjY2YTgwMWIwZTBhNmJkNzY3ZGJiY2NjZmI3MTZhZS4u
MjRiNjkzNzkwMTdkNTQzOWJiYjFlMWIzZDFhOTVjOGI3OTIzNjBlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
RXJyb3IuaD4KQEAgLTkxLDYgKzkyLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHVpbnQ2NF90
IGdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKIAorICAgIHZvaWQgc2V0RXhpc3RpbmdOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJU
b1Jlc3VtZSkgeyBtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZSA9IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsgfQorCiBw
cml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVMb2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwg
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QpOwogICAgIHZvaWQgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOwpAQCAtMTMzLDYgKzEzNiw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyPiBtX3Bp
bmdMb2FkQ29tcGxldGlvbkhhbmRsZXJzOwogICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUHJl
Y29ubmVjdENvbXBsZXRpb25IYW5kbGVyPiBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcnM7
CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoYm9vbCk+PiBtX29ubGluZVN0YXRlQ2hhbmdlTGlz
dGVuZXJzOworICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+
IG1fZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOwogICAgIGJv
b2wgbV9pc09uTGluZSB7IHRydWUgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IDcyMzE1YTU3NTg3MzVlZDVlZjE5NjY2MjkxZTYxMGQzOGNjMGU5ZTEuLmZjNDM4
YzBlMjI4ZDBhMDE1NDc2MmQzNDY0NzU2NjY3MDAzNmYzMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcApAQCAtOTEsNiArOTEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0
Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3VicmVzb3Vy
Y2VMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VJRXZlbnRXaXRoS2V5U3RhdGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1dpZGdldC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93RmVhdHVy
ZXMuaD4KQEAgLTg0OCwxMSArODQ5LDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zCiAgICAg
YXV0byogY29yZUZyYW1lID0gbV9mcmFtZS0+Y29yZUZyYW1lKCk7CiAgICAgYXV0byogcG9saWN5
RG9jdW1lbnRMb2FkZXIgPSBjb3JlRnJhbWUgPyBjb3JlRnJhbWUtPmxvYWRlcigpLnByb3Zpc2lv
bmFsRG9jdW1lbnRMb2FkZXIoKSA6IG51bGxwdHI7CiAgICAgYXV0byBuYXZpZ2F0aW9uSUQgPSBw
b2xpY3lEb2N1bWVudExvYWRlciA/IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyJj4oKnBv
bGljeURvY3VtZW50TG9hZGVyKS5uYXZpZ2F0aW9uSUQoKSA6IDA7CisgICAgLy8gRklYTUU6IFdl
IHNob3VsZCBiZSB1c2luZyBhIHN0cm9uZ2x5LXR5cGVkIGlkZW50aWZpZXIgZm9yIG1haW5SZXNv
dXJjZUxvYWRJZGVudGlmaWVyLgorICAgIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlm
aWVyID0gcG9saWN5RG9jdW1lbnRMb2FkZXIgJiYgcG9saWN5RG9jdW1lbnRMb2FkZXItPm1haW5S
ZXNvdXJjZUxvYWRlcigpID8gcG9saWN5RG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZUxvYWRl
cigpLT5pZGVudGlmaWVyKCkgOiAwOwogCiAgICAgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1
bmRsZSA9IHBvbGljeSA9PSBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb25Vc2U7CiAgICAgYXV0byBw
cm90ZWN0b3IgPSBtX2ZyYW1lLmNvcHlSZWYoKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0g
bV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9u
KSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKLSAgICBpZiAoIXdlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9m
cmFtZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25J
RCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dSZXNwb25zZSwgZG93bmxvYWRBdHRyaWJ1dGUs
IHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dp
dGNoLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkgeworICAgIGlmICgh
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZShtX2ZyYW1lLT5mcmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgaWRlbnRpZmllciwgbmF2
aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9hZEF0
dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdDb250ZXh0
R3JvdXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBsaXN0ZW5lcklELCBVc2Vy
RGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkgewogICAgICAgICBXRUJGUkFNRUxPQURFUkNMSUVOVF9S
RUxFQVNFX0xPRyhOZXR3b3JrLCAiZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZTogaWdu
b3JpbmcgYmVjYXVzZSBXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlIGZhaWxl
ZCIpOwogICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJ
RCwgUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBzdGQ6Om51bGxvcHQsIFBvbGljeUFjdGlv
bjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDIzZTYyNGI4ZTAyMDk0NjFhNjQ5ZTliMzk5
ZTE0ZmFhYjg2MTYzODguLjcxYzlkNTMxYWIxYWM5ZjQ1MzVjNmJiMzU5ZTg2MmQ3MGViYjkwM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0y
NjIsNiArMjYyLDcgQEAKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3Rm
L1Byb2Nlc3NJRC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CisjaW5jbHVkZSA8d3RmL1Nj
b3BlLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL1N5c3Rl
bVRyYWNpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkBAIC0xNjg5LDYg
KzE2OTAsMTEgQEAgdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycyYmIGxv
YWRQYXJhbWV0ZXJzKQogICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4obG9hZFBh
cmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgJm1fbWFpbkZyYW1lLmdldCgp
KTsKICNlbmRpZgogCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRl
Z3koKS5zZXRFeGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUobG9h
ZFBhcmFtZXRlcnMuZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1l
KTsKKyAgICBhdXRvIHJlc3VtaW5nTG9hZFNjb3BlID0gbWFrZVNjb3BlRXhpdChbXSB7CisgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2V0RXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKHN0ZDo6bnVsbG9wdCk7Cisg
ICAgfSk7CisKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIAogICAg
IG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAxNDNhMTgzODJh
YTAxZTMzZDAzODJkNWQ3OTIyNzU3Y2IxYWY3Yjc3Li5mZTZlYWIxYWRiYTZjNmE5YWIxMzIyYTk2
ZWNmMjU1OGYxMDNlMmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIK
KyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk9w
dGlvbmFsQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIlBERlBsdWdpbklkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJQbHVnaW4uaCIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyOTM0MWIzMzU2OWRmNzQxMDNiOTBjNmExZTUwNjdj
YjM4YWExN2RiLi4xYmE4YzlkOTVjZWI3ZTEwMmFiMGI2ZTY2NTAxZGI5N2VhYzE1M2U2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMjEtMDgtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBbV0syXSBSZXVzZSB0aGUgc2FtZSBuZXR3b3JrIGxvYWQgd2hlbiBw
cm9jZXNzLXN3YXBwaW5nIG9uIHJlc291cmNlIHJlc3BvbnNlIGR1ZSB0byBDT09QCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk0NjUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzgyMzA3NjExPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hy
aXN0ZW5zZW4uCisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAg
ICogaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvcmVzb3VyY2VzL3NpbmdsZS1y
ZXF1ZXN0LXRvLXNlcnZlci1wb3B1cC5weTogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKiBodHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVxdWVzdC10
by1zZXJ2ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9jcm9zcy1v
cmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXIuaHRtbDogQWRkZWQu
CisKIDIwMjEtMDgtMjcgIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgog
CiAgICAgICAgIE1ha2UgQVhDb3JlT2JqZWN0OjpzZXRTZWxlY3RlZFZpc2libGVQb3NpdGlvblJh
bmdlIHdvcmsgaW4gbmF0aXZlIHRleHQgY29udHJvbHMgb24gTWFjT1MuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9yZXNvdXJjZXMv
c2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLXBvcHVwLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
Y3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvcmVzb3VyY2VzL3NpbmdsZS1yZXF1ZXN0LXRvLXNl
cnZlci1wb3B1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDJiM2JkY2IyOWY3OGExNmQwNDVjZjMwOTI0ODYy
ZTI4NmU4YTMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3Jvc3Mt
b3JpZ2luLW9wZW5lci1wb2xpY3kvcmVzb3VyY2VzL3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci1w
b3B1cC5weQpAQCAtMCwwICsxLDEzIEBACitkZWYgbWFpbihyZXF1ZXN0LCByZXNwb25zZSk6Cisg
ICAgdG9rZW4gPSByZXF1ZXN0LkdFVFtiJ3Rva2VuJ10KKyAgICB2YWx1ZSA9IHJlcXVlc3Quc2Vy
dmVyLnN0YXNoLnRha2UodG9rZW4pCisgICAgYWxyZWFkeV9sb2FkZWRfc3RyaW5nID0gIm5vdF9h
bHJlYWR5X2xvYWRlZCIKKyAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKKyAgICAgICAgYWxyZWFk
eV9sb2FkZWRfc3RyaW5nID0gImFscmVhZHlfbG9hZGVkIgorICAgIGVsc2U6CisgICAgICAgIHJl
cXVlc3Quc2VydmVyLnN0YXNoLnB1dCh0b2tlbiwgVHJ1ZSkKKyAgICByZXR1cm4gKFsKKyAgICAg
ICAgKGInQ2FjaGUtQ29udHJvbCcsIGInbm8tc3RvcmUnKSwKKyAgICAgICAgKGInQ3Jvc3MtT3Jp
Z2luLU9wZW5lci1Qb2xpY3knLCBiJ3NhbWUtb3JpZ2luJyksCisgICAgICAgIChiJ0NvbnRlbnQt
VHlwZScsIGIndGV4dC9odG1sJyldLAorICAgICAgICB1JzxzY3JpcHQ+dmFyIGJjID0gbmV3IEJy
b2FkY2FzdENoYW5uZWwoInNpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlciIpOyBiYy5wb3N0TWVzc2Fn
ZSgiJXMiKTs8L3NjcmlwdD5cbicgJSBhbHJlYWR5X2xvYWRlZF9zdHJpbmcpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUt
cmVxdWVzdC10by1zZXJ2ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3Jv
c3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNjU3N2VjZTlmNWI3YmFmYmFmNmQ0ZDIyOWYwZjMwOWQ2NmFkMDQw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9w
ZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDMgQEAKKworUEFTUyBNYWtlIHN1cmUgd2UgbWFrZSBhIHNpbmdsZSByZXF1ZXN0IHRvIHRo
ZSBIVFRQIHNlcnZlciB3aGVuIHN3aXRjaGluZyBicm93c2luZyBjb250ZXh0IGdyb3VwCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5
L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3Jv
c3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjIyZjBkZGU2OGVlMTdlODU1MGI5NzliM2IyMzU4YTFmYTVhNzdjNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9s
aWN5L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8c2NyaXB0
IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9L3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29t
bW9uL3V0aWxzLmpzIj48L3NjcmlwdAorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorYXN5bmNf
dGVzdCgodCkgPT4geworICAgIHZhciBiYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCdzaW5nbGUt
cmVxdWVzdC10by1zZXJ2ZXInKTsKKyAgICBsZXQgdyA9IG9wZW4oInJlc291cmNlcy9zaW5nbGUt
cmVxdWVzdC10by1zZXJ2ZXItcG9wdXAucHk/dG9rZW49IiArIHRva2VuKCkpOworICAgIGJjLm9u
bWVzc2FnZSA9IHQuc3RlcF9mdW5jKChldmVudCkgPT4geworICAgICAgICBhc3NlcnRfZXF1YWxz
KGV2ZW50LmRhdGEsICJub3RfYWxyZWFkeV9sb2FkZWQiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUo
dy5jbG9zZWQsICJTaG91bGQgc3dpdGNoIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAiKTsKKyAgICAg
ICAgdC5kb25lKCk7CisgICAgfSk7Cit9LCAiTWFrZSBzdXJlIHdlIG1ha2UgYSBzaW5nbGUgcmVx
dWVzdCB0byB0aGUgSFRUUCBzZXJ2ZXIgd2hlbiBzd2l0Y2hpbmcgYnJvd3NpbmcgY29udGV4dCBn
cm91cCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436627</attachid>
            <date>2021-08-27 08:08:44 -0700</date>
            <delta_ts>2021-08-27 10:04:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229465-20210827080843.patch</filename>
            <type>text/plain</type>
            <size>84048</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVjNTdjMGU2ZTIzNDc4MmJj
ODY1NmNiNmVkYTY0MTEyNjEzOGEwYTUuLjNmYjlhYzZmMWEyMWM2MDA5MjA0NDJkZTQyYjg3N2E0
MDc2ZDZlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMjEtMDgtMjYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBSZXVzZSB0aGUgc2FtZSBu
ZXR3b3JrIGxvYWQgd2hlbiBwcm9jZXNzLXN3YXBwaW5nIG9uIHJlc291cmNlIHJlc3BvbnNlIGR1
ZSB0byBDT09QCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjk0NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyMzA3NjExPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgcjI4MTUxNiBhZGRlZCBzdXBw
b3J0IGZvciBwcm9jZXNzLXN3YXBwaW5nIGJhc2VkIG9uIENyb3NzLU9yaWdpbi1PcGVuZXItUG9s
aWN5IGhlYWRlcgorICAgICAgICBpbiBIVFRQIHJlc3BvbnNlcy4gSG93ZXZlciwgb24gcHJvY2Vz
cy1zd2FwLCB3ZSB3b3VsZCBhYm9ydCB0aGUgZXhpc3RpbmcgbmV0d29yayBsb2FkCisgICAgICAg
IHRoYXQgd2FzIHN0YXJ0ZWQgYnkgdGhlIG9yaWdpbmFsIFdlYlByb2Nlc3MgYW5kIHN0YXJ0IGEg
ZnJlc2ggbmV0d29yayBsb2FkIGluIHRoZSBuZXcKKyAgICAgICAgV2ViUHJvY2Vzcy4gVGhpcyB3
YXMgc3Vib3B0aW1hbCBhbmQgY291bGQgbGVhZCB0byBpc3N1ZXMgd2l0aCByZXNvdXJjZXMgdGhh
dCBwcm92aWRlCisgICAgICAgIG9uZS10aW1lIGJlaGF2aW9ycy4gVGhpcyBwYXRjaCBhZGRyZXNz
ZXMgdGhlIGlzc3VlIGJ5IHRyYW5zZmVycmluZyB0aGUgbmV0d29yayBsb2FkCisgICAgICAgIGlu
IHRoZSBuZXR3b3JrIHByb2Nlc3MgZnJvbSB0aGUgb2xkIFdlYlByb2Nlc3MgdG8gdGhlIG5ldyBX
ZWJQcm9jZXNzIHdoZW4gcHJvY2VzcworICAgICAgICBzd2FwcGluZy4KKworICAgICAgICBXaGVu
IHRoZSBVSVByb2Nlc3MgZGVjaWRlcyB0byBwcm9jZXNzLXN3YXAgb24gcmVzcG9uc2UgcG9saWN5
IGRlY2lzaW9uLCBpdCBmaXJzdAorICAgICAgICBzZW5kcyBJUEMgdG8gdGhlIG5ldHdvcmsgcHJv
Y2VzcyB0byBhc2sgaXQgdG8gcHJlcGFyZSB0aGUgTmV0d29ya1Jlc291cmNlTG9hZGVyCisgICAg
ICAgIGZvciBvd25lcnNoaXAgdHJhbnNmZXIuIFRoZSBuZXR3b3JrIHByb2Nlc3MgdGFrZXMgdGhl
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAgICBmcm9tIGl0cyBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyBhbmQgc3RvcmVzIGl0IGluIGEgdGVtcG9yYXJ5IGNhY2hlLCB0aGVuCisg
ICAgICAgIHJlc3BvbmRzIHRvIHRoZSBVSVByb2Nlc3Mgd2l0aCB0aGUgTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIgb2YgdGhlIGxvYWRlci4KKyAgICAgICAgVXBvbiByZWNlaXZpbmcgdGhl
IHJlc3BvbnNlLCB0aGUgVUlQcm9jZXNzIHByb2NlZWRzIHdpdGggdGhlIHByb2Nlc3Mtc3dhcCwg
aXQKKyAgICAgICAgcmVqZWN0cyByZXNwb25zZSBwcm9jZXNzaW5nIGluIHRoZSBvbGQgcHJvY2Vz
cyBhbmQgZG9lcyBhIGxvYWRSZXF1ZXN0IGluIGEgbmV3CisgICAgICAgIFdlYlByb2Nlc3MuIFdo
ZW4gc3RhcnRpbmcgc2VuZGluZyB0aGUgTG9hZFJlcXVlc3QgSVBDIHRvIHRoZSBuZXcgV2ViUHJv
Y2VzcywgaXQKKyAgICAgICAgcGFzc2VzIGFsb25nIHRoZSBOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllciBvZiB0aGUgY2FjaGVkIGxvYWRlciBpbiB0aGUgbmV0d29yaworICAgICAgICBwcm9j
ZXNzLiBXaGVuIHRoZSBXZWJQcm9jZXNzIGVuZHMgdXAgc2NoZWR1bGluZyB0aGUgbG9hZCB3aXRo
IHRoZSBuZXR3b3JrIHByb2Nlc3MsCisgICAgICAgIGl0IHBhc3NlcyBhZ2FpbiB0aGUgTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXIuIFVwb24gcmVjZWl2aW5nIHRoZSBsb2FkIHJlcXVlc3Qs
CisgICAgICAgIHRoZSBuZXR3b3JrIHByb2Nlc3MgY2hlY2tzIGlmIGEgTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIgaXMgcHJvdmlkZWQgZm9yCisgICAgICAgIGNvbnRpbnVpbmcgYSBsb2Fk
LiBJZiBub25lIGlzIHByb3ZpZGVkLCB3ZSB1c2UgdGhlIHJlZ3VsYXIgY29kZSBwYXRoIGFuZCBh
Y3R1YWxseQorICAgICAgICBjb25zdHJ1Y3QgYSBuZXcgTmV0d29ya1Jlc291cmNlTG9hZGVyLiBI
b3dldmVyLCBpZiBhIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyCisgICAgICAgIGlzIHBy
b3ZpZGVkLCB3ZSB0YWtlIHRoZSBjb3JyZXNwb25kaW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBm
cm9tIHRoZSBjYWNoZSwKKyAgICAgICAgdHJhbnNmZXIgaXQgdG8gdGhlIG5ldyBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyBhbmQgaGF2ZSBpdCBzZW5kIHRoZQorICAgICAgICBEaWRSZWNl
aXZlUmVzcG9uc2UgSVBDIHRvIHRoZSBXZWJQcm9jZXNzIHRvIGNvbnRpbnVlIHRoZSBsb2FkIHdp
dGggdGhlIG5ldworICAgICAgICBXZWJQcm9jZXNzLgorCisgICAgICAgIFRlc3Q6IGh0dHAvd3B0
L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci5odG1s
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dHJhbnNmZXJLZXB0QWxpdmVMb2FkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnRha2VOZXR3
b3JrUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
Q2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyOjpDYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Q2FjaGVkTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp0YWtlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OkNh
Y2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZXhwaXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6dGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1Ry
YW5zZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVMb2FkRm9y
V2ViUHJvY2Vzc1RyYW5zZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJhbnNmZXJUb05ld1dl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3Vs
ZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNP
clhGcmFtZU9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZEludGVycnVwdE5hdmlnYXRpb25Gb3JDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRX
b3JrZXJMb2FkRm9yQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1h
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWRk
Q29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogU2hhcmVk
L0xvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9Mb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2Zlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lv
bmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRo
TmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGlu
dWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0
d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAyMS0wOC0yNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYSB0
eXBvIGluIGBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZSgpYApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAppbmRleCBkOTYyYTk4YWY1NDY3NTQ0ZmI0MDg3YzQ4MWFhMjJlYTdlYTVm
NjIwLi4wZTY3OWUwODg5NTVhY2U5MGMwZDc1YTdiNzBmMDhhMTFjZDdlOWU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtODUsNiArODUsNyBAQAogI2VuZGlmCiAKICNkZWZpbmUg
Q09OTkVDVElPTl9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hh
bm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCku
dG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xP
R19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVw
IC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQo
KSwgIyNfX1ZBX0FSR1NfXykKIAogI2RlZmluZSBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVD
Syhhc3NlcnRpb24pIE5FVFdPUktfUFJPQ0VTU19NRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNz
ZXJ0aW9uLCAodm9pZCkwKQogI2RlZmluZSBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDS19D
T01QTEVUSU9OKGFzc2VydGlvbiwgY29tcGxldGlvbikgZG8geyBcCkBAIC0xNjYsNyArMTY3LDcg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFu
Z2VkKGJvb2wgaGFzVXBsb2FkKQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIp
CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQobG9hZGVyLmlkZW50aWZpZXIoKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChsb2FkZXIuaXNLZXB0QWxpdmUoKSkgewpAQCAt
MTc0LDE2ICsxNzUsMTYgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
Q2xlYW51cFJlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWQKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIEFTU0VSVChtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuZ2V0KGxvYWRl
ci5pZGVudGlmaWVyKCkpID09ICZsb2FkZXIpOwotICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVy
cy5yZW1vdmUobG9hZGVyLmlkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKG1fbmV0d29ya1Jlc291
cmNlTG9hZGVycy5nZXQobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkpID09ICZsb2FkZXIpOworICAg
IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5yZW1vdmUobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkp
OwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0cmFuc2ZlcktlcHRB
bGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChsb2FkZXIuaXNLZXB0QWxpdmUo
KSk7Ci0gICAgQVNTRVJUKG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5nZXQobG9hZGVyLmlkZW50
aWZpZXIoKSkgPT0gJmxvYWRlcik7Ci0gICAgaWYgKGF1dG8gdGFrZW5Mb2FkZXIgPSBtX25ldHdv
cmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2FkZXIuaWRlbnRpZmllcigpKSkKKyAgICBBU1NFUlQo
bV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmdldChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkgPT0g
JmxvYWRlcik7CisgICAgaWYgKGF1dG8gdGFrZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxv
YWRlcnMudGFrZShsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkpCiAgICAgICAgIG1fbmV0d29ya1By
b2Nlc3MtPmFkZEtlcHRBbGl2ZUxvYWQodGFrZW5Mb2FkZXIucmVsZWFzZU5vbk51bGwoKSk7CiB9
CiAKQEAgLTQ4NiwyNyArNDg3LDQxIEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlRmV0CiB9CiAjZW5k
aWYKIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJj
ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9u
YWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUp
CiB7Ci0gICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJj
ZUxvYWQ6IChwYXJlbnRQSUQ9JWQsIHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9
JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIp
IiwgbG9hZFBhcmFtZXRlcnMucGFyZW50UElELCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBh
cmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVy
KTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNl
TG9hZDogKHBhcmVudFBJRD0lZCwgcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0l
IiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwg
ZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZT0lIiBQUkl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJl
bnRQSUQsIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIGxvYWRQYXJh
bWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRv
VUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGV4aXN0aW5nTG9hZGVyVG9SZXN1
bWUudmFsdWVfb3IoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgp
KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25l
dHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24obV9zZXNzaW9uSUQpOwogICAgIGlmICgh
c2VydmVyLmlzSW1wb3J0Q29tcGxldGVkKCkpIHsKLSAgICAgICAgc2VydmVyLndoZW5JbXBvcnRJ
c0NvbXBsZXRlZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkUGFy
YW1ldGVycyA9IFdURk1vdmUobG9hZFBhcmFtZXRlcnMpXSgpIG11dGFibGUgeworICAgICAgICBz
ZXJ2ZXIud2hlbkltcG9ydElzQ29tcGxldGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGxvYWRQYXJhbWV0ZXJzID0gV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0
aW5nTG9hZGVyVG9SZXN1bWVdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1fbmV0d29y
a1Byb2Nlc3MtPndlYlByb2Nlc3NDb25uZWN0aW9uKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9j
ZXNzLT5zd1NlcnZlckZvclNlc3Npb24obV9zZXNzaW9uSUQpLmlzSW1wb3J0Q29tcGxldGVkKCkp
OwotICAgICAgICAgICAgc2NoZWR1bGVSZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVy
cykpOworICAgICAgICAgICAgc2NoZWR1bGVSZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1l
dGVycyksIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgorCiAgICAgYXV0byBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRl
cnMuaWRlbnRpZmllcjsKICAgICBSRUxFQVNFX0FTU0VSVChpZGVudGlmaWVyKTsKICAgICBSRUxF
QVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtSZXNv
dXJjZUxvYWRlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogCisgICAgaWYgKGV4aXN0aW5nTG9h
ZGVyVG9SZXN1bWUpIHsKKyAgICAgICAgaWYgKGF1dG8gc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGV4aXN0aW5nTG9hZGVyID0gc2Vzc2lvbi0+dGFr
ZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKCpleGlzdGluZ0xvYWRlclRvUmVzdW1l
KSkgeworICAgICAgICAgICAgICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coTG9hZGluZywgInNj
aGVkdWxlUmVzb3VyY2VMb2FkOiBSZXN1bWluZyBleGlzdGluZyBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIiKTsKKyAgICAgICAgICAgICAgICBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuYWRkKGlkZW50
aWZpZXIsICpleGlzdGluZ0xvYWRlcik7CisgICAgICAgICAgICAgICAgZXhpc3RpbmdMb2FkZXIt
PnRyYW5zZmVyVG9OZXdXZWJQcm9jZXNzKCp0aGlzLCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HX0VSUk9SKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDogQ291bGQgbm90IGZp
bmQgZXhpc3RpbmcgTmV0d29ya1Jlc291cmNlTG9hZGVyIHRvIHJlc3VtZSwgd2lsbCBkbyBhIGZy
ZXNoIGxvYWQiKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HX0VSUk9SKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDogQ291bGQgbm90IGZp
bmQgbmV0d29yayBzZXNzaW9uIG9mIGV4aXN0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciB0byBy
ZXN1bWUsIHdpbGwgZG8gYSBmcmVzaCBsb2FkIik7CisgICAgfQorCiAgICAgYXV0byYgbG9hZGVy
ID0gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZShXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgKnRoaXMpKS5pdGVyYXRv
ci0+dmFsdWU7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0xMjY5LDYgKzEyODQs
MTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJpb3JpdGl6ZVJlc291
cmNlTG9hZHMoVmVjdG9yPFJlc291cmNlTG9hZEkKICAgICBzZXNzaW9uLT5uZXR3b3JrTG9hZFNj
aGVkdWxlcigpLnByaW9yaXRpemVMb2Fkcyhsb2Fkcyk7CiB9CiAKK1JlZlB0cjxOZXR3b3JrUmVz
b3VyY2VMb2FkZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0YWtlTmV0d29ya1Jl
c291cmNlTG9hZGVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpCit7CisgICAgaWYg
KCFOZXR3b3JrUmVzb3VyY2VMb2FkTWFwOjpNYXBUeXBlOjppc1ZhbGlkS2V5KHJlc291cmNlTG9h
ZElkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9uZXR3
b3JrUmVzb3VyY2VMb2FkZXJzLnRha2UocmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDVlMDcwOTFlMzczNmRlMzUyMTkyY2ZlNzg2NzljYjYy
MmIyM2RmMmYuLmY0YTBhYjcxOTNlZmM2Y2ZmYWM2MGZlZmNkY2QzOGZiYWU5ZjA5NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtNRE5TUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUlRDUHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdvcmtS
ZXNvdXJjZUxvYWRNYXAuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgogI2luY2x1ZGUg
IlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTE4Niw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xp
Y3kpOwogCiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VTb3Vy
Y2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIFJlZlB0
cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIodWludDY0
X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CkBAIC0y
MDMsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYpOwogCi0gICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpOwogICAgIHZvaWQgcGVyZm9ybVN5
bmNocm9ub3VzTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWREZWxh
eWVkUmVwbHkmJik7CiAgICAgdm9pZCB0ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpUZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3Nh
Z2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBsb2Fk
UGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJlOTI0NGU4NmZjZGUzNWM5OGM2MGM3MDRj
YmFlZjI0MDJmZDBkNmEuLjczZjNlODkxNjI5ZTIyMzQ0OWU0NzUzMmRkMTQyNDczNWUzZDRiMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjIsNyAr
MjIsNyBAQAogCiBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAKLSAgICBTY2hlZHVsZVJlc291cmNlTG9hZChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCisgICAgU2NoZWR1
bGVSZXNvdXJjZUxvYWQoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpCiAgICAgUGVyZm9ybVN5bmNo
cm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNl
TG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBWZWN0b3I8dWludDhfdD4gZGF0YSkgU3luY2hy
b25vdXMKICAgICBUZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wg
aGFuZGxlZCkgU3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDVkNjgyOWIyODgwMjU0
YmQwMTEzMTBhOWZkMjlkNzg1ZWRiNmUwNTUuLmQ1YWMwZTM1ZjliMjM1Njk3MjEyYmNkMTM2MWQ2
NmM4NDM5NjZlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC0yODE1LDYgKzI4MTUsMjYgQEAgUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyUHJveHkmIE5ldHdvcmtQcm9jZXNzOjpydGNEYXRhQ2hhbm5lbFByb3h5KCkKIH0KICNl
bmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFu
c2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwg
dWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgQVNTRVJUKHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgIGF1
dG8qIGNvbm5lY3Rpb24gPSB3ZWJQcm9jZXNzQ29ubmVjdGlvbihzb3VyY2VQcm9jZXNzSWRlbnRp
Zmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoc3RkOjpudWxsb3B0KTsKKworICAgIGF1dG8gc2Vzc2lvbiA9IGNvbm5lY3Rpb24tPm5l
dHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKKworICAgIGF1dG8gbG9hZGVyID0gY29ubmVjdGlv
bi0+dGFrZU5ldHdvcmtSZXNvdXJjZUxvYWRlcihyZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCk7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXItPmlkZW50aWZpZXIoKTsKKyAg
ICBzZXNzaW9uLT5hZGRMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NUcmFuc2Zlcihsb2FkZXIucmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoaWRlbnRpZmllcik7Cit9CisK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdl
TmV0d29ya1BhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIGF1dG8gc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZWE5MWVkNTk0MDNlNDlmZTI3ZGE2ODE5MzE2NzFlOTZm
ZjdiZjlhNy4uMjAyOGE5MWY4YzA3ZGNlYzRiNzFlOGU1MTUwMTUxMDM5NGMwZjM2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RN
YW5hZ2VyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJJREJTZXJ2ZXIuaCIKQEAgLTQyMiw2ICs0
MjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5j
b2Rlcj4mKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJiwg
V2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYpOworICAgIHZvaWQgcHJlcGFyZUxv
YWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNl
UHJvY2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
Zmllcj4pPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0
aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJik7CiAgICAgdm9p
ZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkNzk5NzQ1MWM0NTQwY2MzZDc1NjUzNDhjNzZhMjM0NDkx
MzgyZjlhLi5jYWViOGQ5YmI4NDhjNjkwMGFlOTU1NWQwNzU5ZjkyZDU5YmYyNDkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTE5NSw2ICsxOTUsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgQ2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKKyAgICBQcmVwYXJl
TG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3Vy
Y2VQcm9jZXNzSWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgLT4g
KHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gbmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIpIEFzeW5jCisKICAgICBBZGRXZWJQYWdlTmV0d29y
a1BhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyBwYXJh
bWV0ZXJzKQogICAgIFJlbW92ZVdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCiAgICAg
Q291bnROb25EZWZhdWx0U2Vzc2lvblNldHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAo
c2l6ZV90IGNvdW50KSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDU3OTQwMGRk
YTZlNTVlY2MyZGFlNGI0Y2E3MDZlYmIxMWE3NTc4M2YuLjA0ZDVhNzE1OWExNmE2YmY3MzM5YTY4
YTg0ZTY0OTRlMmFhMDdlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBwYXJl
bnRPcmlnaW4oKSBjb25zdDsKIAotICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmll
ciB7IDAgfTsKKyAgICBtdXRhYmxlIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllciB7
IDAgfTsKICAgICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiByZXF1ZXN0Qm9keVNh
bmRib3hFeHRlbnNpb25zOyAvLyBDcmVhdGVkIGF1dG9tYXRpY2FsbHkgZm9yIHRoZSBzZW5kZXIu
CiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IHJlc291cmNlU2FuZGJveEV4dGVuc2lvbjsg
Ly8gQ3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZvciB0aGUgc2VuZGVyLgogICAgIFNlY29uZHMgbWF4
aW11bUJ1ZmZlcmluZ1RpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODJmMWU1MzAxNDRmYTBmZjJkYWIx
MWU2NDRjMDliN2Y2ODYxYTAwMC4uMjk2ZDQ1MTAyYmQxOGQzZmVmZGNmMzAxNTQzN2ZkOGMzZmMw
ZTI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTIyLDYgKzUyMiwxNiBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6YWJvcnQoKQogICAgIGNsZWFudXAoTG9hZFJlc3VsdDo6Q2FuY2VsKTsKIH0K
IAordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyYW5zZmVyVG9OZXdXZWJQcm9jZXNzKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBuZXdDb25uZWN0aW9uLCBSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyIG5ld0NvcmVJZGVudGlmaWVyKQoreworICAgIG1fY29ubmVjdGlvbiA9IG5ld0Nv
bm5lY3Rpb247CisgICAgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSBuZXdDb3JlSWRlbnRpZmll
cjsKKworICAgIEFTU0VSVChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgfHwgbV9jYWNoZUVu
dHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIHx8IG1fc2VydmljZVdvcmtl
ckZldGNoVGFzayk7CisgICAgYm9vbCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlID0gdHJ1ZTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVj
ZWl2ZVJlc3BvbnNlIHsgbV9yZXNwb25zZSwgd2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSB9KTsKK30KKwogYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVy
cnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgeEZyYW1lT3B0aW9ucywgY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKGlzTWFpbkZyYW1lTG9hZCgpKQpAQCAtNTQ2LDEyICs1
NTYsMTIgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRG
b3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgeEYKICAgICB9CiAgICAgY2FzZSBYRnJhbWVP
cHRpb25zRGlzcG9zaXRpb246OkNvbmZsaWN0OiB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3Nh
Z2UgPSAiTXVsdGlwbGUgJ1gtRnJhbWUtT3B0aW9ucycgaGVhZGVycyB3aXRoIGNvbmZsaWN0aW5n
IHZhbHVlcyAoJyIgKyB4RnJhbWVPcHRpb25zICsgIicpIGVuY291bnRlcmVkIHdoZW4gbG9hZGlu
ZyAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInLiBGYWxsaW5n
IGJhY2sgdG8gJ0RFTlknLiI7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENv
bnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9w
YXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFk
ZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjb3JlSWRlbnRpZmllcigp
IH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgY2FzZSBYRnJhbWVPcHRpb25zRGlzcG9zaXRpb246OkludmFsaWQ6IHsKICAgICAgICAg
U3RyaW5nIGVycm9yTWVzc2FnZSA9ICJJbnZhbGlkICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlciBl
bmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcgJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRv
TGVuZ3RoKCkgKyAiJzogJyIgKyB4RnJhbWVPcHRpb25zICsgIicgaXMgbm90IGEgcmVjb2duaXpl
ZCBkaXJlY3RpdmUuIFRoZSBoZWFkZXIgd2lsbCBiZSBpZ25vcmVkLiI7Ci0gICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNz
YWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIH0KQEAgLTU3OCw3ICs1ODgsNyBAQCBib29s
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5j
ZXN0b3JzT3JYRnJhbWVPcHRpbwogICAgICAgICBTdHJpbmcgeEZyYW1lT3B0aW9ucyA9IG1fcmVz
cG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpYRnJhbWVPcHRpb25zKTsKICAg
ICAgICAgaWYgKCF4RnJhbWVPcHRpb25zLmlzTnVsbCgpICYmIHNob3VsZEludGVycnVwdExvYWRG
b3JYRnJhbWVPcHRpb25zKHhGcmFtZU9wdGlvbnMsIHJlc3BvbnNlLnVybCgpKSkgewogICAgICAg
ICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gZGlzcGxh
eSAnIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIn
IGluIGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8gJyIsIHhGcmFt
ZU9wdGlvbnMsICInLiIpOwotICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRk
Q29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIo
KSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBN
ZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdl
LCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC01OTUsNyArNjA1LDcgQEAgYm9v
bCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdE5hdmlnYXRpb25Gb3JDcm9z
c09yaWdpbkVtYmVkZGVyUG9saWMKICAgICAgICAgYXV0byByZXNwb25zZUNPRVAgPSBXZWJDb3Jl
OjpvYnRhaW5Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KHJlc3BvbnNlLCBtX3BhcmFtZXRlcnMu
c291cmNlT3JpZ2luLT5pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoKSA/IElzU2VjdXJlQ29udGV4
dDo6WWVzIDogSXNTZWN1cmVDb250ZXh0OjpObyk7CiAgICAgICAgIGlmIChyZXNwb25zZUNPRVAu
dmFsdWUgIT0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeVZhbHVlOjpSZXF1aXJl
Q09SUCkgewogICAgICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlJl
ZnVzZWQgdG8gZGlzcGxheSAnIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCksICInIGluIGEgZnJhbWUgYmVjYXVzZSBvZiBDcm9zcy1PcmlnaW4tRW1iZWRk
ZXItUG9saWN5LiIpOwotICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29u
c29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNl
Y3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNz
YWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBj
b3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC02MTEsNyArNjIxLDcgQEAgYm9vbCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdFdvcmtlckxvYWRGb3JDcm9zc09y
aWdpbkVtYmVkZGVyUG9saWMKICAgICAgICAgYXV0byByZXNwb25zZUNPRVAgPSBXZWJDb3JlOjpv
YnRhaW5Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KHJlc3BvbnNlLCBtX3BhcmFtZXRlcnMuc291
cmNlT3JpZ2luLT5pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoKSA/IElzU2VjdXJlQ29udGV4dDo6
WWVzIDogSXNTZWN1cmVDb250ZXh0OjpObyk7CiAgICAgICAgIGlmIChyZXNwb25zZUNPRVAudmFs
dWUgIT0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeVZhbHVlOjpSZXF1aXJlQ09S
UCkgewogICAgICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlJlZnVz
ZWQgdG8gbG9hZCAnIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVu
Z3RoKCksICInIHdvcmtlciBiZWNhdXNlIG9mIENyb3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3ku
Iik7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2Fn
ZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQpOworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRk
Q29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNvcmVJZGVudGlm
aWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTYzMCw3ICs2NDAsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZl
ZFJlc3BvbgogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSAm
JiBtX25ldHdvcmtMb2FkQ2hlY2tlcikgewogICAgICAgICBhdXRvIGluZm9ybWF0aW9uID0gbV9u
ZXR3b3JrTG9hZENoZWNrZXItPnRha2VOZXR3b3JrTG9hZEluZm9ybWF0aW9uKCk7CiAgICAgICAg
IGluZm9ybWF0aW9uLnJlc3BvbnNlID0gbV9yZXNwb25zZTsKLSAgICAgICAgbV9jb25uZWN0aW9u
LT5hZGROZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50aWZpZXIoKSwgV1RGTW92ZShpbmZvcm1h
dGlvbikpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb24o
Y29yZUlkZW50aWZpZXIoKSwgV1RGTW92ZShpbmZvcm1hdGlvbikpOwogICAgIH0KIAogICAgIC8v
IEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdl
dHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWlyZSBzcGVj
aWFsIGhhbmRsaW5nLgpAQCAtNzU4LDcgKzc2OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hMb2FkaW5nOiAobnVtQnl0ZXNSZWNl
aXZlZD0lemQsIGhhc0NhY2hlRW50cnlGb3JWYWxpZGF0aW9uPSVkKSIsIG1fbnVtQnl0ZXNSZWNl
aXZlZCwgISFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAogICAgIGlmIChzaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5hZGRO
ZXR3b3JrTG9hZEluZm9ybWF0aW9uTWV0cmljcyhpZGVudGlmaWVyKCksIG5ldHdvcmtMb2FkTWV0
cmljcyk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1l
dHJpY3MoY29yZUlkZW50aWZpZXIoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKIAogICAgIGlmICht
X2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIC8vIDMwNCBOb3QgTW9kaWZpZWQK
QEAgLTgwMSw3ICs4MTEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExv
YWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgVU5VU0VEX1ZBUklBQkxFKHdh
c1NlcnZpY2VXb3JrZXJMb2FkKTsKIAogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MoKSkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVOZXR3b3JrTG9hZElu
Zm9ybWF0aW9uKGlkZW50aWZpZXIoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTmV0
d29ya0xvYWRJbmZvcm1hdGlvbihjb3JlSWRlbnRpZmllcigpKTsKIAogICAgIEFTU0VSVCghZXJy
b3IuaXNOdWxsKCkpOwogCkBAIC0xMjAyLDkgKzEyMTIsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0Nh
Y2hlOjoKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJldHJpZXZlQ2FjaGVFbnRyeTogU2Vu
ZGluZyBXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIElQQyAobmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2U9JWQpIiwgbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UgfSk7CiAKLSAgICBpZiAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UpCisgICAgaWYgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlKSB7CisgICAgICAgIG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKICAgICAgICAg
bV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlID0gV1RGTW92
ZShlbnRyeSk7Ci0gICAgZWxzZSB7CisgICAgfSBlbHNlIHsKICAgICAgICAgc2VuZFJlc3VsdEZv
ckNhY2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6
OlN1Y2Nlc3MpOwogICAgIH0KQEAgLTEzNTksNyArMTM3MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0CiAgICAgYXV0byogbmV0d29y
a1N0b3JhZ2VTZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCgpKTsKICAgICBBU1NFUlQobmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsK
IAotICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBT
YW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgp
LnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdl
SUQoKSwgaWRlbnRpZmllcigpKTsKKyAgICBsb2dDb29raWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rp
b24sICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQq
Pih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkp
LCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVy
KCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGNvcmVJZGVudGlmaWVyKCkpOwogfQogCiBzdGF0aWMg
dm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dl
ZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6
Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQpAQCAt
MTQ2Myw3ICsxNDc0LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJgogCiB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291
cmNlLCBNZXNzYWdlTGV2ZWwgbWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVu
c2lnbmVkIGxvbmcpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1l
c3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIG1lc3NhZ2VTb3VyY2UsIG1lc3NhZ2VM
ZXZlbCwgbWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsICBtZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGNv
cmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KFVSTCYmIHJlcG9ydFVS
TCwgUmVmPEZvcm1EYXRhPiYmIHJlcG9ydCkKQEAgLTE1MzQsNyArMTU0NSw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2sqIGZlCiAgICAgUkVMRUFTRV9BU1NFUlQobV9zZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmdldCgpID09IGZldGNoVGFzayk7CiAgICAgaWYgKG1fcGFyYW1ldGVycy5zZXJ2aWNlV29y
a2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpPbmx5KSB7CiAgICAgICAgIExPQURFUl9S
RUxFQVNFX0xPR19FUlJPUigic2VydmljZVdvcmtlckRpZE5vdEhhbmRsZTogQWJvcnRpbmcgbG9h
ZCBiZWNhdXNlIHRoZSBzZXJ2aWNlIHdvcmtlciBkaWQgbm90IGhhbmRsZSB0aGUgbG9hZCBhbmQg
c2VydmljZVdvcmtlck1vZGUgb25seSBhbGxvd3Mgc2VydmljZSB3b3JrZXJzIik7Ci0gICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2aWNlV29ya2VyRGlkTm90SGFu
ZGxlIHsgfSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OlNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUgeyB9LCBjb3JlSWRlbnRpZmllcigp
KTsKICAgICAgICAgYWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4
IGNlZjY1NDc5YjdlNmJjZmYyNWNmZjAxODI1YzJiZDNhMGM3Njg3ZWYuLjdmZjYxZWIxYmU4MjY3
MzUyODFjZDNiYzgxYjA1OGMwZTA2YjE2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtODUsMTkgKzg1LDIzIEBA
IHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBhYm9ydCgpOwogCisgICAgdm9p
ZCB0cmFuc2ZlclRvTmV3V2ViUHJvY2VzcyhOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IFJlc291cmNlTG9hZElkZW50aWZpZXIpOworCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAg
ICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBib29sIGlzQWxsb3dlZFRv
QXNrVXNlckZvckNyZWRlbnRpYWxzKTsKIAorICAgIHZvaWQgc2V0UmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKSB7IG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3Bv
bnNlKTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5l
Y3Rpb247IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBt
X2Nvbm5lY3Rpb24tPnNlc3Npb25JRCgpOyB9Ci0gICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXI7IH0KKyAg
ICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGNvcmVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXI7IH0KICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEOyB9CiAgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRDsgfQogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CisgICAgTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b3VyY2VMb2FkSUQ7IH0KIAogICAgIE5ldHdvcmtDYWNoZTo6R2xvYmFsRnJhbWVJRCBnbG9iYWxG
cmFtZUlEKCkgeyByZXR1cm4geyBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHBhZ2VJRCgp
LCBmcmFtZUlEKCkgfTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwCmluZGV4IDMzNDg4ZTY5ZWZlYmQ3MWI2ZDMwYmQyYmM3YzhmYzUyYTcy
ODMyN2QuLmJkYWNlZTEzMmY5MGVjMmRlOTM3YTA5MmQ3MjZlNWZhYTA0ODg2YzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC01Niw2
ICs1Niw4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Citjb25zdGV4cHIgU2Vjb25kcyBjYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXJMaWZldGltZSB7
IDMwX3MgfTsKKwogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lv
bjo6Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQpA
QCAtMzkxLDYgKzM5Myw0MyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpyZW1vdmVLZXB0QWxpdmVM
b2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAgIG1fa2VwdEFsaXZlTG9hZHMu
cmVtb3ZlKGxvYWRlcik7CiB9CiAKK05ldHdvcmtTZXNzaW9uOjpDYWNoZWROZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OkNhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcihSZWY8TmV0d29ya1Jlc291cmNl
TG9hZGVyPiYmIGxvYWRlcikKKyAgICA6IG1fZXhwaXJhdGlvblRpbWVyKCp0aGlzLCAmQ2FjaGVk
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpleHBpcmF0aW9uVGltZXJGaXJlZCkKKyAgICAsIG1fbG9h
ZGVyKFdURk1vdmUobG9hZGVyKSkKK3sKKyAgICBtX2V4cGlyYXRpb25UaW1lci5zdGFydE9uZVNo
b3QoY2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyTGlmZXRpbWUpOworfQorCitSZWZQdHI8TmV0
d29ya1Jlc291cmNlTG9hZGVyPiBOZXR3b3JrU2Vzc2lvbjo6Q2FjaGVkTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp0YWtlTG9hZGVyKCkKK3sKKyAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2xvYWRl
ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OkNhY2hlZE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZXhwaXJhdGlvblRpbWVyRmlyZWQoKQoreworICAgIGF1dG8gc2Vzc2lvbiA9
IG1fbG9hZGVyLT5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oKTsKKyAg
ICBBU1NFUlQoc2Vzc2lvbik7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIGxvYWRlciA9IHNlc3Npb24tPnRha2VMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NU
cmFuc2ZlcihtX2xvYWRlci0+aWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGxvYWRl
ciwgbG9hZGVyKTsKK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkTG9hZGVyQXdhaXRpbmdX
ZWJQcm9jZXNzVHJhbnNmZXIoUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIpCit7
CisgICAgQVNTRVJUKG1fc2Vzc2lvbklEID09IGxvYWRlci0+c2Vzc2lvbklEKCkpOworICAgIGF1
dG8gaWRlbnRpZmllciA9IGxvYWRlci0+aWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV9sb2Fk
ZXJzQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIuY29udGFpbnMoaWRlbnRpZmllcikpOworICAg
IG1fbG9hZGVyc0F3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyLmFkZChpZGVudGlmaWVyLCBtYWtl
VW5pcXVlPENhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4oV1RGTW92ZShsb2FkZXIpKSk7Cit9
CisKK1JlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IE5ldHdvcmtTZXNzaW9uOjp0YWtlTG9h
ZGVyQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGNhY2hlZFJlc291cmNlTG9hZGVyID0gbV9sb2Fk
ZXJzQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIudGFrZShpZGVudGlmaWVyKTsKKyAgICByZXR1
cm4gY2FjaGVkUmVzb3VyY2VMb2FkZXIgPyBjYWNoZWRSZXNvdXJjZUxvYWRlci0+dGFrZUxvYWRl
cigpIDogbnVsbHB0cjsKK30KKwogc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdv
cmtTZXNzaW9uOjpjcmVhdGVXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIE5l
dHdvcmtTb2NrZXRDaGFubmVsJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCBhNDk3MThkZWZkYTIz
OTQ4NDZhZTg1YzRjNzg1MmFkYTE1NjQxMzQ5Li4zZDU4ODc3MjlkZTEzNDM3MGUxOWJhODRjOWQz
NDc1NGEwZTI5YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcHBQcml2YWN5UmVwb3J0
LmgiCiAjaW5jbHVkZSAiTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCIKKyNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByZWZldGNoQ2FjaGUu
aCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaCIKICNp
bmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBAIC0xNDAsNiArMTQxLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkS2VwdEFsaXZlTG9hZChSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiYmKTsK
ICAgICB2b2lkIHJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJik7CiAK
KyAgICB2b2lkIGFkZExvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKFJlZjxOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI+JiYpOworICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRh
a2VMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NUcmFuc2ZlcihOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllcik7CisKICAgICBOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSgpIHsgcmV0dXJuIG1f
Y2FjaGUuZ2V0KCk7IH0KIAogICAgIFByZWZldGNoQ2FjaGUmIHByZWZldGNoQ2FjaGUoKSB7IHJl
dHVybiBtX3ByZWZldGNoQ2FjaGU7IH0KQEAgLTIxMCw2ICsyMTQsMTggQEAgcHJvdGVjdGVkOgog
CiAgICAgSGFzaFNldDxSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPj4gbV9rZXB0QWxpdmVMb2Fk
czsKIAorICAgIGNsYXNzIENhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlciB7CisgICAgICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQ2Fj
aGVkTmV0d29ya1Jlc291cmNlTG9hZGVyKFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+JiYpOwor
ICAgICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTG9hZGVyKCk7CisgICAg
cHJpdmF0ZToKKyAgICAgICAgdm9pZCBleHBpcmF0aW9uVGltZXJGaXJlZCgpOworICAgICAgICBX
ZWJDb3JlOjpUaW1lciBtX2V4cGlyYXRpb25UaW1lcjsKKyAgICAgICAgUmVmUHRyPE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CisgICAgfTsKKyAgICBIYXNoTWFwPE5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkTmV0d29ya1Jlc291cmNl
TG9hZGVyPj4gbV9sb2FkZXJzQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXI7CisKICAgICBQcmVm
ZXRjaENhY2hlIG1fcHJlZmV0Y2hDYWNoZTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggYWY5NTFkNWEwYjU5ZjY5MTY3
YjcwNGZiNDJiMzBmMWI4MDAxZTI4Ny4uZDQ1NTkzNTI1M2Y3OWY1YzA0MzFkYmFlZWY5MjkzMzYw
NzA0ZWEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApAQCAt
NzgsNyArNzgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OnNlbmRUb1NlcnZpY2VXb3JrZXIoTWVzcwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBNZXNzYWdlPiBib29sIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVudChNZXNz
YWdlJiYgbWVzc2FnZSkKIHsKLSAgICByZXR1cm4gbV9sb2FkZXIuY29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKHN0ZDo6Zm9yd2FyZDxNZXNzYWdlPihtZXNzYWdlKSwg
bV9sb2FkZXIuaWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gbV9sb2FkZXIuY29ubmVjdGlvblRv
V2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKHN0ZDo6Zm9yd2FyZDxNZXNzYWdlPihtZXNz
YWdlKSwgbV9sb2FkZXIuY29yZUlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6c3RhcnQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBzZXJ2aWNl
V29ya2VyQ29ubmVjdGlvbikKQEAgLTE2Miw2ICsxNjIsOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IGJvbwogCiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6
U2VydmljZVdvcmtlcik7CiAgICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlIH0pOworICAgIGlmIChuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSkKKyAgICAgICAgbV9sb2FkZXIuc2V0UmVzcG9uc2UoV1RGTW92ZShyZXNw
b25zZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBlY2ExMWEzYTAw
YzIzNDM3NTA3ZTAxZDk2Y2IwZTQ5ODEwMTg2NGM0Li4zNDZmN2Q4ZDg0NTBiNmZiZDBlODA2NjFm
MTBkY2JlNTk1OTg1MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3Bw
CkBAIC01Nyw2ICs1Nyw3IEBAIHZvaWQgTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBsb2NrQmFja0ZvcndhcmRMaXN0Owog
ICAgIGVuY29kZXIgPDwgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAgIGVuY29k
ZXIgPDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBlbmNvZGVyIDw8IGV4aXN0
aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKICAgICBlbmNvZGVyIDw8
IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTsKIAogICAgIHBsYXRmb3JtRW5jb2RlKGVuY29kZXIp
OwpAQCAtMTM3LDYgKzEzOCw5IEBAIGJvb2wgTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIExvYWRQYXJhbWV0ZXJzJiBkYXRhKQogICAgIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YS5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmV4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJh
bWV0ZXJzLmgKaW5kZXggZTVjNTdiMDQwNDljOGIyMGI2YmQ2MTFjZmM4ZjZiMDFmNzhjMDdmYy4u
MGMwNTQwYjA0NmU0YTFjYzRiMTkxNWRlYTEzNDBmOWRhMDY2Y2IxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Mb2FkUGFyYW1ldGVycy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCkBAIC03NCw2ICs3NSw3IEBA
IHN0cnVjdCBMb2FkUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNl
c3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgeyBXZWJDb3Jl
OjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpWaXNpYmxlIH07CiAg
ICAgU3RyaW5nIGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKICAgICBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluOworICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4
aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGRhdGFEZXRlY3Rpb25Db250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNjcxYWRkNGFhMjdjZDE3ZWJiNjc5MGVmZTE2YTU1YTFj
MTQzNjZlYi4uYjFhYzNkNDM4YTJlYTA0NDBjZjIzY2FhNDc1ZDQ3OWY2OTlmN2I5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCkBAIC00NzUsNiArNDc1LDE3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
dGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJDb3JlOjpQCiAg
ICAgfQogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByZXBhcmVMb2FkRm9yV2ViUHJv
Y2Vzc1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNvdXJjZVByb2Nlc3NJZGVu
dGlmaWVyLCB1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIl
cCAtIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVy
OiBzb3VyY2VQcm9jZXNzSWRlbnRpZmllcjogJSIgUFJJdTY0ICIsIHJlc291cmNlTG9hZElkZW50
aWZpZXI6ICUiIFBSSXU2NCwgdGhpcywgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQo
KSwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRJZGVudGlm
aWVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpQcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2Zlcihzb3VyY2VQcm9jZXNzSWRlbnRpZmll
ciwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
K30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhS
ZXN1bHQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpT
aG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdl
YlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA1OGE4YThlOTRi
ZjNjZmU3YmY4Yzc3OTc5ODVjYzEyYmQzYWI2OGJlLi40ZTViYjQ1OWEzZDcyZTNkMWRkNzBiMmU1
ZWYyMmJmNDQwODE3MjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IkF1eGlsaWFyeVByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSAiTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIu
aCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90
dGxlckNsaWVudC5oIgpAQCAtMjE0LDYgKzIxNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlc3RQ
cm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVzdFByb2Nl
c3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVsYXllZFJlcGx5
JiYpOwogICAgIHZvaWQgdGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3Nl
cyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHByZXBhcmVMb2FkRm9y
V2ViUHJvY2Vzc1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNvdXJjZVByb2Nl
c3NJZGVudGlmaWVyLCB1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+
KT4mJik7CisKICAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSBmaW5hbCB7IHJldHVy
biBtX3Rocm90dGxlcjsgfQogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5k
ZXggNDFjZDM1ZGJmYThkMGUzNGJkMWViNDlmNWQ1NzRmMmMzNzAwYmQ1OC4uNzVhNjVjNDMzNzA2
NTQ3ODAwZTYyMGFkMDVmNDU2YzM2MDQxZWZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMTcxLDkgKzE3MSw5IEBAIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgY29uc3QgSVBDOjpEYXRhCiAgICAgbV9wYWdlLmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFy
ZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIGRhdGEsIG1p
bWVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIHNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9s
aWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSwgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5KTsKIH0KIAotdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRh
dGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2Fk
UmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2ll
cywgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKQogewotICAgIFBST1ZJU0lPTkFM
UEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiIpOwor
ICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImxv
YWRSZXF1ZXN0OiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9
JSIgUFJJdTY0LCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUu
dmFsdWVfb3IoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsK
ICAgICBBU1NFUlQoc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkICE9IFdlYkNvcmU6OlNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8pOwogCiAgICAgLy8gSWYgdGhpcyBpcyBhIGNsaWVu
dC1zaWRlIHJlZGlyZWN0IGNvbnRpbnVpbmcgaW4gYSBuZXcgcHJvY2VzcywgdGhlbiB0aGUgbmV3
IHByb2Nlc3Mgd2lsbCBvdmVyd3JpdGUgdGhlIGZyb21JdGVtJ3MgVVJMLiBJbiB0aGlzIGNhc2Us
CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVl
c3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKICAgICBpZiAobmF2
aWdhdGlvbi5mcm9tSXRlbSgpICYmIG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpID09
IFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6OlllcykKICAgICAgICAgbmF2aWdhdGlvbi5m
cm9tSXRlbSgpLT5zZXRMYXN0UHJvY2Vzc0lkZW50aWZpZXIobV9wcm9jZXNzLT5jb3JlUHJvY2Vz
c0lkZW50aWZpZXIoKSk7CiAKLSAgICBtX3BhZ2UubG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNo
YXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgV1RGTW92
ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQs
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7
CisgICAgbV9wYWdlLmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNv
cHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIFdURk1vdmUocmVxdWVzdCksIG5hdmln
YXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
LCB1c2VyRGF0YSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+
JiYgd2Vic2l0ZVBvbGljaWVzKQpAQCAtMzMwLDEyICszMzAsMTIgQEAgdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKEZyYW1lSWRl
bnRpZmllcgogICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNT
aGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUo
ZnJhbWVJbmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25B
Y3Rpb25EYXRhKSwgV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mbyksIG9yaWdpbmF0aW5nUGFn
ZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJv
ZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7CiB9
CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRs
ZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Ym9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJv
b2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIXZhbGlk
YXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wYWdlLmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCks
IG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5h
dmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRB
dHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4
dEdyb3VwU3dpdGNoLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CisgICAgbV9wYWdlLmRlY2lkZVBv
bGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBm
cmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVz
cG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0Fs
bG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwogfQogCiB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJp
bmcsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggMjcxNGIyYTViNTQ3ZjI2NjdmY2I0NmZjZWYx
YjU3ODRmYmNmNTgxMC4uMGFiZWE5ZGE2YmJkMjAxMTRmZjU0YzFiOGQ3MWNhZmRiZjcyMzc2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBvbGljeURlY2lzaW9u
LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKQEAgLTEwNSw3ICsxMDYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQg
bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4s
IHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdChB
UEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJ
OjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0LCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9S
ZXN1bWUgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6
Ok5hdmlnYXRpb24mLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgUmVmUHRyPEFQSTo6V2Vic2l0
ZVBvbGljaWVzPiYmKTsKICAgICB2b2lkIGNhbmNlbCgpOwogCkBAIC0xMjQsNyArMTI1LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYs
IE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsK
IAogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwg
RnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdlYlBh
Z2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlz
dGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmpl
Y3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUs
IGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDY0X3QgbWFpblJlc291cmNl
TG9hZElkZW50aWZpZXIsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92
aXNpb25hbFVSTEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxT
dHJpbmcsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFVzZXJEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCA3NThkMWIzOThlYzc4NTIzZTM0YWFmNGFlNjQ1MTk5ODUxZTAzZTA0Li42ODk5ZTI4
OTI3NzViODRhN2U1YzA3ZmY1OWQzMTFiN2RiZmU1MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEzODEsNyArMTM4MSw3IEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgU2hvCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
cHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRp
b24mIG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0
aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6
b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9s
aWNpZXMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0
aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkKIHsKICAgICBBU1NFUlQo
IW1faXNDbG9zZWQpOwogCkBAIC0xNDA0LDYgKzE0MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2NlcwogICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tCYWNrRm9yd2FyZExpc3QgPSBuYXZpZ2F0aW9u
LmxvY2tCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsb2FkUGFyYW1ldGVycy5jbGllbnRSZWRpcmVj
dFNvdXJjZUZvckhpc3RvcnkgPSBuYXZpZ2F0aW9uLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlz
dG9yeSgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4g
PSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGxvYWRQYXJhbWV0ZXJzLmV4aXN0
aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IGV4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKICAgICBtYXliZUluaXRpYWxpemVTYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKHByb2Nlc3MsIHVybCwgbV9wYWdlTG9hZFN0YXRlLnJlc291cmNl
RGlyZWN0b3J5VVJMKCksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwog
CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhwcm9jZXNzLCBsb2FkUGFyYW1ldGVycyk7
CkBAIC0zNjIwLDcgKzM2MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9u
YWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogICAgIG1faW5z
cGVjdG9yQ29udHJvbGxlci0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxQYWdlKG9sZFdlYlBhZ2VJRCwg
bV93ZWJQYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9u
SW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlxdWVfcHRy
PFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlLCBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIG5ld1Byb2Nlc3MsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQ
b2xpY2llcykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nl
c3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVk
UGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgbmV3UHJv
Y2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzLCBz
dGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpCiB7CiAgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IG5ld1By
b2Nlc3NQSUQ9JWksIGhhc1N1c3BlbmRlZFBhZ2U9JWkiLCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2UpOwogICAgIExPRyhMb2FkaW5nLCAiQ29udGludWlu
ZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcycgaW4gYSBuZXcgd2ViIHByb2Nlc3MiLCBuYXZp
Z2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmxvZ2dpbmdTdHJpbmcoKSk7CkBAIC0z
NjM3LDcgKzM2MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgIGJvb2wgaXNTZXJ2
ZXJTaWRlUmVkaXJlY3QgPSBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlck5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiAmJiBu
YXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpOwogICAgIGJvb2wgc2hvdWxkQ2xv
c2VQcmV2aW91c1BhZ2VBZnRlckNvbW1pdCA9IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA9
PSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUmVzcG9uc2VQb2xpY3lEZWNp
c2lvbjsKICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG1ha2VVbmlxdWU8UHJvdmlzaW9uYWxQYWdl
UHJveHk+KCp0aGlzLCBXVEZNb3ZlKG5ld1Byb2Nlc3MpLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2Up
LCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpc1NlcnZlclNpZGVSZWRpcmVjdCwgbmF2aWdh
dGlvbi5jdXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBzaG91
bGRDbG9zZVByZXZpb3VzUGFnZUFmdGVyQ29tbWl0LCB3ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwot
ICAgIGF1dG8gY29udGludWF0aW9uID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYobmF2aWdhdGlvbiksIHNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgd2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpXSgp
IG11dGFibGUgeworICAgIGF1dG8gY29udGludWF0aW9uID0gW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYobmF2aWdhdGlvbiksIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgd2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRl
UG9saWNpZXMpLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWVd
KCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi0+dGFyZ2V0
SXRlbSgpKSB7CiAgICAgICAgICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250
aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0
ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC0zNjYwLDEwICszNjYxLDExIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0
aW9uJiBuYXZpZ2F0aW9uLCBzCiAKICAgICAgICAgLy8gRklYTUU6IFdvcmsgb3V0IHRpbWluZyBv
ZiByZXNwb25kaW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVnYXRlLCBldGMKICAgICAgICAg
QVNTRVJUKCFuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLmlzRW1wdHkoKSk7CisgICAgICAg
IEFTU0VSVCghZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lIHx8
ICFuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKTsKICAgICAgICAgaWYgKGF1dG8mIHN1YnN0
aXR1dGVEYXRhID0gbmF2aWdhdGlvbi0+c3Vic3RpdHV0ZURhdGEoKSkKICAgICAgICAgICAgIG1f
cHJvdmlzaW9uYWxQYWdlLT5sb2FkRGF0YShuYXZpZ2F0aW9uLCB7IHN1YnN0aXR1dGVEYXRhLT5j
b250ZW50LmRhdGEoKSwgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuc2l6ZSgpIH0sIHN1YnN0aXR1
dGVEYXRhLT5NSU1FVHlwZSwgc3Vic3RpdHV0ZURhdGEtPmVuY29kaW5nLCBzdWJzdGl0dXRlRGF0
YS0+YmFzZVVSTCwgc3Vic3RpdHV0ZURhdGEtPnVzZXJEYXRhLmdldCgpLCBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgV1RGTW92ZSh3
ZWJzaXRlUG9saWNpZXNEYXRhKSwgc3Vic3RpdHV0ZURhdGEtPnNlc3Npb25IaXN0b3J5VmlzaWJp
bGl0eSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2Fk
UmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLT5jdXJyZW50
UmVxdWVzdCgpIH0sIG51bGxwdHIsIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEpKTsK
KyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBS
ZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpIH0sIG51bGxwdHIs
IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEpLCBleGlzdGluZ05ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOwogICAgIH07CiAgICAgaWYgKG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+c2hvdWxkUGF1c2VMb2FkaW5nKCptX3Byb3Zpc2lvbmFsUGFnZSkpCiAgICAgICAg
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2V0Q29udGludWVMb2FkaW5nQ2FsbGJhY2soKm1fcHJv
dmlzaW9uYWxQYWdlLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwpAQCAtNTYxNywxMiArNTYxOSwx
MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsCi0gICAgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1
bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCisgICAgYm9vbCB3YXNBbGxvd2VkQnlJ
bmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50
NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hh
cmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZy
YW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNh
blNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVu
ZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBsaXN0ZW5lcklELCB1c2VyRGF0
YSk7CisgICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYo
KSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwg
bmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9h
ZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBsaXN0ZW5lcklELCB1
c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdl
YlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2Fk
QXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdl
YlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2Fk
QXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlm
aWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNTYz
NSwxMyArNTYzNywxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0
ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKICAgICBhdXRvIG5hdmlnYXRp
b25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUlu
Zm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNw
b25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7CiAKLSAgICBhdXRvIGxp
c3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdlYlBhZ2VJRCwgZnJhbWVJRCwgbmVlZHNC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdh
dGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksCisgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYo
ZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCB3ZWJQYWdlSUQsIGZyYW1lSUQsIG5lZWRzQnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBpZGVudGlmaWVyLCBsaXN0ZW5l
cklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwKICAgICAgICAgcHJvY2Vzcywg
bmF2aWdhdGlvblJlc3BvbnNlXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJz
aXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2lu
Z1dhcm5pbmcsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTogQXNz
ZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xpZW50
cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4KICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJy
b3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCi0gICAgICAgIGF1dG8gc2Vu
ZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbd2ViUGFnZUlE
LCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKV0gKGNvbnN0
IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7CisgICAgICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVj
aXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbd2ViUGFnZUlELCBmcmFtZUlELCBsaXN0
ZW5lcklELCBwcm9jZXNzXSAoY29uc3QgYXV0byYgcG9saWN5RGVjaXNpb24pIHsKICAgICAgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbiwgY3JlYXRlTmV0d29ya0V4
dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhwcm9jZXNzKSksIHdlYlBhZ2VJRCk7CiAgICAgICAg
IH0pOwogCkBAIC01NjQ5LDEyICs1NjUxLDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAg
ICAgICAgIGlmIChwb2xpY3lBY3Rpb24gPT0gUG9saWN5QWN0aW9uOjpVc2UgJiYgbmVlZHNCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaCAmJiBuYXZpZ2F0aW9uKSB7CiAgICAgICAgICAgICBSZWdp
c3RyYWJsZURvbWFpbiByZXNwb25zZURvbWFpbiB7IG5hdmlnYXRpb25SZXNwb25zZS0+cmVzcG9u
c2UoKS51cmwoKSB9OwogICAgICAgICAgICAgLy8gQXZvaWQgcHJvY2Vzcy1zd2FwcGluZyBpbiBj
YXNlcyB3aGVyZSB0aGUgcHJvY2VzcyBvbmx5IGNvbnRhaW5zIGEgc2luZ2xlIHBhZ2UgYW5kIGlz
IG9yaWdpbi1jbGVhbi4KLSAgICAgICAgICAgIGlmICh0aGlzLT5wcm9jZXNzKCkucGFnZUNvdW50
KCkgPiAxIHx8ICh0aGlzLT5wcm9jZXNzKCkub3B0aW9uYWxSZWdpc3RyYWJsZURvbWFpbigpICYm
ICp0aGlzLT5wcm9jZXNzKCkub3B0aW9uYWxSZWdpc3RyYWJsZURvbWFpbigpICE9IHJlc3BvbnNl
RG9tYWluKSkgeworICAgICAgICAgICAgaWYgKHByb2Nlc3MtPnBhZ2VDb3VudCgpID4gMSB8fCAo
cHJvY2Vzcy0+b3B0aW9uYWxSZWdpc3RyYWJsZURvbWFpbigpICYmICpwcm9jZXNzLT5vcHRpb25h
bFJlZ2lzdHJhYmxlRG9tYWluKCkgIT0gcmVzcG9uc2VEb21haW4pKSB7CiAgICAgICAgICAgICAg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlU2hhcmVkOiBQcm9jZXNzLXN3YXBwaW5nIGR1ZSB0byBDcm9zcy1PcmlnaW4t
T3BlbmVyLVBvbGljeSIpOwotICAgICAgICAgICAgICAgIHBvbGljeUFjdGlvbiA9IFBvbGljeUFj
dGlvbjo6SWdub3JlOwotICAgICAgICAgICAgICAgIGF1dG8gcHJvY2Vzc0Zvck5hdmlnYXRpb24g
PSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHdl
YnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVzcG9uc2VEb21haW4pOwotICAgICAgICAgICAgICAg
IGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcygqbmF2aWdhdGlvbiwgbnVsbHB0ciwgV1RG
TW92ZShwcm9jZXNzRm9yTmF2aWdhdGlvbiksIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6
Ok5vLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUmVzcG9uc2VQb2xpY3lE
ZWNpc2lvbiwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgd2lsbENvbnRpbnVlTG9hZEluTmV3
UHJvY2VzcyA9IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllczsKKyAgICAgICAgICAg
ICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5wcmVwYXJlTG9hZEZvcldl
YlByb2Nlc3NUcmFuc2Zlcihwcm9jZXNzLT5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgcmVzcG9uc2VEb21haW4gPSBXVEZNb3ZlKHJlc3BvbnNlRG9tYWluKSwgbmF2
aWdhdGlvbiwgbmF2aWdhdGlvblJlc3BvbnNlID0gV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2Up
LCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlcildKGF1dG8gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllclRvUmVzdW1lKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNz
Rm9yUmVnaXN0cmFibGVEb21haW4od2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXNwb25zZURv
bWFpbik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vz
cygqbmF2aWdhdGlvbiwgbnVsbHB0ciwgV1RGTW92ZShwcm9jZXNzRm9yTmF2aWdhdGlvbiksIFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQ6Olllc0FmdGVyUmVzcG9uc2VQb2xpY3lEZWNpc2lvbiwgbnVsbHB0ciwgZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKTsKKworICAgICAgICAgICAgICAgICAg
ICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9u
LmdldCgpLCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUoc2Vu
ZGVyKSwgeyB9LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpZZXMpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
ZWExYzIyZmI2YjExYmU5Njg5OTI4MjY0ZDNiZjNmYzg0NzEwOWI4ZC4uZmZmODViNTUxYWYwMzY5
MTBlNDEyZWFkNzEyYmVjYzEzYzkxYmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJNZWRpYUtleVN5c3RlbVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1N0YXRl
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUERGUGx1Z2luSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlBhZ2VMb2FkU3RhdGUuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkQWNjZXNzSW50ZW50
LmgiCkBAIC0xNzQxLDEwICsxNzQyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5hdmlnYXRl
V2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdl
Yk5hdmlnYXRpb25EYXRhU3RvcmUmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
VVJMJiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxX
ZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90
IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUlu
amVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUs
IGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVt
ZVRhc2tTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgbG9hZERhdGFXaXRoTmF2
aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBi
YXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0
ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5
VmlzaWJpbGl0eSk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmln
YXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxv
cHQpOworICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwg
c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0LCBzdGQ6
Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQg
YmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBX
ZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUsIEZyYW1lSW5mb0Rh
dGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0Zy
YW1lSW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBj
b25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jRGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQpA
QCAtMjA2MCw3ICsyMDYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAog
ICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0Rh
dGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsCi0gICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9v
bCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCBj
b25zdCBVc2VyRGF0YSYpOworICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0
ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3Qg
bWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVz
ZXJEYXRhJik7CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0
YSYpOwogICAgIHZvaWQgYmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBib29sLCBX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmKTsKIApAQCAtMjQ2Miw3ICsyNDYzLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgcmVwb3J0UGFnZUxvYWRSZXN1bHQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYgPSB7IH0pOwogCi0gICAgdm9pZCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1By
b2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94
eT4mJiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBSZWZQdHI8QVBJOjpXZWJz
aXRlUG9saWNpZXM+JiYpOworICAgIHZvaWQgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
KEFQSTo6TmF2aWdhdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYs
IFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBv
bGljaWVzPiYmLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBl
eGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgPSBzdGQ6Om51bGxv
cHQpOwogCiAgICAgdm9pZCBzZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKGJvb2wpOwogICAgIHZvaWQg
dXBkYXRlRm9udEF0dHJpYnV0ZXNBZnRlckVkaXRvclN0YXRlQ2hhbmdlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmMzN2I4
ZmM2YWRmM2VhZDE4NzJkMTE1NWZmMGNiZDAwOWRjMGFmOS4uODE5NmIxMTlhOGYwMmU3YTAwNjA0
MDg1MDI4ZTkxYWUyMzE4NjUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTA3LDcgKzEwNyw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCi0gICAgRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVj
dCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgU3RyaW5nIGRvd25sb2FkQXR0cmlidXRl
LCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpCisgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgU3RyaW5n
IGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29s
IG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxv
YWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQogICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFt
ZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEg
b3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVBy
b3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxp
c3RlbmVySUQpCiAgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3Qg
V2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgc3RkOjpvcHRp
b25hbDxXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKSAtPiAoc3RydWN0IFdlYktpdDo6UG9saWN5RGVjaXNpb24gUG9saWN5RGVjaXNp
b24pIFN5bmNocm9ub3VzCiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRh
IGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRl
bnRpZmllciwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVO
YW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCmluZGV4IDZlOTY5MDcyNTRhNGJkMTU1ZjU4ZGYxMzc4NDhiNjA1MzE5ZjUxNTUuLjM0
OWVhMmM2MzY5MmFiODA4ZmM3M2Y1ZDg4NmEyYWE5ZTVjY2YyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAg
LTQxMiw4ICs0MTIsMTEgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJv
bU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKIAogICAgIEFTU0VSVCgo
bG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQpIHx8
IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlh
bFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMpOwogCi0gICAgV0VCTE9BREVS
U1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2No
ZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNfY2Fz
dDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7Ci0gICAgaWYgKCFX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgMCkpIHsKKyAgICBzdGQ6Om9w
dGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CisgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLmlzTWFp
bkZyYW1lTmF2aWdhdGlvbikKKyAgICAgICAgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lID0gc3RkOjpleGNoYW5nZShtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgc3RkOjpudWxsb3B0KTsKKyAgICBXRUJMT0FERVJTVFJB
VEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVs
ZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkLCBleGlzdGluZ05ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0ICIpIiwgc3RhdGljX2Nhc3Q8
aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGV4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZS52YWx1ZV9vcihOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCkpOworICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291
cmNlTG9hZChsb2FkUGFyYW1ldGVycywgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllclRvUmVzdW1lKSwgMCkpIHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9M
T0dfRVJST1IoInNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGgg
dGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5
IGZhaWxlZCB0byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVj
YXVzZSBpdCBoYWQgY3Jhc2hlZC4KICAgICAgICAgLy8gVGhpcyBsb2FkIHdpbGwgbmV2ZXIgc3Vj
Y2VlZCBzbyB3ZSB3aWxsIHNjaGVkdWxlIGl0IHRvIGZhaWwgYXN5bmNocm9ub3VzbHkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
aAppbmRleCBjYTIzNDk5NTg2NjZhODAxYjBlMGE2YmQ3NjdkYmJjY2NmYjcxNmFlLi4yNGI2OTM3
OTAxN2Q1NDM5YmJiMWUxYjNkMWE5NWM4Yjc5MjM2MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Mb2FkZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5o
PgpAQCAtOTEsNiArOTIsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJh
dGVMb2FkSWRlbnRpZmllcigpOwogCisgICAgdm9pZCBzZXRFeGlzdGluZ05ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1l
KSB7IG1fZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOyB9CisKIHByaXZhdGU6
CiAgICAgdm9pZCBzY2hlZHVsZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZSosIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCk7CiAgICAgdm9pZCBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRMb2FkKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyJik7CkBAIC0xMzMsNiArMTM2LDcgQEAgcHJpdmF0ZToKICAgICBIYXNo
TWFwPHVuc2lnbmVkIGxvbmcsIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXI+IG1fcGluZ0xvYWRD
b21wbGV0aW9uSGFuZGxlcnM7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBQcmVjb25uZWN0
Q29tcGxldGlvbkhhbmRsZXI+IG1fcHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyczsKICAgICBW
ZWN0b3I8RnVuY3Rpb248dm9pZChib29sKT4+IG1fb25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcnM7
CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gbV9leGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CiAgICAgYm9vbCBtX2lz
T25MaW5lIHsgdHJ1ZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5k
ZXggNzIzMTVhNTc1ODczNWVkNWVmMTk2NjYyOTFlNjEwZDM4Y2MwZTllMS4uZmM0MzhjMGUyMjhk
MGEwMTU0NzYyZDM0NjQ3NTY2NjcwMDM2ZjMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCkBAIC05MSw2ICs5MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9s
bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVUlFdmVudFdpdGhLZXlTdGF0ZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvV2lkZ2V0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgpA
QCAtODQ4LDExICs4NDksMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnMKICAgICBhdXRvKiBj
b3JlRnJhbWUgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKTsKICAgICBhdXRvKiBwb2xpY3lEb2N1bWVu
dExvYWRlciA9IGNvcmVGcmFtZSA/IGNvcmVGcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcigpIDogbnVsbHB0cjsKICAgICBhdXRvIG5hdmlnYXRpb25JRCA9IHBvbGljeURv
Y3VtZW50TG9hZGVyID8gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqcG9saWN5RG9j
dW1lbnRMb2FkZXIpLm5hdmlnYXRpb25JRCgpIDogMDsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGJlIHVzaW5nIGEgc3Ryb25nbHktdHlwZWQgaWRlbnRpZmllciBmb3IgbWFpblJlc291cmNlTG9h
ZElkZW50aWZpZXIuCisgICAgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgPSBw
b2xpY3lEb2N1bWVudExvYWRlciAmJiBwb2xpY3lEb2N1bWVudExvYWRlci0+bWFpblJlc291cmNl
TG9hZGVyKCkgPyBwb2xpY3lEb2N1bWVudExvYWRlci0+bWFpblJlc291cmNlTG9hZGVyKCktPmlk
ZW50aWZpZXIoKSA6IDA7CiAKICAgICBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlID0g
cG9saWN5ID09IFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvblVzZTsKICAgICBhdXRvIHByb3RlY3Rv
ciA9IG1fZnJhbWUuY29weVJlZigpOwogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1l
LT5zZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIsIFdURk1vdmUoZnVuY3Rpb24pLCBXZWJG
cmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOwotICAgIGlmICghd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShtX2ZyYW1lLT5m
cmFtZUlEKCksIG1fZnJhbWUtPmluZm8oKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNw
b25zZSwgcmVxdWVzdCwgY2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwgd2FzQWxs
b3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIGxp
c3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpKSB7CisgICAgaWYgKCF3ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgbV9mcmFtZS0+aW5mbygpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9u
SUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0cmlidXRl
LCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3
aXRjaCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEu
Z2V0KCkpLmdldCgpKSkpKSB7CiAgICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJRU5UX1JFTEVBU0Vf
TE9HKE5ldHdvcmssICJkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlOiBpZ25vcmluZyBi
ZWNhdXNlIFdlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgZmFpbGVkIik7CiAg
ICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xp
Y3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgUG9saWN5QWN0aW9uOjpJZ25v
cmUsIDAsIHsgfSwgeyB9IH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMjNlNjI0YjhlMDIwOTQ2MWE2NDllOWIzOTllMTRmYWFi
ODYxNjM4OC4uNzFjOWQ1MzFhYjFhYzlmNDUzNWM2YmIzNTllODYyZDcwZWJiOTAzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI2Miw2ICsy
NjIsNyBAQAogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vz
c0lELmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4K
ICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2lu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTE2ODksNiArMTY5MCwx
MSBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFt
ZXRlcnMpCiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihsb2FkUGFyYW1ldGVy
cy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUuZ2V0KCkpOwogI2Vu
ZGlmCiAKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnNl
dEV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZShsb2FkUGFyYW1l
dGVycy5leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOworICAg
IGF1dG8gcmVzdW1pbmdMb2FkU2NvcGUgPSBtYWtlU2NvcGVFeGl0KFtdIHsKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zZXRFeGlzdGluZ05ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUoc3RkOjpudWxsb3B0KTsKKyAgICB9KTsK
KwogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyOwogCiAgICAgbV9wZW5k
aW5nTmF2aWdhdGlvbklEID0gbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDE0M2ExODM4MmFhMDFlMzNk
MDM4MmQ1ZDc5MjI3NTdjYjFhZjdiNzcuLmZlNmVhYjFhZGJhNmM2YTlhYjEzMjJhOTZlY2YyNTU4
ZjEwM2UyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
QEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiT3B0aW9uYWxD
YWxsYmFja0lELmgiCiAjaW5jbHVkZSAiUERGUGx1Z2luSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlBsdWdpbi5oIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDI5MzQxYjMzNTY5ZGY3NDEwM2I5MGM2YTFlNTA2N2NiMzhhYTE3
ZGIuLjFiYThjOWQ5NWNlYjdlMTAyYWIwYjZlNjY1MDFkYjk3ZWFjMTUzZTYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0wOC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFtXSzJdIFJldXNlIHRoZSBzYW1lIG5ldHdvcmsgbG9hZCB3aGVuIHByb2Nlc3Mt
c3dhcHBpbmcgb24gcmVzb3VyY2UgcmVzcG9uc2UgZHVlIHRvIENPT1AKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTQ2NQorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vODIzMDc2MTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNl
bi4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBodHRw
L3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9yZXNvdXJjZXMvc2luZ2xlLXJlcXVlc3Qt
dG8tc2VydmVyLXBvcHVwLnB5OiBBZGRlZC4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGh0
dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZl
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2Nyb3NzLW9yaWdpbi1v
cGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci5odG1sOiBBZGRlZC4KKwogMjAy
MS0wOC0yNyAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFrZSBBWENvcmVPYmplY3Q6OnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2Ugd29y
ayBpbiBuYXRpdmUgdGV4dCBjb250cm9scyBvbiBNYWNPUy4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3Jlc291cmNlcy9zaW5nbGUt
cmVxdWVzdC10by1zZXJ2ZXItcG9wdXAucHkgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1v
cmlnaW4tb3BlbmVyLXBvbGljeS9yZXNvdXJjZXMvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLXBv
cHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ0MmIzYmRjYjI5Zjc4YTE2ZDA0NWNmMzA5MjQ4NjJlMjg2ZThh
MzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4t
b3BlbmVyLXBvbGljeS9yZXNvdXJjZXMvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLXBvcHVwLnB5
CkBAIC0wLDAgKzEsMTMgQEAKK2RlZiBtYWluKHJlcXVlc3QsIHJlc3BvbnNlKToKKyAgICB0b2tl
biA9IHJlcXVlc3QuR0VUW2IndG9rZW4nXQorICAgIHZhbHVlID0gcmVxdWVzdC5zZXJ2ZXIuc3Rh
c2gudGFrZSh0b2tlbikKKyAgICBhbHJlYWR5X2xvYWRlZF9zdHJpbmcgPSAibm90X2FscmVhZHlf
bG9hZGVkIgorICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgICAgICBhbHJlYWR5X2xvYWRl
ZF9zdHJpbmcgPSAiYWxyZWFkeV9sb2FkZWQiCisgICAgZWxzZToKKyAgICAgICAgcmVxdWVzdC5z
ZXJ2ZXIuc3Rhc2gucHV0KHRva2VuLCBUcnVlKQorICAgIHJldHVybiAoWworICAgICAgICAoYidD
YWNoZS1Db250cm9sJywgYiduby1zdG9yZScpLAorICAgICAgICAoYidDcm9zcy1PcmlnaW4tT3Bl
bmVyLVBvbGljeScsIGInc2FtZS1vcmlnaW4nKSwKKyAgICAgICAgKGInQ29udGVudC1UeXBlJywg
Yid0ZXh0L2h0bWwnKV0sCisgICAgICAgIHUnPHNjcmlwdD52YXIgYmMgPSBuZXcgQnJvYWRjYXN0
Q2hhbm5lbCgic2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyIik7IGJjLnBvc3RNZXNzYWdlKCIlcyIp
Ozwvc2NyaXB0PlxuJyAlIGFscmVhZHlfbG9hZGVkX3N0cmluZykKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0
LXRvLXNlcnZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmln
aW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmY2NTc3ZWNlOWY1YjdiYWZiYWY2ZDRkMjI5ZjBmMzA5ZDY2YWQwNDAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBv
bGljeS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorCitQQVNTIE1ha2Ugc3VyZSB3ZSBtYWtlIGEgc2luZ2xlIHJlcXVlc3QgdG8gdGhlIEhUVFAg
c2VydmVyIHdoZW4gc3dpdGNoaW5nIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xl
LXJlcXVlc3QtdG8tc2VydmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmln
aW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MjJmMGRkZTY4ZWUxN2U4NTUwYjk3OWIzYjIzNThhMWZhNWE3N2M1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2lu
Z2xlLXJlcXVlc3QtdG8tc2VydmVyLmh0bWwKQEAgLTAsMCArMSwyMiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD11dGYtOD4KKzxzY3JpcHQgc3JjPS9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9jb21tb24vdXRp
bHMuanMiPjwvc2NyaXB0Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cithc3luY190ZXN0KCh0
KSA9PiB7CisgICAgdmFyIGJjID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoJ3NpbmdsZS1yZXF1ZXN0
LXRvLXNlcnZlcicpOworICAgIGxldCB3ID0gb3BlbigicmVzb3VyY2VzL3NpbmdsZS1yZXF1ZXN0
LXRvLXNlcnZlci1wb3B1cC5weT90b2tlbj0iICsgdG9rZW4oKSk7CisgICAgYmMub25tZXNzYWdl
ID0gdC5zdGVwX2Z1bmMoKGV2ZW50KSA9PiB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZXZlbnQu
ZGF0YSwgIm5vdF9hbHJlYWR5X2xvYWRlZCIpOworICAgICAgICBhc3NlcnRfdHJ1ZSh3LmNsb3Nl
ZCwgIlNob3VsZCBzd2l0Y2ggYnJvd3NpbmcgY29udGV4dCBncm91cCIpOworICAgICAgICB0LmRv
bmUoKTsKKyAgICB9KTsKK30sICJNYWtlIHN1cmUgd2UgbWFrZSBhIHNpbmdsZSByZXF1ZXN0IHRv
IHRoZSBIVFRQIHNlcnZlciB3aGVuIHN3aXRjaGluZyBicm93c2luZyBjb250ZXh0IGdyb3VwIik7
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436638</attachid>
            <date>2021-08-27 10:04:57 -0700</date>
            <delta_ts>2021-08-27 11:09:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229465-20210827100456.patch</filename>
            <type>text/plain</type>
            <size>84044</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVjNTdjMGU2ZTIzNDc4MmJj
ODY1NmNiNmVkYTY0MTEyNjEzOGEwYTUuLjNmYjlhYzZmMWEyMWM2MDA5MjA0NDJkZTQyYjg3N2E0
MDc2ZDZlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTkgQEAKKzIwMjEtMDgtMjYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBSZXVzZSB0aGUgc2FtZSBu
ZXR3b3JrIGxvYWQgd2hlbiBwcm9jZXNzLXN3YXBwaW5nIG9uIHJlc291cmNlIHJlc3BvbnNlIGR1
ZSB0byBDT09QCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjk0NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgyMzA3NjExPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgcjI4MTUxNiBhZGRlZCBzdXBw
b3J0IGZvciBwcm9jZXNzLXN3YXBwaW5nIGJhc2VkIG9uIENyb3NzLU9yaWdpbi1PcGVuZXItUG9s
aWN5IGhlYWRlcgorICAgICAgICBpbiBIVFRQIHJlc3BvbnNlcy4gSG93ZXZlciwgb24gcHJvY2Vz
cy1zd2FwLCB3ZSB3b3VsZCBhYm9ydCB0aGUgZXhpc3RpbmcgbmV0d29yayBsb2FkCisgICAgICAg
IHRoYXQgd2FzIHN0YXJ0ZWQgYnkgdGhlIG9yaWdpbmFsIFdlYlByb2Nlc3MgYW5kIHN0YXJ0IGEg
ZnJlc2ggbmV0d29yayBsb2FkIGluIHRoZSBuZXcKKyAgICAgICAgV2ViUHJvY2Vzcy4gVGhpcyB3
YXMgc3Vib3B0aW1hbCBhbmQgY291bGQgbGVhZCB0byBpc3N1ZXMgd2l0aCByZXNvdXJjZXMgdGhh
dCBwcm92aWRlCisgICAgICAgIG9uZS10aW1lIGJlaGF2aW9ycy4gVGhpcyBwYXRjaCBhZGRyZXNz
ZXMgdGhlIGlzc3VlIGJ5IHRyYW5zZmVycmluZyB0aGUgbmV0d29yayBsb2FkCisgICAgICAgIGlu
IHRoZSBuZXR3b3JrIHByb2Nlc3MgZnJvbSB0aGUgb2xkIFdlYlByb2Nlc3MgdG8gdGhlIG5ldyBX
ZWJQcm9jZXNzIHdoZW4gcHJvY2VzcworICAgICAgICBzd2FwcGluZy4KKworICAgICAgICBXaGVu
IHRoZSBVSVByb2Nlc3MgZGVjaWRlcyB0byBwcm9jZXNzLXN3YXAgb24gcmVzcG9uc2UgcG9saWN5
IGRlY2lzaW9uLCBpdCBmaXJzdAorICAgICAgICBzZW5kcyBJUEMgdG8gdGhlIG5ldHdvcmsgcHJv
Y2VzcyB0byBhc2sgaXQgdG8gcHJlcGFyZSB0aGUgTmV0d29ya1Jlc291cmNlTG9hZGVyCisgICAg
ICAgIGZvciBvd25lcnNoaXAgdHJhbnNmZXIuIFRoZSBuZXR3b3JrIHByb2Nlc3MgdGFrZXMgdGhl
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcgorICAgICAgICBmcm9tIGl0cyBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyBhbmQgc3RvcmVzIGl0IGluIGEgdGVtcG9yYXJ5IGNhY2hlLCB0aGVuCisg
ICAgICAgIHJlc3BvbmRzIHRvIHRoZSBVSVByb2Nlc3Mgd2l0aCB0aGUgTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIgb2YgdGhlIGxvYWRlci4KKyAgICAgICAgVXBvbiByZWNlaXZpbmcgdGhl
IHJlc3BvbnNlLCB0aGUgVUlQcm9jZXNzIHByb2NlZWRzIHdpdGggdGhlIHByb2Nlc3Mtc3dhcCwg
aXQKKyAgICAgICAgcmVqZWN0cyByZXNwb25zZSBwcm9jZXNzaW5nIGluIHRoZSBvbGQgcHJvY2Vz
cyBhbmQgZG9lcyBhIGxvYWRSZXF1ZXN0IGluIGEgbmV3CisgICAgICAgIFdlYlByb2Nlc3MuIFdo
ZW4gc3RhcnRpbmcgc2VuZGluZyB0aGUgTG9hZFJlcXVlc3QgSVBDIHRvIHRoZSBuZXcgV2ViUHJv
Y2VzcywgaXQKKyAgICAgICAgcGFzc2VzIGFsb25nIHRoZSBOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllciBvZiB0aGUgY2FjaGVkIGxvYWRlciBpbiB0aGUgbmV0d29yaworICAgICAgICBwcm9j
ZXNzLiBXaGVuIHRoZSBXZWJQcm9jZXNzIGVuZHMgdXAgc2NoZWR1bGluZyB0aGUgbG9hZCB3aXRo
IHRoZSBuZXR3b3JrIHByb2Nlc3MsCisgICAgICAgIGl0IHBhc3NlcyBhZ2FpbiB0aGUgTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXIuIFVwb24gcmVjZWl2aW5nIHRoZSBsb2FkIHJlcXVlc3Qs
CisgICAgICAgIHRoZSBuZXR3b3JrIHByb2Nlc3MgY2hlY2tzIGlmIGEgTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXIgaXMgcHJvdmlkZWQgZm9yCisgICAgICAgIGNvbnRpbnVpbmcgYSBsb2Fk
LiBJZiBub25lIGlzIHByb3ZpZGVkLCB3ZSB1c2UgdGhlIHJlZ3VsYXIgY29kZSBwYXRoIGFuZCBh
Y3R1YWxseQorICAgICAgICBjb25zdHJ1Y3QgYSBuZXcgTmV0d29ya1Jlc291cmNlTG9hZGVyLiBI
b3dldmVyLCBpZiBhIE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyCisgICAgICAgIGlzIHBy
b3ZpZGVkLCB3ZSB0YWtlIHRoZSBjb3JyZXNwb25kaW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBm
cm9tIHRoZSBjYWNoZSwKKyAgICAgICAgdHJhbnNmZXIgaXQgdG8gdGhlIG5ldyBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyBhbmQgaGF2ZSBpdCBzZW5kIHRoZQorICAgICAgICBEaWRSZWNl
aXZlUmVzcG9uc2UgSVBDIHRvIHRoZSBXZWJQcm9jZXNzIHRvIGNvbnRpbnVlIHRoZSBsb2FkIHdp
dGggdGhlIG5ldworICAgICAgICBXZWJQcm9jZXNzLgorCisgICAgICAgIFRlc3Q6IGh0dHAvd3B0
L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci5odG1s
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpk
aWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6dHJhbnNmZXJLZXB0QWxpdmVMb2FkKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnRha2VOZXR3
b3JrUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
Q2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyOjpDYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXIp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Q2FjaGVkTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp0YWtlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OkNh
Y2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZXhwaXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6dGFrZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1Ry
YW5zZmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVMb2FkRm9y
V2ViUHJvY2Vzc1RyYW5zZmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6dHJhbnNmZXJUb05ld1dl
YlByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3Vs
ZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNP
clhGcmFtZU9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZEludGVycnVwdE5hdmlnYXRpb25Gb3JDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRX
b3JrZXJMb2FkRm9yQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmV0cmlldmVDYWNoZUVudHJ5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1h
dGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWRk
Q29uc29sZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogU2hhcmVk
L0xvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9Mb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2Zlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lv
bmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRo
TmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGlu
dWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0
d29ya1Byb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkUmVxdWVzdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAyMS0wOC0yNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYSB0
eXBvIGluIGBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmRlY29kZSgpYApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAppbmRleCBkOTYyYTk4YWY1NDY3NTQ0ZmI0MDg3YzQ4MWFhMjJlYTdlYTVm
NjIwLi4wZTY3OWUwODg5NTVhY2U5MGMwZDc1YTdiNzBmMDhhMTFjZDdlOWU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtODUsNiArODUsNyBAQAogI2VuZGlmCiAKICNkZWZpbmUg
Q09OTkVDVElPTl9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hh
bm5lbCwgIiVwIC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCku
dG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09OTkVDVElPTl9SRUxFQVNFX0xP
R19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVw
IC0gW3dlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCAiXSBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6IiBmbXQsIHRoaXMsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQo
KSwgIyNfX1ZBX0FSR1NfXykKIAogI2RlZmluZSBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVD
Syhhc3NlcnRpb24pIE5FVFdPUktfUFJPQ0VTU19NRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oYXNz
ZXJ0aW9uLCAodm9pZCkwKQogI2RlZmluZSBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDS19D
T01QTEVUSU9OKGFzc2VydGlvbiwgY29tcGxldGlvbikgZG8geyBcCkBAIC0xNjYsNyArMTY3LDcg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzVXBsb2FkU3RhdGVDaGFu
Z2VkKGJvb2wgaGFzVXBsb2FkKQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpkaWRDbGVhbnVwUmVzb3VyY2VMb2FkZXIoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIp
CiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQobG9hZGVyLmlkZW50aWZpZXIoKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlmIChsb2FkZXIuaXNLZXB0QWxpdmUoKSkgewpAQCAt
MTc0LDE2ICsxNzUsMTYgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGlk
Q2xlYW51cFJlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxvYWQKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIEFTU0VSVChtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuZ2V0KGxvYWRl
ci5pZGVudGlmaWVyKCkpID09ICZsb2FkZXIpOwotICAgIG1fbmV0d29ya1Jlc291cmNlTG9hZGVy
cy5yZW1vdmUobG9hZGVyLmlkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUKG1fbmV0d29ya1Jlc291
cmNlTG9hZGVycy5nZXQobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkpID09ICZsb2FkZXIpOworICAg
IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5yZW1vdmUobG9hZGVyLmNvcmVJZGVudGlmaWVyKCkp
OwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0cmFuc2ZlcktlcHRB
bGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiB7CiAgICAgUkVMRUFTRV9B
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChsb2FkZXIuaXNLZXB0QWxpdmUo
KSk7Ci0gICAgQVNTRVJUKG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5nZXQobG9hZGVyLmlkZW50
aWZpZXIoKSkgPT0gJmxvYWRlcik7Ci0gICAgaWYgKGF1dG8gdGFrZW5Mb2FkZXIgPSBtX25ldHdv
cmtSZXNvdXJjZUxvYWRlcnMudGFrZShsb2FkZXIuaWRlbnRpZmllcigpKSkKKyAgICBBU1NFUlQo
bV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmdldChsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkgPT0g
JmxvYWRlcik7CisgICAgaWYgKGF1dG8gdGFrZW5Mb2FkZXIgPSBtX25ldHdvcmtSZXNvdXJjZUxv
YWRlcnMudGFrZShsb2FkZXIuY29yZUlkZW50aWZpZXIoKSkpCiAgICAgICAgIG1fbmV0d29ya1By
b2Nlc3MtPmFkZEtlcHRBbGl2ZUxvYWQodGFrZW5Mb2FkZXIucmVsZWFzZU5vbk51bGwoKSk7CiB9
CiAKQEAgLTQ4NiwyNyArNDg3LDQxIEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlRmV0CiB9CiAjZW5k
aWYKIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNvdXJj
ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9u
YWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUp
CiB7Ci0gICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJj
ZUxvYWQ6IChwYXJlbnRQSUQ9JWQsIHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9
JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIp
IiwgbG9hZFBhcmFtZXRlcnMucGFyZW50UElELCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBh
cmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVy
KTsKKyAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9HKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNl
TG9hZDogKHBhcmVudFBJRD0lZCwgcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0l
IiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwg
ZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZT0lIiBQUkl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJl
bnRQSUQsIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIGxvYWRQYXJh
bWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRv
VUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGV4aXN0aW5nTG9hZGVyVG9SZXN1
bWUudmFsdWVfb3IoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgp
KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBhdXRvJiBzZXJ2ZXIgPSBtX25l
dHdvcmtQcm9jZXNzLT5zd1NlcnZlckZvclNlc3Npb24obV9zZXNzaW9uSUQpOwogICAgIGlmICgh
c2VydmVyLmlzSW1wb3J0Q29tcGxldGVkKCkpIHsKLSAgICAgICAgc2VydmVyLndoZW5JbXBvcnRJ
c0NvbXBsZXRlZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBsb2FkUGFy
YW1ldGVycyA9IFdURk1vdmUobG9hZFBhcmFtZXRlcnMpXSgpIG11dGFibGUgeworICAgICAgICBz
ZXJ2ZXIud2hlbkltcG9ydElzQ29tcGxldGVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGxvYWRQYXJhbWV0ZXJzID0gV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIGV4aXN0
aW5nTG9hZGVyVG9SZXN1bWVdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1fbmV0d29y
a1Byb2Nlc3MtPndlYlByb2Nlc3NDb25uZWN0aW9uKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIEFTU0VSVChtX25ldHdvcmtQcm9j
ZXNzLT5zd1NlcnZlckZvclNlc3Npb24obV9zZXNzaW9uSUQpLmlzSW1wb3J0Q29tcGxldGVkKCkp
OwotICAgICAgICAgICAgc2NoZWR1bGVSZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1ldGVy
cykpOworICAgICAgICAgICAgc2NoZWR1bGVSZXNvdXJjZUxvYWQoV1RGTW92ZShsb2FkUGFyYW1l
dGVycyksIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICNlbmRpZgorCiAgICAgYXV0byBpZGVudGlmaWVyID0gbG9hZFBhcmFtZXRl
cnMuaWRlbnRpZmllcjsKICAgICBSRUxFQVNFX0FTU0VSVChpZGVudGlmaWVyKTsKICAgICBSRUxF
QVNFX0FTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKCFtX25ldHdvcmtSZXNv
dXJjZUxvYWRlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogCisgICAgaWYgKGV4aXN0aW5nTG9h
ZGVyVG9SZXN1bWUpIHsKKyAgICAgICAgaWYgKGF1dG8gc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9u
KCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGV4aXN0aW5nTG9hZGVyID0gc2Vzc2lvbi0+dGFr
ZUxvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKCpleGlzdGluZ0xvYWRlclRvUmVzdW1l
KSkgeworICAgICAgICAgICAgICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coTG9hZGluZywgInNj
aGVkdWxlUmVzb3VyY2VMb2FkOiBSZXN1bWluZyBleGlzdGluZyBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIiKTsKKyAgICAgICAgICAgICAgICBtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuYWRkKGlkZW50
aWZpZXIsICpleGlzdGluZ0xvYWRlcik7CisgICAgICAgICAgICAgICAgZXhpc3RpbmdMb2FkZXIt
PnRyYW5zZmVyVG9OZXdXZWJQcm9jZXNzKCp0aGlzLCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HX0VSUk9SKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDogQ291bGQgbm90IGZp
bmQgZXhpc3RpbmcgTmV0d29ya1Jlc291cmNlTG9hZGVyIHRvIHJlc3VtZSwgd2lsbCBkbyBhIGZy
ZXNoIGxvYWQiKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBDT05ORUNUSU9OX1JFTEVB
U0VfTE9HX0VSUk9SKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDogQ291bGQgbm90IGZp
bmQgbmV0d29yayBzZXNzaW9uIG9mIGV4aXN0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciB0byBy
ZXN1bWUsIHdpbGwgZG8gYSBmcmVzaCBsb2FkIik7CisgICAgfQorCiAgICAgYXV0byYgbG9hZGVy
ID0gbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmFkZChpZGVudGlmaWVyLCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZShXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgKnRoaXMpKS5pdGVyYXRv
ci0+dmFsdWU7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0xMjY5LDYgKzEyODQs
MTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJpb3JpdGl6ZVJlc291
cmNlTG9hZHMoVmVjdG9yPFJlc291cmNlTG9hZEkKICAgICBzZXNzaW9uLT5uZXR3b3JrTG9hZFNj
aGVkdWxlcigpLnByaW9yaXRpemVMb2Fkcyhsb2Fkcyk7CiB9CiAKK1JlZlB0cjxOZXR3b3JrUmVz
b3VyY2VMb2FkZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp0YWtlTmV0d29ya1Jl
c291cmNlTG9hZGVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIpCit7CisgICAgaWYg
KCFOZXR3b3JrUmVzb3VyY2VMb2FkTWFwOjpNYXBUeXBlOjppc1ZhbGlkS2V5KHJlc291cmNlTG9h
ZElkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9uZXR3
b3JrUmVzb3VyY2VMb2FkZXJzLnRha2UocmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgQ09OTkVDVElPTl9SRUxFQVNFX0xPRwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDVlMDcwOTFlMzczNmRlMzUyMTkyY2ZlNzg2NzljYjYy
MmIyM2RmMmYuLmY0YTBhYjcxOTNlZmM2Y2ZmYWM2MGZlZmNkY2QzOGZiYWU5ZjA5NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgIk5ldHdv
cmtNRE5TUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUlRDUHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIk5ldHdvcmtS
ZXNvdXJjZUxvYWRNYXAuaCIKICNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgogI2luY2x1ZGUg
IlNhbmRib3hFeHRlbnNpb24uaCIKQEAgLTE4Niw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xp
Y3kpOwogCiAgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VTb3Vy
Y2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIFJlZlB0
cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRha2VOZXR3b3JrUmVzb3VyY2VMb2FkZXIodWludDY0
X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciwgUEFMOjpTZXNzaW9uSUQsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CkBAIC0y
MDMsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7
CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNv
ZGVyPiYpOwogCi0gICAgdm9pZCBzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpOwogICAgIHZvaWQgcGVyZm9ybVN5
bmNocm9ub3VzTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWREZWxh
eWVkUmVwbHkmJik7CiAgICAgdm9pZCB0ZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpUZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3Nh
Z2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBsb2Fk
UGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGJlOTI0NGU4NmZjZGUzNWM5OGM2MGM3MDRj
YmFlZjI0MDJmZDBkNmEuLjczZjNlODkxNjI5ZTIyMzQ0OWU0NzUzMmRkMTQyNDczNWUzZDRiMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjIsNyAr
MjIsNyBAQAogCiBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAKLSAgICBTY2hlZHVsZVJlc291cmNlTG9hZChXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCisgICAgU2NoZWR1
bGVSZXNvdXJjZUxvYWQoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6TmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpCiAgICAgUGVyZm9ybVN5bmNo
cm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNl
TG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBWZWN0b3I8dWludDhfdD4gZGF0YSkgU3luY2hy
b25vdXMKICAgICBUZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wg
aGFuZGxlZCkgU3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDVkNjgyOWIyODgwMjU0
YmQwMTEzMTBhOWZkMjlkNzg1ZWRiNmUwNTUuLmQ1YWMwZTM1ZjliMjM1Njk3MjEyYmNkMTM2MWQ2
NmM4NDM5NjZlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC0yODE1LDYgKzI4MTUsMjYgQEAgUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyUHJveHkmIE5ldHdvcmtQcm9jZXNzOjpydGNEYXRhQ2hhbm5lbFByb3h5KCkKIH0KICNl
bmRpZgogCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFu
c2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3VyY2VQcm9jZXNzSWRlbnRpZmllciwg
dWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgQVNTRVJUKHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgIGF1
dG8qIGNvbm5lY3Rpb24gPSB3ZWJQcm9jZXNzQ29ubmVjdGlvbihzb3VyY2VQcm9jZXNzSWRlbnRp
Zmllcik7CisgICAgaWYgKCFjb25uZWN0aW9uKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoc3RkOjpudWxsb3B0KTsKKworICAgIGF1dG8gc2Vzc2lvbiA9IGNvbm5lY3Rpb24tPm5l
dHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKKworICAgIGF1dG8gbG9hZGVyID0gY29ubmVjdGlv
bi0+dGFrZU5ldHdvcmtSZXNvdXJjZUxvYWRlcihyZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIWxvYWRlcikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVs
bG9wdCk7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBsb2FkZXItPmlkZW50aWZpZXIoKTsKKyAg
ICBzZXNzaW9uLT5hZGRMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NUcmFuc2Zlcihsb2FkZXIucmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoaWRlbnRpZmllcik7Cit9CisK
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdl
TmV0d29ya1BhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIGF1dG8gc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZWE5MWVkNTk0MDNlNDlmZTI3ZGE2ODE5MzE2NzFlOTZm
ZjdiZjlhNy4uMjAyOGE5MWY4YzA3ZGNlYzRiNzFlOGU1MTUwMTUxMDM5NGMwZjM2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RN
YW5hZ2VyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eS5oIgogI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJXZWJJREJTZXJ2ZXIuaCIKQEAgLTQyMiw2ICs0
MjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNOZXR3b3JrUHJvY2Vzc01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5j
b2Rlcj4mKTsKICAgICB2b2lkIGluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGNyZWF0ZU5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPElQQzo6QXR0YWNobWVudD4mJiwg
V2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYpOworICAgIHZvaWQgcHJlcGFyZUxv
YWRGb3JXZWJQcm9jZXNzVHJhbnNmZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc291cmNl
UHJvY2Vzc0lkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
Zmllcj4pPiYmKTsKIAogICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0
aW9uPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJik7CiAgICAgdm9p
ZCBkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkNzk5NzQ1MWM0NTQwY2MzZDc1NjUzNDhjNzZhMjM0NDkx
MzgyZjlhLi5jYWViOGQ5YmI4NDhjNjkwMGFlOTU1NWQwNzU5ZjkyZDU5YmYyNDkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTE5NSw2ICsxOTUsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgQ2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKKyAgICBQcmVwYXJl
TG9hZEZvcldlYlByb2Nlc3NUcmFuc2ZlcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzb3Vy
Y2VQcm9jZXNzSWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgLT4g
KHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gbmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIpIEFzeW5jCisKICAgICBBZGRXZWJQYWdlTmV0d29y
a1BhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94
eUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyBwYXJh
bWV0ZXJzKQogICAgIFJlbW92ZVdlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCiAgICAg
Q291bnROb25EZWZhdWx0U2Vzc2lvblNldHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAo
c2l6ZV90IGNvdW50KSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDU3OTQwMGRk
YTZlNTVlY2MyZGFlNGI0Y2E3MDZlYmIxMWE3NTc4M2YuLjA0ZDVhNzE1OWExNmE2YmY3MzM5YTY4
YTg0ZTY0OTRlMmFhMDdlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBwYXJl
bnRPcmlnaW4oKSBjb25zdDsKIAotICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmll
ciB7IDAgfTsKKyAgICBtdXRhYmxlIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllciB7
IDAgfTsKICAgICBWZWN0b3I8UmVmUHRyPFNhbmRib3hFeHRlbnNpb24+PiByZXF1ZXN0Qm9keVNh
bmRib3hFeHRlbnNpb25zOyAvLyBDcmVhdGVkIGF1dG9tYXRpY2FsbHkgZm9yIHRoZSBzZW5kZXIu
CiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IHJlc291cmNlU2FuZGJveEV4dGVuc2lvbjsg
Ly8gQ3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZvciB0aGUgc2VuZGVyLgogICAgIFNlY29uZHMgbWF4
aW11bUJ1ZmZlcmluZ1RpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggODJmMWU1MzAxNDRmYTBmZjJkYWIx
MWU2NDRjMDliN2Y2ODYxYTAwMC4uMjk2ZDQ1MTAyYmQxOGQzZmVmZGNmMzAxNTQzN2ZkOGMzZmMw
ZTI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTIyLDYgKzUyMiwxNiBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6YWJvcnQoKQogICAgIGNsZWFudXAoTG9hZFJlc3VsdDo6Q2FuY2VsKTsKIH0K
IAordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyYW5zZmVyVG9OZXdXZWJQcm9jZXNzKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBuZXdDb25uZWN0aW9uLCBSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyIG5ld0NvcmVJZGVudGlmaWVyKQoreworICAgIG1fY29ubmVjdGlvbiA9IG5ld0Nv
bm5lY3Rpb247CisgICAgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSBuZXdDb3JlSWRlbnRpZmll
cjsKKworICAgIEFTU0VSVChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgfHwgbV9jYWNoZUVu
dHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlIHx8IG1fc2VydmljZVdvcmtl
ckZldGNoVGFzayk7CisgICAgYm9vbCB3aWxsV2FpdEZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlID0gdHJ1ZTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVj
ZWl2ZVJlc3BvbnNlIHsgbV9yZXNwb25zZSwgd2lsbFdhaXRGb3JDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSB9KTsKK30KKwogYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVy
cnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgeEZyYW1lT3B0aW9ucywgY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKGlzTWFpbkZyYW1lTG9hZCgpKQpAQCAtNTQ2LDEyICs1
NTYsMTIgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRG
b3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgeEYKICAgICB9CiAgICAgY2FzZSBYRnJhbWVP
cHRpb25zRGlzcG9zaXRpb246OkNvbmZsaWN0OiB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3Nh
Z2UgPSAiTXVsdGlwbGUgJ1gtRnJhbWUtT3B0aW9ucycgaGVhZGVycyB3aXRoIGNvbmZsaWN0aW5n
IHZhbHVlcyAoJyIgKyB4RnJhbWVPcHRpb25zICsgIicpIGVuY291bnRlcmVkIHdoZW4gbG9hZGlu
ZyAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInLiBGYWxsaW5n
IGJhY2sgdG8gJ0RFTlknLiI7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENv
bnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9w
YXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFk
ZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBjb3JlSWRlbnRpZmllcigp
IH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgY2FzZSBYRnJhbWVPcHRpb25zRGlzcG9zaXRpb246OkludmFsaWQ6IHsKICAgICAgICAg
U3RyaW5nIGVycm9yTWVzc2FnZSA9ICJJbnZhbGlkICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlciBl
bmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcgJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRv
TGVuZ3RoKCkgKyAiJzogJyIgKyB4RnJhbWVPcHRpb25zICsgIicgaXMgbm90IGEgcmVjb2duaXpl
ZCBkaXJlY3RpdmUuIFRoZSBoZWFkZXIgd2lsbCBiZSBpZ25vcmVkLiI7Ci0gICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNz
YWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlLCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIH0KQEAgLTU3OCw3ICs1ODgsNyBAQCBib29s
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5j
ZXN0b3JzT3JYRnJhbWVPcHRpbwogICAgICAgICBTdHJpbmcgeEZyYW1lT3B0aW9ucyA9IG1fcmVz
cG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpYRnJhbWVPcHRpb25zKTsKICAg
ICAgICAgaWYgKCF4RnJhbWVPcHRpb25zLmlzTnVsbCgpICYmIHNob3VsZEludGVycnVwdExvYWRG
b3JYRnJhbWVPcHRpb25zKHhGcmFtZU9wdGlvbnMsIHJlc3BvbnNlLnVybCgpKSkgewogICAgICAg
ICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gZGlzcGxh
eSAnIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIn
IGluIGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8gJyIsIHhGcmFt
ZU9wdGlvbnMsICInLiIpOwotICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRk
Q29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIo
KSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBN
ZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdl
LCBjb3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC01OTUsNyArNjA1LDcgQEAgYm9v
bCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdE5hdmlnYXRpb25Gb3JDcm9z
c09yaWdpbkVtYmVkZGVyUG9saWMKICAgICAgICAgYXV0byByZXNwb25zZUNPRVAgPSBXZWJDb3Jl
OjpvYnRhaW5Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KHJlc3BvbnNlLCBtX3BhcmFtZXRlcnMu
c291cmNlT3JpZ2luLT5pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoKSA/IElzU2VjdXJlQ29udGV4
dDo6WWVzIDogSXNTZWN1cmVDb250ZXh0OjpObyk7CiAgICAgICAgIGlmIChyZXNwb25zZUNPRVAu
dmFsdWUgIT0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeVZhbHVlOjpSZXF1aXJl
Q09SUCkgewogICAgICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlJl
ZnVzZWQgdG8gZGlzcGxheSAnIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCksICInIGluIGEgZnJhbWUgYmVjYXVzZSBvZiBDcm9zcy1PcmlnaW4tRW1iZWRk
ZXItUG9saWN5LiIpOwotICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29u
c29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNl
Y3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNz
YWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBj
b3JlSWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC02MTEsNyArNjIxLDcgQEAgYm9vbCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdFdvcmtlckxvYWRGb3JDcm9zc09y
aWdpbkVtYmVkZGVyUG9saWMKICAgICAgICAgYXV0byByZXNwb25zZUNPRVAgPSBXZWJDb3JlOjpv
YnRhaW5Dcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5KHJlc3BvbnNlLCBtX3BhcmFtZXRlcnMuc291
cmNlT3JpZ2luLT5pc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoKSA/IElzU2VjdXJlQ29udGV4dDo6
WWVzIDogSXNTZWN1cmVDb250ZXh0OjpObyk7CiAgICAgICAgIGlmIChyZXNwb25zZUNPRVAudmFs
dWUgIT0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeVZhbHVlOjpSZXF1aXJlQ09S
UCkgewogICAgICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IG1ha2VTdHJpbmcoIlJlZnVz
ZWQgdG8gbG9hZCAnIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVu
Z3RoKCksICInIHdvcmtlciBiZWNhdXNlIG9mIENyb3NzLU9yaWdpbi1FbWJlZGRlci1Qb2xpY3ku
Iik7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2Fn
ZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQpOworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRk
Q29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGNvcmVJZGVudGlm
aWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTYzMCw3ICs2NDAsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZl
ZFJlc3BvbgogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSAm
JiBtX25ldHdvcmtMb2FkQ2hlY2tlcikgewogICAgICAgICBhdXRvIGluZm9ybWF0aW9uID0gbV9u
ZXR3b3JrTG9hZENoZWNrZXItPnRha2VOZXR3b3JrTG9hZEluZm9ybWF0aW9uKCk7CiAgICAgICAg
IGluZm9ybWF0aW9uLnJlc3BvbnNlID0gbV9yZXNwb25zZTsKLSAgICAgICAgbV9jb25uZWN0aW9u
LT5hZGROZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50aWZpZXIoKSwgV1RGTW92ZShpbmZvcm1h
dGlvbikpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb24o
Y29yZUlkZW50aWZpZXIoKSwgV1RGTW92ZShpbmZvcm1hdGlvbikpOwogICAgIH0KIAogICAgIC8v
IEZvciBtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIGRpZFJlY2VpdmVSZXNwb25zZUFzeW5jIGdl
dHMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGFuZCBidWZmZXJpbmcgd291bGQgcmVxdWlyZSBzcGVj
aWFsIGhhbmRsaW5nLgpAQCAtNzU4LDcgKzc2OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
CiAgICAgTE9BREVSX1JFTEVBU0VfTE9HKCJkaWRGaW5pc2hMb2FkaW5nOiAobnVtQnl0ZXNSZWNl
aXZlZD0lemQsIGhhc0NhY2hlRW50cnlGb3JWYWxpZGF0aW9uPSVkKSIsIG1fbnVtQnl0ZXNSZWNl
aXZlZCwgISFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKIAogICAgIGlmIChzaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5hZGRO
ZXR3b3JrTG9hZEluZm9ybWF0aW9uTWV0cmljcyhpZGVudGlmaWVyKCksIG5ldHdvcmtMb2FkTWV0
cmljcyk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1l
dHJpY3MoY29yZUlkZW50aWZpZXIoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKIAogICAgIGlmICht
X2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSB7CiAgICAgICAgIC8vIDMwNCBOb3QgTW9kaWZpZWQK
QEAgLTgwMSw3ICs4MTEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExv
YWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgVU5VU0VEX1ZBUklBQkxFKHdh
c1NlcnZpY2VXb3JrZXJMb2FkKTsKIAogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3Jr
TG9hZE1ldHJpY3MoKSkKLSAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVOZXR3b3JrTG9hZElu
Zm9ybWF0aW9uKGlkZW50aWZpZXIoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTmV0
d29ya0xvYWRJbmZvcm1hdGlvbihjb3JlSWRlbnRpZmllcigpKTsKIAogICAgIEFTU0VSVCghZXJy
b3IuaXNOdWxsKCkpOwogCkBAIC0xMjAyLDkgKzEyMTIsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJldHJpZXZlQ2FjaGVFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0Nh
Y2hlOjoKICAgICBMT0FERVJfUkVMRUFTRV9MT0coImRpZFJldHJpZXZlQ2FjaGVFbnRyeTogU2Vu
ZGluZyBXZWJSZXNvdXJjZUxvYWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIElQQyAobmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2U9JWQpIiwgbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVy
OjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UgfSk7CiAKLSAgICBpZiAobmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UpCisgICAgaWYgKG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlKSB7CisgICAgICAgIG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsKICAgICAgICAg
bV9jYWNoZUVudHJ5V2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlID0gV1RGTW92
ZShlbnRyeSk7Ci0gICAgZWxzZSB7CisgICAgfSBlbHNlIHsKICAgICAgICAgc2VuZFJlc3VsdEZv
ckNhY2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOwogICAgICAgICBjbGVhbnVwKExvYWRSZXN1bHQ6
OlN1Y2Nlc3MpOwogICAgIH0KQEAgLTEzNTksNyArMTM3MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0CiAgICAgYXV0byogbmV0d29y
a1N0b3JhZ2VTZXNzaW9uID0gbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCgpKTsKICAgICBBU1NFUlQobmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsK
IAotICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBT
YW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgp
LnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdl
SUQoKSwgaWRlbnRpZmllcigpKTsKKyAgICBsb2dDb29raWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rp
b24sICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQq
Pih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkp
LCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVy
KCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGNvcmVJZGVudGlmaWVyKCkpOwogfQogCiBzdGF0aWMg
dm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dl
ZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBzdGQ6
Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgc3RkOjpvcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQpAQCAt
MTQ2Myw3ICsxNDc0LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJgogCiB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291
cmNlLCBNZXNzYWdlTGV2ZWwgbWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVu
c2lnbmVkIGxvbmcpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1l
c3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIG1lc3NhZ2VTb3VyY2UsIG1lc3NhZ2VM
ZXZlbCwgbWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsICBtZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGNv
cmVJZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CiB9CiAKIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQ1NQVmlvbGF0aW9uUmVwb3J0KFVSTCYmIHJlcG9ydFVS
TCwgUmVmPEZvcm1EYXRhPiYmIHJlcG9ydCkKQEAgLTE1MzQsNyArMTU0NSw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2sqIGZlCiAgICAgUkVMRUFTRV9BU1NFUlQobV9zZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmdldCgpID09IGZldGNoVGFzayk7CiAgICAgaWYgKG1fcGFyYW1ldGVycy5zZXJ2aWNlV29y
a2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpPbmx5KSB7CiAgICAgICAgIExPQURFUl9S
RUxFQVNFX0xPR19FUlJPUigic2VydmljZVdvcmtlckRpZE5vdEhhbmRsZTogQWJvcnRpbmcgbG9h
ZCBiZWNhdXNlIHRoZSBzZXJ2aWNlIHdvcmtlciBkaWQgbm90IGhhbmRsZSB0aGUgbG9hZCBhbmQg
c2VydmljZVdvcmtlck1vZGUgb25seSBhbGxvd3Mgc2VydmljZSB3b3JrZXJzIik7Ci0gICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpTZXJ2aWNlV29ya2VyRGlkTm90SGFu
ZGxlIHsgfSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUmVzb3Vy
Y2VMb2FkZXI6OlNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUgeyB9LCBjb3JlSWRlbnRpZmllcigp
KTsKICAgICAgICAgYWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4
IGNlZjY1NDc5YjdlNmJjZmYyNWNmZjAxODI1YzJiZDNhMGM3Njg3ZWYuLjdmZjYxZWIxYmU4MjY3
MzUyODFjZDNiYzgxYjA1OGMwZTA2YjE2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtODUsMTkgKzg1LDIzIEBA
IHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBhYm9ydCgpOwogCisgICAgdm9p
ZCB0cmFuc2ZlclRvTmV3V2ViUHJvY2VzcyhOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYs
IFJlc291cmNlTG9hZElkZW50aWZpZXIpOworCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAg
ICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwogCiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVz
dChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBib29sIGlzQWxsb3dlZFRv
QXNrVXNlckZvckNyZWRlbnRpYWxzKTsKIAorICAgIHZvaWQgc2V0UmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKSB7IG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3Bv
bnNlKTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogCiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5l
Y3Rpb247IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBt
X2Nvbm5lY3Rpb24tPnNlc3Npb25JRCgpOyB9Ci0gICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXI7IH0KKyAg
ICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGNvcmVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXI7IH0KICAgICBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEOyB9CiAgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRDsgfQogICAgIGNvbnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CisgICAgTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b3VyY2VMb2FkSUQ7IH0KIAogICAgIE5ldHdvcmtDYWNoZTo6R2xvYmFsRnJhbWVJRCBnbG9iYWxG
cmFtZUlEKCkgeyByZXR1cm4geyBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHBhZ2VJRCgp
LCBmcmFtZUlEKCkgfTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwCmluZGV4IDMzNDg4ZTY5ZWZlYmQ3MWI2ZDMwYmQyYmM3YzhmYzUyYTcy
ODMyN2QuLmJkYWNlZTEzMmY5MGVjMmRlOTM3YTA5MmQ3MjZlNWZhYTA0ODg2YzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC01Niw2
ICs1Niw4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Citjb25zdGV4cHIgU2Vjb25kcyBjYWNoZWROZXR3b3JrUmVzb3VyY2VMb2FkZXJMaWZldGltZSB7
IDMwX3MgfTsKKwogc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTZXNzaW9uPiBOZXR3b3JrU2Vzc2lv
bjo6Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogI2lmIFBMQVRGT1JNKENPQ09BKQpA
QCAtMzkxLDYgKzM5Myw0MyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpyZW1vdmVLZXB0QWxpdmVM
b2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAgIG1fa2VwdEFsaXZlTG9hZHMu
cmVtb3ZlKGxvYWRlcik7CiB9CiAKK05ldHdvcmtTZXNzaW9uOjpDYWNoZWROZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OkNhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcihSZWY8TmV0d29ya1Jlc291cmNl
TG9hZGVyPiYmIGxvYWRlcikKKyAgICA6IG1fZXhwaXJhdGlvblRpbWVyKCp0aGlzLCAmQ2FjaGVk
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpleHBpcmF0aW9uVGltZXJGaXJlZCkKKyAgICAsIG1fbG9h
ZGVyKFdURk1vdmUobG9hZGVyKSkKK3sKKyAgICBtX2V4cGlyYXRpb25UaW1lci5zdGFydE9uZVNo
b3QoY2FjaGVkTmV0d29ya1Jlc291cmNlTG9hZGVyTGlmZXRpbWUpOworfQorCitSZWZQdHI8TmV0
d29ya1Jlc291cmNlTG9hZGVyPiBOZXR3b3JrU2Vzc2lvbjo6Q2FjaGVkTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp0YWtlTG9hZGVyKCkKK3sKKyAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2xvYWRl
ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb246OkNhY2hlZE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZXhwaXJhdGlvblRpbWVyRmlyZWQoKQoreworICAgIGF1dG8gc2Vzc2lvbiA9
IG1fbG9hZGVyLT5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oKTsKKyAg
ICBBU1NFUlQoc2Vzc2lvbik7CisgICAgaWYgKCFzZXNzaW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIGxvYWRlciA9IHNlc3Npb24tPnRha2VMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NU
cmFuc2ZlcihtX2xvYWRlci0+aWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGxvYWRl
ciwgbG9hZGVyKTsKK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbjo6YWRkTG9hZGVyQXdhaXRpbmdX
ZWJQcm9jZXNzVHJhbnNmZXIoUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4mJiBsb2FkZXIpCit7
CisgICAgQVNTRVJUKG1fc2Vzc2lvbklEID09IGxvYWRlci0+c2Vzc2lvbklEKCkpOworICAgIGF1
dG8gaWRlbnRpZmllciA9IGxvYWRlci0+aWRlbnRpZmllcigpOworICAgIEFTU0VSVCghbV9sb2Fk
ZXJzQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIuY29udGFpbnMoaWRlbnRpZmllcikpOworICAg
IG1fbG9hZGVyc0F3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyLmFkZChpZGVudGlmaWVyLCBtYWtl
VW5pcXVlPENhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4oV1RGTW92ZShsb2FkZXIpKSk7Cit9
CisKK1JlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IE5ldHdvcmtTZXNzaW9uOjp0YWtlTG9h
ZGVyQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGNhY2hlZFJlc291cmNlTG9hZGVyID0gbV9sb2Fk
ZXJzQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXIudGFrZShpZGVudGlmaWVyKTsKKyAgICByZXR1
cm4gY2FjaGVkUmVzb3VyY2VMb2FkZXIgPyBjYWNoZWRSZXNvdXJjZUxvYWRlci0+dGFrZUxvYWRl
cigpIDogbnVsbHB0cjsKK30KKwogc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IE5ldHdv
cmtTZXNzaW9uOjpjcmVhdGVXZWJTb2NrZXRUYXNrKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIE5l
dHdvcmtTb2NrZXRDaGFubmVsJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3RyaW5nJiBwcm90b2NvbCkKIHsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCBhNDk3MThkZWZkYTIz
OTQ4NDZhZTg1YzRjNzg1MmFkYTE1NjQxMzQ5Li4zZDU4ODc3MjlkZTEzNDM3MGUxOWJhODRjOWQz
NDc1NGEwZTI5YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBcHBQcml2YWN5UmVwb3J0
LmgiCiAjaW5jbHVkZSAiTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCIKKyNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByZWZldGNoQ2FjaGUu
aCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaCIKICNp
bmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCkBAIC0xNDAsNiArMTQxLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkS2VwdEFsaXZlTG9hZChSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPiYmKTsK
ICAgICB2b2lkIHJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJik7CiAK
KyAgICB2b2lkIGFkZExvYWRlckF3YWl0aW5nV2ViUHJvY2Vzc1RyYW5zZmVyKFJlZjxOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI+JiYpOworICAgIFJlZlB0cjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+IHRh
a2VMb2FkZXJBd2FpdGluZ1dlYlByb2Nlc3NUcmFuc2ZlcihOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllcik7CisKICAgICBOZXR3b3JrQ2FjaGU6OkNhY2hlKiBjYWNoZSgpIHsgcmV0dXJuIG1f
Y2FjaGUuZ2V0KCk7IH0KIAogICAgIFByZWZldGNoQ2FjaGUmIHByZWZldGNoQ2FjaGUoKSB7IHJl
dHVybiBtX3ByZWZldGNoQ2FjaGU7IH0KQEAgLTIxMCw2ICsyMTQsMTggQEAgcHJvdGVjdGVkOgog
CiAgICAgSGFzaFNldDxSZWY8TmV0d29ya1Jlc291cmNlTG9hZGVyPj4gbV9rZXB0QWxpdmVMb2Fk
czsKIAorICAgIGNsYXNzIENhY2hlZE5ldHdvcmtSZXNvdXJjZUxvYWRlciB7CisgICAgICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgQ2Fj
aGVkTmV0d29ya1Jlc291cmNlTG9hZGVyKFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+JiYpOwor
ICAgICAgICBSZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiB0YWtlTG9hZGVyKCk7CisgICAg
cHJpdmF0ZToKKyAgICAgICAgdm9pZCBleHBpcmF0aW9uVGltZXJGaXJlZCgpOworICAgICAgICBX
ZWJDb3JlOjpUaW1lciBtX2V4cGlyYXRpb25UaW1lcjsKKyAgICAgICAgUmVmUHRyPE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcj4gbV9sb2FkZXI7CisgICAgfTsKKyAgICBIYXNoTWFwPE5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkTmV0d29ya1Jlc291cmNl
TG9hZGVyPj4gbV9sb2FkZXJzQXdhaXRpbmdXZWJQcm9jZXNzVHJhbnNmZXI7CisKICAgICBQcmVm
ZXRjaENhY2hlIG1fcHJlZmV0Y2hDYWNoZTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggYWY5NTFkNWEwYjU5ZjY5MTY3
YjcwNGZiNDJiMzBmMWI4MDAxZTI4Ny4uZDQ1NTkzNTI1M2Y3OWY1YzA0MzFkYmFlZWY5MjkzMzYw
NzA0ZWEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApAQCAt
NzgsNyArNzgsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OnNlbmRUb1NlcnZpY2VXb3JrZXIoTWVzcwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBNZXNzYWdlPiBib29sIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNlbmRUb0NsaWVudChNZXNz
YWdlJiYgbWVzc2FnZSkKIHsKLSAgICByZXR1cm4gbV9sb2FkZXIuY29ubmVjdGlvblRvV2ViUHJv
Y2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKHN0ZDo6Zm9yd2FyZDxNZXNzYWdlPihtZXNzYWdlKSwg
bV9sb2FkZXIuaWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gbV9sb2FkZXIuY29ubmVjdGlvblRv
V2ViUHJvY2VzcygpLmNvbm5lY3Rpb24oKS5zZW5kKHN0ZDo6Zm9yd2FyZDxNZXNzYWdlPihtZXNz
YWdlKSwgbV9sb2FkZXIuY29yZUlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6c3RhcnQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBzZXJ2aWNl
V29ya2VyQ29ubmVjdGlvbikKQEAgLTE2Miw2ICsxNjIsOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2Us
IGJvbwogCiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6
U2VydmljZVdvcmtlcik7CiAgICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxv
YWRlcjo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlIH0pOworICAgIGlmIChuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSkKKyAgICAgICAgbV9sb2FkZXIuc2V0UmVzcG9uc2UoV1RGTW92ZShyZXNw
b25zZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRh
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBlY2ExMWEzYTAw
YzIzNDM3NTA3ZTAxZDk2Y2IwZTQ5ODEwMTg2NGM0Li4zNDZmN2Q4ZDg0NTBiNmZiZDBlODA2NjFm
MTBkY2JlNTk1OTg1MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3Bw
CkBAIC01Nyw2ICs1Nyw3IEBAIHZvaWQgTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBsb2NrQmFja0ZvcndhcmRMaXN0Owog
ICAgIGVuY29kZXIgPDwgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogICAgIGVuY29k
ZXIgPDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBlbmNvZGVyIDw8IGV4aXN0
aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKICAgICBlbmNvZGVyIDw8
IHNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTsKIAogICAgIHBsYXRmb3JtRW5jb2RlKGVuY29kZXIp
OwpAQCAtMTM3LDYgKzEzOCw5IEBAIGJvb2wgTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIExvYWRQYXJhbWV0ZXJzJiBkYXRhKQogICAgIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YS5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmV4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuc2Vzc2lvbkhpc3RvcnlWaXNp
YmlsaXR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJh
bWV0ZXJzLmgKaW5kZXggZTVjNTdiMDQwNDljOGIyMGI2YmQ2MTFjZmM4ZjZiMDFmNzhjMDdmYy4u
MGMwNTQwYjA0NmU0YTFjYzRiMTkxNWRlYTEzNDBmOWRhMDY2Y2IxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Mb2FkUGFyYW1ldGVycy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCkBAIC03NCw2ICs3NSw3IEBA
IHN0cnVjdCBMb2FkUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNl
c3Npb25IaXN0b3J5VmlzaWJpbGl0eSBzZXNzaW9uSGlzdG9yeVZpc2liaWxpdHkgeyBXZWJDb3Jl
OjpTdWJzdGl0dXRlRGF0YTo6U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5OjpWaXNpYmxlIH07CiAg
ICAgU3RyaW5nIGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKICAgICBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluOworICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4
aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGRhdGFEZXRlY3Rpb25Db250
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNjcxYWRkNGFhMjdjZDE3ZWJiNjc5MGVmZTE2YTU1YTFj
MTQzNjZlYi4uYjFhYzNkNDM4YTJlYTA0NDBjZjIzY2FhNDc1ZDQ3OWY2OTlmN2I5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCkBAIC00NzUsNiArNDc1LDE3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
dGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJDb3JlOjpQCiAg
ICAgfQogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByZXBhcmVMb2FkRm9yV2ViUHJv
Y2Vzc1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNvdXJjZVByb2Nlc3NJZGVu
dGlmaWVyLCB1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIl
cCAtIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByZXBhcmVMb2FkRm9yV2ViUHJvY2Vzc1RyYW5zZmVy
OiBzb3VyY2VQcm9jZXNzSWRlbnRpZmllcjogJSIgUFJJdTY0ICIsIHJlc291cmNlTG9hZElkZW50
aWZpZXI6ICUiIFBSSXU2NCwgdGhpcywgc291cmNlUHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQo
KSwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CisgICAgaWYgKCFyZXNvdXJjZUxvYWRJZGVudGlm
aWVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpQcmVwYXJlTG9hZEZvcldlYlByb2Nlc3NUcmFuc2Zlcihzb3VyY2VQcm9jZXNzSWRlbnRpZmll
ciwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
K30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhS
ZXN1bHQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpT
aG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdl
YlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA1OGE4YThlOTRi
ZjNjZmU3YmY4Yzc3OTc5ODVjYzEyYmQzYWI2OGJlLi40ZTViYjQ1OWEzZDcyZTNkMWRkNzBiMmU1
ZWYyMmJmNDQwODE3MjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IkF1eGlsaWFyeVByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgiCisjaW5jbHVkZSAiTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNoZXIu
aCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90
dGxlckNsaWVudC5oIgpAQCAtMjE0LDYgKzIxNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlc3RQ
cm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVzdFByb2Nl
c3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVsYXllZFJlcGx5
JiYpOwogICAgIHZvaWQgdGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3Nl
cyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHByZXBhcmVMb2FkRm9y
V2ViUHJvY2Vzc1RyYW5zZmVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNvdXJjZVByb2Nl
c3NJZGVudGlmaWVyLCB1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+
KT4mJik7CisKICAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSBmaW5hbCB7IHJldHVy
biBtX3Rocm90dGxlcjsgfQogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5k
ZXggNDFjZDM1ZGJmYThkMGUzNGJkMWViNDlmNWQ1NzRmMmMzNzAwYmQ1OC4uNzVhNjVjNDMzNzA2
NTQ3ODAwZTYyMGFkMDVmNDU2YzM2MDQxZWZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMTcxLDkgKzE3MSw5IEBAIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgY29uc3QgSVBDOjpEYXRhCiAgICAgbV9wYWdlLmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFy
ZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIGRhdGEsIG1p
bWVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIHNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9s
aWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSwgc2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5KTsKIH0KIAotdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRh
dGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2Fk
UmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2ll
cywgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKQogewotICAgIFBST1ZJU0lPTkFM
UEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiIpOwor
ICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImxv
YWRSZXF1ZXN0OiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9
JSIgUFJJdTY0LCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUu
dmFsdWVfb3IoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsK
ICAgICBBU1NFUlQoc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkICE9IFdlYkNvcmU6OlNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8pOwogCiAgICAgLy8gSWYgdGhpcyBpcyBhIGNsaWVu
dC1zaWRlIHJlZGlyZWN0IGNvbnRpbnVpbmcgaW4gYSBuZXcgcHJvY2VzcywgdGhlbiB0aGUgbmV3
IHByb2Nlc3Mgd2lsbCBvdmVyd3JpdGUgdGhlIGZyb21JdGVtJ3MgVVJMLiBJbiB0aGlzIGNhc2Us
CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVl
c3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKICAgICBpZiAobmF2
aWdhdGlvbi5mcm9tSXRlbSgpICYmIG5hdmlnYXRpb24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpID09
IFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6OlllcykKICAgICAgICAgbmF2aWdhdGlvbi5m
cm9tSXRlbSgpLT5zZXRMYXN0UHJvY2Vzc0lkZW50aWZpZXIobV9wcm9jZXNzLT5jb3JlUHJvY2Vz
c0lkZW50aWZpZXIoKSk7CiAKLSAgICBtX3BhZ2UubG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNo
YXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgV1RGTW92
ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQs
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7
CisgICAgbV9wYWdlLmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNv
cHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIFdURk1vdmUocmVxdWVzdCksIG5hdmln
YXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
LCB1c2VyRGF0YSwgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+
JiYgd2Vic2l0ZVBvbGljaWVzKQpAQCAtMzMwLDEyICszMzAsMTIgQEAgdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKEZyYW1lSWRl
bnRpZmllcgogICAgIG1fcGFnZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNT
aGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUo
ZnJhbWVJbmZvKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25B
Y3Rpb25EYXRhKSwgV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mbyksIG9yaWdpbmF0aW5nUGFn
ZUlELCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJv
ZHkpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpLCB1c2VyRGF0YSwgbGlzdGVuZXJJRCk7CiB9
CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRs
ZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Ym9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJv
b2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRH
cm91cFN3aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBpZiAoIXZhbGlk
YXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wYWdlLmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCks
IG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5h
dmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRB
dHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4
dEdyb3VwU3dpdGNoLCBsaXN0ZW5lcklELCB1c2VyRGF0YSk7CisgICAgbV9wYWdlLmRlY2lkZVBv
bGljeUZvclJlc3BvbnNlU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBm
cmFtZUlELCBXVEZNb3ZlKGZyYW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVz
cG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0Fs
bG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBt
YWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgbGlzdGVuZXJJRCwgdXNlckRhdGEpOwogfQogCiB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJp
bmcsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggMjcxNGIyYTViNTQ3ZjI2NjdmY2I0NmZjZWYx
YjU3ODRmYmNmNTgxMC4uMGFiZWE5ZGE2YmJkMjAxMTRmZjU0YzFiOGQ3MWNhZmRiZjcyMzc2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlBvbGljeURlY2lzaW9u
LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRl
bnNpb24uaCIKQEAgLTEwNSw3ICsxMDYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZvaWQg
bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4s
IHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eSk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdChB
UEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJ
OjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0LCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9S
ZXN1bWUgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6
Ok5hdmlnYXRpb24mLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiwgUmVmUHRyPEFQSTo6V2Vic2l0
ZVBvbGljaWVzPiYmKTsKICAgICB2b2lkIGNhbmNlbCgpOwogCkBAIC0xMjQsNyArMTI1LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIHNlbmRNZXNzYWdlKFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+JiYs
IE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmKSBmaW5hbDsK
IAogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwg
RnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvLCBzdGQ6Om9wdGlvbmFsPFdlYlBh
Z2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlz
dGVuZXJJRCk7Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmpl
Y3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUs
IGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDY0X3QgbWFpblJlc291cmNl
TG9hZElkZW50aWZpZXIsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92
aXNpb25hbFVSTEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxT
dHJpbmcsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFVzZXJEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCA3NThkMWIzOThlYzc4NTIzZTM0YWFmNGFlNjQ1MTk5ODUxZTAzZTA0Li42ODk5ZTI4
OTI3NzViODRhN2U1YzA3ZmY1OWQzMTFiN2RiZmU1MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEzODEsNyArMTM4MSw3IEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgU2hvCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
cHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRp
b24mIG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0
aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6
b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9s
aWNpZXMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0
aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkKIHsKICAgICBBU1NFUlQo
IW1faXNDbG9zZWQpOwogCkBAIC0xNDA0LDYgKzE0MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2NlcwogICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tCYWNrRm9yd2FyZExpc3QgPSBuYXZpZ2F0aW9u
LmxvY2tCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsb2FkUGFyYW1ldGVycy5jbGllbnRSZWRpcmVj
dFNvdXJjZUZvckhpc3RvcnkgPSBuYXZpZ2F0aW9uLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlz
dG9yeSgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4g
PSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGxvYWRQYXJhbWV0ZXJzLmV4aXN0
aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSA9IGV4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKICAgICBtYXliZUluaXRpYWxpemVTYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKHByb2Nlc3MsIHVybCwgbV9wYWdlTG9hZFN0YXRlLnJlc291cmNl
RGlyZWN0b3J5VVJMKCksIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwog
CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhwcm9jZXNzLCBsb2FkUGFyYW1ldGVycyk7
CkBAIC0zNjIwLDcgKzM2MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9u
YWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogICAgIG1faW5z
cGVjdG9yQ29udHJvbGxlci0+ZGlkQ29tbWl0UHJvdmlzaW9uYWxQYWdlKG9sZFdlYlBhZ2VJRCwg
bV93ZWJQYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9u
SW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlxdWVfcHRy
PFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlLCBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIG5ld1Byb2Nlc3MsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQ
b2xpY2llcykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nl
c3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVk
UGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgbmV3UHJv
Y2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzLCBz
dGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdv
cmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpCiB7CiAgICAgV0VCUEFHRVBST1hZX1JF
TEVBU0VfTE9HKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IG5ld1By
b2Nlc3NQSUQ9JWksIGhhc1N1c3BlbmRlZFBhZ2U9JWkiLCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2UpOwogICAgIExPRyhMb2FkaW5nLCAiQ29udGludWlu
ZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcycgaW4gYSBuZXcgd2ViIHByb2Nlc3MiLCBuYXZp
Z2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmxvZ2dpbmdTdHJpbmcoKSk7CkBAIC0z
NjM3LDcgKzM2MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgIGJvb2wgaXNTZXJ2
ZXJTaWRlUmVkaXJlY3QgPSBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpZZXNBZnRlck5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiAmJiBu
YXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpOwogICAgIGJvb2wgc2hvdWxkQ2xv
c2VQcmV2aW91c1BhZ2VBZnRlckNvbW1pdCA9IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCA9
PSBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUmVzcG9uc2VQb2xpY3lEZWNp
c2lvbjsKICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG1ha2VVbmlxdWU8UHJvdmlzaW9uYWxQYWdl
UHJveHk+KCp0aGlzLCBXVEZNb3ZlKG5ld1Byb2Nlc3MpLCBXVEZNb3ZlKHN1c3BlbmRlZFBhZ2Up
LCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpc1NlcnZlclNpZGVSZWRpcmVjdCwgbmF2aWdh
dGlvbi5jdXJyZW50UmVxdWVzdCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBzaG91
bGRDbG9zZVByZXZpb3VzUGFnZUFmdGVyQ29tbWl0LCB3ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwot
ICAgIGF1dG8gY29udGludWF0aW9uID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYobmF2aWdhdGlvbiksIHNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgd2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpXSgp
IG11dGFibGUgeworICAgIGF1dG8gY29udGludWF0aW9uID0gW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgbmF2aWdhdGlvbiA9IG1ha2VSZWYobmF2aWdhdGlvbiksIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgd2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRl
UG9saWNpZXMpLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWVd
KCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvKiBpdGVtID0gbmF2aWdhdGlvbi0+dGFyZ2V0
SXRlbSgpKSB7CiAgICAgICAgICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBjb250
aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MgdG8gYmFjayBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0
ZW0tPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC0zNjYwLDEwICszNjYxLDExIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0
aW9uJiBuYXZpZ2F0aW9uLCBzCiAKICAgICAgICAgLy8gRklYTUU6IFdvcmsgb3V0IHRpbWluZyBv
ZiByZXNwb25kaW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVnYXRlLCBldGMKICAgICAgICAg
QVNTRVJUKCFuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLmlzRW1wdHkoKSk7CisgICAgICAg
IEFTU0VSVCghZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lIHx8
ICFuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKTsKICAgICAgICAgaWYgKGF1dG8mIHN1YnN0
aXR1dGVEYXRhID0gbmF2aWdhdGlvbi0+c3Vic3RpdHV0ZURhdGEoKSkKICAgICAgICAgICAgIG1f
cHJvdmlzaW9uYWxQYWdlLT5sb2FkRGF0YShuYXZpZ2F0aW9uLCB7IHN1YnN0aXR1dGVEYXRhLT5j
b250ZW50LmRhdGEoKSwgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuc2l6ZSgpIH0sIHN1YnN0aXR1
dGVEYXRhLT5NSU1FVHlwZSwgc3Vic3RpdHV0ZURhdGEtPmVuY29kaW5nLCBzdWJzdGl0dXRlRGF0
YS0+YmFzZVVSTCwgc3Vic3RpdHV0ZURhdGEtPnVzZXJEYXRhLmdldCgpLCBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgV1RGTW92ZSh3
ZWJzaXRlUG9saWNpZXNEYXRhKSwgc3Vic3RpdHV0ZURhdGEtPnNlc3Npb25IaXN0b3J5VmlzaWJp
bGl0eSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2Fk
UmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLT5jdXJyZW50
UmVxdWVzdCgpIH0sIG51bGxwdHIsIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEpKTsK
KyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBS
ZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpIH0sIG51bGxwdHIs
IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llc0RhdGEpLCBleGlzdGluZ05ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpOwogICAgIH07CiAgICAgaWYgKG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+c2hvdWxkUGF1c2VMb2FkaW5nKCptX3Byb3Zpc2lvbmFsUGFnZSkpCiAgICAgICAg
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2V0Q29udGludWVMb2FkaW5nQ2FsbGJhY2soKm1fcHJv
dmlzaW9uYWxQYWdlLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwpAQCAtNTYxNywxMiArNTYxOSwx
MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsCi0gICAgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1
bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCisgICAgYm9vbCB3YXNBbGxvd2VkQnlJ
bmplY3RlZEJ1bmRsZSwgYm9vbCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50
NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hh
cmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBmcmFtZUlELCBXVEZNb3ZlKGZy
YW1lSW5mbyksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNh
blNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdhc0FsbG93ZWRCeUluamVjdGVkQnVu
ZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCBsaXN0ZW5lcklELCB1c2VyRGF0
YSk7CisgICAgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYo
KSwgbV93ZWJQYWdlSUQsIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVJbmZvKSwgaWRlbnRpZmllciwg
bmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9h
ZEF0dHJpYnV0ZSwgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIG5lZWRzQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBsaXN0ZW5lcklELCB1
c2VyRGF0YSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdl
YlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2Fk
QXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHdl
YlBhZ2VJRCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2Fk
QXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJv
d3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlm
aWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNTYz
NSwxMyArNTYzNywxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0
ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKICAgICBhdXRvIG5hdmlnYXRp
b25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUlu
Zm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNw
b25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7CiAKLSAgICBhdXRvIGxp
c3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdlYlBhZ2VJRCwgZnJhbWVJRCwgbmVlZHNC
cm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdh
dGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksCisgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYo
ZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCB3ZWJQYWdlSUQsIGZyYW1lSUQsIG5lZWRzQnJvd3NpbmdDb250ZXh0R3Jv
dXBTd2l0Y2gsIG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBpZGVudGlmaWVyLCBsaXN0ZW5l
cklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwKICAgICAgICAgcHJvY2Vzcywg
bmF2aWdhdGlvblJlc3BvbnNlXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJz
aXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2lu
Z1dhcm5pbmcsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTogQXNz
ZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xpZW50
cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4KICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJy
b3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCi0gICAgICAgIGF1dG8gc2Vu
ZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbd2ViUGFnZUlE
LCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKV0gKGNvbnN0
IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7CisgICAgICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVj
aXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbd2ViUGFnZUlELCBmcmFtZUlELCBsaXN0
ZW5lcklELCBwcm9jZXNzXSAoY29uc3QgYXV0byYgcG9saWN5RGVjaXNpb24pIHsKICAgICAgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbiwgY3JlYXRlTmV0d29ya0V4
dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhwcm9jZXNzKSksIHdlYlBhZ2VJRCk7CiAgICAgICAg
IH0pOwogCkBAIC01NjQ5LDEyICs1NjUxLDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAg
ICAgICAgIGlmIChwb2xpY3lBY3Rpb24gPT0gUG9saWN5QWN0aW9uOjpVc2UgJiYgbmVlZHNCcm93
c2luZ0NvbnRleHRHcm91cFN3aXRjaCAmJiBuYXZpZ2F0aW9uKSB7CiAgICAgICAgICAgICBSZWdp
c3RyYWJsZURvbWFpbiByZXNwb25zZURvbWFpbiB7IG5hdmlnYXRpb25SZXNwb25zZS0+cmVzcG9u
c2UoKS51cmwoKSB9OwogICAgICAgICAgICAgLy8gQXZvaWQgcHJvY2Vzcy1zd2FwcGluZyBpbiBj
YXNlcyB3aGVyZSB0aGUgcHJvY2VzcyBvbmx5IGNvbnRhaW5zIGEgc2luZ2xlIHBhZ2UgYW5kIGlz
IG9yaWdpbi1jbGVhbi4KLSAgICAgICAgICAgIGlmICh0aGlzLT5wcm9jZXNzKCkucGFnZUNvdW50
KCkgPiAxIHx8ICh0aGlzLT5wcm9jZXNzKCkub3B0aW9uYWxSZWdpc3RyYWJsZURvbWFpbigpICYm
ICp0aGlzLT5wcm9jZXNzKCkub3B0aW9uYWxSZWdpc3RyYWJsZURvbWFpbigpICE9IHJlc3BvbnNl
RG9tYWluKSkgeworICAgICAgICAgICAgaWYgKHByb2Nlc3MtPnBhZ2VDb3VudCgpID4gMSB8fCAo
cHJvY2Vzcy0+b3B0aW9uYWxSZWdpc3RyYWJsZURvbWFpbigpICYmICpwcm9jZXNzLT5vcHRpb25h
bFJlZ2lzdHJhYmxlRG9tYWluKCkgIT0gcmVzcG9uc2VEb21haW4pKSB7CiAgICAgICAgICAgICAg
ICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlU2hhcmVkOiBQcm9jZXNzLXN3YXBwaW5nIGR1ZSB0byBDcm9zcy1PcmlnaW4t
T3BlbmVyLVBvbGljeSIpOwotICAgICAgICAgICAgICAgIHBvbGljeUFjdGlvbiA9IFBvbGljeUFj
dGlvbjo6SWdub3JlOwotICAgICAgICAgICAgICAgIGF1dG8gcHJvY2Vzc0Zvck5hdmlnYXRpb24g
PSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWluKHdl
YnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVzcG9uc2VEb21haW4pOwotICAgICAgICAgICAgICAg
IGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcygqbmF2aWdhdGlvbiwgbnVsbHB0ciwgV1RG
TW92ZShwcm9jZXNzRm9yTmF2aWdhdGlvbiksIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6
Ok5vLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllc0FmdGVyUmVzcG9uc2VQb2xpY3lE
ZWNpc2lvbiwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgd2lsbENvbnRpbnVlTG9hZEluTmV3
UHJvY2VzcyA9IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllczsKKyAgICAgICAgICAg
ICAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5wcmVwYXJlTG9hZEZvcldl
YlByb2Nlc3NUcmFuc2Zlcihwcm9jZXNzLT5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgbWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgcmVzcG9uc2VEb21haW4gPSBXVEZNb3ZlKHJlc3BvbnNlRG9tYWluKSwgbmF2
aWdhdGlvbiwgbmF2aWdhdGlvblJlc3BvbnNlID0gV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2Up
LCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlcildKGF1dG8gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllclRvUmVzdW1lKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byBwcm9jZXNzRm9yTmF2aWdhdGlvbiA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wcm9jZXNz
Rm9yUmVnaXN0cmFibGVEb21haW4od2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXNwb25zZURv
bWFpbik7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vz
cygqbmF2aWdhdGlvbiwgbnVsbHB0ciwgV1RGTW92ZShwcm9jZXNzRm9yTmF2aWdhdGlvbiksIFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQ6Olllc0FmdGVyUmVzcG9uc2VQb2xpY3lEZWNpc2lvbiwgbnVsbHB0ciwgZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKTsKKworICAgICAgICAgICAgICAgICAg
ICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9u
LmdldCgpLCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUoc2Vu
ZGVyKSwgeyB9LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpZZXMpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
ZWExYzIyZmI2YjExYmU5Njg5OTI4MjY0ZDNiZjNmYzg0NzEwOWI4ZC4uZmZmODViNTUxYWYwMzY5
MTBlNDEyZWFkNzEyYmVjYzEzYzkxYmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJNZWRpYUtleVN5c3RlbVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiTWVkaWFQbGF5YmFja1N0YXRl
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUERGUGx1Z2luSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlBhZ2VMb2FkU3RhdGUuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkQWNjZXNzSW50ZW50
LmgiCkBAIC0xNzQxLDEwICsxNzQyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5hdmlnYXRl
V2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdl
Yk5hdmlnYXRpb25EYXRhU3RvcmUmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
VVJMJiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mbywgc3RkOjpvcHRpb25hbDxX
ZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90
IGxpc3RlbmVySUQpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgRnJhbWVJbmZvRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUlu
amVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBGcmFtZUluZm9EYXRhJiYsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUs
IGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRl
eHRHcm91cFN3aXRjaCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVt
ZVRhc2tTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgbG9hZERhdGFXaXRoTmF2
aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBi
YXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIHN0
ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5
VmlzaWJpbGl0eSk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmln
YXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+LCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBzdGQ6Om51bGxv
cHQpOworICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwg
c3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gc3RkOjpudWxsb3B0LCBzdGQ6
Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQg
YmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBX
ZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBXZWJCYWNrRm9yd2FyZExpc3RDb3VudHMmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUsIEZyYW1lSW5mb0Rh
dGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0Zy
YW1lSW5mbywgc3RkOjpvcHRpb25hbDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBj
b25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jRGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQpA
QCAtMjA2MCw3ICsyMDYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0RhdGEmJiwg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAog
ICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIEZyYW1lSW5mb0Rh
dGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsCi0gICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBkb3dubG9hZEF0dHJpYnV0ZSwgYm9vbCB3YXNBbGxvd2VkQnlJbmplY3RlZEJ1bmRsZSwgYm9v
bCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNoLCB1aW50NjRfdCBsaXN0ZW5lcklELCBj
b25zdCBVc2VyRGF0YSYpOworICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0
ZWRCdW5kbGUsIGJvb2wgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgdWludDY0X3Qg
bWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVz
ZXJEYXRhJik7CiAgICAgdm9pZCB1bmFibGVUb0ltcGxlbWVudFBvbGljeShXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2VyRGF0
YSYpOwogICAgIHZvaWQgYmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBib29sLCBX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmKTsKIApAQCAtMjQ2Miw3ICsyNDYzLDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgcmVwb3J0UGFnZUxvYWRSZXN1bHQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYgPSB7IH0pOwogCi0gICAgdm9pZCBjb250aW51ZU5hdmlnYXRpb25Jbk5ld1By
b2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94
eT4mJiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBSZWZQdHI8QVBJOjpXZWJz
aXRlUG9saWNpZXM+JiYpOworICAgIHZvaWQgY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
KEFQSTo6TmF2aWdhdGlvbiYsIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYs
IFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBv
bGljaWVzPiYmLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBl
eGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUgPSBzdGQ6Om51bGxv
cHQpOwogCiAgICAgdm9pZCBzZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKGJvb2wpOwogICAgIHZvaWQg
dXBkYXRlRm9udEF0dHJpYnV0ZXNBZnRlckVkaXRvclN0YXRlQ2hhbmdlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmMzN2I4
ZmM2YWRmM2VhZDE4NzJkMTE1NWZmMGNiZDAwOWRjMGFmOS4uODE5NmIxMTlhOGYwMmU3YTAwNjA0
MDg1MDI4ZTkxYWUyMzE4NjUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTA3LDcgKzEwNyw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCi0gICAgRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVj
dCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgU3RyaW5nIGRvd25sb2FkQXR0cmlidXRl
LCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29sIG5lZWRzQnJvd3NpbmdDb250
ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpCisgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgU3RyaW5n
IGRvd25sb2FkQXR0cmlidXRlLCBib29sIHdhc0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBib29s
IG5lZWRzQnJvd3NpbmdDb250ZXh0R3JvdXBTd2l0Y2gsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxv
YWRJZGVudGlmaWVyLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKQogICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFt
ZUluZm8sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEg
b3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZVBy
b3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxp
c3RlbmVySUQpCiAgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3Qg
V2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgc3RkOjpvcHRp
b25hbDxXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKSAtPiAoc3RydWN0IFdlYktpdDo6UG9saWN5RGVjaXNpb24gUG9saWN5RGVjaXNp
b24pIFN5bmNocm9ub3VzCiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRh
IGZyYW1lSW5mbywgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRl
bnRpZmllciwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVO
YW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCmluZGV4IDZlOTY5MDcyNTRhNGJkMTU1ZjU4ZGYxMzc4NDhiNjA1MzE5ZjUxNTUuLjM0
OWVhMmM2MzY5MmFiODA4ZmM3M2Y1ZDg4NmEyYWE5ZTVjY2YyMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAg
LTQxMiw4ICs0MTIsMTEgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJv
bU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKIAogICAgIEFTU0VSVCgo
bG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQpIHx8
IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlh
bFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMpOwogCi0gICAgV0VCTE9BREVS
U1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2No
ZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNfY2Fz
dDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7Ci0gICAgaWYgKCFX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgMCkpIHsKKyAgICBzdGQ6Om9w
dGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CisgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLmlzTWFp
bkZyYW1lTmF2aWdhdGlvbikKKyAgICAgICAgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lID0gc3RkOjpleGNoYW5nZShtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNl
TG9hZElkZW50aWZpZXJUb1Jlc3VtZSwgc3RkOjpudWxsb3B0KTsKKyAgICBXRUJMT0FERVJTVFJB
VEVHWV9SRUxFQVNFX0xPRygic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVs
ZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkLCBleGlzdGluZ05ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0ICIpIiwgc3RhdGljX2Nhc3Q8
aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGV4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZS52YWx1ZV9vcihOZXR3b3JrUmVzb3VyY2VM
b2FkSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCkpOworICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291
cmNlTG9hZChsb2FkUGFyYW1ldGVycywgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllclRvUmVzdW1lKSwgMCkpIHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9M
T0dfRVJST1IoInNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGgg
dGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5
IGZhaWxlZCB0byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVj
YXVzZSBpdCBoYWQgY3Jhc2hlZC4KICAgICAgICAgLy8gVGhpcyBsb2FkIHdpbGwgbmV2ZXIgc3Vj
Y2VlZCBzbyB3ZSB3aWxsIHNjaGVkdWxlIGl0IHRvIGZhaWwgYXN5bmNocm9ub3VzbHkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
aAppbmRleCBjYTIzNDk5NTg2NjZhODAxYjBlMGE2YmQ3NjdkYmJjY2NmYjcxNmFlLi4yNGI2OTM3
OTAxN2Q1NDM5YmJiMWUxYjNkMWE5NWM4Yjc5MjM2MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Mb2FkZXJTdHJhdGVneS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5o
PgpAQCAtOTEsNiArOTIsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJh
dGVMb2FkSWRlbnRpZmllcigpOwogCisgICAgdm9pZCBzZXRFeGlzdGluZ05ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUoc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1l
KSB7IG1fZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gZXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lOyB9CisKIHByaXZhdGU6
CiAgICAgdm9pZCBzY2hlZHVsZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZSosIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCk7CiAgICAgdm9pZCBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRMb2FkKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyJik7CkBAIC0xMzMsNiArMTM2LDcgQEAgcHJpdmF0ZToKICAgICBIYXNo
TWFwPHVuc2lnbmVkIGxvbmcsIFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXI+IG1fcGluZ0xvYWRD
b21wbGV0aW9uSGFuZGxlcnM7CiAgICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBQcmVjb25uZWN0
Q29tcGxldGlvbkhhbmRsZXI+IG1fcHJlY29ubmVjdENvbXBsZXRpb25IYW5kbGVyczsKICAgICBW
ZWN0b3I8RnVuY3Rpb248dm9pZChib29sKT4+IG1fb25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcnM7
CisgICAgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gbV9leGlz
dGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU7CiAgICAgYm9vbCBtX2lz
T25MaW5lIHsgdHJ1ZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5k
ZXggNzIzMTVhNTc1ODczNWVkNWVmMTk2NjYyOTFlNjEwZDM4Y2MwZTllMS4uYzAzNjA5ZDNhYjky
NDFiYjgxMmEzMzQwOTk4MjQ1ZWQ1ODkwYTY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCkBAIC05MSw2ICs5MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9s
bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVUlFdmVudFdpdGhLZXlTdGF0ZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvV2lkZ2V0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgpA
QCAtODQ4LDExICs4NDksMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnMKICAgICBhdXRvKiBj
b3JlRnJhbWUgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKTsKICAgICBhdXRvKiBwb2xpY3lEb2N1bWVu
dExvYWRlciA9IGNvcmVGcmFtZSA/IGNvcmVGcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcigpIDogbnVsbHB0cjsKICAgICBhdXRvIG5hdmlnYXRpb25JRCA9IHBvbGljeURv
Y3VtZW50TG9hZGVyID8gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqcG9saWN5RG9j
dW1lbnRMb2FkZXIpLm5hdmlnYXRpb25JRCgpIDogMDsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGJlIHVzaW5nIGEgc3Ryb25nbHktdHlwZWQgaWRlbnRpZmllciBmb3IgbWFpblJlc291cmNlTG9h
ZElkZW50aWZpZXIuCisgICAgYXV0byBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciA9IHBvbGlj
eURvY3VtZW50TG9hZGVyICYmIHBvbGljeURvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2Fk
ZXIoKSA/IHBvbGljeURvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VMb2FkZXIoKS0+aWRlbnRp
ZmllcigpIDogMDsKIAogICAgIGJvb2wgd2FzQWxsb3dlZEJ5SW5qZWN0ZWRCdW5kbGUgPSBwb2xp
Y3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlOwogICAgIGF1dG8gcHJvdGVjdG9yID0g
bV9mcmFtZS5jb3B5UmVmKCk7CiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNl
dFVwUG9saWN5TGlzdGVuZXIoaWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1l
OjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7Ci0gICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUtPmZyYW1l
SUQoKSwgbV9mcmFtZS0+aW5mbygpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNl
LCByZXF1ZXN0LCBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0cmlidXRlLCB3YXNBbGxvd2Vk
QnlJbmplY3RlZEJ1bmRsZSwgbmVlZHNCcm93c2luZ0NvbnRleHRHcm91cFN3aXRjaCwgbGlzdGVu
ZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1Rv
SGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSkpIHsKKyAgICBpZiAoIXdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9mcmFt
ZS0+ZnJhbWVJRCgpLCBtX2ZyYW1lLT5pbmZvKCksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwg
cmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dSZXNwb25zZSwgZG93bmxvYWRBdHRyaWJ1dGUsIHdh
c0FsbG93ZWRCeUluamVjdGVkQnVuZGxlLCBuZWVkc0Jyb3dzaW5nQ29udGV4dEdyb3VwU3dpdGNo
LCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQo
KSkuZ2V0KCkpKSkpIHsKICAgICAgICAgV0VCRlJBTUVMT0FERVJDTElFTlRfUkVMRUFTRV9MT0co
TmV0d29yaywgImRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2U6IGlnbm9yaW5nIGJlY2F1
c2UgV2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSBmYWlsZWQiKTsKICAgICAg
ICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURl
Y2lzaW9uIHsgaWRlbnRpZmllciwgc3RkOjpudWxsb3B0LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwg
MCwgeyB9LCB7IH0gfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCAyM2U2MjRiOGUwMjA5NDYxYTY0OWU5YjM5OWUxNGZhYWI4NjE2
Mzg4Li43MWM5ZDUzMWFiMWFjOWY0NTM1YzZiYjM1OWU4NjJkNzBlYmI5MDNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjYyLDYgKzI2Miw3
IEBACiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtMTY4OSw2ICsxNjkwLDExIEBA
IHZvaWQgV2ViUGFnZTo6bG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVy
cykKICAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CiAjZW5kaWYK
IAorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2V0RXhp
c3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKGxvYWRQYXJhbWV0ZXJz
LmV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSk7CisgICAgYXV0
byByZXN1bWluZ0xvYWRTY29wZSA9IG1ha2VTY29wZUV4aXQoW10geworICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnNldEV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZShzdGQ6Om51bGxvcHQpOworICAgIH0pOworCiAg
ICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXI7CiAKICAgICBtX3BlbmRpbmdO
YXZpZ2F0aW9uSUQgPSBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMTQzYTE4MzgyYWEwMWUzM2QwMzgy
ZDVkNzkyMjc1N2NiMWFmN2I3Ny4uZmU2ZWFiMWFkYmE2YzZhOWFiMTMyMmE5NmVjZjI1NThmMTAz
ZTJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJPcHRpb25hbENhbGxi
YWNrSUQuaCIKICNpbmNsdWRlICJQREZQbHVnaW5JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGx1
Z2luLmgiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMjkzNDFiMzM1NjlkZjc0MTAzYjkwYzZhMWU1MDY3Y2IzOGFhMTdkYi4u
MWJhOGM5ZDk1Y2ViN2UxMDJhYjBiNmU2NjUwMWRiOTdlYWMxNTNlNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDIxLTA4LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dLMl0gUmV1c2UgdGhlIHNhbWUgbmV0d29yayBsb2FkIHdoZW4gcHJvY2Vzcy1zd2Fw
cGluZyBvbiByZXNvdXJjZSByZXNwb25zZSBkdWUgdG8gQ09PUAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NDY1CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84MjMwNzYxMT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgor
CisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIGh0dHAvd3B0
L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5L3Jlc291cmNlcy9zaW5nbGUtcmVxdWVzdC10by1z
ZXJ2ZXItcG9wdXAucHk6IEFkZGVkLgorICAgICAgICAobWFpbik6CisgICAgICAgICogaHR0cC93
cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5l
ci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8tc2VydmVyLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA4
LTI3ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YWtlIEFYQ29yZU9iamVjdDo6c2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZSB3b3JrIGlu
IG5hdGl2ZSB0ZXh0IGNvbnRyb2xzIG9uIE1hY09TLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvcmVzb3VyY2VzL3NpbmdsZS1yZXF1
ZXN0LXRvLXNlcnZlci1wb3B1cC5weSBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdp
bi1vcGVuZXItcG9saWN5L3Jlc291cmNlcy9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXItcG9wdXAu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDQyYjNiZGNiMjlmNzhhMTZkMDQ1Y2YzMDkyNDg2MmUyODZlOGEzMAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVu
ZXItcG9saWN5L3Jlc291cmNlcy9zaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXItcG9wdXAucHkKQEAg
LTAsMCArMSwxMyBAQAorZGVmIG1haW4ocmVxdWVzdCwgcmVzcG9uc2UpOgorICAgIHRva2VuID0g
cmVxdWVzdC5HRVRbYid0b2tlbiddCisgICAgdmFsdWUgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50
YWtlKHRva2VuKQorICAgIGFscmVhZHlfbG9hZGVkX3N0cmluZyA9ICJub3RfYWxyZWFkeV9sb2Fk
ZWQiCisgICAgaWYgdmFsdWUgaXMgbm90IE5vbmU6CisgICAgICAgIGFscmVhZHlfbG9hZGVkX3N0
cmluZyA9ICJhbHJlYWR5X2xvYWRlZCIKKyAgICBlbHNlOgorICAgICAgICByZXF1ZXN0LnNlcnZl
ci5zdGFzaC5wdXQodG9rZW4sIFRydWUpCisgICAgcmV0dXJuIChbCisgICAgICAgIChiJ0NhY2hl
LUNvbnRyb2wnLCBiJ25vLXN0b3JlJyksCisgICAgICAgIChiJ0Nyb3NzLU9yaWdpbi1PcGVuZXIt
UG9saWN5JywgYidzYW1lLW9yaWdpbicpLAorICAgICAgICAoYidDb250ZW50LVR5cGUnLCBiJ3Rl
eHQvaHRtbCcpXSwKKyAgICAgICAgdSc8c2NyaXB0PnZhciBiYyA9IG5ldyBCcm9hZGNhc3RDaGFu
bmVsKCJzaW5nbGUtcmVxdWVzdC10by1zZXJ2ZXIiKTsgYmMucG9zdE1lc3NhZ2UoIiVzIik7PC9z
Y3JpcHQ+XG4nICUgYWxyZWFkeV9sb2FkZWRfc3RyaW5nKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvY3Jvc3Mtb3JpZ2luLW9wZW5lci1wb2xpY3kvc2luZ2xlLXJlcXVlc3QtdG8t
c2VydmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1v
cGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjY1NzdlY2U5ZjViN2JhZmJhZjZkNGQyMjlmMGYzMDlkNjZhZDA0MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1vcGVuZXItcG9saWN5
L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisK
K1BBU1MgTWFrZSBzdXJlIHdlIG1ha2UgYSBzaW5nbGUgcmVxdWVzdCB0byB0aGUgSFRUUCBzZXJ2
ZXIgd2hlbiBzd2l0Y2hpbmcgYnJvd3NpbmcgY29udGV4dCBncm91cAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUtcmVx
dWVzdC10by1zZXJ2ZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Nyb3NzLW9yaWdpbi1v
cGVuZXItcG9saWN5L3NpbmdsZS1yZXF1ZXN0LXRvLXNlcnZlci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYy
MmYwZGRlNjhlZTE3ZTg1NTBiOTc5YjNiMjM1OGExZmE1YTc3YzUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jcm9zcy1vcmlnaW4tb3BlbmVyLXBvbGljeS9zaW5nbGUt
cmVxdWVzdC10by1zZXJ2ZXIuaHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPHNjcmlwdCBzcmM9L3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2NvbW1vbi91dGlscy5q
cyI+PC9zY3JpcHQKKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2FzeW5jX3Rlc3QoKHQpID0+
IHsKKyAgICB2YXIgYmMgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbCgnc2luZ2xlLXJlcXVlc3QtdG8t
c2VydmVyJyk7CisgICAgbGV0IHcgPSBvcGVuKCJyZXNvdXJjZXMvc2luZ2xlLXJlcXVlc3QtdG8t
c2VydmVyLXBvcHVwLnB5P3Rva2VuPSIgKyB0b2tlbigpKTsKKyAgICBiYy5vbm1lc3NhZ2UgPSB0
LnN0ZXBfZnVuYygoZXZlbnQpID0+IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhldmVudC5kYXRh
LCAibm90X2FscmVhZHlfbG9hZGVkIik7CisgICAgICAgIGFzc2VydF90cnVlKHcuY2xvc2VkLCAi
U2hvdWxkIHN3aXRjaCBicm93c2luZyBjb250ZXh0IGdyb3VwIik7CisgICAgICAgIHQuZG9uZSgp
OworICAgIH0pOworfSwgIk1ha2Ugc3VyZSB3ZSBtYWtlIGEgc2luZ2xlIHJlcXVlc3QgdG8gdGhl
IEhUVFAgc2VydmVyIHdoZW4gc3dpdGNoaW5nIGJyb3dzaW5nIGNvbnRleHQgZ3JvdXAiKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>