<?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>237085</bug_id>
          
          <creation_ts>2022-02-23 07:46:26 -0800</creation_ts>
          <short_desc>Share more code between service and shared workers for context connection establishment</short_desc>
          <delta_ts>2022-02-23 12:14:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=236874</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1845135</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-23 07:46:26 -0800</bug_when>
    <thetext>Share more code between service and shared workers for context connection establishment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845141</commentid>
    <comment_count>1</comment_count>
      <attachid>452981</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-23 08:02:32 -0800</bug_when>
    <thetext>Created attachment 452981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845144</commentid>
    <comment_count>2</comment_count>
      <attachid>452981</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-23 08:24:22 -0800</bug_when>
    <thetext>Comment on attachment 452981
Patch

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

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.messages.in:59
&gt; +    EstablishRemoteWorkerContextConnectionToNetworkProcess(enum:uint32_t WebKit::RemoteWorkerType workerType, WebCore::RegistrableDomain registrableDomain, std::optional&lt;WebCore::ProcessIdentifier&gt; requestingProcessIdentifier, std::optional&lt;WebCore::ScriptExecutionContextIdentifier&gt; serviceWorkerPageIdentifier, PAL::SessionID sessionID) -&gt; () Async

Why is it a uint32_t, should it not be either a bool or maybe a uint8_t?

&gt; Source/WebKit/UIProcess/WebProcessPool.cpp:558
&gt; +    bool shouldUseSeparateRemoteWorkerProcess = workerType == RemoteWorkerType::ServiceWorker &amp;&amp; s_useSeparateServiceWorkerProcess;

We might want to use s_useSeparateServiceWorkerProcess for shared workers as well for testing things like crash of shared worker process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845159</commentid>
    <comment_count>3</comment_count>
      <attachid>452985</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-23 08:56:04 -0800</bug_when>
    <thetext>Created attachment 452985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845161</commentid>
    <comment_count>4</comment_count>
      <attachid>452986</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-23 08:59:12 -0800</bug_when>
    <thetext>Created attachment 452986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845184</commentid>
    <comment_count>5</comment_count>
      <attachid>452994</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-23 09:50:25 -0800</bug_when>
    <thetext>Created attachment 452994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845260</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-23 12:13:36 -0800</bug_when>
    <thetext>Committed r290387 (247702@main): &lt;https://commits.webkit.org/247702@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452994.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845261</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-23 12:14:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/89370920&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452981</attachid>
            <date>2022-02-23 08:02:32 -0800</date>
            <delta_ts>2022-02-23 08:56:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237085-20220223080231.patch</filename>
            <type>text/plain</type>
            <size>45411</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlhZTMyMDQ5OWQxMWMzNDJk
NTNjOTRiZmNmNGEyMzY5NjMwNzAyNDUuLmRjMzZmNjkzYzA3MzRmMDdjNTdjZGMzZTFmYzQ3YTUz
MDdkOWRkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjItMDItMjMgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTaGFyZSBtb3JlIGNvZGUgYmV0d2Vl
biBzZXJ2aWNlIGFuZCBzaGFyZWQgd29ya2VycyBmb3IgY29udGV4dCBjb25uZWN0aW9uIGVzdGFi
bGlzaG1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzA4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNoYXJlIG1vcmUgY29kZSBiZXR3ZWVuIHNlcnZpY2UgYW5kIHNoYXJlZCB3b3JrZXJzIGZvciBj
b250ZXh0IGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudC4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246
OmVuc3VyZVNXU2VydmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpm
aXJzdFNoYXJlZFdvcmtlck9iamVjdFByb2Nlc3MgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdv
cmtlclNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3Jl
YXRlQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hh
cmVkV29ya2VyU2VydmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcik6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFi
bGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojpl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorCiAyMDIyLTAyLTIzICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xpYl0gQWRkIG1pc3NpbmcgV2ViUGFnZS5o
IGluY2x1c2lvbiBpbiBXZWJQcm9jZXNzR0xpYi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZDJlMGQ2MWY5ZTJjODk1Y2E3NjY1
ODdmZTllMDJlYTYyYmJkZjY0OS4uNmRkYzcyMGY3MDdhMzc2MjEwMWRmOTI2YmU5NDMwODYzZjUz
Y2I0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dENsaWVudEltcGwuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIu
aCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVdvcmtlclR5cGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmgiCiAjaW5jbHVkZSAiV2ViSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCkBAIC02MjgsNyArNjI5LDcgQEAgU1dTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVT
V1NlcnZlcigpCiAgICAgICAgICAgICBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6c3Rh
cnQodGhpcywgV1RGTW92ZShqb2JEYXRhKSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0sIFt0aGlzXShh
dXRvJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4g
cmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIGF1dG8mJiBj
b21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICAgICAgQVNTRVJUKCFyZWdpc3RyYWJsZURvbWFp
bi5pc0VtcHR5KCkpOwotICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4sIHJlcXVlc3RpbmdQcm9jZXNzSWRlbnRpZmllciwg
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBtX3Nlc3Npb25JRCB9LCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgMCk7CisgICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OkVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyB7IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHJlZ2lzdHJhYmxl
RG9tYWluLCByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgbV9zZXNzaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOwog
ICAgICAgICB9LCBXVEZNb3ZlKGFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKSk7CiAgICAgfQogICAg
IHJldHVybiAqbV9zd1NlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCmluZGV4IDQ5NTAx
NWJmMzBiZmM4MzIwZmFlZDhjODI2MDhlMjJmNTAwNWQwZjguLjE1ODgyYTNkNDYzYjNlYjk5ODli
YzRmYTQxZTU1OGRmYjIxOWI1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcApAQCAtOTgs
NiArOTgsMTMgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXI6OmZvckVhY2hTaGFyZWRXb3JrZXJPYmpl
Y3QoY29uc3QgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpTaGEKICAgICAgICAgYXBwbHkoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciwgcG9ydCk7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXI+IFdlYlNoYXJlZFdvcmtlcjo6Zmlyc3RTaGFyZWRXb3JrZXJP
YmplY3RQcm9jZXNzKCkgY29uc3QKK3sKKyAgICBpZiAobV9zaGFyZWRXb3JrZXJPYmplY3RzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gbV9zaGFy
ZWRXb3JrZXJPYmplY3RzLmJlZ2luKCktPmtleS5wcm9jZXNzSWRlbnRpZmllcigpOworfQorCiBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXI6
OmNvbnRleHRDb25uZWN0aW9uKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zZXJ2ZXIuY29udGV4
dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNo
YXJlZFdvcmtlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyLmgKaW5kZXggOTNiYjU2NjgyZGExOTJjZjM0NzdhZTA1MTk4MjQ0NmM0
MDAzY2MzYS4uNzUzNTI0ZjY0YzJiMmNkZTZhZmI5ZWFlOGEwNTQ3ZTFlYTQ5NzY1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVk
V29ya2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyLmgKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVt
b3ZlU2hhcmVkV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpOwogICAgIHVuc2lnbmVkIHNoYXJlZFdvcmtlck9iamVjdHNDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCk7IH0KICAgICB2b2lkIGZvckVhY2hTaGFy
ZWRXb3JrZXJPYmplY3QoY29uc3QgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Jik+
JikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4g
Zmlyc3RTaGFyZWRXb3JrZXJPYmplY3RQcm9jZXNzKCkgY29uc3Q7CiAKICAgICB2b2lkIGRpZENy
ZWF0ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKaW5kZXggMjQ2
ZTgzOTdhNDcyZmE3NTg1ODYwMzM4MjVlNDAwYzBkZjBiZmY3Zi4uMjYwN2Y3MGNjMjljNTdiM2I3
N2UzYTljZTdkZjM1M2IyZmIwNTM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2
ZXIuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3Jr
U2Vzc2lvbi5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlclR5cGUuaCIKICNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXIuaCIKICNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IgpAQCAtMTEyLDcgKzExMyw3IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5p
c2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdChXZWJTaGFyZWRXb3JrZXImCiAgICAgICAgIGNv
bnRleHRDb25uZWN0aW9uLT5sYXVuY2hTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihzaGFyZWRXb3Jr
ZXIucmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oc2hh
cmVkV29ya2VyLnJlZ2lzdHJhYmxlRG9tYWluKCksIHNoYXJlZFdvcmtlci5maXJzdFNoYXJlZFdv
cmtlck9iamVjdFByb2Nlc3MoKSk7CiB9CiAKIGJvb2wgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpu
ZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdApAQCAtMTI0LDcgKzEy
NSw3IEBAIGJvb2wgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpuZWVkc0NvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3Qg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQordm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyKQogewog
ICAgIEFTU0VSVCghbV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21h
aW4pKTsKICAgICBpZiAobV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5z
KHJlZ2lzdHJhYmxlRG9tYWluKSkKQEAgLTEzMyw3ICsxMzQsNyBAQCB2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEbwogICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNl
cnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24gd2lsbCBjcmVhdGUgYSBjb25uZWN0aW9uIik7
CiAKICAgICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuYWRkKHJlZ2lzdHJhYmxl
RG9tYWluKTsKLSAgICBtX3Nlc3Npb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBtX3Nlc3Npb24uc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdl
YWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHJlZ2lzdHJhYmxlRG9tYWluXSB7CisgICAgbV9z
ZXNzaW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpFc3RhYmxpc2hSZW1v
dGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBSZW1vdGVXb3JrZXJU
eXBlOjpTaGFyZWRXb3JrZXIsIHJlZ2lzdHJhYmxlRG9tYWluLCByZXF1ZXN0aW5nUHJvY2Vzc0lk
ZW50aWZpZXIsIHN0ZDo6bnVsbG9wdCwgbV9zZXNzaW9uLnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZWdpc3RyYWJsZURvbWFpbiwgcmVxdWVzdGlu
Z1Byb2Nlc3NJZGVudGlmaWVyXSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTE0NSw3ICsxNDYsNyBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
cjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEbwog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQotICAgICAgICAgICAgY3Jl
YXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgICAgICAgICAgY3Jl
YXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4sIHJlcXVlc3RpbmdQcm9jZXNz
SWRlbnRpZmllcik7CiAgICAgfSwgMCk7CiB9CiAKQEAgLTE3MCw4ICsxNzEsMTAgQEAgdm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGUKIAogICAgIG1fY29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdp
c3RyYWJsZURvbWFpbik7CiAKLSAgICBpZiAoY29udGV4dENvbm5lY3Rpb24uaGFzU2hhcmVkV29y
a2VyT2JqZWN0cygpKQotICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJs
ZURvbWFpbik7CisgICAgaWYgKGF1dG8mIHNoYXJlZFdvcmtlck9iamVjdHMgPSBjb250ZXh0Q29u
bmVjdGlvbi5zaGFyZWRXb3JrZXJPYmplY3RzKCk7ICFzaGFyZWRXb3JrZXJPYmplY3RzLmlzRW1w
dHkoKSkgeworICAgICAgICBhdXRvIHJlcXVlc3RpbmdQcm9jZXNzSWRlbnRpZmllciA9IHNoYXJl
ZFdvcmtlck9iamVjdHMuYmVnaW4oKS0+a2V5OworICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVj
dGlvbihyZWdpc3RyYWJsZURvbWFpbiwgcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyKTsKKyAg
ICB9CiB9CiAKIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNy
ZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENv
bm5lY3Rpb24pCkBAIC0yMTUsNyArMjE4LDcgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OnNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYKIAog
ICAgIGNvbnRleHRDb25uZWN0aW9uLT50ZXJtaW5hdGVTaGFyZWRXb3JrZXIoKnNoYXJlZFdvcmtl
cik7CiAKLSAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uLT5oYXNTaGFyZWRXb3JrZXJPYmplY3Rz
KCkpCisgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuaXNF
bXB0eSgpKQogICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbklzTm9Mb25nZXJO
ZWVkZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaAppbmRleCAzYTMz
MmVhMTAzZDA0ZmQzZjU0MjMyYjA2ZTliOWE3MTU0ODAyYjk1Li4xOGIzMTBlNTVhNmNhNmU1Yzlm
NjRmNzFjNTRhNTgwM2U3M2EwNmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIu
aApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVDb25uZWN0aW9uKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNyZWF0ZUNv
bnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJik7CisgICAg
dm9pZCBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IHJlcXVlc3Rp
bmdQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgYm9vbCBuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9y
UmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25z
dDsKICAgICB2b2lkIGNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CiAgICAgdm9pZCBkaWRGaW5pc2hGZXRjaGluZ1NoYXJl
ZFdvcmtlclNjcmlwdChXZWJTaGFyZWRXb3JrZXImLCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3Vs
dCYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaAppbmRleCA4NDkwNzc4NGVkOWMzNGY4ZjY4ZDFmZTQwNmMyOWJl
NWI2YjE0NTYxLi44NDE4NzM1NzVjOTMwNzNmOThmYmFjOGUyM2RkNzRmZDU3OWE0ZjRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlcm1pbmF0
ZVNoYXJlZFdvcmtlcihjb25zdCBXZWJTaGFyZWRXb3JrZXImKTsKIAogICAgIHZvaWQgY29ubmVj
dGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKLSAgICBib29sIGhhc1NoYXJlZFdvcmtlck9iamVjdHMo
KSBjb25zdCB7IHJldHVybiAhbV9zaGFyZWRXb3JrZXJPYmplY3RzLmlzRW1wdHkoKTsgfQorICAg
IGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIEhhc2hTZXQ8V2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj4+JiBzaGFyZWRXb3JrZXJPYmplY3RzKCkg
Y29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJPYmplY3RzOyB9CiAKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA2YjZhMDhiYWM2MDYwYzQwMTQ0ZDFmY2EwYjRjZmQzZGFlZTUzYWU3
Li5iNGFhNWZhMWZkNTkwZjkyZDBlODBiMzdkODNiMmUyY2Y3NDcyODk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTE0MTYsMTEgKzE0MTYsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZERl
c3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudAogfQogI2Vu
ZGlmCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIFdlYlByb2Nlc3NQ
b29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVyUmVt
b3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBzaGFyZWRXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBhdXRv
KiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcih3ZWJQ
cm9jZXNzSWRlbnRpZmllcik7CkBAIC0xNDQ3LDEyICsxNDQyLDEzIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6cmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChS
ZW1vdGVXb3JrCiAgICAgICAgIHByb2Nlc3MtPmRpc2FibGVSZW1vdGVXb3JrZXJzKHdvcmtlclR5
cGUpOwogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IHJlcXVlc3RpbmdQcm9jZXNzSWRlbnRpZmll
ciwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6ZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgUmVnaXN0cmFibGVEb21haW4mJiBy
ZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
cj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pLCByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
Zmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2ViUHJv
Y2Vzc1Bvb2w6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcyh3b3JrZXJUeXBlLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcmVxdWVzdGlu
Z1Byb2Nlc3NJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25J
RCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN0YXJ0U2VydmljZVdvcmtlckJh
Y2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlclByb2Nl
c3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJQ
cm9jZXNzSWRlbnRpZmllcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDE2MmYwMjFjNDI1M2Q0YmEyNTlmM2Vm
NGExYTczOWVjNDQ2YTlmMmMuLjBlOTlkYTkzZTcyODg2MDdlNjgxMjEwZDMxNDI1ZTg3YTUxYTAz
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCkBAIC0zMzMsMTIgKzMzMywxMSBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IHJlcXVl
c3RpbmdQcm9jZXNzSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN0YXJ0
U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCBlbmRTZXJ2aWNl
V29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2Vy
dmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICNlbmRpZgogICAgIHZvaWQgcmVtb3RlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChSZW1vdGVXb3JrZXJUeXBlLCBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBlc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoUmVtb3RlV29ya2VyVHlwZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVnaXN0ZXJSZW1vdGVXb3JrZXJD
bGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzaGFyZWRX
b3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyUmVtb3RlV29ya2Vy
Q2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2hhcmVk
V29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggNTA4ZWRkODhmZjQ4ZDQwNGU0MmIzODAxZWI2NzNkYzRiYWNiMTBjNS4uNmU1MmMyZWJj
MzQ4ODQzODkyZDM5MDhmNGY0MjgwZTFkNGE3NDAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgpAQCAtNTMsMTEgKzUzLDEwIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJv
eHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFp
biwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1By
b2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBTdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc0lkZW50aWZpZXIpCiAgICAgRW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5n
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmll
cikKICNlbmRpZgotICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFp
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIEVzdGFibGlzaFJl
bW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhlbnVtOnVpbnQzMl90
IFdlYktpdDo6UmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBS
ZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKGVudW06dWludDMyX3Qg
V2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgUmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNz
KGVudW06dWludDMyX3QgV2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciByZW1vdGVXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgVW5yZWdp
c3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoZW51bTp1aW50MzJfdCBXZWJLaXQ6OlJlbW90
ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHJlbW90ZVdvcmtlclBy
b2Nlc3NJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCAzZDg2NzhjNWQ4NjUxZWFjNDUwMzc3NmQxZmEyNDhiODk5N2FkYmFhLi4xMTQy
ZWI1ZGIzNjUyOWFmMzk0YWU4ZWNhYWYzYTE0YTUyMGQ1MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01MjUsMjQgKzUyNSwyMyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpnZXRXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94
eSYgd2ViUHJvY2Vzc1BybwogCiBib29sIFdlYlByb2Nlc3NQb29sOjpzX3VzZVNlcGFyYXRlU2Vy
dmljZVdvcmtlclByb2Nlc3MgPSBmYWxzZTsKIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFp
biwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1By
b2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgUmVnaXN0cmFibGVE
b21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJz
aXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOwog
ICAgIGlmICghd2Vic2l0ZURhdGFTdG9yZSkKICAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmUoKS5wdHIoKTsKICAgICBpZiAoIXByb2Nl
c3NQb29scygpLnNpemUoKSkKLSAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxXZWJQ
cm9jZXNzUG9vbD4+IHNlcnZpY2VXb3JrZXJQcm9jZXNzUG9vbChXZWJQcm9jZXNzUG9vbDo6Y3Jl
YXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUoKS5nZXQoKSkpOworICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4gcmVtb3RlV29y
a2VyUHJvY2Vzc1Bvb2woV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjo6Y3JlYXRlKCkuZ2V0KCkpKTsKIAogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJv
eHk+IHJlcXVlc3RpbmdQcm9jZXNzID0gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyID8gV2Vi
UHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcigqcmVxdWVzdGluZ1Byb2Nlc3NJZGVu
dGlmaWVyKSA6IG51bGxwdHI7CiAgICAgV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sID0gcmVx
dWVzdGluZ1Byb2Nlc3MgPyAmcmVxdWVzdGluZ1Byb2Nlc3MtPnByb2Nlc3NQb29sKCkgOiBwcm9j
ZXNzUG9vbHMoKVswXTsKICAgICBBU1NFUlQocHJvY2Vzc1Bvb2wpOwogCi0gICAgV2ViUHJvY2Vz
c1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5IHsgbnVsbHB0ciB9OworICAgIFdlYlBy
b2Nlc3NQcm94eSogcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5IHsgbnVsbHB0ciB9OwogCi0gICAg
YXV0byB1c2VQcm9jZXNzRm9yU2VydmljZVdvcmtlcnMgPSBbJl0oV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzKSB7Ci0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSAmcHJvY2VzczsK
LSAgICAgICAgcHJvY2Vzcy5lbmFibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
Rm9yUmVtb3RlV29ya2VycygpKTsKKyAgICBhdXRvIHVzZVByb2Nlc3NGb3JSZW1vdGVXb3JrZXJz
ID0gWyZdKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykgeworICAgICAgICByZW1vdGVXb3JrZXJQ
cm9jZXNzUHJveHkgPSAmcHJvY2VzczsKKyAgICAgICAgcHJvY2Vzcy5lbmFibGVSZW1vdGVXb3Jr
ZXJzKHdvcmtlclR5cGUsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yUmVtb3RlV29ya2VycygpKTsKICAgICAgICAgaWYgKHByb2Nlc3MuaXNJblByb2Nlc3ND
YWNoZSgpKSB7CiAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVt
b3ZlUHJvY2Vzcyhwcm9jZXNzLCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vz
czo6Tm8pOwogICAgICAgICAgICAgQVNTRVJUKCFwcm9jZXNzLmlzSW5Qcm9jZXNzQ2FjaGUoKSk7
CkBAIC01NTAsMTggKzU0OSwyMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZwogICAgIH07CiAK
ICAgICBpZiAoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKSB7CisgICAgICAgIEFTU0VSVCh3
b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogICAgICAgICAv
LyBUaGlzIGlzIGEgc2VydmljZSB3b3JrZXIgZm9yIGEgc2VydmljZSB3b3JrZXIgcGFnZSBzbyB3
ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1c2UgdXNlIHRoZSBwYWdlJ3MgV2ViUHJvY2VzcyBmb3Ig
dGhlIHNlcnZpY2Ugd29ya2VyLgogICAgICAgICBpZiAoUmVmUHRyIHByb2Nlc3MgPSBXZWJQcm9j
ZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ci0+cHJvY2Vzc0lkZW50aWZpZXIoKSkpCi0gICAgICAgICAgICB1c2VQcm9jZXNzRm9yU2Vydmlj
ZVdvcmtlcnMoKnByb2Nlc3MpOworICAgICAgICAgICAgdXNlUHJvY2Vzc0ZvclJlbW90ZVdvcmtl
cnMoKnByb2Nlc3MpOwogICAgIH0KIAorICAgIGJvb2wgc2hvdWxkVXNlU2VwYXJhdGVSZW1vdGVX
b3JrZXJQcm9jZXNzID0gd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyICYmIHNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzczsKKwogICAgIC8vIFByaW9y
aXRpemUgdGhlIHJlcXVlc3RpbmcgV2ViUHJvY2VzcyBmb3IgcnVubmluZyB0aGUgc2VydmljZSB3
b3JrZXIuCi0gICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ICYmICFzX3VzZVNlcGFy
YXRlU2VydmljZVdvcmtlclByb2Nlc3MgJiYgcmVxdWVzdGluZ1Byb2Nlc3MpIHsKKyAgICBpZiAo
IXJlbW90ZVdvcmtlclByb2Nlc3NQcm94eSAmJiAhc2hvdWxkVXNlU2VwYXJhdGVSZW1vdGVXb3Jr
ZXJQcm9jZXNzICYmIHJlcXVlc3RpbmdQcm9jZXNzKSB7CiAgICAgICAgIGlmICgmcmVxdWVzdGlu
Z1Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSA9PSB3ZWJzaXRlRGF0YVN0b3JlICYmIHJlcXVl
c3RpbmdQcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21h
aW4pKQotICAgICAgICAgICAgdXNlUHJvY2Vzc0ZvclNlcnZpY2VXb3JrZXJzKCpyZXF1ZXN0aW5n
UHJvY2Vzcyk7CisgICAgICAgICAgICB1c2VQcm9jZXNzRm9yUmVtb3RlV29ya2VycygqcmVxdWVz
dGluZ1Byb2Nlc3MpOwogICAgIH0KIAotICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSAmJiAhc191c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKSB7CisgICAgaWYgKCFyZW1v
dGVXb3JrZXJQcm9jZXNzUHJveHkgJiYgIXNob3VsZFVzZVNlcGFyYXRlUmVtb3RlV29ya2VyUHJv
Y2VzcykgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzUG9vbC0+bV9wcm9j
ZXNzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9jZXNzLnB0cigpID09IHByb2Nlc3NQb29sLT5t
X3ByZXdhcm1lZFByb2Nlc3MuZ2V0KCkgfHwgcHJvY2Vzcy0+aXNEdW1teVByb2Nlc3NQcm94eSgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTcwLDMxICs1NzIsMzEgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhSZWcKICAgICAgICAgICAgIGlmICghcHJvY2Vzcy0+aXNNYXRjaGluZ1Jl
Z2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICAgICAgdXNlUHJvY2Vzc0ZvclNlcnZpY2VXb3JrZXJzKHByb2Nlc3Mp
OworICAgICAgICAgICAgdXNlUHJvY2Vzc0ZvclJlbW90ZVdvcmtlcnMocHJvY2Vzcyk7CiAKLSAg
ICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29ya2Vy
LCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwg
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xP
R19TVEFUSUMoU2VydmljZVdvcmtlciwgImVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyByZXVzaW5nIGFuIGV4aXN0aW5nIHdlYiBwcm9jZXNzIChw
cm9jZXNzPSVwLCB3b3JrZXJUeXBlPSV7cHVibGljfXMsIFBJRD0lZCkiLCByZW1vdGVXb3JrZXJQ
cm9jZXNzUHJveHksIHdvcmtlclR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
ciA/ICJzZXJ2aWNlIiA6ICJzaGFyZWQiLCByZW1vdGVXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nl
c3NJZGVudGlmaWVyKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBpZiAoIXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpIHsKLSAgICAgICAgYXV0byBuZXdQ
cm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclJlbW90ZVdvcmtlcnMoUmVt
b3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURv
bWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7Ci0gICAgICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7CisgICAg
aWYgKCFyZW1vdGVXb3JrZXJQcm9jZXNzUHJveHkpIHsKKyAgICAgICAgYXV0byBuZXdQcm9jZXNz
UHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclJlbW90ZVdvcmtlcnMod29ya2VyVHlw
ZSwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9
LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIHJlbW90ZVdvcmtlclByb2Nlc3NQcm94eSA9
IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKIAotICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNF
X0xPR19TVEFUSUMoU2VydmljZVdvcmtlciwgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIg
cHJvY2VzcyAocHJvY2VzPSVwLCBQSUQ9JWQpIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwg
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgICAg
IFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJs
aXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5n
IGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIHdvcmtlclR5cGU9JXtw
dWJsaWN9cywgUElEPSVkKSIsIHJlbW90ZVdvcmtlclByb2Nlc3NQcm94eSwgd29ya2VyVHlwZSA9
PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyID8gInNlcnZpY2UiIDogInNoYXJlZCIs
IHJlbW90ZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKICAgICAg
ICAgcHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKG5ld1Byb2Nlc3NQcm94eSwg
d2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBl
bmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKICAgICB9CiAKLSAgICByZW1vdGVXb3JrZXJQ
cm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOworICAgIHJlbW90ZVdv
cmtlclByb2Nlc3NlcygpLmFkZCgqcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5KTsKIAogICAgIGF1
dG8mIHByZWZlcmVuY2VzU3RvcmUgPSBwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJQcmVmZXJl
bmNlcyA/IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBw
cm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCk7Ci0g
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHQocHJlZmVyZW5jZXNTdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHJlbW90ZVdvcmtl
clByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dCh3b3JrZXJUeXBlLCBw
cmVmZXJlbmNlc1N0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKICAgICBpZiAoIXByb2Nlc3NQ
b29sLT5tX3JlbW90ZVdvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKLSAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+c2V0UmVtb3RlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5t
X3JlbW90ZVdvcmtlclVzZXJBZ2VudCk7CisgICAgICAgIHJlbW90ZVdvcmtlclByb2Nlc3NQcm94
eS0+c2V0UmVtb3RlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclVz
ZXJBZ2VudCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVJl
bW90ZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7CkBAIC02MDIs
NTcgKzYwNCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21SZW1vdGVXb3JrZXJQ
cm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgIHJlbW90ZVdvcmtlclByb2Nl
c3NlcygpLnJlbW92ZShwcm9jZXNzKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJs
aXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQot
ewotICAgIGF1dG8qIHdlYnNpdGVEYXRhU3RvcmUgPSBXZWJzaXRlRGF0YVN0b3JlOjpleGlzdGlu
Z0RhdGFTdG9yZUZvclNlc3Npb25JRChzZXNzaW9uSUQpOwotICAgIGlmICghd2Vic2l0ZURhdGFT
dG9yZSkKLSAgICAgICAgd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHREYXRhU3RvcmUoKS5wdHIoKTsKLSAgICBpZiAoIXByb2Nlc3NQb29scygpLnNpemUoKSkKLSAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxXZWJQcm9jZXNzUG9vbD4+IHNoYXJlZFdv
cmtlclByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246OmNyZWF0ZSgpLmdldCgpKSk7Ci0KLSAgICAvLyBBcmJpdHJhcmlseSBjaG9v
c2UgdGhlIGZpcnN0IHByb2Nlc3MgcG9vbCB0byBob3N0IHRoZSBzaGFyZWQgd29ya2VyIHByb2Nl
c3MuCi0gICAgYXV0byogcHJvY2Vzc1Bvb2wgPSBwcm9jZXNzUG9vbHMoKVswXTsKLSAgICBBU1NF
UlQocHJvY2Vzc1Bvb2wpOwotCi0gICAgV2ViUHJvY2Vzc1Byb3h5KiBzaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHkgeyBudWxscHRyIH07Ci0KLSAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNz
UG9vbC0+bV9wcm9jZXNzZXMpIHsKLSAgICAgICAgaWYgKHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vz
c1Bvb2wtPm1fcHJld2FybWVkUHJvY2Vzcy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vz
c1Byb3h5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCZwcm9jZXNzLT53
ZWJzaXRlRGF0YVN0b3JlKCkgIT0gd2Vic2l0ZURhdGFTdG9yZSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBpZiAoIXByb2Nlc3MtPmlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihy
ZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBzaGFy
ZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOwotICAgICAgICBzaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHktPmVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2hh
cmVkV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZv
clJlbW90ZVdvcmtlcnMoKSk7Ci0KLSAgICAgICAgaWYgKHNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7Ci0gICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJv
Y2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQ
cm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwotICAgICAgICAgICAgQVNT
RVJUKCFzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVk
V29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzIHJldXNpbmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0l
ZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+
cHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmICgh
c2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KSB7Ci0gICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5
ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5
cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdp
c3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7Ci0gICAgICAgIHNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKLQotICAgICAgICBXRUJQUk9D
RVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNl
cnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIo
KSk7Ci0KLSAgICAgICAgcHJvY2Vzc1Bvb2wtPmluaXRpYWxpemVOZXdXZWJQcm9jZXNzKG5ld1By
b2Nlc3NQcm94eSwgd2Vic2l0ZURhdGFTdG9yZSk7Ci0gICAgICAgIHByb2Nlc3NQb29sLT5tX3By
b2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKLSAgICB9Ci0KLSAgICBy
ZW1vdGVXb3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSk7Ci0K
LSAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRl
eHQocHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+
bV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVs
dFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fcmVtb3Rl
V29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQotICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHktPnNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJV
c2VyQWdlbnQpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQb29sOjp3aW5kb3dTZXJ2ZXJDb25uZWN0
aW9uU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBzaXplX3QgcHJvY2Vzc0NvdW50ID0gbV9wcm9jZXNz
ZXMuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXgg
MGQxMjAxNWJiYTQzZmRiZjM3OTlmNmIwYzdmZTNkMDIyODJiODY5MS4uYzZjMzNmMmEwZTc1MmM4
MDU3ZjU3YzBlYWJlODM0MGQyMThkYzQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCkBAIC0zNzksNyArMzc5LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3Zl
RnJvbVJlbW90ZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLSAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IHJlcXVlc3Rp
bmdQcm9jZXNzSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICBzaXplX3Qgc2Vydmlj
ZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZv
cmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKICAgICBib29sIGhhc1NlcnZpY2VX
b3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CkBAIC0zODgsNyArMzg3
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVSZW1vdGVXb3JrZXJVc2VyQWdlbnQoY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQpOwogICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclJlbW90ZVdvcmtlcnMoKTsKLSAg
ICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNo
UmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlbW90ZVdvcmtl
clR5cGUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXI+IHJlcXVlc3RpbmdQcm9jZXNzSWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgcHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKaW5kZXggMzY4YTM5NTg3ZGEzM2RlNjRjMWI4OWQwZTYzOGQzOGI4OGQ3YTE3
Yi4uMGI5ZDZlYThlNTZlZTA0ZTIzYTYzNjVlNjJlMzg0Y2Y3NWZmY2NmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xODU2LDE4ICsxODU2LDE3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2Ny
ZWVuSW5wdXQoKQogCiAjZW5kaWYKIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJh
YmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hSZW1v
dGVXb3JrZXJDb250ZXh0KFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYgc3RvcmUsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dDogU3RhcnRlZCIpOworICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoUmVtb3RlV29ya2Vy
Q29udGV4dDogU3RhcnRlZCAod29ya2VyVHlwZT0le3B1YmxpY31zKSIsIHdvcmtlclR5cGUgPT0g
UmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciA/ICJzZXJ2aWNlIiA6ICJzaGFyZWQiKTsK
ICAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCku
cGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtlclBh
Z2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZUlE
LCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywg
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBhdXRvJiByZW1vdGVXb3JrZXJJ
bmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
ciA/IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uIDogbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlv
bjsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlz
aFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHdvcmtlclR5
cGUsIHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIHJlbW90
ZVdvcmtlckluZm9ybWF0aW9uLT5yZW1vdGVXb3JrZXJQYWdlUHJveHlJRCwgcmVtb3RlV29ya2Vy
SW5mb3JtYXRpb24tPnJlbW90ZVdvcmtlclBhZ2VJRCwgc3RvcmUsIHJlZ2lzdHJhYmxlRG9tYWlu
LCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHJlbW90ZVdvcmtlckluZm9ybWF0aW9uLT5p
bml0aWFsaXphdGlvbkRhdGEgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IHdvcmtlclR5cGUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIFdFQlBS
T0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNv
bnRleHQ6IEZpbmlzaGVkIik7CisgICAgICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9M
T0coTG9hZGluZywgImVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHQ6IEZpbmlzaGVkICh3b3Jr
ZXJUeXBlPSV7cHVibGljfXMpIiwgd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyID8gInNlcnZpY2UiIDogInNoYXJlZCIpOwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgIH0sIDApOwogfQotI2VuZGlmCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpz
ZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7CkBAIC0x
OTI2LDE3ICsxOTI1LDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlbW90ZVdvcmtl
clByb2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2VyVHlwZSB3b3JrZXIKICAgICB3b3JrZXJJbmZv
cm1hdGlvbi0+YWN0aXZpdHkgPSBudWxscHRyOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6
ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBz
dG9yZSwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgV0VCUFJPQ0VT
U1BST1hZX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHQ6IFN0YXJ0ZWQiKTsKLSAgICBtYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2VkKCk7Ci0gICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRl
ZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9u
LT5yZW1vdGVXb3JrZXJQYWdlUHJveHlJRCwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+cmVt
b3RlV29ya2VyUGFnZUlELCBzdG9yZSwgcmVnaXN0cmFibGVEb21haW4sIG1fc2hhcmVkV29ya2Vy
SW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgV0VC
UFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdv
cmtlckNvbnRleHQ6IEZpbmlzaGVkIik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0g
ICAgfSwgMCk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclJlbW90ZVdvcmtl
ckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJQcm9jZXNzUHJv
eHkmIHByb3h5KQogewogICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9
PSBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0
aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDkxZDIxZDI4MzY2MTk2NjNmYTdkY2MyMDk1MzNkMWQ2
YTAwNTBkNWQuLmIzMDNmNzZjYzEzMjU0YjExYTMwNTVmODY0Njg3YjRmZDZjMzY0Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0zNjUsMTIgKzM2NSwx
MSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIHVwZGF0ZVJlbW90ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwotICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZXN0
YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dChSZW1vdGVXb3JrZXJUeXBlLCBjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCByZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSwg
V2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50
UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUHJveHkmKTsKICAgICB2b2lkIHVw
ZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2VyVHlwZSk7CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNv
bnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbiAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZVBy
b3h5SUQgPT0gcGFnZVByb3h5SUQ7IH0KICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3Jv
dW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2Vy
QmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDg0MjhlYmFiZWJhYTExNTNlMzcyZjljMzQwM2NiZmFh
NjE2MmFiN2EuLjMwMjJhM2Y2Mjg4ZDI5YmQ1ZDk0ZGVjZTAxOWRiYzIwNWJjMjI1ZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTE5MjYsMjcgKzE5MjYsMjUg
QEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiAgICAg
cmV0dXJuICptX2xpYldlYlJUQ05ldHdvcms7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJs
aXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91
cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFJlbW90ZVdvcmtl
ckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzOjplc3RhYmxp
c2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtb3RlV29y
a2VyVHlwZSB3b3JrZXJUeXBlLCBQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJl
Z2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFJlbW90ZVdvcmtlckluaXRpYWxp
emF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIC8vIFdlIGFyZSBpbiB0aGUgU2hhcmVkIFdv
cmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxsIGJlbG93IGVzdGFibGlzaGVzIG91ciBj
b25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MKLSAgICAvLyBieSBjYWxsaW5nIGVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIgbmVl
ZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQorICAg
IC8vIFdlIGFyZSBpbiB0aGUgUmVtb3RlIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBj
YWxsIGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nl
c3MKKyAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dD
b250ZXh0TWFuYWdlciAvIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIG5lZWQgdG8gdXNlIHRo
ZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQogICAgIC8vIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbiBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBvc2VzLgogICAgIGF1dG8m
IGlwY0Nvbm5lY3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCk7Ci0gICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENv
bm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24+KGlwY0Nvbm5lY3Rpb24sIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBwYWdlR3JvdXBJ
RCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJRCwgc3RvcmUsIFdURk1vdmUoaW5pdGlhbGl6YXRpb25E
YXRhKSkpOwotICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25u
ZWN0aW9uKCktPmVzdGFibGlzaENvbm5lY3Rpb24oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIHN3aXRjaCAod29ya2VyVHlwZSkgeworICAgIGNhc2UgUmVtb3RlV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcjoKKyAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0
Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihpcGND
b25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBwYWdlR3JvdXBJRCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJRCwgc3RvcmUsIFdU
Rk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhKSkpOworICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5jb25uZWN0aW9uKCktPmVzdGFibGlzaENvbm5lY3Rpb24oV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlbW90ZVdvcmtlclR5
cGU6OlNoYXJlZFdvcmtlcjoKKyAgICAgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIFdURk1vdmUocmVnaXN0cmFibGVEb21h
aW4pLCBwYWdlR3JvdXBJRCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJRCwgc3RvcmUsIFdURk1vdmUo
aW5pdGlhbGl6YXRpb25EYXRhKSkpOworICAgICAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT5lc3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogfQogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIg
cGFnZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUmVt
b3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgLy8gV2UgYXJl
IGluIHRoZSBTZXJ2aWNlIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxsIGJlbG93
IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MKLSAgICAv
LyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250ZXh0TWFu
YWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMg
dGhlCi0gICAgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24g
cHVycG9zZXMuCi0gICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24+KGlwY0Nvbm5lY3Rpb24sIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBz
dG9yZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEpKSk7Ci0gICAgU1dDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT5lc3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzOjphZGRTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyIGlkZW50aWZpZXIpCiB7CiAgICAgbV9zd1JlZ2lzdHJhdGlvbkNvdW50cy5hZGQoaWRlbnRp
Zmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA3YzUwZTA3ZWRh
NWUwNGZkYjMyYzBhZTMwZWZmNGIwYmZlMzcxOGZmLi42OTRlMmZiZDAxMmQxNGYzMjIzMTA1M2Jl
ZmZjZTY0NzU3ZWNhYmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzLmgiCiAjaW5jbHVkZSAi
Q2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIklkZW50aWZpZXJUeXBlcy5oIgorI2luY2x1ZGUgIlJl
bW90ZVdvcmtlclR5cGUuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZUFyZWFNYXBJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJTdGF0
ZS5oIgpAQCAtNDcwLDEwICs0NzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2FtZXBhZERpc2Nv
bm5lY3RlZCh1bnNpZ25lZCBpbmRleCk7CiAjZW5kaWYKIAotICAgIHZvaWQgZXN0YWJsaXNoU2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50
aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwg
UmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7Ci0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVu
dGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25E
YXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0jZW5kaWYKKyAgICB2b2lkIGVz
dGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZW1v
dGVXb3JrZXJUeXBlLCBQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwg
UmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAKICAgICB2b2lkIGZldGNoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vic2l0ZURhdGEmJik+JiYpOwogICAgIHZv
aWQgZGVsZXRlV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFdhbGxUaW1l
IG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGY1ZTczNmVk
MzQ3ZjI3MWFkZWM3YzQ1ZDAzZmQ4M2RiYjBiYTliZWUuLmMxOTg3ZWQxMzg5OWZmM2E5MDU5YjFm
OGIyOTA2MmI2ZDgzNDM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMDAsMTEgKzEwMCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgR2FtZXBhZERpc2Nvbm5l
Y3RlZCh1bnNpZ25lZCBpbmRleCkKICNlbmRpZgogCi0gICAgRXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYktpdDo6UGFnZUdyb3VwSWRlbnRp
ZmllciBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQ
cm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFp
biwgc3RydWN0IFdlYktpdDo6UmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRpYWxp
emF0aW9uRGF0YSkgLT4gKCkgQXN5bmMKLQotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICBFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFdlYktpdDo6UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBz
dHJ1Y3QgV2ViS2l0OjpSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRp
b25EYXRhKSAtPiAoKSBBc3luYwotI2VuZGlmCisgICAgRXN0YWJsaXNoUmVtb3RlV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKGVudW06dWludDMyX3QgV2ViS2l0OjpSZW1v
dGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYktpdDo6UGFnZUdyb3VwSWRlbnRpZmllciBwYWdl
R3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVXb3JrZXJJbml0aWFs
aXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAtPiAoKSBBc3luYwogCiAgICAgU2V0SGFz
U3VzcGVuZGVkUGFnZVByb3h5KGJvb2wgaGFzU3VzcGVuZGVkUGFnZVByb3h5KTsKICAgICBTZXRJ
c0luUHJvY2Vzc0NhY2hlKGJvb2wgaXNJblByb2Nlc3NDYWNoZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452985</attachid>
            <date>2022-02-23 08:56:04 -0800</date>
            <delta_ts>2022-02-23 08:59:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237085-20220223085603.patch</filename>
            <type>text/plain</type>
            <size>52519</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYxZGE5MmE4Mjg3NGJiOWIz
MTBiN2Y3YTM0YTNhNTRiMWQ5NjNhYmUuLjY3YTgwMmVkYWE3YTNlYzA5MzdjYmRmYjZmYjQyODQ1
YTRiYzEyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjItMDItMjMgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTaGFyZSBtb3JlIGNvZGUgYmV0d2Vl
biBzZXJ2aWNlIGFuZCBzaGFyZWQgd29ya2VycyBmb3IgY29udGV4dCBjb25uZWN0aW9uIGVzdGFi
bGlzaG1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzA4NQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAg
U2hhcmUgbW9yZSBjb2RlIGJldHdlZW4gc2VydmljZSBhbmQgc2hhcmVkIHdvcmtlcnMgZm9yIGNv
bnRleHQgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
ZW5zdXJlU1dTZXJ2ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmZp
cnN0U2hhcmVkV29ya2VyT2JqZWN0UHJvY2VzcyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29y
a2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVh
dGVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNl
cnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2VyKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJs
aXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFi
bGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtl
ckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMjItMDItMjMgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
ZW5xdWV1ZVNhbXBsZSBzaG91bGQgbm90IGNoYW5nZSBtZWRpYSBzYW1wbGVzIG93bmVkIGJ5IGl0
cyBvYmplY3QgaGVhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcAppbmRleCBkMmUwZDYxZjllMmM4OTVjYTc2NjU4N2ZlOWUwMmVhNjJiYmRmNjQ5
Li42ZGRjNzIwZjcwN2EzNzYyMTAxZGY5MjZiZTk0MzA4NjNmNTNjYjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDEsNiArNDEs
NyBAQAogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5oIgogI2lu
Y2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIlByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2Vy
VHlwZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCIKICNpbmNsdWRlICJX
ZWJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTYyOCw3ICs2Mjks
NyBAQCBTV1NlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVNXU2VydmVyKCkKICAgICAgICAg
ICAgIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpzdGFydCh0aGlzLCBXVEZNb3ZlKGpv
YkRhdGEpLCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSwgW3RoaXNdKGF1dG8mIHJlZ2lzdHJhYmxlRG9t
YWluLCBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
CiAgICAgICAgICAgICBBU1NFUlQoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSk7Ci0gICAg
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFNl
cnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJs
ZURvbWFpbiwgcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIG1fc2Vzc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsK
KyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJs
aXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgUmVtb3Rl
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcmVnaXN0cmFibGVEb21haW4sIHJlcXVlc3RpbmdQ
cm9jZXNzSWRlbnRpZmllciwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBtX3Nlc3Npb25J
RCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CiAgICAgICAgIH0sIFdURk1vdmUo
YXBwQm91bmREb21haW5zQ2FsbGJhY2spKTsKICAgICB9CiAgICAgcmV0dXJuICptX3N3U2VydmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAKaW5kZXggNDk1MDE1YmYzMGJmYzgzMjBmYWVkOGM4
MjYwOGUyMmY1MDA1ZDBmOC4uMTU4ODJhM2Q0NjNiM2ViOTk4OWJjNGZhNDFlNTU4ZGZiMjE5YjVm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCkBAIC05OCw2ICs5OCwxMyBAQCB2b2lkIFdl
YlNoYXJlZFdvcmtlcjo6Zm9yRWFjaFNoYXJlZFdvcmtlck9iamVjdChjb25zdCBGdW5jdGlvbjx2
b2lkKFdlYkNvcmU6OlNoYQogICAgICAgICBhcHBseShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBwb3J0KTsKIH0KIAorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
cj4gV2ViU2hhcmVkV29ya2VyOjpmaXJzdFNoYXJlZFdvcmtlck9iamVjdFByb2Nlc3MoKSBjb25z
dAoreworICAgIGlmIChtX3NoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBtX3NoYXJlZFdvcmtlck9iamVjdHMuYmVn
aW4oKS0+a2V5LnByb2Nlc3NJZGVudGlmaWVyKCk7Cit9CisKIFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlcjo6Y29udGV4dENvbm5lY3Rpb24o
KSBjb25zdAogewogICAgIHJldHVybiBtX3NlcnZlci5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaApp
bmRleCA5M2JiNTY2ODJkYTE5MmNmMzQ3N2FlMDUxOTgyNDQ2YzQwMDNjYzNhLi43NTM1MjRmNjRj
MmIyY2RlNmFmYjllYWU4YTA1NDdlMWVhNDk3NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaApA
QCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVTaGFyZWRXb3JrZXJPYmpl
Y3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CiAgICAgdW5zaWduZWQg
c2hhcmVkV29ya2VyT2JqZWN0c0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJP
YmplY3RzLnNpemUoKTsgfQogICAgIHZvaWQgZm9yRWFjaFNoYXJlZFdvcmtlck9iamVjdChjb25z
dCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmKT4mKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiBmaXJzdFNoYXJlZFdvcmtlck9i
amVjdFByb2Nlc3MoKSBjb25zdDsKIAogICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dENvbm5lY3Rp
b24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcAppbmRleCAyNDZlODM5N2E0NzJmYTc1ODU4NjAz
MzgyNWU0MDBjMGRmMGJmZjdmLi4yNjA3ZjcwY2MyOWM1N2IzYjc3ZTNhOWNlN2RmMzUzYjJmYjA1
MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVk
ZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgogI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCkBAIC0xMTIsNyArMTEzLDcg
QEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29y
a2VyU2NyaXB0KFdlYlNoYXJlZFdvcmtlciYKICAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmxh
dW5jaFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHNoYXJlZFdvcmtlci5yZWdpc3RyYWJsZURvbWFp
bigpKTsKKyAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihzaGFyZWRXb3JrZXIucmVnaXN0cmFi
bGVEb21haW4oKSwgc2hhcmVkV29ya2VyLmZpcnN0U2hhcmVkV29ya2VyT2JqZWN0UHJvY2Vzcygp
KTsKIH0KIAogYm9vbCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rp
b25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4pIGNvbnN0CkBAIC0xMjQsNyArMTI1LDcgQEAgYm9vbCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihjb25zdCBXZWIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX2NvbnRl
eHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOwogICAgIGlmIChtX3Bl
bmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4p
KQpAQCAtMTMzLDcgKzEzNCw3IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVD
b250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvCiAgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0
Q29ubmVjdGlvbiB3aWxsIGNyZWF0ZSBhIGNvbm5lY3Rpb24iKTsKIAogICAgIG1fcGVuZGluZ0Nv
bnRleHRDb25uZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFibGVEb21haW4pOwotICAgIG1fc2Vz
c2lvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21h
aW4sIG1fc2Vzc2lvbi5zZXNzaW9uSUQoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgcmVnaXN0cmFibGVEb21haW5dIHsKKyAgICBtX3Nlc3Npb24ubmV0d29ya1Byb2Nl
c3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwg
cmVnaXN0cmFibGVEb21haW4sIHJlcXVlc3RpbmdQcm9jZXNzSWRlbnRpZmllciwgc3RkOjpudWxs
b3B0LCBtX3Nlc3Npb24uc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHJlZ2lzdHJhYmxlRG9tYWluLCByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXJd
IHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTQ1
LDcgKzE0Niw3IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29u
bmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlv
bihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlv
bihyZWdpc3RyYWJsZURvbWFpbiwgcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyKTsKICAgICB9
LCAwKTsKIH0KIApAQCAtMTcwLDggKzE3MSwxMCBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
cjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZQog
CiAgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKIAot
ICAgIGlmIChjb250ZXh0Q29ubmVjdGlvbi5oYXNTaGFyZWRXb3JrZXJPYmplY3RzKCkpCi0gICAg
ICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAo
YXV0byYgc2hhcmVkV29ya2VyT2JqZWN0cyA9IGNvbnRleHRDb25uZWN0aW9uLnNoYXJlZFdvcmtl
ck9iamVjdHMoKTsgIXNoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1
dG8gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyID0gc2hhcmVkV29ya2VyT2JqZWN0cy5iZWdp
bigpLT5rZXk7CisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9t
YWluLCByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIH0KIH0KIAogdm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKQEAgLTIxNSw3
ICsyMTgsNyBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3Jr
ZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JgogCiAgICAgY29udGV4dENvbm5lY3Rp
b24tPnRlcm1pbmF0ZVNoYXJlZFdvcmtlcigqc2hhcmVkV29ya2VyKTsKIAotICAgIGlmICghY29u
dGV4dENvbm5lY3Rpb24tPmhhc1NoYXJlZFdvcmtlck9iamVjdHMoKSkKKyAgICBpZiAoY29udGV4
dENvbm5lY3Rpb24tPnNoYXJlZFdvcmtlck9iamVjdHMoKS5pc0VtcHR5KCkpCiAgICAgICAgIGNv
bnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCmluZGV4IDNhMzMyZWExMDNkMDRmZDNmNTQyMzJi
MDZlOWI5YTcxNTQ4MDJiOTUuLjE4YjMxMGU1NWE2Y2E2ZTVjOWY2NGY3MWM1NGE1ODAzZTczYTA2
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCkBAIC03MSw3ICs3MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb24oV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICB2b2lkIGNyZWF0ZUNvbnRleHRD
b25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVy
KTsKICAgICBib29sIG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgY29udGV4
dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mKTsKICAgICB2b2lkIGRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFdlYlNo
YXJlZFdvcmtlciYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CmluZGV4IDg0OTA3Nzg0ZWQ5YzM0ZjhmNjhkMWZlNDA2YzI5YmU1YjZiMTQ1NjEuLjg0MTg3MzU3
NWM5MzA3M2Y5OGZiYWM4ZTIzZGQ3NGZkNTc5YTRmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTYy
LDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKGNvbnN0
IFdlYlNoYXJlZFdvcmtlciYpOwogCiAgICAgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRl
ZCgpOwotICAgIGJvb2wgaGFzU2hhcmVkV29ya2VyT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuICFt
X3NoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpOyB9CisgICAgY29uc3QgSGFzaE1hcDxXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSGFzaFNldDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyPj4mIHNoYXJlZFdvcmtlck9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX3No
YXJlZFdvcmtlck9iamVjdHM7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZVdvcmtlclR5cGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZVdvcmtlclR5cGUuaAppbmRleCA1MjgxNmQ5NDFmODJmZWM0N2VmOGY1NDY0ZGZkNjg5ZWI2
MGI3Y2Y5Li4xMDFjZWVmOTFiZjRjNDVlNmJiNDE4YTE5MWJiYTFjMjU2YWY5NDlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlV29ya2VyVHlwZS5oCkBAIC0yNywxOSArMjcsNiBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotZW51bSBjbGFzcyBSZW1vdGVXb3JrZXJUeXBlIDogdWludDMy
X3QgewotICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8IDAsCi0gICAgU2hhcmVkV29ya2VyID0gMSA8
PCAxCi19OworZW51bSBjbGFzcyBSZW1vdGVXb3JrZXJUeXBlIDogYm9vbCB7IFNlcnZpY2VXb3Jr
ZXIsIFNoYXJlZFdvcmtlciB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotbmFtZXNwYWNl
IFdURiB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6UmVtb3RlV29ya2Vy
VHlwZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYktpdDo6
UmVtb3RlV29ya2VyVHlwZSwKLSAgICAgICAgV2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyLAotICAgICAgICBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtl
cgotICAgID47Ci19OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNmI2YTA4YmFjNjA2MGM0MDE0NGQx
ZmNhMGI0Y2ZkM2RhZWU1M2FlNy4uYjRhYTVmYTFmZDU5MGY5MmQwZTgwYjM3ZDgzYjJlMmNmNzQ3
Mjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNDE2LDExICsxNDE2LDYgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2Vi
VXNlckNvbnRlbnQKIH0KICNlbmRpZgogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFi
bGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
LXsKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXNzaW9u
SUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpyZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlw
ZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRp
ZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2hhcmVkV29ya2VyUHJvY2Vzc0lkZW50
aWZpZXIpCiB7CiAgICAgYXV0byogd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vz
c0ZvcklkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpOwpAQCAtMTQ0NywxMiArMTQ0Miwx
MyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uTm9Mb25nZXJOZWVkZWQoUmVtb3RlV29yawogICAgICAgICBwcm9jZXNzLT5kaXNhYmxlUmVt
b3RlV29ya2Vycyh3b3JrZXJUeXBlKTsKIH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0
aW5nUHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFJl
Z2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXI+IHJlcXVlc3RpbmdQcm9jZXNzSWRlbnRpZmllciwgc3RkOjpv
cHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZN
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mod29ya2VyVHlwZSwgV1RGTW92ZShyZWdpc3RyYWJs
ZURvbWFpbiksIHJlcXVlc3RpbmdQcm9jZXNzSWRlbnRpZmllciwgc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpz
dGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRl
bnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAgICAgaWYgKGF1dG8q
IHNlcnZpY2VXb3JrZXJQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRp
ZmllcihzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAxNjJm
MDIxYzQyNTNkNGJhMjU5ZjNlZjRhMWE3MzllYzQ0NmE5ZjJjLi4zZDM1NDRkY2I5NzYwZDZlMzM3
Mjc1ZDYyYTUzNjFjOWIxOTVjNGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtODYsNyArODYsNyBAQCBjbGFz
cyBXZWJDb29raWVNYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIAotZW51bSBjbGFzcyBSZW1vdGVXb3JrZXJUeXBl
IDogdWludDMyX3Q7CitlbnVtIGNsYXNzIFJlbW90ZVdvcmtlclR5cGUgOiBib29sOwogZW51bSBj
bGFzcyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwogZW51bSBjbGFzcyBTdG9y
YWdlQWNjZXNzU3RhdHVzIDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9w
dGlvbiA6IHVpbnQ4X3Q7CkBAIC0zMzMsMTIgKzMzMywxMSBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IHJlcXVl
c3RpbmdQcm9jZXNzSWRlbnRpZmllciwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN0YXJ0
U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCBlbmRTZXJ2aWNl
V29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2Vy
dmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICNlbmRpZgogICAgIHZvaWQgcmVtb3RlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChSZW1vdGVXb3JrZXJUeXBlLCBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBlc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoUmVtb3RlV29ya2VyVHlwZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVnaXN0ZXJSZW1vdGVXb3JrZXJD
bGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzaGFyZWRX
b3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyUmVtb3RlV29ya2Vy
Q2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2hhcmVk
V29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggNTA4ZWRkODhmZjQ4ZDQwNGU0MmIzODAxZWI2NzNkYzRiYWNiMTBjNS4uZTNhYmJiNDY4
ZjViM2FkMDc3ZWI2NDZhNjkyY2M3YmY5Mjk1NGRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgpAQCAtNTMsMTQgKzUzLDEzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJv
eHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIpCiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFp
biwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1By
b2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBTdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3Jv
dW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc0lkZW50aWZpZXIpCiAgICAgRW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5n
KFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmll
cikKICNlbmRpZgotICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFp
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAgIFJlbW90ZVdvcmtl
ckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoZW51bTp1aW50MzJfdCBXZWJLaXQ6OlJl
bW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRl
bnRpZmllcikKLSAgICBSZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoZW51bTp1aW50
MzJfdCBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHJlbW90ZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBVbnJlZ2lzdGVyUmVtb3Rl
V29ya2VyQ2xpZW50UHJvY2VzcyhlbnVtOnVpbnQzMl90IFdlYktpdDo6UmVtb3RlV29ya2VyVHlw
ZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRp
ZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcmVtb3RlV29ya2VyUHJvY2Vzc0lkZW50
aWZpZXIpOworICAgIEVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZp
ZXIsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiAoKSBBc3luYworICAgIFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJO
ZWVkZWQoZW51bTpib29sIFdlYktpdDo6UmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIFJlZ2lzdGVyUmVtb3RlV29y
a2VyQ2xpZW50UHJvY2VzcyhlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlIHdvcmtl
clR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciByZW1vdGVXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7
CisgICAgVW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoZW51bTpib29sIFdlYktp
dDo6UmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcmVtb3Rl
V29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogCiAgICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMo
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lELCBib29sIGhhc1VwbG9hZCkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDNkODY3OGM1
ZDg2NTFlYWM0NTAzNzc2ZDFmYTI0OGI4OTk3YWRiYWEuLjExNDJlYjVkYjM2NTI5YWYzOTRhZThl
Y2FhZjNhMTRhNTIwZDUyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKQEAgLTUyNSwyNCArNTI1LDIzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmdldFdl
YkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiAK
IGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OnNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2VzcyA9
IGZhbHNlOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIsIHN0
ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3Jr
ZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVt
b3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0
aW5nUHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0
aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CiAgICAgaWYgKCF3ZWJzaXRlRGF0
YVN0b3JlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdERhdGFTdG9yZSgpLnB0cigpOwogICAgIGlmICghcHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpKQot
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4gc2Vydmlj
ZVdvcmtlclByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpLmdldCgpKSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZWY8V2ViUHJvY2Vzc1Bvb2w+PiByZW1vdGVXb3JrZXJQcm9jZXNzUG9vbChXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGUo
KS5nZXQoKSkpOwogCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcmVxdWVzdGluZ1Byb2Nl
c3MgPSByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIgPyBXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NGb3JJZGVudGlmaWVyKCpyZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIpIDogbnVsbHB0cjsK
ICAgICBXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wgPSByZXF1ZXN0aW5nUHJvY2VzcyA/ICZy
ZXF1ZXN0aW5nUHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKSA6IHByb2Nlc3NQb29scygpWzBdOwogICAg
IEFTU0VSVChwcm9jZXNzUG9vbCk7CiAKLSAgICBXZWJQcm9jZXNzUHJveHkqIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CisgICAgV2ViUHJvY2Vzc1Byb3h5KiByZW1vdGVX
b3JrZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CiAKLSAgICBhdXRvIHVzZVByb2Nlc3NGb3JT
ZXJ2aWNlV29ya2VycyA9IFsmXShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpIHsKLSAgICAgICAg
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9ICZwcm9jZXNzOwotICAgICAgICBwcm9jZXNzLmVu
YWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vz
c1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JSZW1vdGVXb3JrZXJzKCkp
OworICAgIGF1dG8gdXNlUHJvY2Vzc0ZvclJlbW90ZVdvcmtlcnMgPSBbJl0oV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzKSB7CisgICAgICAgIHJlbW90ZVdvcmtlclByb2Nlc3NQcm94eSA9ICZwcm9j
ZXNzOworICAgICAgICBwcm9jZXNzLmVuYWJsZVJlbW90ZVdvcmtlcnMod29ya2VyVHlwZSwgcHJv
Y2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JSZW1vdGVXb3JrZXJz
KCkpOwogICAgICAgICBpZiAocHJvY2Vzcy5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAgICAg
ICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKHByb2Nlc3Ms
IFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAg
ICBBU1NFUlQoIXByb2Nlc3MuaXNJblByb2Nlc3NDYWNoZSgpKTsKQEAgLTU1MCwxOCArNTQ5LDIx
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnCiAgICAgfTsKIAogICAgIGlmIChzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIpIHsKKyAgICAgICAgQVNTRVJUKHdvcmtlclR5cGUgPT0gUmVtb3Rl
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2aWNl
IHdvcmtlciBmb3IgYSBzZXJ2aWNlIHdvcmtlciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJl
IHdlIHVzZSB1c2UgdGhlIHBhZ2UncyBXZWJQcm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3JrZXIu
CiAgICAgICAgIGlmIChSZWZQdHIgcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0Zv
cklkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5wcm9jZXNzSWRlbnRpZmll
cigpKSkKLSAgICAgICAgICAgIHVzZVByb2Nlc3NGb3JTZXJ2aWNlV29ya2VycygqcHJvY2Vzcyk7
CisgICAgICAgICAgICB1c2VQcm9jZXNzRm9yUmVtb3RlV29ya2VycygqcHJvY2Vzcyk7CiAgICAg
fQogCisgICAgYm9vbCBzaG91bGRVc2VTZXBhcmF0ZVJlbW90ZVdvcmtlclByb2Nlc3MgPSB3b3Jr
ZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgJiYgc191c2VTZXBhcmF0
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzOworCiAgICAgLy8gUHJpb3JpdGl6ZSB0aGUgcmVxdWVzdGlu
ZyBXZWJQcm9jZXNzIGZvciBydW5uaW5nIHRoZSBzZXJ2aWNlIHdvcmtlci4KLSAgICBpZiAoIXNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgJiYgIXNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJv
Y2VzcyAmJiByZXF1ZXN0aW5nUHJvY2VzcykgeworICAgIGlmICghcmVtb3RlV29ya2VyUHJvY2Vz
c1Byb3h5ICYmICFzaG91bGRVc2VTZXBhcmF0ZVJlbW90ZVdvcmtlclByb2Nlc3MgJiYgcmVxdWVz
dGluZ1Byb2Nlc3MpIHsKICAgICAgICAgaWYgKCZyZXF1ZXN0aW5nUHJvY2Vzcy0+d2Vic2l0ZURh
dGFTdG9yZSgpID09IHdlYnNpdGVEYXRhU3RvcmUgJiYgcmVxdWVzdGluZ1Byb2Nlc3MtPmlzTWF0
Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgICAgICB1
c2VQcm9jZXNzRm9yU2VydmljZVdvcmtlcnMoKnJlcXVlc3RpbmdQcm9jZXNzKTsKKyAgICAgICAg
ICAgIHVzZVByb2Nlc3NGb3JSZW1vdGVXb3JrZXJzKCpyZXF1ZXN0aW5nUHJvY2Vzcyk7CiAgICAg
fQogCi0gICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ICYmICFzX3VzZVNlcGFyYXRl
U2VydmljZVdvcmtlclByb2Nlc3MpIHsKKyAgICBpZiAoIXJlbW90ZVdvcmtlclByb2Nlc3NQcm94
eSAmJiAhc2hvdWxkVXNlU2VwYXJhdGVSZW1vdGVXb3JrZXJQcm9jZXNzKSB7CiAgICAgICAgIGZv
ciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgewogICAgICAgICAg
ICAgaWYgKHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vzc1Bvb2wtPm1fcHJld2FybWVkUHJvY2Vzcy5n
ZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7CkBAIC01NzAsMzEgKzU3MiwzMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZwog
ICAgICAgICAgICAgaWYgKCFwcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4ocmVn
aXN0cmFibGVEb21haW4pKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAg
ICB1c2VQcm9jZXNzRm9yU2VydmljZVdvcmtlcnMocHJvY2Vzcyk7CisgICAgICAgICAgICB1c2VQ
cm9jZXNzRm9yUmVtb3RlV29ya2Vycyhwcm9jZXNzKTsKIAotICAgICAgICAgICAgV0VCUFJPQ0VT
U1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHJldXNpbmcgYW4gZXhpc3Rp
bmcgd2ViIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsK
KyAgICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29y
a2VyLCAiZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzIHJldXNpbmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nlc3MgKHByb2Nlc3M9JXAsIHdvcmtlclR5
cGU9JXtwdWJsaWN9cywgUElEPSVkKSIsIHJlbW90ZVdvcmtlclByb2Nlc3NQcm94eSwgd29ya2Vy
VHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyID8gInNlcnZpY2UiIDogInNo
YXJlZCIsIHJlbW90ZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlRm9yUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxl
RG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKKyAgICBpZiAoIXJlbW90ZVdvcmtlclBy
b2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQ
cm94eTo6Y3JlYXRlRm9yUmVtb3RlV29ya2Vycyh3b3JrZXJUeXBlLCAqcHJvY2Vzc1Bvb2wsIFJl
Z2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3Jl
KTsKKyAgICAgICAgcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0
cigpOwogCi0gICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNl
V29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXM9JXAs
IFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVM
RUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3Jr
ZXIgcHJvY2VzcyAocHJvY2Vzcz0lcCwgd29ya2VyVHlwZT0le3B1YmxpY31zLCBQSUQ9JWQpIiwg
cmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5LCB3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIgPyAic2VydmljZSIgOiAic2hhcmVkIiwgcmVtb3RlV29ya2VyUHJvY2Vz
c1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKIAogICAgICAgICBwcm9jZXNzUG9vbC0+aW5p
dGlhbGl6ZU5ld1dlYlByb2Nlc3MobmV3UHJvY2Vzc1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3JlKTsK
ICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nl
c3NQcm94eSkpOwogICAgIH0KIAotICAgIHJlbW90ZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSk7CisgICAgcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkuYWRk
KCpyZW1vdGVXb3JrZXJQcm9jZXNzUHJveHkpOwogCiAgICAgYXV0byYgcHJlZmVyZW5jZXNTdG9y
ZSA9IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wt
Pm1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1
bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKTsKLSAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcmVmZXJlbmNlc1N0b3Jl
LCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3Rh
Ymxpc2hSZW1vdGVXb3JrZXJDb250ZXh0KHdvcmtlclR5cGUsIHByZWZlcmVuY2VzU3RvcmUsIHJl
Z2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKwogICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2Vy
VXNlckFnZW50LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5z
ZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFn
ZW50KTsKKyAgICAgICAgcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRSZW1vdGVXb3JrZXJV
c2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50KTsKIH0KLSNlbmRp
ZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tUmVtb3RlV29ya2VyUHJvY2Vzc2Vz
KFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKQEAgLTYwMiw1NyArNjA0LDYgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVJlbW90ZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNz
UHJveHkmIHByb2Nlc3MpCiAgICAgcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nl
c3MpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byogd2Vic2l0
ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lv
bklEKHNlc3Npb25JRCk7Ci0gICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQotICAgICAgICB3ZWJz
aXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigp
OwotICAgIGlmICghcHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpKQotICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4gc2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2woV2Vi
UHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRl
KCkuZ2V0KCkpKTsKLQotICAgIC8vIEFyYml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3QgcHJvY2Vz
cyBwb29sIHRvIGhvc3QgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vzcy4KLSAgICBhdXRvKiBwcm9j
ZXNzUG9vbCA9IHByb2Nlc3NQb29scygpWzBdOwotICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7Ci0K
LSAgICBXZWJQcm9jZXNzUHJveHkqIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxwdHIg
fTsKLQotICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcykg
ewotICAgICAgICBpZiAocHJvY2Vzcy5wdHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJtZWRQ
cm9jZXNzLmdldCgpIHx8IHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSAh
PSB3ZWJzaXRlRGF0YVN0b3JlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICgh
cHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eSA9IHByb2Nlc3MucHRyKCk7Ci0gICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5h
YmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHByb2Nlc3NQ
b29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yUmVtb3RlV29ya2VycygpKTsK
LQotICAgICAgICBpZiAoc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hl
KCkpIHsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQ
cm9jZXNzKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxk
U2h1dERvd25Qcm9jZXNzOjpObyk7Ci0gICAgICAgICAgICBBU1NFUlQoIXNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIFdF
QlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgcmV1c2luZyBhbiBl
eGlzdGluZyB3ZWIgcHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIsIHNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eSwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKCFzaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZUZvclJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCAq
cHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3
ZWJzaXRlRGF0YVN0b3JlKTsKLSAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3
UHJvY2Vzc1Byb3h5LnB0cigpOwotCi0gICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9H
X1NUQVRJQyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2Vz
cyAocHJvY2Vzcz0lcCwgUElEPSVkKSIsIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgc2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKLQotICAgICAgICBwcm9j
ZXNzUG9vbC0+aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MobmV3UHJvY2Vzc1Byb3h5LCB3ZWJzaXRl
RGF0YVN0b3JlKTsKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZN
b3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwotICAgIH0KLQotICAgIHJlbW90ZVdvcmtlclByb2Nlc3Nl
cygpLmFkZCgqc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KTsKLQotICAgIHNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV9y
ZW1vdGVXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZl
cmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJl
bmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQuaXNO
dWxsKCkpCi0gICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+c2V0UmVtb3RlV29ya2Vy
VXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclVzZXJBZ2VudCk7Ci19Ci0KIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQog
ewogICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAwZDEyMDE1YmJhNDNmZGJmMzc5
OWY2YjBjN2ZlM2QwMjI4MmI4NjkxLi5jNmMzM2YyYTBlNzUyYzgwNTdmNTdjMGVhYmU4MzQwZDIx
OGRjNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM3
OSw3ICszNzksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVGcm9tUmVtb3RlV29ya2VyUHJv
Y2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVy
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50
KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9y
VGVzdGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rp
dml0eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTM4OCw3ICszODcsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHVwZGF0ZVJlbW90ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCk7CiAgICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyRm9yUmVtb3RlV29ya2VycygpOwotICAgIHN0YXRpYyB2b2lkIGVzdGFi
bGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
cj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAz
NjhhMzk1ODdkYTMzZGU2NGMxYjg5ZDBlNjM4ZDM4Yjg4ZDdhMTdiLi4yZGZmODMyMzY3MGMzNTZj
ZDZkZGY4NGM4YTE5YzFmYzdjNDM3YTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtl
clR5cGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oIgog
I2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNsdWRl
ICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgiCkBA
IC05OTIsNyArOTkzLDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVucmVzcG9u
c2l2ZSgpCiAgICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZlIGFu
ZCBvbmx5IHJ1bnMgc2VydmljZS9zaGFyZWQgd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMgc2lu
Y2UgdGhlcmUgYXJlIG5vIG5hdGl2ZSBjbGllbnRzIHRvIGRvIGl0LgogICAgIGlmIChpc1J1bm5p
bmdXb3JrZXJzKCkgJiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkgewogICAgICAgICBXRUJQUk9DRVNT
UFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21lVW5y
ZXNwb25zaXZlOiBUZXJtaW5hdGluZyB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNlIGl0
IGlzIHVucmVzcG9uc2l2ZSIpOwotICAgICAgICBkaXNhYmxlUmVtb3RlV29ya2Vycyh7IFJlbW90
ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtl
ciB9KTsKKyAgICAgICAgZGlzYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlcik7CisgICAgICAgIGRpc2FibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5
cGU6OlNoYXJlZFdvcmtlcik7CiAgICAgICAgIHRlcm1pbmF0ZSgpOwogICAgIH0KIH0KQEAgLTE4
NTYsMTggKzE4NTgsMTcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZEJhY2tncm91bmRBY3Rp
dml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6
OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHQoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBl
LCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0OiBTdGFy
dGVkIik7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3RhYmxp
c2hSZW1vdGVXb3JrZXJDb250ZXh0OiBTdGFydGVkICh3b3JrZXJUeXBlPSV7cHVibGljfXMpIiwg
d29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyID8gInNlcnZpY2Ui
IDogInNoYXJlZCIpOwogICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKLSAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNlcnZpY2VXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1
bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
cmVtb3RlV29ya2VyUGFnZVByb3h5SUQsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5yZW1v
dGVXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25E
YXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIGF1dG8m
IHJlbW90ZVdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyID8gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gOiBtX3NoYXJlZFdv
cmtlckluZm9ybWF0aW9uOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6RXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzIHsgd29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdy
b3VwSUQoKSwgcmVtb3RlV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtlclBhZ2VQcm94eUlE
LCByZW1vdGVXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZUlELCBzdG9yZSwgcmVn
aXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgcmVtb3RlV29ya2Vy
SW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgd29ya2VyVHlwZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAg
ICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3RhYmxpc2hT
ZXJ2aWNlV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dDog
RmluaXNoZWQgKHdvcmtlclR5cGU9JXtwdWJsaWN9cykiLCB3b3JrZXJUeXBlID09IFJlbW90ZVdv
cmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgPyAic2VydmljZSIgOiAic2hhcmVkIik7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSwgMCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCkKIHsKQEAgLTE5MjYsMTcgKzE5MjcsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBk
YXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihSZW1vdGVXb3JrZXJUeXBlIHdvcmtlcgog
ICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsK
LSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNo
U2hhcmVkV29ya2VyQ29udGV4dDogU3RhcnRlZCIpOwotICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRs
eVVzZWQoKTsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHBy
b2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2hhcmVkV29y
a2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtlclBhZ2VQcm94eUlELCBtX3NoYXJlZFdvcmtlcklu
Zm9ybWF0aW9uLT5yZW1vdGVXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwg
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlzLCB3
ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBpZiAod2Vha1RoaXMpCi0g
ICAgICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKLSAgICB9LCAwKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lz
dGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUs
IFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiB7CiAgICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24g
PSB3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVk
V29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKQEAgLTE5OTIs
MzYgKzE5ODIsMzcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZygpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
Ci12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVJlbW90ZVdvcmtlcnMoT3B0aW9uU2V0PFJl
bW90ZVdvcmtlclR5cGU+IHdvcmtlclR5cGUpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJs
ZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlKQogewogICAgIEFTU0VS
VCghd29ya2VyVHlwZS5pc0VtcHR5KCkpOwogCi0gICAgYm9vbCBkaWRDaGFuZ2UgPSBmYWxzZTsK
LSAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyKSAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikgewotICAgICAgICByZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3Rl
V29ya2VyUGFnZUlEKTsKLSAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07
Ci0gICAgICAgIGRpZENoYW5nZSA9IHRydWU7Ci0gICAgfQotICAgIGlmICh3b3JrZXJUeXBlLmNv
bnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRXb3JrZXJJ
bmZvcm1hdGlvbikgewotICAgICAgICBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uID0geyB9Owot
ICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOwotICAgIH0KLSAgICBpZiAoIWRpZENoYW5nZSkKKyAg
ICBhdXRvJiByZW1vdGVXb3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gUmVtb3RlV29y
a2VyVHlwZTo6U2VydmljZVdvcmtlciA/IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uIDogbV9z
aGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBpZiAoIXJlbW90ZVdvcmtlckluZm9ybWF0aW9u
KQogICAgICAgICByZXR1cm47CiAKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJv
Y2VzcywgImRpc2FibGVXb3JrZXJzOiBEaXNhYmxpbmcgd29ya2VycyAoU2hhcmVkV29ya2Vycz0l
ZCwgU2VydmljZVdvcmtlcnM9JWQpIiwgd29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJU
eXBlOjpTaGFyZWRXb3JrZXIpLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIpKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKHdv
cmtlclR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikKKyAgICAgICAgcmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PnJlbW90ZVdvcmtlclBhZ2VJRCk7CisjZW5kaWYKKyAgICByZW1vdGVXb3JrZXJJbmZvcm1hdGlv
biA9IHsgfTsKKworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAiZGlz
YWJsZVdvcmtlcnM6IERpc2FibGluZyB3b3JrZXJzICh3b3JrZXJUeXBlPSV7cHVibGljfXMpIiwg
d29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyID8gInNlcnZpY2Ui
IDogInNoYXJlZCIpOwogCiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIo
KTsKIAogICAgIGlmICghaXNSdW5uaW5nV29ya2VycygpKQogICAgICAgICBwcm9jZXNzUG9vbCgp
LnJlbW92ZUZyb21SZW1vdGVXb3JrZXJQcm9jZXNzZXMoKnRoaXMpOwogCisgICAgc3dpdGNoICh3
b3JrZXJUeXBlKSB7CisgICAgY2FzZSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyOgog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhS
ZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSkKICAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CiAjZW5kaWYKLSAg
ICBpZiAod29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIp
KQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtl
cjoKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBt
YXliZVNodXREb3duKCk7CiB9CkBAIC0yMDYxLDggKzIwNTIsMTAgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBj
b25zdCBVc2UKICAgICAgICAgeyB9CiAgICAgfTsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICBpZiAod29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
KQogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZUlELCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
SGFuZGxlcjo6c2luZ2xldG9uKCkpOworI2VuZGlmCiAKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVz
cG9uc2l2ZW5lc3NUaW1lcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCmluZGV4IDkxZDIxZDI4MzY2MTk2NjNmYTdkY2MyMDk1MzNkMWQ2YTAwNTBkNWQuLjdh
ODBjMjc0ZDIyNDM3NDIwODc4NjI2MmZiMzUzZGMyZTA4ZGVhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAi
UHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuaCIKLSNpbmNsdWRlICJS
ZW1vdGVXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSAiUmVzcG9uc2l2ZW5lc3NUaW1lci5oIgogI2lu
Y2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uU2VydmVyLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllci5oIgpAQCAtMTAwLDcgKzk5LDYgQEAgY2xhc3MgV2ViUGFnZVBy
b3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7Ci1lbnVtIGNsYXNzIFdlYnNpdGVEYXRh
VHlwZSA6IHVpbnQzMl90Owogc3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTsKIHN0cnVj
dCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgVXNlck1lc3NhZ2U7CkBA
IC0xMDksNiArMTA3LDkgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1
Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIHN0cnVjdCBXZWJzaXRlRGF0YTsKIAorZW51bSBjbGFz
cyBSZW1vdGVXb3JrZXJUeXBlIDogYm9vbDsKK2VudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDog
dWludDMyX3Q7CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogY2xhc3MgU3BlZWNoUmVjb2du
aXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcjsKICNlbmRpZgpAQCAtMTYzLDcg
KzE2NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5Qcm9jZXNzQ2FjaGUoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW5Qcm9jZXNzQ2FjaGU7IH0KIAogICAgIHZvaWQgZW5hYmxlUmVtb3RlV29ya2Vy
cyhSZW1vdGVXb3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
Jik7Ci0gICAgdm9pZCBkaXNhYmxlUmVtb3RlV29ya2VycyhPcHRpb25TZXQ8UmVtb3RlV29ya2Vy
VHlwZT4pOworICAgIHZvaWQgZGlzYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSk7
CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBBU1NF
UlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KICAg
ICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpOwpAQCAtMzY1LDEy
ICszNjYsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQo
Y29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVSZW1vdGVXb3JrZXJQcmVmZXJlbmNlc1N0
b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKLSAgICB2b2lkIGVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2
b2lkIGVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHQoUmVtb3RlV29ya2VyVHlwZSwgY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgcmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdvcmtl
clR5cGUsIFdlYlByb2Nlc3NQcm94eSYpOwogICAgIHZvaWQgdW5yZWdpc3RlclJlbW90ZVdvcmtl
ckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAg
dm9pZCB1cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFJlbW90ZVdvcmtlclR5cGUp
OwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHko
V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtl
clBhZ2VQcm94eUlEID09IHBhZ2VQcm94eUlEOyB9CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2Vy
Rm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2Vydmlj
ZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA4NDI4ZWJhYmViYWExMTUzZTM3MmY5YzM0
MDNjYmZhYTYxNjJhYjdhLi41MDg2MTFhZWY2OWUzNGNlZTYyMmQ3YjIzY2EzN2ZjMWRhMDY3ZjMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00OSw2ICs0OSw3
IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5oIgog
I2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlJlbW90
ZVdlYkxvY2tSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlclR5cGUuaCIKICNpbmNs
dWRlICJTcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFNYXAuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgpAQCAtMTkyNiwy
NyArMTkyNywyNSBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3
b3JrKCkKICAgICByZXR1cm4gKm1fbGliV2ViUlRDTmV0d29yazsKIH0KIAotdm9pZCBXZWJQcm9j
ZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwg
UmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nl
c3M6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdy
b3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUmVtb3RlV29y
a2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgLy8gV2UgYXJlIGluIHRo
ZSBTaGFyZWQgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJs
aXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJvY2VzcwotICAgIC8vIGJ5IGNh
bGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24g
YXMgdGhlCisgICAgLy8gV2UgYXJlIGluIHRoZSBSZW1vdGUgV29ya2VyIGNvbnRleHQgcHJvY2Vz
cyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5l
dHdvcmsgUHJvY2VzcworICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIC8gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIgbmVl
ZCB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCiAgICAg
Ly8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9zZXMu
CiAgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKTsKLSAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiks
IHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBzdG9yZSwgV1RGTW92ZShpbml0
aWFsaXphdGlvbkRhdGEpKSk7Ci0gICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmNvbm5lY3Rpb24oKS0+ZXN0YWJsaXNoQ29ubmVjdGlvbihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgc3dpdGNoICh3b3JrZXJUeXBlKSB7CisgICAgY2FzZSBSZW1vdGVX
b3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyOgorICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24+KGlwY0Nvbm5lY3Rpb24sIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIsIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlE
LCBzdG9yZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEpKSk7CisgICAgICAgIFNXQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+ZXN0YWJsaXNoQ29ubmVjdGlvbihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVt
b3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyOgorICAgICAgICBTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShyZWdp
c3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBzdG9y
ZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEpKSk7CisgICAgICAgIFNoYXJlZFdvcmtlckNv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCktPmVzdGFibGlzaENvbm5lY3Rp
b24oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBicmVhazsKKyAgICB9CiB9
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3Vw
SWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJv
eHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBz
dG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25h
bDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRh
dGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAg
ICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhl
IGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJv
Y2VzcwotICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBT
V0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29u
bmVjdGlvbiBhcyB0aGUKLSAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5bmNo
cm9uaXphdGlvbiBwdXJwb3Nlcy4KLSAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAgIFNXQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiks
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94eUlE
LCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkpKTsKLSAgICBTV0Nv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCktPmVzdGFibGlzaENvbm5lY3Rp
b24oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCiB2b2lkIFdlYlByb2Nlc3M6OmFk
ZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBtX3N3UmVnaXN0cmF0aW9uQ291bnRz
LmFkZChpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4
IDdjNTBlMDdlZGE1ZTA0ZmRiMzJjMGFlMzBlZmY0YjBiZmUzNzE4ZmYuLjk2ZTZjZWUyMjE4ZjZh
OWIwMDUzZGQ5ZmZhMGQ1ZDgzY2QzYjY0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaApAQCAtMTU3LDYgKzE1Nyw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwog
c3RydWN0IFdlYnNpdGVEYXRhOwogc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwog
CitlbnVtIGNsYXNzIFJlbW90ZVdvcmtlclR5cGUgOiBib29sOwogZW51bSBjbGFzcyBXZWJzaXRl
RGF0YVR5cGUgOiB1aW50MzJfdDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC00NzAs
MTAgKzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnYW1lcGFkRGlzY29ubmVjdGVkKHVuc2ln
bmVkIGluZGV4KTsKICNlbmRpZgogCi0gICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBSZW1vdGVXb3JrZXJJ
bml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSNlbmRpZgorICAgIHZvaWQgZXN0YWJsaXNoUmVtb3Rl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUs
IFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBSZW1vdGVXb3JrZXJJ
bml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAg
IHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJz
aXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRTaW5j
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZjVlNzM2ZWQzNDdmMjcxYWRlYzdj
NDVkMDNmZDgzZGJiMGJhOWJlZS4uYTgzNzEzMDk0OWYxNjI3YzBmN2MxYWFlMjJlOWRkNWFmMWFk
ZjIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTEwMCwxMSArMTAwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBHYW1lcGFkRGlzY29ubmVjdGVkKHVuc2lnbmVk
IGluZGV4KQogI2VuZGlmCiAKLSAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91
cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNT
dG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdHJ1Y3QgV2Vi
S2l0OjpSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAt
PiAoKSBBc3luYwotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFNl
cnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdl
R3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0
IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6
OlJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgp
IEFzeW5jCi0jZW5kaWYKKyAgICBFc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoZW51bTpib29sIFdlYktpdDo6UmVtb3RlV29ya2VyVHlwZSB3b3Jr
ZXJUeXBlLCBXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6
V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
Zmllciwgc3RydWN0IFdlYktpdDo6UmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGluaXRp
YWxpemF0aW9uRGF0YSkgLT4gKCkgQXN5bmMKIAogICAgIFNldEhhc1N1c3BlbmRlZFBhZ2VQcm94
eShib29sIGhhc1N1c3BlbmRlZFBhZ2VQcm94eSk7CiAgICAgU2V0SXNJblByb2Nlc3NDYWNoZShi
b29sIGlzSW5Qcm9jZXNzQ2FjaGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452986</attachid>
            <date>2022-02-23 08:59:12 -0800</date>
            <delta_ts>2022-02-23 09:58:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237085-20220223085911.patch</filename>
            <type>text/plain</type>
            <size>53947</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYxZGE5MmE4Mjg3NGJiOWIz
MTBiN2Y3YTM0YTNhNTRiMWQ5NjNhYmUuLjY3YTgwMmVkYWE3YTNlYzA5MzdjYmRmYjZmYjQyODQ1
YTRiYzEyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjItMDItMjMgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTaGFyZSBtb3JlIGNvZGUgYmV0d2Vl
biBzZXJ2aWNlIGFuZCBzaGFyZWQgd29ya2VycyBmb3IgY29udGV4dCBjb25uZWN0aW9uIGVzdGFi
bGlzaG1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzA4NQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAg
U2hhcmUgbW9yZSBjb2RlIGJldHdlZW4gc2VydmljZSBhbmQgc2hhcmVkIHdvcmtlcnMgZm9yIGNv
bnRleHQgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
ZW5zdXJlU1dTZXJ2ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmZp
cnN0U2hhcmVkV29ya2VyT2JqZWN0UHJvY2VzcyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29y
a2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVh
dGVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNl
cnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2VyKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJs
aXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFi
bGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtl
ckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMjItMDItMjMgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
ZW5xdWV1ZVNhbXBsZSBzaG91bGQgbm90IGNoYW5nZSBtZWRpYSBzYW1wbGVzIG93bmVkIGJ5IGl0
cyBvYmplY3QgaGVhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcAppbmRleCBkMmUwZDYxZjllMmM4OTVjYTc2NjU4N2ZlOWUwMmVhNjJiYmRmNjQ5
Li42ZGRjNzIwZjcwN2EzNzYyMTAxZGY5MjZiZTk0MzA4NjNmNTNjYjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDEsNiArNDEs
NyBAQAogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5oIgogI2lu
Y2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIlByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2Vy
VHlwZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCIKICNpbmNsdWRlICJX
ZWJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTYyOCw3ICs2Mjks
NyBAQCBTV1NlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVNXU2VydmVyKCkKICAgICAgICAg
ICAgIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpzdGFydCh0aGlzLCBXVEZNb3ZlKGpv
YkRhdGEpLCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSwgW3RoaXNdKGF1dG8mIHJlZ2lzdHJhYmxlRG9t
YWluLCBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
CiAgICAgICAgICAgICBBU1NFUlQoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSk7Ci0gICAg
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFNl
cnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJs
ZURvbWFpbiwgcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIG1fc2Vzc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsK
KyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJs
aXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgUmVtb3Rl
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcmVnaXN0cmFibGVEb21haW4sIHJlcXVlc3RpbmdQ
cm9jZXNzSWRlbnRpZmllciwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBtX3Nlc3Npb25J
RCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CiAgICAgICAgIH0sIFdURk1vdmUo
YXBwQm91bmREb21haW5zQ2FsbGJhY2spKTsKICAgICB9CiAgICAgcmV0dXJuICptX3N3U2VydmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAKaW5kZXggNDk1MDE1YmYzMGJmYzgzMjBmYWVkOGM4
MjYwOGUyMmY1MDA1ZDBmOC4uMTU4ODJhM2Q0NjNiM2ViOTk4OWJjNGZhNDFlNTU4ZGZiMjE5YjVm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCkBAIC05OCw2ICs5OCwxMyBAQCB2b2lkIFdl
YlNoYXJlZFdvcmtlcjo6Zm9yRWFjaFNoYXJlZFdvcmtlck9iamVjdChjb25zdCBGdW5jdGlvbjx2
b2lkKFdlYkNvcmU6OlNoYQogICAgICAgICBhcHBseShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBwb3J0KTsKIH0KIAorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
cj4gV2ViU2hhcmVkV29ya2VyOjpmaXJzdFNoYXJlZFdvcmtlck9iamVjdFByb2Nlc3MoKSBjb25z
dAoreworICAgIGlmIChtX3NoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBtX3NoYXJlZFdvcmtlck9iamVjdHMuYmVn
aW4oKS0+a2V5LnByb2Nlc3NJZGVudGlmaWVyKCk7Cit9CisKIFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlcjo6Y29udGV4dENvbm5lY3Rpb24o
KSBjb25zdAogewogICAgIHJldHVybiBtX3NlcnZlci5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaApp
bmRleCA5M2JiNTY2ODJkYTE5MmNmMzQ3N2FlMDUxOTgyNDQ2YzQwMDNjYzNhLi43NTM1MjRmNjRj
MmIyY2RlNmFmYjllYWU4YTA1NDdlMWVhNDk3NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaApA
QCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVTaGFyZWRXb3JrZXJPYmpl
Y3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CiAgICAgdW5zaWduZWQg
c2hhcmVkV29ya2VyT2JqZWN0c0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJP
YmplY3RzLnNpemUoKTsgfQogICAgIHZvaWQgZm9yRWFjaFNoYXJlZFdvcmtlck9iamVjdChjb25z
dCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmKT4mKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiBmaXJzdFNoYXJlZFdvcmtlck9i
amVjdFByb2Nlc3MoKSBjb25zdDsKIAogICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dENvbm5lY3Rp
b24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcAppbmRleCAyNDZlODM5N2E0NzJmYTc1ODU4NjAz
MzgyNWU0MDBjMGRmMGJmZjdmLi4yNjA3ZjcwY2MyOWM1N2IzYjc3ZTNhOWNlN2RmMzUzYjJmYjA1
MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVk
ZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgogI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCkBAIC0xMTIsNyArMTEzLDcg
QEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29y
a2VyU2NyaXB0KFdlYlNoYXJlZFdvcmtlciYKICAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmxh
dW5jaFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHNoYXJlZFdvcmtlci5yZWdpc3RyYWJsZURvbWFp
bigpKTsKKyAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihzaGFyZWRXb3JrZXIucmVnaXN0cmFi
bGVEb21haW4oKSwgc2hhcmVkV29ya2VyLmZpcnN0U2hhcmVkV29ya2VyT2JqZWN0UHJvY2Vzcygp
KTsKIH0KIAogYm9vbCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rp
b25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4pIGNvbnN0CkBAIC0xMjQsNyArMTI1LDcgQEAgYm9vbCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihjb25zdCBXZWIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX2NvbnRl
eHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOwogICAgIGlmIChtX3Bl
bmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4p
KQpAQCAtMTMzLDcgKzEzNCw3IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVD
b250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvCiAgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0
Q29ubmVjdGlvbiB3aWxsIGNyZWF0ZSBhIGNvbm5lY3Rpb24iKTsKIAogICAgIG1fcGVuZGluZ0Nv
bnRleHRDb25uZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFibGVEb21haW4pOwotICAgIG1fc2Vz
c2lvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21h
aW4sIG1fc2Vzc2lvbi5zZXNzaW9uSUQoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgcmVnaXN0cmFibGVEb21haW5dIHsKKyAgICBtX3Nlc3Npb24ubmV0d29ya1Byb2Nl
c3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwg
cmVnaXN0cmFibGVEb21haW4sIHJlcXVlc3RpbmdQcm9jZXNzSWRlbnRpZmllciwgc3RkOjpudWxs
b3B0LCBtX3Nlc3Npb24uc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHJlZ2lzdHJhYmxlRG9tYWluLCByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXJd
IHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTQ1
LDcgKzE0Niw3IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29u
bmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlv
bihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlv
bihyZWdpc3RyYWJsZURvbWFpbiwgcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyKTsKICAgICB9
LCAwKTsKIH0KIApAQCAtMTcwLDggKzE3MSwxMCBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
cjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZQog
CiAgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKIAot
ICAgIGlmIChjb250ZXh0Q29ubmVjdGlvbi5oYXNTaGFyZWRXb3JrZXJPYmplY3RzKCkpCi0gICAg
ICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAo
YXV0byYgc2hhcmVkV29ya2VyT2JqZWN0cyA9IGNvbnRleHRDb25uZWN0aW9uLnNoYXJlZFdvcmtl
ck9iamVjdHMoKTsgIXNoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1
dG8gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyID0gc2hhcmVkV29ya2VyT2JqZWN0cy5iZWdp
bigpLT5rZXk7CisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9t
YWluLCByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIH0KIH0KIAogdm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKQEAgLTIxNSw3
ICsyMTgsNyBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3Jr
ZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JgogCiAgICAgY29udGV4dENvbm5lY3Rp
b24tPnRlcm1pbmF0ZVNoYXJlZFdvcmtlcigqc2hhcmVkV29ya2VyKTsKIAotICAgIGlmICghY29u
dGV4dENvbm5lY3Rpb24tPmhhc1NoYXJlZFdvcmtlck9iamVjdHMoKSkKKyAgICBpZiAoY29udGV4
dENvbm5lY3Rpb24tPnNoYXJlZFdvcmtlck9iamVjdHMoKS5pc0VtcHR5KCkpCiAgICAgICAgIGNv
bnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCmluZGV4IDNhMzMyZWExMDNkMDRmZDNmNTQyMzJi
MDZlOWI5YTcxNTQ4MDJiOTUuLjE4YjMxMGU1NWE2Y2E2ZTVjOWY2NGY3MWM1NGE1ODAzZTczYTA2
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCkBAIC03MSw3ICs3MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb24oV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICB2b2lkIGNyZWF0ZUNvbnRleHRD
b25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVy
KTsKICAgICBib29sIG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgY29udGV4
dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mKTsKICAgICB2b2lkIGRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFdlYlNo
YXJlZFdvcmtlciYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CmluZGV4IDg0OTA3Nzg0ZWQ5YzM0ZjhmNjhkMWZlNDA2YzI5YmU1YjZiMTQ1NjEuLjg0MTg3MzU3
NWM5MzA3M2Y5OGZiYWM4ZTIzZGQ3NGZkNTc5YTRmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTYy
LDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKGNvbnN0
IFdlYlNoYXJlZFdvcmtlciYpOwogCiAgICAgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRl
ZCgpOwotICAgIGJvb2wgaGFzU2hhcmVkV29ya2VyT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuICFt
X3NoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpOyB9CisgICAgY29uc3QgSGFzaE1hcDxXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSGFzaFNldDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyPj4mIHNoYXJlZFdvcmtlck9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX3No
YXJlZFdvcmtlck9iamVjdHM7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZVdvcmtlclR5cGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZVdvcmtlclR5cGUuaAppbmRleCA1MjgxNmQ5NDFmODJmZWM0N2VmOGY1NDY0ZGZkNjg5ZWI2
MGI3Y2Y5Li4xMDFjZWVmOTFiZjRjNDVlNmJiNDE4YTE5MWJiYTFjMjU2YWY5NDlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlV29ya2VyVHlwZS5oCkBAIC0yNywxOSArMjcsNiBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotZW51bSBjbGFzcyBSZW1vdGVXb3JrZXJUeXBlIDogdWludDMy
X3QgewotICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8IDAsCi0gICAgU2hhcmVkV29ya2VyID0gMSA8
PCAxCi19OworZW51bSBjbGFzcyBSZW1vdGVXb3JrZXJUeXBlIDogYm9vbCB7IFNlcnZpY2VXb3Jr
ZXIsIFNoYXJlZFdvcmtlciB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotbmFtZXNwYWNl
IFdURiB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6UmVtb3RlV29ya2Vy
VHlwZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYktpdDo6
UmVtb3RlV29ya2VyVHlwZSwKLSAgICAgICAgV2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyLAotICAgICAgICBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtl
cgotICAgID47Ci19OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNmI2YTA4YmFjNjA2MGM0MDE0NGQx
ZmNhMGI0Y2ZkM2RhZWU1M2FlNy4uNTdkZThiMWY2NTg2NmZiMWZjZjdiZDE4YmJiNjhkMjBjMTVh
ZTlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zNCwxMCArMzQsNiBAQAogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJGcmFtZUluZm9EYXRhLmgiCi0jaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xf
TUFOQUdFUikKLSNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5o
IgotI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIK
LSNlbmRpZgogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZXMu
aCIKQEAgLTQ2LDEwICs0Miw4IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlBh
Z2VDbGllbnQuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgotI2lmIEhBVkUoU0VDX0tFWV9QUk9YWSkKLSNpbmNsdWRlICJTZWNL
ZXlQcm94eVN0b3JlLmgiCi0jZW5kaWYKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2Vi
Q29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIKQEAgLTc0LDEwICs2OCwxOSBAQAogI2luY2x1ZGUg
IlNlY0l0ZW1TaGltUHJveHkuaCIKICNlbmRpZgogCisjaWYgSEFWRShTRUNfS0VZX1BST1hZKQor
I2luY2x1ZGUgIlNlY0tleVByb3h5U3RvcmUuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KICNlbmRpZgogCisj
aWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKKyNpbmNsdWRlICJMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkxlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAj
ZW5kaWYKQEAgLTE0MTYsMTEgKzE0MTksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudAogfQog
I2VuZGlmCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVy
UmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBzaGFyZWRXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBh
dXRvKiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcih3
ZWJQcm9jZXNzSWRlbnRpZmllcik7CkBAIC0xNDQ3LDEyICsxNDQ1LDEzIEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6cmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZChSZW1vdGVXb3JrCiAgICAgICAgIHByb2Nlc3MtPmRpc2FibGVSZW1vdGVXb3JrZXJzKHdvcmtl
clR5cGUpOwogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IHJlcXVlc3RpbmdQcm9jZXNzSWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6ZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
Zmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pLCByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2Vi
UHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcyh3b3JrZXJUeXBlLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcmVxdWVz
dGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Np
b25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN0YXJ0U2VydmljZVdvcmtl
ckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJQcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlclBy
b2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzSWRlbnRpZmllcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDE2MmYwMjFjNDI1M2Q0YmEyNTlm
M2VmNGExYTczOWVjNDQ2YTlmMmMuLjNkMzU0NGRjYjk3NjBkNmUzMzcyNzVkNjJhNTM2MWM5YjE5
NWM0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OwogCi1lbnVtIGNsYXNzIFJlbW90ZVdvcmtlclR5cGUgOiB1aW50MzJfdDsKK2Vu
dW0gY2xhc3MgUmVtb3RlV29ya2VyVHlwZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZEdyYW5k
ZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMg
OiB1aW50OF90OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uIDogdWludDhfdDsK
QEAgLTMzMywxMiArMzMzLDExIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtl
clByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIGVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5k
UHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vz
c0lkZW50aWZpZXIpOwogI2VuZGlmCiAgICAgdm9pZCByZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbk5vTG9uZ2VyTmVlZGVkKFJlbW90ZVdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGVzdGFibGlzaFJl
bW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZW1vdGVXb3JrZXJU
eXBlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCByZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVt
b3RlV29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50
aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNoYXJlZFdvcmtlclByb2Nlc3NJZGVu
dGlmaWVyKTsKICAgICB2b2lkIHVucmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJl
bW90ZVdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzaGFyZWRXb3JrZXJQcm9jZXNzSWRl
bnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1MDhlZGQ4OGZm
NDhkNDA0ZTQyYjM4MDFlYjY3M2RjNGJhY2IxMGM1Li5lM2FiYmI0NjhmNWIzYWQwNzdlYjY0NmE2
OTJjYzdiZjkyOTU0ZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC01Mywx
NCArNTMsMTMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgVGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3
ZWJQcm9jZXNzSWRlbnRpZmllcikKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBF
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoKSBBc3luYwogICAgIFN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikK
ICAgICBFbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogI2VuZGlmCi0gICAg
RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0gICAgUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ob0xvbmdlck5lZWRlZChlbnVtOnVpbnQzMl90IFdlYktpdDo6UmVtb3RlV29ya2VyVHlwZSB3
b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIFJl
Z2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhlbnVtOnVpbnQzMl90IFdlYktpdDo6UmVt
b3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQ
cm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcmVtb3RlV29ya2Vy
UHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIFVucmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9j
ZXNzKGVudW06dWludDMyX3QgV2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciByZW1vdGVXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgRXN0
YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKGVudW06
Ym9vbCBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXI+IHJlcXVlc3RpbmdQcm9jZXNzSWRlbnRpZmllciwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisg
ICAgUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChlbnVtOmJvb2wg
V2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCisgICAgUmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNz
KGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHJlbW90ZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBVbnJlZ2lzdGVy
UmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVXb3JrZXJU
eXBlIHdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciByZW1vdGVXb3JrZXJQcm9jZXNzSWRl
bnRpZmllcik7CiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggM2Q4Njc4YzVkODY1MWVhYzQ1MDM3NzZk
MWZhMjQ4Yjg5OTdhZGJhYS4uMjkwMmYzY2I1MzZjM2VmNTI4MTI5NDIyNmJjYTI4NTY1OWJiYmEy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTEs
NiArNTEsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiUGVyQWN0aXZpdHlTdGF0ZUNQVVVz
YWdlU2FtcGxlci5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlclR5cGUuaCIKICNpbmNsdWRlICJT
YW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJV
SUdhbWVwYWQuaCIKQEAgLTUyNSwyNCArNTI2LDIzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omdl
dFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJv
CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OnNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
cyA9IGZhbHNlOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNz
UG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
UmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiByZXF1
ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4
aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CiAgICAgaWYgKCF3ZWJzaXRl
RGF0YVN0b3JlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwogICAgIGlmICghcHJvY2Vzc1Bvb2xzKCkuc2l6ZSgp
KQotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4gc2Vy
dmljZVdvcmtlclByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpLmdldCgpKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWY8V2ViUHJvY2Vzc1Bvb2w+PiByZW1vdGVXb3JrZXJQcm9jZXNzUG9vbChX
ZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVh
dGUoKS5nZXQoKSkpOwogCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcmVxdWVzdGluZ1By
b2Nlc3MgPSByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIgPyBXZWJQcm9jZXNzUHJveHk6OnBy
b2Nlc3NGb3JJZGVudGlmaWVyKCpyZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIpIDogbnVsbHB0
cjsKICAgICBXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wgPSByZXF1ZXN0aW5nUHJvY2VzcyA/
ICZyZXF1ZXN0aW5nUHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKSA6IHByb2Nlc3NQb29scygpWzBdOwog
ICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CiAKLSAgICBXZWJQcm9jZXNzUHJveHkqIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CisgICAgV2ViUHJvY2Vzc1Byb3h5KiByZW1v
dGVXb3JrZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CiAKLSAgICBhdXRvIHVzZVByb2Nlc3NG
b3JTZXJ2aWNlV29ya2VycyA9IFsmXShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpIHsKLSAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9ICZwcm9jZXNzOwotICAgICAgICBwcm9jZXNz
LmVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJv
Y2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JSZW1vdGVXb3JrZXJz
KCkpOworICAgIGF1dG8gdXNlUHJvY2Vzc0ZvclJlbW90ZVdvcmtlcnMgPSBbJl0oV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzKSB7CisgICAgICAgIHJlbW90ZVdvcmtlclByb2Nlc3NQcm94eSA9ICZw
cm9jZXNzOworICAgICAgICBwcm9jZXNzLmVuYWJsZVJlbW90ZVdvcmtlcnMod29ya2VyVHlwZSwg
cHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JSZW1vdGVXb3Jr
ZXJzKCkpOwogICAgICAgICBpZiAocHJvY2Vzcy5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAg
ICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKHByb2Nl
c3MsIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAg
ICAgICBBU1NFUlQoIXByb2Nlc3MuaXNJblByb2Nlc3NDYWNoZSgpKTsKQEAgLTU1MCwxOCArNTUw
LDIxIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnCiAgICAgfTsKIAogICAgIGlmIChzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIpIHsKKyAgICAgICAgQVNTRVJUKHdvcmtlclR5cGUgPT0gUmVt
b3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2
aWNlIHdvcmtlciBmb3IgYSBzZXJ2aWNlIHdvcmtlciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBz
dXJlIHdlIHVzZSB1c2UgdGhlIHBhZ2UncyBXZWJQcm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3Jr
ZXIuCiAgICAgICAgIGlmIChSZWZQdHIgcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vz
c0ZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5wcm9jZXNzSWRlbnRp
ZmllcigpKSkKLSAgICAgICAgICAgIHVzZVByb2Nlc3NGb3JTZXJ2aWNlV29ya2VycygqcHJvY2Vz
cyk7CisgICAgICAgICAgICB1c2VQcm9jZXNzRm9yUmVtb3RlV29ya2VycygqcHJvY2Vzcyk7CiAg
ICAgfQogCisgICAgYm9vbCBzaG91bGRVc2VTZXBhcmF0ZVJlbW90ZVdvcmtlclByb2Nlc3MgPSB3
b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgJiYgc191c2VTZXBh
cmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzOworCiAgICAgLy8gUHJpb3JpdGl6ZSB0aGUgcmVxdWVz
dGluZyBXZWJQcm9jZXNzIGZvciBydW5uaW5nIHRoZSBzZXJ2aWNlIHdvcmtlci4KLSAgICBpZiAo
IXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgJiYgIXNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2Vy
UHJvY2VzcyAmJiByZXF1ZXN0aW5nUHJvY2VzcykgeworICAgIGlmICghcmVtb3RlV29ya2VyUHJv
Y2Vzc1Byb3h5ICYmICFzaG91bGRVc2VTZXBhcmF0ZVJlbW90ZVdvcmtlclByb2Nlc3MgJiYgcmVx
dWVzdGluZ1Byb2Nlc3MpIHsKICAgICAgICAgaWYgKCZyZXF1ZXN0aW5nUHJvY2Vzcy0+d2Vic2l0
ZURhdGFTdG9yZSgpID09IHdlYnNpdGVEYXRhU3RvcmUgJiYgcmVxdWVzdGluZ1Byb2Nlc3MtPmlz
TWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgICAg
ICB1c2VQcm9jZXNzRm9yU2VydmljZVdvcmtlcnMoKnJlcXVlc3RpbmdQcm9jZXNzKTsKKyAgICAg
ICAgICAgIHVzZVByb2Nlc3NGb3JSZW1vdGVXb3JrZXJzKCpyZXF1ZXN0aW5nUHJvY2Vzcyk7CiAg
ICAgfQogCi0gICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ICYmICFzX3VzZVNlcGFy
YXRlU2VydmljZVdvcmtlclByb2Nlc3MpIHsKKyAgICBpZiAoIXJlbW90ZVdvcmtlclByb2Nlc3NQ
cm94eSAmJiAhc2hvdWxkVXNlU2VwYXJhdGVSZW1vdGVXb3JrZXJQcm9jZXNzKSB7CiAgICAgICAg
IGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgewogICAgICAg
ICAgICAgaWYgKHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vzc1Bvb2wtPm1fcHJld2FybWVkUHJvY2Vz
cy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CkBAIC01NzAsMzEgKzU3MywzMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJl
ZwogICAgICAgICAgICAgaWYgKCFwcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4o
cmVnaXN0cmFibGVEb21haW4pKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICB1c2VQcm9jZXNzRm9yU2VydmljZVdvcmtlcnMocHJvY2Vzcyk7CisgICAgICAgICAgICB1
c2VQcm9jZXNzRm9yUmVtb3RlV29ya2Vycyhwcm9jZXNzKTsKIAotICAgICAgICAgICAgV0VCUFJP
Q0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHJldXNpbmcgYW4gZXhp
c3Rpbmcgd2ViIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigp
KTsKKyAgICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNl
V29ya2VyLCAiZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzIHJldXNpbmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nlc3MgKHByb2Nlc3M9JXAsIHdvcmtl
clR5cGU9JXtwdWJsaWN9cywgUElEPSVkKSIsIHJlbW90ZVdvcmtlclByb2Nlc3NQcm94eSwgd29y
a2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyID8gInNlcnZpY2UiIDog
InNoYXJlZCIsIHJlbW90ZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJh
YmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKLSAgICAgICAgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKKyAgICBpZiAoIXJlbW90ZVdvcmtl
clByb2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nl
c3NQcm94eTo6Y3JlYXRlRm9yUmVtb3RlV29ya2Vycyh3b3JrZXJUeXBlLCAqcHJvY2Vzc1Bvb2ws
IFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0
b3JlKTsKKyAgICAgICAgcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5
LnB0cigpOwogCi0gICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2
aWNlV29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXM9
JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xf
UkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxpc2hSZW1vdGVXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3
b3JrZXIgcHJvY2VzcyAocHJvY2Vzcz0lcCwgd29ya2VyVHlwZT0le3B1YmxpY31zLCBQSUQ9JWQp
IiwgcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5LCB3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIgPyAic2VydmljZSIgOiAic2hhcmVkIiwgcmVtb3RlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKIAogICAgICAgICBwcm9jZXNzUG9vbC0+
aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MobmV3UHJvY2Vzc1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3Jl
KTsKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1By
b2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIHJlbW90ZVdvcmtlclByb2Nlc3NlcygpLmFkZCgq
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7CisgICAgcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCku
YWRkKCpyZW1vdGVXb3JrZXJQcm9jZXNzUHJveHkpOwogCiAgICAgYXV0byYgcHJlZmVyZW5jZXNT
dG9yZSA9IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bv
b2wtPm1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2Rl
ZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKTsKLSAgICBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcmVmZXJlbmNlc1N0
b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5LT5l
c3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0KHdvcmtlclR5cGUsIHByZWZlcmVuY2VzU3RvcmUs
IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKwogICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29y
a2VyVXNlckFnZW50LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LT5zZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNl
ckFnZW50KTsKKyAgICAgICAgcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRSZW1vdGVXb3Jr
ZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50KTsKIH0KLSNl
bmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tUmVtb3RlV29ya2VyUHJvY2Vz
c2VzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKQEAgLTYwMiw1NyArNjA1LDYgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVJlbW90ZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MpCiAgICAgcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHBy
b2Nlc3MpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byogd2Vi
c2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vz
c2lvbklEKHNlc3Npb25JRCk7Ci0gICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQotICAgICAgICB3
ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0
cigpOwotICAgIGlmICghcHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpKQotICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4gc2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2wo
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCkuZ2V0KCkpKTsKLQotICAgIC8vIEFyYml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3QgcHJv
Y2VzcyBwb29sIHRvIGhvc3QgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vzcy4KLSAgICBhdXRvKiBw
cm9jZXNzUG9vbCA9IHByb2Nlc3NQb29scygpWzBdOwotICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7
Ci0KLSAgICBXZWJQcm9jZXNzUHJveHkqIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxw
dHIgfTsKLQotICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nl
cykgewotICAgICAgICBpZiAocHJvY2Vzcy5wdHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJt
ZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUo
KSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlm
ICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWlu
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eSA9IHByb2Nlc3MucHRyKCk7Ci0gICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+
ZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHByb2Nl
c3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yUmVtb3RlV29ya2Vycygp
KTsKLQotICAgICAgICBpZiAoc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0Nh
Y2hlKCkpIHsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1v
dmVQcm9jZXNzKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hv
dWxkU2h1dERvd25Qcm9jZXNzOjpObyk7Ci0gICAgICAgICAgICBBU1NFUlQoIXNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIsICJlc3RhYmxp
c2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgcmV1c2luZyBh
biBleGlzdGluZyB3ZWIgcHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIsIHNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eSwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmll
cigpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKCFzaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJv
eHk6OmNyZWF0ZUZvclJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2Vy
LCAqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0s
ICp3ZWJzaXRlRGF0YVN0b3JlKTsKLSAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5ID0g
bmV3UHJvY2Vzc1Byb3h5LnB0cigpOwotCi0gICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0Vf
TE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJv
Y2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIsIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgc2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKLQotICAgICAgICBw
cm9jZXNzUG9vbC0+aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MobmV3UHJvY2Vzc1Byb3h5LCB3ZWJz
aXRlRGF0YVN0b3JlKTsKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChX
VEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwotICAgIH0KLQotICAgIHJlbW90ZVdvcmtlclByb2Nl
c3NlcygpLmFkZCgqc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KTsKLQotICAgIHNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+
bV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclBy
ZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVm
ZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQu
aXNOdWxsKCkpCi0gICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+c2V0UmVtb3RlV29y
a2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclVzZXJBZ2VudCk7Ci19Ci0K
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQo
KQogewogICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAwZDEyMDE1YmJhNDNmZGJm
Mzc5OWY2YjBjN2ZlM2QwMjI4MmI4NjkxLi5jNmMzM2YyYTBlNzUyYzgwNTdmNTdjMGVhYmU4MzQw
ZDIxOGRjNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAg
LTM3OSw3ICszNzksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVGcm9tUmVtb3RlV29ya2Vy
UHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGllc0Nv
dW50KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5
Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRB
Y3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTM4OCw3ICszODcsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHVwZGF0ZVJlbW90ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCk7CiAgICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyRm9yUmVtb3RlV29ya2VycygpOwotICAgIHN0YXRpYyB2b2lkIGVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
Zmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCAzNjhhMzk1ODdkYTMzZGU2NGMxYjg5ZDBlNjM4ZDM4Yjg4ZDdhMTdiLi4yZGZmODMyMzY3MGMz
NTZjZDZkZGY4NGM4YTE5YzFmYzdjNDM3YTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVdv
cmtlclR5cGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5o
IgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNs
dWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgi
CkBAIC05OTIsNyArOTkzLDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVucmVz
cG9uc2l2ZSgpCiAgICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZl
IGFuZCBvbmx5IHJ1bnMgc2VydmljZS9zaGFyZWQgd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMg
c2luY2UgdGhlcmUgYXJlIG5vIG5hdGl2ZSBjbGllbnRzIHRvIGRvIGl0LgogICAgIGlmIChpc1J1
bm5pbmdXb3JrZXJzKCkgJiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkgewogICAgICAgICBXRUJQUk9D
RVNTUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21l
VW5yZXNwb25zaXZlOiBUZXJtaW5hdGluZyB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNl
IGl0IGlzIHVucmVzcG9uc2l2ZSIpOwotICAgICAgICBkaXNhYmxlUmVtb3RlV29ya2Vycyh7IFJl
bW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdv
cmtlciB9KTsKKyAgICAgICAgZGlzYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcik7CisgICAgICAgIGRpc2FibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtl
clR5cGU6OlNoYXJlZFdvcmtlcik7CiAgICAgICAgIHRlcm1pbmF0ZSgpOwogICAgIH0KIH0KQEAg
LTE4NTYsMTggKzE4NTgsMTcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZEJhY2tncm91bmRB
Y3Rpdml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHQoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJU
eXBlLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0OiBT
dGFydGVkIik7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3Rh
Ymxpc2hSZW1vdGVXb3JrZXJDb250ZXh0OiBTdGFydGVkICh3b3JrZXJUeXBlPSV7cHVibGljfXMp
Iiwgd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyID8gInNlcnZp
Y2UiIDogInNoYXJlZCIpOwogICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKLSAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRl
ZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+cmVtb3RlV29ya2VyUGFnZVByb3h5SUQsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5y
ZW1vdGVXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRp
b25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIGF1
dG8mIHJlbW90ZVdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJU
eXBlOjpTZXJ2aWNlV29ya2VyID8gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gOiBtX3NoYXJl
ZFdvcmtlckluZm9ybWF0aW9uOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6RXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzIHsgd29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFn
ZUdyb3VwSUQoKSwgcmVtb3RlV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtlclBhZ2VQcm94
eUlELCByZW1vdGVXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZUlELCBzdG9yZSwg
cmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgcmVtb3RlV29y
a2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgd29ya2VyVHlwZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQot
ICAgICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgICAgIFdFQlBST0NF
U1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4
dDogRmluaXNoZWQgKHdvcmtlclR5cGU9JXtwdWJsaWN9cykiLCB3b3JrZXJUeXBlID09IFJlbW90
ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgPyAic2VydmljZSIgOiAic2hhcmVkIik7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSwgMCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCkKIHsKQEAgLTE5MjYsMTcgKzE5MjcsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
dXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihSZW1vdGVXb3JrZXJUeXBlIHdvcmtl
cgogICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CiB9CiAKLXZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
LXsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJs
aXNoU2hhcmVkV29ya2VyQ29udGV4dDogU3RhcnRlZCIpOwotICAgIG1hcmtQcm9jZXNzQXNSZWNl
bnRseVVzZWQoKTsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7
IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2hhcmVk
V29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtlclBhZ2VQcm94eUlELCBtX3NoYXJlZFdvcmtl
ckluZm9ybWF0aW9uLT5yZW1vdGVXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFp
biwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBpZiAod2Vha1RoaXMp
Ci0gICAgICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKLSAgICB9LCAwKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJl
Z2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5
cGUsIFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiB7CiAgICAgYXV0byYgd29ya2VySW5mb3JtYXRp
b24gPSB3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hh
cmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKQEAgLTE5
OTIsMzYgKzE5ODIsMzcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZygpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVJlbW90ZVdvcmtlcnMoT3B0aW9uU2V0
PFJlbW90ZVdvcmtlclR5cGU+IHdvcmtlclR5cGUpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlz
YWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlKQogewogICAgIEFT
U0VSVCghd29ya2VyVHlwZS5pc0VtcHR5KCkpOwogCi0gICAgYm9vbCBkaWRDaGFuZ2UgPSBmYWxz
ZTsKLSAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNl
V29ya2VyKSAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikgewotICAgICAgICByZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVt
b3RlV29ya2VyUGFnZUlEKTsKLSAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7
IH07Ci0gICAgICAgIGRpZENoYW5nZSA9IHRydWU7Ci0gICAgfQotICAgIGlmICh3b3JrZXJUeXBl
LmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRXb3Jr
ZXJJbmZvcm1hdGlvbikgewotICAgICAgICBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uID0geyB9
OwotICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOwotICAgIH0KLSAgICBpZiAoIWRpZENoYW5nZSkK
KyAgICBhdXRvJiByZW1vdGVXb3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gUmVtb3Rl
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciA/IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uIDog
bV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBpZiAoIXJlbW90ZVdvcmtlckluZm9ybWF0
aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2VzcywgImRpc2FibGVXb3JrZXJzOiBEaXNhYmxpbmcgd29ya2VycyAoU2hhcmVkV29ya2Vy
cz0lZCwgU2VydmljZVdvcmtlcnM9JWQpIiwgd29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3Jr
ZXJUeXBlOjpTaGFyZWRXb3JrZXIpLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIpKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYg
KHdvcmtlclR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikKKyAgICAgICAg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24tPnJlbW90ZVdvcmtlclBhZ2VJRCk7CisjZW5kaWYKKyAgICByZW1vdGVXb3JrZXJJbmZvcm1h
dGlvbiA9IHsgfTsKKworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAi
ZGlzYWJsZVdvcmtlcnM6IERpc2FibGluZyB3b3JrZXJzICh3b3JrZXJUeXBlPSV7cHVibGljfXMp
Iiwgd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyID8gInNlcnZp
Y2UiIDogInNoYXJlZCIpOwogCiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGlt
ZXIoKTsKIAogICAgIGlmICghaXNSdW5uaW5nV29ya2VycygpKQogICAgICAgICBwcm9jZXNzUG9v
bCgpLnJlbW92ZUZyb21SZW1vdGVXb3JrZXJQcm9jZXNzZXMoKnRoaXMpOwogCisgICAgc3dpdGNo
ICh3b3JrZXJUeXBlKSB7CisgICAgY2FzZSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
OgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAod29ya2VyVHlwZS5jb250YWlu
cyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSkKICAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CiAjZW5kaWYK
LSAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3Jr
ZXIpKQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdv
cmtlcjoKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOworICAgICAgICBicmVhazsKKyAgICB9CiAKICAg
ICBtYXliZVNodXREb3duKCk7CiB9CkBAIC0yMDYxLDggKzIwNTIsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBl
LCBjb25zdCBVc2UKICAgICAgICAgeyB9CiAgICAgfTsKIAorI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICBpZiAod29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyKQogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZUlELCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0
aW9uSGFuZGxlcjo6c2luZ2xldG9uKCkpOworI2VuZGlmCiAKICAgICB1cGRhdGVCYWNrZ3JvdW5k
UmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCmluZGV4IDkxZDIxZDI4MzY2MTk2NjNmYTdkY2MyMDk1MzNkMWQ2YTAwNTBkNWQu
LjdhODBjMjc0ZDIyNDM3NDIwODc4NjI2MmZiMzUzZGMyZTA4ZGVhNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVk
ZSAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQu
aCIKICNpbmNsdWRlICJSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuaCIKLSNpbmNsdWRl
ICJSZW1vdGVXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSAiUmVzcG9uc2l2ZW5lc3NUaW1lci5oIgog
I2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uU2VydmVyLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllci5oIgpAQCAtMTAwLDcgKzk5LDYgQEAgY2xhc3MgV2ViUGFn
ZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7Ci1lbnVtIGNsYXNzIFdlYnNpdGVE
YXRhVHlwZSA6IHVpbnQzMl90Owogc3RydWN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZTsKIHN0
cnVjdCBHUFVQcm9jZXNzQ29ubmVjdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgVXNlck1lc3NhZ2U7
CkBAIC0xMDksNiArMTA3LDkgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBz
dHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIHN0cnVjdCBXZWJzaXRlRGF0YTsKIAorZW51bSBj
bGFzcyBSZW1vdGVXb3JrZXJUeXBlIDogYm9vbDsKK2VudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBl
IDogdWludDMyX3Q7CisKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogY2xhc3MgU3BlZWNoUmVj
b2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcjsKICNlbmRpZgpAQCAtMTYz
LDcgKzE2NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzSW5Qcm9jZXNzQ2FjaGUoKSBjb25zdCB7
IHJldHVybiBtX2lzSW5Qcm9jZXNzQ2FjaGU7IH0KIAogICAgIHZvaWQgZW5hYmxlUmVtb3RlV29y
a2VycyhSZW1vdGVXb3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyJik7Ci0gICAgdm9pZCBkaXNhYmxlUmVtb3RlV29ya2VycyhPcHRpb25TZXQ8UmVtb3RlV29y
a2VyVHlwZT4pOworICAgIHZvaWQgZGlzYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlw
ZSk7CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBB
U1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0K
ICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpOwpAQCAtMzY1
LDEyICszNjYsMTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRSZW1vdGVXb3JrZXJVc2VyQWdl
bnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVSZW1vdGVXb3JrZXJQcmVmZXJlbmNl
c1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKLSAgICB2b2lkIGVzdGFibGlzaFNo
YXJlZFdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAg
ICB2b2lkIGVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHQoUmVtb3RlV29ya2VyVHlwZSwgY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
cj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgcmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdv
cmtlclR5cGUsIFdlYlByb2Nlc3NQcm94eSYpOwogICAgIHZvaWQgdW5yZWdpc3RlclJlbW90ZVdv
cmtlckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Byb3h5Jik7CiAg
ICAgdm9pZCB1cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFJlbW90ZVdvcmtlclR5
cGUpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJv
eHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdv
cmtlclBhZ2VQcm94eUlEID09IHBhZ2VQcm94eUlEOyB9CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29y
a2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2Vy
dmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA4NDI4ZWJhYmViYWExMTUzZTM3MmY5
YzM0MDNjYmZhYTYxNjJhYjdhLi41MDg2MTFhZWY2OWUzNGNlZTYyMmQ3YjIzY2EzN2ZjMWRhMDY3
ZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00OSw2ICs0
OSw3IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeS5o
IgogI2luY2x1ZGUgIlJlbW90ZVJlbW90ZUNvbW1hbmRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlJl
bW90ZVdlYkxvY2tSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlclR5cGUuaCIKICNp
bmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiU3RvcmFnZUFyZWFNYXAuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgpAQCAtMTky
NiwyNyArMTkyNywyNSBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENO
ZXR3b3JrKCkKICAgICByZXR1cm4gKm1fbGliV2ViUlRDTmV0d29yazsKIH0KIAotdm9pZCBXZWJQ
cm9jZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFp
biwgUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBy
b2Nlc3M6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFBhZ2VHcm91cElkZW50aWZpZXIgcGFn
ZUdyb3VwSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFJlZ2lzdHJh
YmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUmVtb3Rl
V29ya2VySW5pdGlhbGl6YXRpb25EYXRhJiYgaW5pdGlhbGl6YXRpb25EYXRhLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgLy8gV2UgYXJlIGlu
IHRoZSBTaGFyZWQgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0
YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJvY2VzcwotICAgIC8vIGJ5
IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rp
b24gYXMgdGhlCisgICAgLy8gV2UgYXJlIGluIHRoZSBSZW1vdGUgV29ya2VyIGNvbnRleHQgcHJv
Y2VzcyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhl
IE5ldHdvcmsgUHJvY2VzcworICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIC8gU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXIg
bmVlZCB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCiAg
ICAgLy8gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIGZvciBzeW5jaHJvbml6YXRpb24gcHVycG9z
ZXMuCiAgICAgYXV0byYgaXBjQ29ubmVjdGlvbiA9IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKTsKLSAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFp
biksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBzdG9yZSwgV1RGTW92ZShp
bml0aWFsaXphdGlvbkRhdGEpKSk7Ci0gICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+ZXN0YWJsaXNoQ29ubmVjdGlvbihXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgc3dpdGNoICh3b3JrZXJUeXBlKSB7CisgICAgY2FzZSBSZW1v
dGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyOgorICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24+KGlwY0Nvbm5lY3Rpb24sIFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2
aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFn
ZUlELCBzdG9yZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEpKSk7CisgICAgICAgIFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+ZXN0YWJsaXNoQ29ubmVjdGlv
bihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyOgorICAgICAgICBTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNoYXJl
ZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShy
ZWdpc3RyYWJsZURvbWFpbiksIHBhZ2VHcm91cElELCB3ZWJQYWdlUHJveHlJRCwgcGFnZUlELCBz
dG9yZSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEpKSk7CisgICAgICAgIFNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCktPmVzdGFibGlzaENvbm5l
Y3Rpb24oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBicmVhazsKKyAgICB9
CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3M6OmVzdGFi
bGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdy
b3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
JiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRp
b25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJ
ZGVudGlmaWVyLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlv
bkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsK
LSAgICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQg
dGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsg
UHJvY2VzcwotICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6
Q29ubmVjdGlvbiBhcyB0aGUKLSAgICAvLyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gZm9yIHN5
bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KLSAgICBhdXRvJiBpcGNDb25uZWN0aW9uID0gZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOwotICAgIFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5lY3Rpb24obWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVjdGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFp
biksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94
eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkpKTsKLSAgICBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCktPmVzdGFibGlzaENvbm5l
Y3Rpb24oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCiB2b2lkIFdlYlByb2Nlc3M6
OmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBtX3N3UmVnaXN0cmF0aW9uQ291
bnRzLmFkZChpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmlu
ZGV4IDdjNTBlMDdlZGE1ZTA0ZmRiMzJjMGFlMzBlZmY0YjBiZmUzNzE4ZmYuLjk2ZTZjZWUyMjE4
ZjZhOWIwMDUzZGQ5ZmZhMGQ1ZDgzY2QzYjY0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaApAQCAtMTU3LDYgKzE1Nyw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
Owogc3RydWN0IFdlYnNpdGVEYXRhOwogc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
OwogCitlbnVtIGNsYXNzIFJlbW90ZVdvcmtlclR5cGUgOiBib29sOwogZW51bSBjbGFzcyBXZWJz
aXRlRGF0YVR5cGUgOiB1aW50MzJfdDsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC00
NzAsMTAgKzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBnYW1lcGFkRGlzY29ubmVjdGVkKHVu
c2lnbmVkIGluZGV4KTsKICNlbmRpZgogCi0gICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBSZW1vdGVXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFBhZ2VHcm91cElkZW50aWZpZXIsIFdl
YlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSNlbmRpZgorICAgIHZvaWQgZXN0YWJsaXNoUmVt
b3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlbW90ZVdvcmtlclR5
cGUsIFBhZ2VHcm91cElkZW50aWZpZXIsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBSZW1vdGVXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAog
ICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJzaXRlRGF0YSYmKT4mJik7CiAgICAgdm9pZCBkZWxldGVX
ZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgV2FsbFRpbWUgbW9kaWZpZWRT
aW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZjVlNzM2ZWQzNDdmMjcxYWRl
YzdjNDVkMDNmZDgzZGJiMGJhOWJlZS4uYTgzNzEzMDk0OWYxNjI3YzBmN2MxYWFlMjJlOWRkNWFm
MWFkZjIwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTEwMCwxMSArMTAwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBHYW1lcGFkRGlzY29ubmVjdGVkKHVuc2ln
bmVkIGluZGV4KQogI2VuZGlmCiAKLSAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VH
cm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5j
ZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBzdHJ1Y3Qg
V2ViS2l0OjpSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRh
KSAtPiAoKSBBc3luYwotCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViS2l0OjpQ
YWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VHcm91cElELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50
aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3Ry
dWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gZG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHN0cnVjdCBXZWJL
aXQ6OlJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+
ICgpIEFzeW5jCi0jZW5kaWYKKyAgICBFc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoZW51bTpib29sIFdlYktpdDo6UmVtb3RlV29ya2VyVHlwZSB3
b3JrZXJUeXBlLCBXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktp
dDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3Jl
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgc3RydWN0IFdlYktpdDo6UmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhIGlu
aXRpYWxpemF0aW9uRGF0YSkgLT4gKCkgQXN5bmMKIAogICAgIFNldEhhc1N1c3BlbmRlZFBhZ2VQ
cm94eShib29sIGhhc1N1c3BlbmRlZFBhZ2VQcm94eSk7CiAgICAgU2V0SXNJblByb2Nlc3NDYWNo
ZShib29sIGlzSW5Qcm9jZXNzQ2FjaGUpCg==
</data>
<flag name="commit-queue"
          id="480206"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452994</attachid>
            <date>2022-02-23 09:50:25 -0800</date>
            <delta_ts>2022-02-23 12:13:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237085-20220223095025.patch</filename>
            <type>text/plain</type>
            <size>53814</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYxZGE5MmE4Mjg3NGJiOWIz
MTBiN2Y3YTM0YTNhNTRiMWQ5NjNhYmUuLjY3YTgwMmVkYWE3YTNlYzA5MzdjYmRmYjZmYjQyODQ1
YTRiYzEyNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjItMDItMjMgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTaGFyZSBtb3JlIGNvZGUgYmV0d2Vl
biBzZXJ2aWNlIGFuZCBzaGFyZWQgd29ya2VycyBmb3IgY29udGV4dCBjb25uZWN0aW9uIGVzdGFi
bGlzaG1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzA4NQorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAg
U2hhcmUgbW9yZSBjb2RlIGJldHdlZW4gc2VydmljZSBhbmQgc2hhcmVkIHdvcmtlcnMgZm9yIGNv
bnRleHQgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
ZW5zdXJlU1dTZXJ2ZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OmZp
cnN0U2hhcmVkV29ya2VyT2JqZWN0UHJvY2VzcyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29y
a2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVh
dGVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNl
cnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2VyKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJs
aXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmVzdGFi
bGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtl
ckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjplc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46CisKIDIwMjItMDItMjMgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW90ZVNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcjo6
ZW5xdWV1ZVNhbXBsZSBzaG91bGQgbm90IGNoYW5nZSBtZWRpYSBzYW1wbGVzIG93bmVkIGJ5IGl0
cyBvYmplY3QgaGVhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcAppbmRleCBkMmUwZDYxZjllMmM4OTVjYTc2NjU4N2ZlOWUwMmVhNjJiYmRmNjQ5
Li42ZGRjNzIwZjcwN2EzNzYyMTAxZGY5MjZiZTk0MzA4NjNmNTNjYjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtNDEsNiArNDEs
NyBAQAogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5oIgogI2lu
Y2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIgogI2luY2x1ZGUgIlByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2Vy
VHlwZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCIKICNpbmNsdWRlICJX
ZWJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKQEAgLTYyOCw3ICs2Mjks
NyBAQCBTV1NlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVNXU2VydmVyKCkKICAgICAgICAg
ICAgIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpzdGFydCh0aGlzLCBXVEZNb3ZlKGpv
YkRhdGEpLCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgfSwgW3RoaXNdKGF1dG8mIHJlZ2lzdHJhYmxlRG9t
YWluLCBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lk
ZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
CiAgICAgICAgICAgICBBU1NFUlQoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSk7Ci0gICAg
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFNl
cnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyByZWdpc3RyYWJs
ZURvbWFpbiwgcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIG1fc2Vzc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsK
KyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJs
aXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgUmVtb3Rl
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcmVnaXN0cmFibGVEb21haW4sIHJlcXVlc3RpbmdQ
cm9jZXNzSWRlbnRpZmllciwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBtX3Nlc3Npb25J
RCB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CiAgICAgICAgIH0sIFdURk1vdmUo
YXBwQm91bmREb21haW5zQ2FsbGJhY2spKTsKICAgICB9CiAgICAgcmV0dXJuICptX3N3U2VydmVy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAKaW5kZXggNDk1MDE1YmYzMGJmYzgzMjBmYWVkOGM4
MjYwOGUyMmY1MDA1ZDBmOC4uMTU4ODJhM2Q0NjNiM2ViOTk4OWJjNGZhNDFlNTU4ZGZiMjE5YjVm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCkBAIC05OCw2ICs5OCwxMyBAQCB2b2lkIFdl
YlNoYXJlZFdvcmtlcjo6Zm9yRWFjaFNoYXJlZFdvcmtlck9iamVjdChjb25zdCBGdW5jdGlvbjx2
b2lkKFdlYkNvcmU6OlNoYQogICAgICAgICBhcHBseShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBwb3J0KTsKIH0KIAorc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
cj4gV2ViU2hhcmVkV29ya2VyOjpmaXJzdFNoYXJlZFdvcmtlck9iamVjdFByb2Nlc3MoKSBjb25z
dAoreworICAgIGlmIChtX3NoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiBtX3NoYXJlZFdvcmtlck9iamVjdHMuYmVn
aW4oKS0+a2V5LnByb2Nlc3NJZGVudGlmaWVyKCk7Cit9CisKIFdlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtlcjo6Y29udGV4dENvbm5lY3Rpb24o
KSBjb25zdAogewogICAgIHJldHVybiBtX3NlcnZlci5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaApp
bmRleCA5M2JiNTY2ODJkYTE5MmNmMzQ3N2FlMDUxOTgyNDQ2YzQwMDNjYzNhLi43NTM1MjRmNjRj
MmIyY2RlNmFmYjllYWU4YTA1NDdlMWVhNDk3NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaApA
QCAtNjIsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVTaGFyZWRXb3JrZXJPYmpl
Y3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CiAgICAgdW5zaWduZWQg
c2hhcmVkV29ya2VyT2JqZWN0c0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJP
YmplY3RzLnNpemUoKTsgfQogICAgIHZvaWQgZm9yRWFjaFNoYXJlZFdvcmtlck9iamVjdChjb25z
dCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmKT4mKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiBmaXJzdFNoYXJlZFdvcmtlck9i
amVjdFByb2Nlc3MoKSBjb25zdDsKIAogICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dENvbm5lY3Rp
b24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcAppbmRleCAyNDZlODM5N2E0NzJmYTc1ODU4NjAz
MzgyNWU0MDBjMGRmMGJmZjdmLi4yNjA3ZjcwY2MyOWM1N2IzYjc3ZTNhOWNlN2RmMzUzYjJmYjA1
MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVk
ZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgogI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCkBAIC0xMTIsNyArMTEzLDcg
QEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29y
a2VyU2NyaXB0KFdlYlNoYXJlZFdvcmtlciYKICAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmxh
dW5jaFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHNoYXJlZFdvcmtlci5yZWdpc3RyYWJsZURvbWFp
bigpKTsKKyAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihzaGFyZWRXb3JrZXIucmVnaXN0cmFi
bGVEb21haW4oKSwgc2hhcmVkV29ya2VyLmZpcnN0U2hhcmVkV29ya2VyT2JqZWN0UHJvY2Vzcygp
KTsKIH0KIAogYm9vbCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rp
b25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYg
cmVnaXN0cmFibGVEb21haW4pIGNvbnN0CkBAIC0xMjQsNyArMTI1LDcgQEAgYm9vbCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihjb25zdCBXZWIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2ViU2hhcmVkV29ya2Vy
U2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
IHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFtX2NvbnRl
eHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOwogICAgIGlmIChtX3Bl
bmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4p
KQpAQCAtMTMzLDcgKzEzNCw3IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVD
b250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvCiAgICAgUkVMRUFT
RV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0
Q29ubmVjdGlvbiB3aWxsIGNyZWF0ZSBhIGNvbm5lY3Rpb24iKTsKIAogICAgIG1fcGVuZGluZ0Nv
bnRleHRDb25uZWN0aW9uRG9tYWlucy5hZGQocmVnaXN0cmFibGVEb21haW4pOwotICAgIG1fc2Vz
c2lvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21h
aW4sIG1fc2Vzc2lvbi5zZXNzaW9uSUQoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsg
KnRoaXMgfSwgcmVnaXN0cmFibGVEb21haW5dIHsKKyAgICBtX3Nlc3Npb24ubmV0d29ya1Byb2Nl
c3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwg
cmVnaXN0cmFibGVEb21haW4sIHJlcXVlc3RpbmdQcm9jZXNzSWRlbnRpZmllciwgc3RkOjpudWxs
b3B0LCBtX3Nlc3Npb24uc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHJlZ2lzdHJhYmxlRG9tYWluLCByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXJd
IHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTQ1
LDcgKzE0Niw3IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29u
bmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlv
bihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlv
bihyZWdpc3RyYWJsZURvbWFpbiwgcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyKTsKICAgICB9
LCAwKTsKIH0KIApAQCAtMTcwLDggKzE3MSwxMCBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
cjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZQog
CiAgICAgbV9jb250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKIAot
ICAgIGlmIChjb250ZXh0Q29ubmVjdGlvbi5oYXNTaGFyZWRXb3JrZXJPYmplY3RzKCkpCi0gICAg
ICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAo
YXV0byYgc2hhcmVkV29ya2VyT2JqZWN0cyA9IGNvbnRleHRDb25uZWN0aW9uLnNoYXJlZFdvcmtl
ck9iamVjdHMoKTsgIXNoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1
dG8gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyID0gc2hhcmVkV29ya2VyT2JqZWN0cy5iZWdp
bigpLT5rZXk7CisgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9t
YWluLCByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIH0KIH0KIAogdm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKQEAgLTIxNSw3
ICsyMTgsNyBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3Jr
ZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JgogCiAgICAgY29udGV4dENvbm5lY3Rp
b24tPnRlcm1pbmF0ZVNoYXJlZFdvcmtlcigqc2hhcmVkV29ya2VyKTsKIAotICAgIGlmICghY29u
dGV4dENvbm5lY3Rpb24tPmhhc1NoYXJlZFdvcmtlck9iamVjdHMoKSkKKyAgICBpZiAoY29udGV4
dENvbm5lY3Rpb24tPnNoYXJlZFdvcmtlck9iamVjdHMoKS5pc0VtcHR5KCkpCiAgICAgICAgIGNv
bnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCmluZGV4IDNhMzMyZWExMDNkMDRmZDNmNTQyMzJi
MDZlOWI5YTcxNTQ4MDJiOTUuLjE4YjMxMGU1NWE2Y2E2ZTVjOWY2NGY3MWM1NGE1ODAzZTczYTA2
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5oCkBAIC03MSw3ICs3MSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUNvbm5lY3Rpb24oV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIpOwogCiBwcml2YXRlOgotICAgIHZvaWQgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKKyAgICB2b2lkIGNyZWF0ZUNvbnRleHRD
b25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVy
KTsKICAgICBib29sIG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZvaWQgY29udGV4
dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mKTsKICAgICB2b2lkIGRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFdlYlNo
YXJlZFdvcmtlciYsIFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CmluZGV4IDg0OTA3Nzg0ZWQ5YzM0ZjhmNjhkMWZlNDA2YzI5YmU1YjZiMTQ1NjEuLjg0MTg3MzU3
NWM5MzA3M2Y5OGZiYWM4ZTIzZGQ3NGZkNTc5YTRmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJl
ZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTYy
LDcgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKGNvbnN0
IFdlYlNoYXJlZFdvcmtlciYpOwogCiAgICAgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRl
ZCgpOwotICAgIGJvb2wgaGFzU2hhcmVkV29ya2VyT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuICFt
X3NoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpOyB9CisgICAgY29uc3QgSGFzaE1hcDxXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSGFzaFNldDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyPj4mIHNoYXJlZFdvcmtlck9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX3No
YXJlZFdvcmtlck9iamVjdHM7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZVdvcmtlclR5cGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Jl
bW90ZVdvcmtlclR5cGUuaAppbmRleCA1MjgxNmQ5NDFmODJmZWM0N2VmOGY1NDY0ZGZkNjg5ZWI2
MGI3Y2Y5Li4xMDFjZWVmOTFiZjRjNDVlNmJiNDE4YTE5MWJiYTFjMjU2YWY5NDlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUmVtb3RlV29ya2VyVHlwZS5oCkBAIC0yNywxOSArMjcsNiBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotZW51bSBjbGFzcyBSZW1vdGVXb3JrZXJUeXBlIDogdWludDMy
X3QgewotICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8IDAsCi0gICAgU2hhcmVkV29ya2VyID0gMSA8
PCAxCi19OworZW51bSBjbGFzcyBSZW1vdGVXb3JrZXJUeXBlIDogYm9vbCB7IFNlcnZpY2VXb3Jr
ZXIsIFNoYXJlZFdvcmtlciB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotbmFtZXNwYWNl
IFdURiB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6UmVtb3RlV29ya2Vy
VHlwZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYktpdDo6
UmVtb3RlV29ya2VyVHlwZSwKLSAgICAgICAgV2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyLAotICAgICAgICBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtl
cgotICAgID47Ci19OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNmI2YTA4YmFjNjA2MGM0MDE0NGQx
ZmNhMGI0Y2ZkM2RhZWU1M2FlNy4uNTdkZThiMWY2NTg2NmZiMWZjZjdiZDE4YmJiNjhkMjBjMTVh
ZTlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zNCwxMCArMzQsNiBAQAogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJGcmFtZUluZm9EYXRhLmgiCi0jaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xf
TUFOQUdFUikKLSNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5o
IgotI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIK
LSNlbmRpZgogI2luY2x1ZGUgIkxlZ2FjeUdsb2JhbFNldHRpbmdzLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyTWVzc2FnZXMu
aCIKQEAgLTQ2LDEwICs0Miw4IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlBh
Z2VDbGllbnQuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgotI2lmIEhBVkUoU0VDX0tFWV9QUk9YWSkKLSNpbmNsdWRlICJTZWNL
ZXlQcm94eVN0b3JlLmgiCi0jZW5kaWYKICNpbmNsdWRlICJTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2Vi
Q29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIKQEAgLTc0LDEwICs2OCwxOSBAQAogI2luY2x1ZGUg
IlNlY0l0ZW1TaGltUHJveHkuaCIKICNlbmRpZgogCisjaWYgSEFWRShTRUNfS0VZX1BST1hZKQor
I2luY2x1ZGUgIlNlY0tleVByb3h5U3RvcmUuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KICNlbmRpZgogCisj
aWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKKyNpbmNsdWRlICJMZWdh
Y3lDdXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkxlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyQ2xpZW50LmgiCiAj
ZW5kaWYKQEAgLTE0MTYsMTEgKzE0MTksNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudAogfQog
I2VuZGlmCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVy
UmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBzaGFyZWRXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBh
dXRvKiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcih3
ZWJQcm9jZXNzSWRlbnRpZmllcik7CkBAIC0xNDQ3LDEyICsxNDQ1LDEzIEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6cmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZChSZW1vdGVXb3JrCiAgICAgICAgIHByb2Nlc3MtPmRpc2FibGVSZW1vdGVXb3JrZXJzKHdvcmtl
clR5cGUpOwogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXI+IHJlcXVlc3RpbmdQcm9jZXNzSWRlbnRp
Zmllciwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6ZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
Zmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pLCByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgV2Vi
UHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcyh3b3JrZXJUeXBlLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcmVxdWVz
dGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Np
b25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN0YXJ0U2VydmljZVdvcmtl
ckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJQcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlclBy
b2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzSWRlbnRpZmllcikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDE2MmYwMjFjNDI1M2Q0YmEyNTlm
M2VmNGExYTczOWVjNDQ2YTlmMmMuLjNkMzU0NGRjYjk3NjBkNmUzMzcyNzVkNjJhNTM2MWM5YjE5
NWM0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCkBAIC04Niw3ICs4Niw3IEBAIGNsYXNzIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OwogCi1lbnVtIGNsYXNzIFJlbW90ZVdvcmtlclR5cGUgOiB1aW50MzJfdDsKK2Vu
dW0gY2xhc3MgUmVtb3RlV29ya2VyVHlwZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZEdyYW5k
ZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMg
OiB1aW50OF90OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uIDogdWludDhfdDsK
QEAgLTMzMywxMiArMzMzLDExIEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVu
dGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtl
clByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIGVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5k
UHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vz
c0lkZW50aWZpZXIpOwogI2VuZGlmCiAgICAgdm9pZCByZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbk5vTG9uZ2VyTmVlZGVkKFJlbW90ZVdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGVzdGFibGlzaFJl
bW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZW1vdGVXb3JrZXJU
eXBlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCByZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVt
b3RlV29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50
aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNoYXJlZFdvcmtlclByb2Nlc3NJZGVu
dGlmaWVyKTsKICAgICB2b2lkIHVucmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJl
bW90ZVdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzaGFyZWRXb3JrZXJQcm9jZXNzSWRl
bnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1MDhlZGQ4OGZm
NDhkNDA0ZTQyYjM4MDFlYjY3M2RjNGJhY2IxMGM1Li5lM2FiYmI0NjhmNWIzYWQwNzdlYjY0NmE2
OTJjYzdiZjkyOTU0ZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC01Mywx
NCArNTMsMTMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgVGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3
ZWJQcm9jZXNzSWRlbnRpZmllcikKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBF
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoKSBBc3luYwogICAgIFN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikK
ICAgICBFbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogI2VuZGlmCi0gICAg
RXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0gICAgUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ob0xvbmdlck5lZWRlZChlbnVtOnVpbnQzMl90IFdlYktpdDo6UmVtb3RlV29ya2VyVHlwZSB3
b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIFJl
Z2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhlbnVtOnVpbnQzMl90IFdlYktpdDo6UmVt
b3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQ
cm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcmVtb3RlV29ya2Vy
UHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIFVucmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9j
ZXNzKGVudW06dWludDMyX3QgV2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciByZW1vdGVXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgRXN0
YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKGVudW06
Ym9vbCBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXI+IHJlcXVlc3RpbmdQcm9jZXNzSWRlbnRpZmllciwgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisg
ICAgUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChlbnVtOmJvb2wg
V2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCisgICAgUmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNz
KGVudW06Ym9vbCBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHJlbW90ZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBVbnJlZ2lzdGVy
UmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVXb3JrZXJU
eXBlIHdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciByZW1vdGVXb3JrZXJQcm9jZXNzSWRl
bnRpZmllcik7CiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggM2Q4Njc4YzVkODY1MWVhYzQ1MDM3NzZk
MWZhMjQ4Yjg5OTdhZGJhYS4uMjkwMmYzY2I1MzZjM2VmNTI4MTI5NDIyNmJjYTI4NTY1OWJiYmEy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTEs
NiArNTEsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiUGVyQWN0aXZpdHlTdGF0ZUNQVVVz
YWdlU2FtcGxlci5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlclR5cGUuaCIKICNpbmNsdWRlICJT
YW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNsdWRlICJV
SUdhbWVwYWQuaCIKQEAgLTUyNSwyNCArNTI2LDIzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6Omdl
dFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJv
CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OnNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vz
cyA9IGZhbHNlOwogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNz
UG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIs
IHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
UmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJh
YmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyPiByZXF1
ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgYXV0byogd2Vic2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4
aXN0aW5nRGF0YVN0b3JlRm9yU2Vzc2lvbklEKHNlc3Npb25JRCk7CiAgICAgaWYgKCF3ZWJzaXRl
RGF0YVN0b3JlKQogICAgICAgICB3ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZSgpLnB0cigpOwogICAgIGlmICghcHJvY2Vzc1Bvb2xzKCkuc2l6ZSgp
KQotICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4gc2Vy
dmljZVdvcmtlclByb2Nlc3NQb29sKFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoQVBJOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZSgpLmdldCgpKSk7CisgICAgICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxSZWY8V2ViUHJvY2Vzc1Bvb2w+PiByZW1vdGVXb3JrZXJQcm9jZXNzUG9vbChX
ZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVh
dGUoKS5nZXQoKSkpOwogCiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcmVxdWVzdGluZ1By
b2Nlc3MgPSByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIgPyBXZWJQcm9jZXNzUHJveHk6OnBy
b2Nlc3NGb3JJZGVudGlmaWVyKCpyZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIpIDogbnVsbHB0
cjsKICAgICBXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wgPSByZXF1ZXN0aW5nUHJvY2VzcyA/
ICZyZXF1ZXN0aW5nUHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKSA6IHByb2Nlc3NQb29scygpWzBdOwog
ICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7CiAKLSAgICBXZWJQcm9jZXNzUHJveHkqIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CisgICAgV2ViUHJvY2Vzc1Byb3h5KiByZW1v
dGVXb3JrZXJQcm9jZXNzUHJveHkgeyBudWxscHRyIH07CiAKLSAgICBhdXRvIHVzZVByb2Nlc3NG
b3JTZXJ2aWNlV29ya2VycyA9IFsmXShXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpIHsKLSAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9ICZwcm9jZXNzOwotICAgICAgICBwcm9jZXNz
LmVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJv
Y2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JSZW1vdGVXb3JrZXJz
KCkpOworICAgIGF1dG8gdXNlUHJvY2Vzc0ZvclJlbW90ZVdvcmtlcnMgPSBbJl0oV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzKSB7CisgICAgICAgIHJlbW90ZVdvcmtlclByb2Nlc3NQcm94eSA9ICZw
cm9jZXNzOworICAgICAgICBwcm9jZXNzLmVuYWJsZVJlbW90ZVdvcmtlcnMod29ya2VyVHlwZSwg
cHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JSZW1vdGVXb3Jr
ZXJzKCkpOwogICAgICAgICBpZiAocHJvY2Vzcy5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAg
ICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKHByb2Nl
c3MsIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAg
ICAgICBBU1NFUlQoIXByb2Nlc3MuaXNJblByb2Nlc3NDYWNoZSgpKTsKQEAgLTU1MCwxOCArNTUw
LDIxIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnCiAgICAgfTsKIAogICAgIGlmIChzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIpIHsKKyAgICAgICAgQVNTRVJUKHdvcmtlclR5cGUgPT0gUmVt
b3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2
aWNlIHdvcmtlciBmb3IgYSBzZXJ2aWNlIHdvcmtlciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBz
dXJlIHdlIHVzZSB1c2UgdGhlIHBhZ2UncyBXZWJQcm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3Jr
ZXIuCiAgICAgICAgIGlmIChSZWZQdHIgcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vz
c0ZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5wcm9jZXNzSWRlbnRp
ZmllcigpKSkKLSAgICAgICAgICAgIHVzZVByb2Nlc3NGb3JTZXJ2aWNlV29ya2VycygqcHJvY2Vz
cyk7CisgICAgICAgICAgICB1c2VQcm9jZXNzRm9yUmVtb3RlV29ya2VycygqcHJvY2Vzcyk7CiAg
ICAgfQogCisgICAgYm9vbCBzaG91bGRVc2VTZXBhcmF0ZVJlbW90ZVdvcmtlclByb2Nlc3MgPSB3
b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgJiYgc191c2VTZXBh
cmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzOworCiAgICAgLy8gUHJpb3JpdGl6ZSB0aGUgcmVxdWVz
dGluZyBXZWJQcm9jZXNzIGZvciBydW5uaW5nIHRoZSBzZXJ2aWNlIHdvcmtlci4KLSAgICBpZiAo
IXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgJiYgIXNfdXNlU2VwYXJhdGVTZXJ2aWNlV29ya2Vy
UHJvY2VzcyAmJiByZXF1ZXN0aW5nUHJvY2VzcykgeworICAgIGlmICghcmVtb3RlV29ya2VyUHJv
Y2Vzc1Byb3h5ICYmICFzaG91bGRVc2VTZXBhcmF0ZVJlbW90ZVdvcmtlclByb2Nlc3MgJiYgcmVx
dWVzdGluZ1Byb2Nlc3MpIHsKICAgICAgICAgaWYgKCZyZXF1ZXN0aW5nUHJvY2Vzcy0+d2Vic2l0
ZURhdGFTdG9yZSgpID09IHdlYnNpdGVEYXRhU3RvcmUgJiYgcmVxdWVzdGluZ1Byb2Nlc3MtPmlz
TWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikpCi0gICAgICAgICAg
ICB1c2VQcm9jZXNzRm9yU2VydmljZVdvcmtlcnMoKnJlcXVlc3RpbmdQcm9jZXNzKTsKKyAgICAg
ICAgICAgIHVzZVByb2Nlc3NGb3JSZW1vdGVXb3JrZXJzKCpyZXF1ZXN0aW5nUHJvY2Vzcyk7CiAg
ICAgfQogCi0gICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ICYmICFzX3VzZVNlcGFy
YXRlU2VydmljZVdvcmtlclByb2Nlc3MpIHsKKyAgICBpZiAoIXJlbW90ZVdvcmtlclByb2Nlc3NQ
cm94eSAmJiAhc2hvdWxkVXNlU2VwYXJhdGVSZW1vdGVXb3JrZXJQcm9jZXNzKSB7CiAgICAgICAg
IGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3NlcykgewogICAgICAg
ICAgICAgaWYgKHByb2Nlc3MucHRyKCkgPT0gcHJvY2Vzc1Bvb2wtPm1fcHJld2FybWVkUHJvY2Vz
cy5nZXQoKSB8fCBwcm9jZXNzLT5pc0R1bW15UHJvY2Vzc1Byb3h5KCkpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CkBAIC01NzAsMzEgKzU3MywzMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJl
ZwogICAgICAgICAgICAgaWYgKCFwcm9jZXNzLT5pc01hdGNoaW5nUmVnaXN0cmFibGVEb21haW4o
cmVnaXN0cmFibGVEb21haW4pKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICB1c2VQcm9jZXNzRm9yU2VydmljZVdvcmtlcnMocHJvY2Vzcyk7CisgICAgICAgICAgICB1
c2VQcm9jZXNzRm9yUmVtb3RlV29ya2Vycyhwcm9jZXNzKTsKIAotICAgICAgICAgICAgV0VCUFJP
Q0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHJldXNpbmcgYW4gZXhp
c3Rpbmcgd2ViIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigp
KTsKKyAgICAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNl
V29ya2VyLCAiZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzIHJldXNpbmcgYW4gZXhpc3Rpbmcgd2ViIHByb2Nlc3MgKHByb2Nlc3M9JXAsIHdvcmtl
clR5cGU9JXtwdWJsaWN9cywgUElEPSVkKSIsIHJlbW90ZVdvcmtlclByb2Nlc3NQcm94eSwgd29y
a2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyID8gInNlcnZpY2UiIDog
InNoYXJlZCIsIHJlbW90ZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJh
YmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKLSAgICAgICAgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKKyAgICBpZiAoIXJlbW90ZVdvcmtl
clByb2Nlc3NQcm94eSkgeworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nl
c3NQcm94eTo6Y3JlYXRlRm9yUmVtb3RlV29ya2Vycyh3b3JrZXJUeXBlLCAqcHJvY2Vzc1Bvb2ws
IFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0
b3JlKTsKKyAgICAgICAgcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5
LnB0cigpOwogCi0gICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2
aWNlV29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXM9
JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICAgICAgV0VCUFJPQ0VTU1BPT0xf
UkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxpc2hSZW1vdGVXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3
b3JrZXIgcHJvY2VzcyAocHJvY2Vzcz0lcCwgd29ya2VyVHlwZT0le3B1YmxpY31zLCBQSUQ9JWQp
IiwgcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5LCB3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIgPyAic2VydmljZSIgOiAic2hhcmVkIiwgcmVtb3RlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKIAogICAgICAgICBwcm9jZXNzUG9vbC0+
aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MobmV3UHJvY2Vzc1Byb3h5LCB3ZWJzaXRlRGF0YVN0b3Jl
KTsKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1By
b2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIHJlbW90ZVdvcmtlclByb2Nlc3NlcygpLmFkZCgq
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7CisgICAgcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCku
YWRkKCpyZW1vdGVXb3JrZXJQcm9jZXNzUHJveHkpOwogCiAgICAgYXV0byYgcHJlZmVyZW5jZXNT
dG9yZSA9IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bv
b2wtPm1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2Rl
ZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKTsKLSAgICBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcmVmZXJlbmNlc1N0
b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5LT5l
c3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0KHdvcmtlclR5cGUsIHByZWZlcmVuY2VzU3RvcmUs
IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKwogICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29y
a2VyVXNlckFnZW50LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LT5zZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNl
ckFnZW50KTsKKyAgICAgICAgcmVtb3RlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRSZW1vdGVXb3Jr
ZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50KTsKIH0KLSNl
bmRpZgogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tUmVtb3RlV29ya2VyUHJvY2Vz
c2VzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKQEAgLTYwMiw1NyArNjA1LDYgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVJlbW90ZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MpCiAgICAgcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHBy
b2Nlc3MpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgYXV0byogd2Vi
c2l0ZURhdGFTdG9yZSA9IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9yU2Vz
c2lvbklEKHNlc3Npb25JRCk7Ci0gICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlKQotICAgICAgICB3
ZWJzaXRlRGF0YVN0b3JlID0gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZSgpLnB0
cigpOwotICAgIGlmICghcHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpKQotICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8UmVmPFdlYlByb2Nlc3NQb29sPj4gc2hhcmVkV29ya2VyUHJvY2Vzc1Bvb2wo
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCkuZ2V0KCkpKTsKLQotICAgIC8vIEFyYml0cmFyaWx5IGNob29zZSB0aGUgZmlyc3QgcHJv
Y2VzcyBwb29sIHRvIGhvc3QgdGhlIHNoYXJlZCB3b3JrZXIgcHJvY2Vzcy4KLSAgICBhdXRvKiBw
cm9jZXNzUG9vbCA9IHByb2Nlc3NQb29scygpWzBdOwotICAgIEFTU0VSVChwcm9jZXNzUG9vbCk7
Ci0KLSAgICBXZWJQcm9jZXNzUHJveHkqIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSB7IG51bGxw
dHIgfTsKLQotICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nl
cykgewotICAgICAgICBpZiAocHJvY2Vzcy5wdHIoKSA9PSBwcm9jZXNzUG9vbC0+bV9wcmV3YXJt
ZWRQcm9jZXNzLmdldCgpIHx8IHByb2Nlc3MtPmlzRHVtbXlQcm9jZXNzUHJveHkoKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoJnByb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUo
KSAhPSB3ZWJzaXRlRGF0YVN0b3JlKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlm
ICghcHJvY2Vzcy0+aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWlu
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eSA9IHByb2Nlc3MucHRyKCk7Ci0gICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+
ZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHByb2Nl
c3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yUmVtb3RlV29ya2Vycygp
KTsKLQotICAgICAgICBpZiAoc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0Nh
Y2hlKCkpIHsKLSAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1v
dmVQcm9jZXNzKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hv
dWxkU2h1dERvd25Qcm9jZXNzOjpObyk7Ci0gICAgICAgICAgICBBU1NFUlQoIXNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsKLSAgICAgICAgfQotCi0gICAgICAg
IFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIsICJlc3RhYmxp
c2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgcmV1c2luZyBh
biBleGlzdGluZyB3ZWIgcHJvY2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIsIHNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eSwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmll
cigpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKCFzaGFyZWRXb3JrZXJQcm9j
ZXNzUHJveHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJv
eHk6OmNyZWF0ZUZvclJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2Vy
LCAqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0s
ICp3ZWJzaXRlRGF0YVN0b3JlKTsKLSAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5ID0g
bmV3UHJvY2Vzc1Byb3h5LnB0cigpOwotCi0gICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0Vf
TE9HX1NUQVRJQyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJv
Y2VzcyAocHJvY2Vzcz0lcCwgUElEPSVkKSIsIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgc2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKLQotICAgICAgICBw
cm9jZXNzUG9vbC0+aW5pdGlhbGl6ZU5ld1dlYlByb2Nlc3MobmV3UHJvY2Vzc1Byb3h5LCB3ZWJz
aXRlRGF0YVN0b3JlKTsKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChX
VEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwotICAgIH0KLQotICAgIHJlbW90ZVdvcmtlclByb2Nl
c3NlcygpLmFkZCgqc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KTsKLQotICAgIHNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+
bV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclBy
ZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVm
ZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQu
aXNOdWxsKCkpCi0gICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+c2V0UmVtb3RlV29y
a2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclVzZXJBZ2VudCk7Ci19Ci0K
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQo
KQogewogICAgIHNpemVfdCBwcm9jZXNzQ291bnQgPSBtX3Byb2Nlc3Nlcy5zaXplKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAwZDEyMDE1YmJhNDNmZGJm
Mzc5OWY2YjBjN2ZlM2QwMjI4MmI4NjkxLi5jNmMzM2YyYTBlNzUyYzgwNTdmNTdjMGVhYmU4MzQw
ZDIxOGRjNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAg
LTM3OSw3ICszNzksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVGcm9tUmVtb3RlV29ya2Vy
UHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlm
aWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHNpemVfdCBzZXJ2aWNlV29ya2VyUHJveGllc0Nv
dW50KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5
Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRB
Y3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKQEAgLTM4OCw3ICszODcsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHVwZGF0ZVJlbW90ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCk7CiAgICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyRm9yUmVtb3RlV29ya2VycygpOwotICAgIHN0YXRpYyB2b2lkIGVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
Zmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgYm9vbCBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCAzNjhhMzk1ODdkYTMzZGU2NGMxYjg5ZDBlNjM4ZDM4Yjg4ZDdhMTdiLi4wOTEzMGEwMzIxMzVj
YTUyMGM0YjY4NTgwYzJmNDQzOGQ2NDI3OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVdv
cmtlclR5cGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5o
IgogI2luY2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvblJlcXVlc3QuaCIKICNpbmNs
dWRlICJTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgi
CkBAIC05OTIsNyArOTkzLDggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZEJlY29tZVVucmVz
cG9uc2l2ZSgpCiAgICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGJlY29tZXMgdW5yZXNwb25zaXZl
IGFuZCBvbmx5IHJ1bnMgc2VydmljZS9zaGFyZWQgd29ya2Vycywga2lsbCBpdCBvdXJzZWx2ZXMg
c2luY2UgdGhlcmUgYXJlIG5vIG5hdGl2ZSBjbGllbnRzIHRvIGRvIGl0LgogICAgIGlmIChpc1J1
bm5pbmdXb3JrZXJzKCkgJiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkgewogICAgICAgICBXRUJQUk9D
RVNTUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VMb2dnaW5nLCAiZGlkQmVjb21l
VW5yZXNwb25zaXZlOiBUZXJtaW5hdGluZyB3b3JrZXItb25seSB3ZWIgcHJvY2VzcyBiZWNhdXNl
IGl0IGlzIHVucmVzcG9uc2l2ZSIpOwotICAgICAgICBkaXNhYmxlUmVtb3RlV29ya2Vycyh7IFJl
bW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdv
cmtlciB9KTsKKyAgICAgICAgZGlzYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcik7CisgICAgICAgIGRpc2FibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtl
clR5cGU6OlNoYXJlZFdvcmtlcik7CiAgICAgICAgIHRlcm1pbmF0ZSgpOwogICAgIH0KIH0KQEAg
LTE4NTYsMTggKzE4NTgsMTcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZEJhY2tncm91bmRB
Y3Rpdml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpCiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHQoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJU
eXBlLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBXRUJQUk9DRVNTUFJP
WFlfUkVMRUFTRV9MT0coTG9hZGluZywgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0OiBT
dGFydGVkIik7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3Rh
Ymxpc2hSZW1vdGVXb3JrZXJDb250ZXh0OiBTdGFydGVkICh3b3JrZXJUeXBlPSV7cHVibGljfXMp
Iiwgd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyID8gInNlcnZp
Y2UiIDogInNoYXJlZCIpOwogICAgIG1hcmtQcm9jZXNzQXNSZWNlbnRseVVzZWQoKTsKLSAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRl
ZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+cmVtb3RlV29ya2VyUGFnZVByb3h5SUQsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5y
ZW1vdGVXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRp
b25EYXRhIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIGF1
dG8mIHJlbW90ZVdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJU
eXBlOjpTZXJ2aWNlV29ya2VyID8gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gOiBtX3NoYXJl
ZFdvcmtlckluZm9ybWF0aW9uOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6RXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzIHsgd29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFn
ZUdyb3VwSUQoKSwgcmVtb3RlV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtlclBhZ2VQcm94
eUlELCByZW1vdGVXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZUlELCBzdG9yZSwg
cmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgcmVtb3RlV29y
a2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgd29ya2VyVHlwZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHdlYWtUaGlzKQot
ICAgICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKExvYWRpbmcsICJlc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKKyAgICAgICAgICAgIFdFQlBST0NF
U1NQUk9YWV9SRUxFQVNFX0xPRyhMb2FkaW5nLCAiZXN0YWJsaXNoUmVtb3RlV29ya2VyQ29udGV4
dDogRmluaXNoZWQgKHdvcmtlclR5cGU9JXtwdWJsaWN9cykiLCB3b3JrZXJUeXBlID09IFJlbW90
ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgPyAic2VydmljZSIgOiAic2hhcmVkIik7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSwgMCk7CiB9Ci0jZW5kaWYKIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCkKIHsKQEAgLTE5MjYsMTcgKzE5MjcsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6
dXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihSZW1vdGVXb3JrZXJUeXBlIHdvcmtl
cgogICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG51bGxwdHI7CiB9CiAKLXZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
LXsKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiZXN0YWJs
aXNoU2hhcmVkV29ya2VyQ29udGV4dDogU3RhcnRlZCIpOwotICAgIG1hcmtQcm9jZXNzQXNSZWNl
bnRseVVzZWQoKTsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OkVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7
IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2hhcmVk
V29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtlclBhZ2VQcm94eUlELCBtX3NoYXJlZFdvcmtl
ckluZm9ybWF0aW9uLT5yZW1vdGVXb3JrZXJQYWdlSUQsIHN0b3JlLCByZWdpc3RyYWJsZURvbWFp
biwgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBpZiAod2Vha1RoaXMp
Ci0gICAgICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAi
ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dDogRmluaXNoZWQiKTsKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKLSAgICB9LCAwKTsKLX0KLQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJl
Z2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5
cGUsIFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiB7CiAgICAgYXV0byYgd29ya2VySW5mb3JtYXRp
b24gPSB3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hh
cmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKQEAgLTE5
OTIsMzYgKzE5ODIsMzUgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZygpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVJlbW90ZVdvcmtlcnMoT3B0aW9uU2V0
PFJlbW90ZVdvcmtlclR5cGU+IHdvcmtlclR5cGUpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlz
YWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlKQogewotICAgIEFT
U0VSVCghd29ya2VyVHlwZS5pc0VtcHR5KCkpOworICAgIGF1dG8mIHJlbW90ZVdvcmtlckluZm9y
bWF0aW9uID0gd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyID8g
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gOiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uOwor
ICAgIGlmICghcmVtb3RlV29ya2VySW5mb3JtYXRpb24pCisgICAgICAgIHJldHVybjsKIAotICAg
IGJvb2wgZGlkQ2hhbmdlID0gZmFsc2U7Ci0gICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoUmVt
b3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24pIHsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgaWYgKHdvcmtlclR5cGUgPT0g
UmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikKICAgICAgICAgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtl
clBhZ2VJRCk7Ci0gICAgICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9OwotICAg
ICAgICBkaWRDaGFuZ2UgPSB0cnVlOwotICAgIH0KLSAgICBpZiAod29ya2VyVHlwZS5jb250YWlu
cyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpICYmIG1fc2hhcmVkV29ya2VySW5mb3Jt
YXRpb24pIHsKLSAgICAgICAgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKLSAgICAg
ICAgZGlkQ2hhbmdlID0gdHJ1ZTsKLSAgICB9Ci0gICAgaWYgKCFkaWRDaGFuZ2UpCi0gICAgICAg
IHJldHVybjsKKyNlbmRpZgorICAgIHJlbW90ZVdvcmtlckluZm9ybWF0aW9uID0geyB9OwogCi0g
ICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29ya2Vyczog
RGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJzPSVkKSIs
IHdvcmtlclR5cGUuY29udGFpbnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwgd29y
a2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CisgICAg
V0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29ya2VyczogRGlz
YWJsaW5nIHdvcmtlcnMgKHdvcmtlclR5cGU9JXtwdWJsaWN9cykiLCB3b3JrZXJUeXBlID09IFJl
bW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgPyAic2VydmljZSIgOiAic2hhcmVkIik7CiAK
ICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCiAgICAgaWYgKCFp
c1J1bm5pbmdXb3JrZXJzKCkpCiAgICAgICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVJlbW90
ZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7CiAKKyAgICBzd2l0Y2ggKHdvcmtlclR5cGUpIHsKKyAg
ICBjYXNlIFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXI6CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIpKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKICNlbmRpZgotICAgIGlmICh3b3JrZXJUeXBl
LmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikpCisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyOgogICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3Nl
IHsgfSwgMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIG1heWJlU2h1dERvd24oKTsK
IH0KQEAgLTIwNjEsOCArMjA1MCwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlUmVt
b3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIGNvbnN0IFVzZQogICAgICAg
ICB7IH0KICAgICB9OwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmICh3b3Jr
ZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpCiAgICAgICAgIGFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5yZW1v
dGVXb3JrZXJQYWdlSUQsIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpzaW5nbGV0
b24oKSk7CisjZW5kaWYKIAogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVy
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggOTFk
MjFkMjgzNjYxOTY2M2ZhN2RjYzIwOTUzM2QxZDZhMDA1MGQ1ZC4uN2E4MGMyNzRkMjI0Mzc0MjA4
Nzg2MjYyZmIzNTNkYzJlMDhkZWE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVy
LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIgogI2luY2x1ZGUgIlJlbW90
ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5oIgotI2luY2x1ZGUgIlJlbW90ZVdvcmtlclR5cGUu
aCIKICNpbmNsdWRlICJSZXNwb25zaXZlbmVzc1RpbWVyLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyLmgiCkBAIC0xMDAsNyArOTksNiBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQ
cm9jZXNzUG9vbDsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogY2xhc3Mg
V2Vic2l0ZURhdGFTdG9yZTsKLWVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWludDMyX3Q7
CiBzdHJ1Y3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlOwogc3RydWN0IEdQVVByb2Nlc3NDb25u
ZWN0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBVc2VyTWVzc2FnZTsKQEAgLTEwOSw2ICsxMDcsOSBA
QCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQcmVmZXJlbmNl
c1N0b3JlOwogc3RydWN0IFdlYnNpdGVEYXRhOwogCitlbnVtIGNsYXNzIFJlbW90ZVdvcmtlclR5
cGUgOiBib29sOworZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5cGUgOiB1aW50MzJfdDsKKwogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCiBjbGFzcyBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOwogI2VuZGlmCkBAIC0xNjMsNyArMTY0LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNJblByb2Nlc3NDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblByb2Nl
c3NDYWNoZTsgfQogCiAgICAgdm9pZCBlbmFibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5
cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKLSAgICB2b2lkIGRp
c2FibGVSZW1vdGVXb3JrZXJzKE9wdGlvblNldDxSZW1vdGVXb3JrZXJUeXBlPik7CisgICAgdm9p
ZCBkaXNhYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlKTsKIAogICAgIFdlYnNpdGVE
YXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRh
U3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0
ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CkBAIC0zNjUsMTIgKzM2NiwxMSBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsK
ICAgICB2b2lkIHVwZGF0ZVJlbW90ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYpOwotICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgZXN0YWJsaXNoUmVt
b3RlV29ya2VyQ29udGV4dChSZW1vdGVXb3JrZXJUeXBlLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZWdp
c3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSwgV2ViUHJvY2Vz
c1Byb3h5Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhS
ZW1vdGVXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUHJveHkmKTsKICAgICB2b2lkIHVwZGF0ZVJlbW90
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2VyVHlwZSk7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Jiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
cj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAm
JiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZVByb3h5SUQgPT0g
cGFnZVByb3h5SUQ7IH0KICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZp
dHlGb3JUZXN0aW5nKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3Vu
ZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDg0MjhlYmFiZWJhYTExNTNlMzcyZjljMzQwM2NiZmFhNjE2MmFiN2Eu
LjUwODYxMWFlZjY5ZTM0Y2VlNjIyZDdiMjNjYTM3ZmMxZGEwNjdmMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJS
ZW1vdGVNZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5LmgiCiAjaW5jbHVkZSAiUmVtb3Rl
UmVtb3RlQ29tbWFuZExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5
LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgIlNwZWVjaFJlY29n
bml0aW9uUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJl
YU1hcC5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCkBAIC0xOTI2LDI3ICsxOTI3LDI1IEBAIExp
YldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdvcmsoKQogICAgIHJldHVy
biAqbV9saWJXZWJSVENOZXR3b3JrOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFNo
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVu
dGlmaWVyIHBhZ2VHcm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3Jl
LCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBSZW1vdGVXb3JrZXJJbml0
aWFsaXphdGlvbkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoUmVt
b3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlbW90ZVdvcmtlclR5
cGUgd29ya2VyVHlwZSwgUGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViUGFnZVBy
b3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
cj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlv
bkRhdGEmJiBpbml0aWFsaXphdGlvbkRhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICAvLyBXZSBhcmUgaW4gdGhlIFNoYXJlZCBXb3JrZXIg
Y29udGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVj
dGlvbiB0byB0aGUgTmV0d29yayBQcm9jZXNzCi0gICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyIG5lZWRzIHRv
IHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKKyAgICAvLyBX
ZSBhcmUgaW4gdGhlIFJlbW90ZSBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBi
ZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29yayBQcm9jZXNzCisg
ICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNXQ29udGV4
dE1hbmFnZXIgLyBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlciBuZWVkIHRvIHVzZSB0aGUgc2Ft
ZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKICAgICAvLyBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24gZm9yIHN5bmNocm9uaXphdGlvbiBwdXJwb3Nlcy4KICAgICBhdXRvJiBpcGND
b25uZWN0aW9uID0gZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
OwotICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRDb25uZWN0
aW9uKG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihp
cGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgcGFnZUdyb3VwSUQsIHdl
YlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRpYWxpemF0aW9uRGF0YSkp
KTsKLSAgICBTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpLT5lc3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICBzd2l0Y2ggKHdvcmtlclR5cGUpIHsKKyAgICBjYXNlIFJlbW90ZVdvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXI6CisgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNldENvbm5l
Y3Rpb24obWFrZVVuaXF1ZTxXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbj4oaXBjQ29ubmVj
dGlvbiwgV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllciwgcGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3Zl
KGluaXRpYWxpemF0aW9uRGF0YSkpKTsKKyAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuY29ubmVjdGlvbigpLT5lc3RhYmxpc2hDb25uZWN0aW9uKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZW1vdGVXb3JrZXJUeXBlOjpT
aGFyZWRXb3JrZXI6CisgICAgICAgIFNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zZXRDb25uZWN0aW9uKG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uPihpcGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwg
cGFnZUdyb3VwSUQsIHdlYlBhZ2VQcm94eUlELCBwYWdlSUQsIHN0b3JlLCBXVEZNb3ZlKGluaXRp
YWxpemF0aW9uRGF0YSkpKTsKKyAgICAgICAgU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+ZXN0YWJsaXNoQ29ubmVjdGlvbihXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyIHBhZ2VH
cm91cElELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFJlbW90ZVdv
cmtlckluaXRpYWxpemF0aW9uRGF0YSYmIGluaXRpYWxpemF0aW9uRGF0YSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIC8vIFdlIGFyZSBpbiB0
aGUgU2VydmljZSBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3Rh
Ymxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29yayBQcm9jZXNzCi0gICAgLy8gYnkg
Y2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNXQ29udGV4dE1hbmFnZXIg
bmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQot
ICAgIC8vIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBmb3Igc3luY2hyb25pemF0aW9uIHB1cnBv
c2VzLgotICAgIGF1dG8mIGlwY0Nvbm5lY3Rpb24gPSBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCk7Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
c2V0Q29ubmVjdGlvbihtYWtlVW5pcXVlPFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uPihp
cGNDb25uZWN0aW9uLCBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyLCBwYWdlR3JvdXBJRCwgd2ViUGFnZVByb3h5SUQsIHBhZ2VJRCwgc3RvcmUs
IFdURk1vdmUoaW5pdGlhbGl6YXRpb25EYXRhKSkpOwotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+ZXN0YWJsaXNoQ29ubmVjdGlvbihXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzczo6YWRkU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbihXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogewogICAgIG1fc3dSZWdpc3RyYXRpb25Db3VudHMuYWRkKGlkZW50aWZpZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggN2M1MGUwN2VkYTVlMDRm
ZGIzMmMwYWUzMGVmZjRiMGJmZTM3MThmZi4uOTZlNmNlZTIyMThmNmE5YjAwNTNkZDlmZmEwZDVk
ODNjZDNiNjRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xNTcs
NiArMTU3LDcgQEAgc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiBzdHJ1Y3QgV2Vic2l0ZURh
dGE7CiBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CiAKK2VudW0gY2xhc3MgUmVt
b3RlV29ya2VyVHlwZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQz
Ml90OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTQ3MCwxMCArNDcxLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5kZXgpOwogI2Vu
ZGlmCiAKLSAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhQYWdlR3JvdXBJZGVudGlmaWVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0
YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLSAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoUGFnZUdyb3VwSWRlbnRpZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIs
IFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotI2VuZGlmCisgICAgdm9pZCBlc3RhYmxpc2hSZW1vdGVXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSwgUGFnZUdyb3VwSWRlbnRp
ZmllciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0
YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBmZXRjaFdlYnNp
dGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYnNpdGVEYXRhJiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgppbmRleCBmNWU3MzZlZDM0N2YyNzFhZGVjN2M0NWQwM2ZkODNkYmIwYmE5
YmVlLi5hODM3MTMwOTQ5ZjE2MjdjMGY3YzFhYWUyMmU5ZGQ1YWYxYWRmMjA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTAwLDEx
ICsxMDAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNv
dW50ZWQgewogICAgIEdhbWVwYWREaXNjb25uZWN0ZWQodW5zaWduZWQgaW5kZXgpCiAjZW5kaWYK
IAotICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIgcGFnZUdyb3VwSUQsIFdlYktpdDo6V2Vi
UGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0cnVjdCBXZWJLaXQ6OlJlbW90ZVdvcmtl
ckluaXRpYWxpemF0aW9uRGF0YSBpbml0aWFsaXphdGlvbkRhdGEpIC0+ICgpIEFzeW5jCi0KLSNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJLaXQ6OlBhZ2VHcm91cElkZW50aWZpZXIg
cGFnZUdyb3VwSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc1N0b3JlIHN0b3JlLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6UmVtb3RlV29ya2VySW5p
dGlhbGl6YXRpb25EYXRhIGluaXRpYWxpemF0aW9uRGF0YSkgLT4gKCkgQXN5bmMKLSNlbmRpZgor
ICAgIEVzdGFibGlzaFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhlbnVtOmJvb2wgV2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYktpdDo6
UGFnZUdyb3VwSWRlbnRpZmllciBwYWdlR3JvdXBJRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0
cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIGRvbWFpbiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzdHJ1Y3QgV2Vi
S2l0OjpSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEgaW5pdGlhbGl6YXRpb25EYXRhKSAt
PiAoKSBBc3luYwogCiAgICAgU2V0SGFzU3VzcGVuZGVkUGFnZVByb3h5KGJvb2wgaGFzU3VzcGVu
ZGVkUGFnZVByb3h5KTsKICAgICBTZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wgaXNJblByb2Nlc3ND
YWNoZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>