<?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>236271</bug_id>
          
          <creation_ts>2022-02-07 16:30:16 -0800</creation_ts>
          <short_desc>[iOS] Take adequate process assertion for the SharedWorker process</short_desc>
          <delta_ts>2022-02-09 16:47:57 -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>
          
          
          <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>
          
          <blocked>230382</blocked>
    
    <blocked>236396</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</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>1838421</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-07 16:30:16 -0800</bug_when>
    <thetext>Take adequate process assertion for the SharedWorker process based on which processes rely on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838765</commentid>
    <comment_count>1</comment_count>
      <attachid>451274</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-08 10:49:23 -0800</bug_when>
    <thetext>Created attachment 451274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838773</commentid>
    <comment_count>2</comment_count>
      <attachid>451277</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-08 11:00:42 -0800</bug_when>
    <thetext>Created attachment 451277
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838795</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-08 11:32:56 -0800</bug_when>
    <thetext>&lt;rdar://problem/88642879&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838961</commentid>
    <comment_count>4</comment_count>
      <attachid>451325</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-08 16:51:40 -0800</bug_when>
    <thetext>Created attachment 451325
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839127</commentid>
    <comment_count>5</comment_count>
      <attachid>451369</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-09 07:12:42 -0800</bug_when>
    <thetext>Created attachment 451369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839135</commentid>
    <comment_count>6</comment_count>
      <attachid>451372</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-09 07:19:36 -0800</bug_when>
    <thetext>Created attachment 451372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839274</commentid>
    <comment_count>7</comment_count>
      <attachid>451403</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-09 10:43:08 -0800</bug_when>
    <thetext>Created attachment 451403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839283</commentid>
    <comment_count>8</comment_count>
      <attachid>451406</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-09 10:51:33 -0800</bug_when>
    <thetext>Created attachment 451406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839295</commentid>
    <comment_count>9</comment_count>
      <attachid>451406</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-02-09 11:13:22 -0800</bug_when>
    <thetext>Comment on attachment 451406
Patch

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

&gt; Source/WebKit/NetworkProcess/SharedWorker/WebSharedWorkerServer.cpp:76
&gt; +            auto* contextConnection = sharedWorker-&gt;contextConnection();

Did SharedWorker always have the correct contextConnection, and we&apos;ve been wasting time looking it up?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839299</commentid>
    <comment_count>10</comment_count>
      <attachid>451406</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-09 11:19:13 -0800</bug_when>
    <thetext>Comment on attachment 451406
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/SharedWorker/WebSharedWorkerServer.cpp:76
&gt;&gt; +            auto* contextConnection = sharedWorker-&gt;contextConnection();
&gt; 
&gt; Did SharedWorker always have the correct contextConnection, and we&apos;ve been wasting time looking it up?

No, technically this ends up being equivalent. I just think this looks nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839456</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-09 16:47:52 -0800</bug_when>
    <thetext>Committed r289508 (247042@main): &lt;https://commits.webkit.org/247042@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451406.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451274</attachid>
            <date>2022-02-08 10:49:23 -0800</date>
            <delta_ts>2022-02-08 11:00:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236271-20220208104922.patch</filename>
            <type>text/plain</type>
            <size>70624</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBmZjFkZWI0MGEyZjk0ZjZl
ODNhZjQzNWEzNGM4NzE3YTFkNzc3NmEuLjBjMDcyM2JhM2E5YWY0NWM2ZmMwNTMzM2MzZTExOTky
NWUyZjY0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIwMjItMDItMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBUYWtlIGFkZXF1YXRlIHBy
b2Nlc3MgYXNzZXJ0aW9uIGZvciB0aGUgU2hhcmVkV29ya2VyIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjI3MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgdHJhY2sgb2YgY2xpZW50
IHByb2Nlc3NlcyB0aGF0IHJlbHkgb24gYSBwYXJ0aWN1bGFyIFNoYXJlZFdvcmtlciBwcm9jZXNz
IGFuZCB0YWtlIHRoZSBhZGVxdWF0ZQorICAgICAgICBwcm9jZXNzIGFzc2VydGlvbiB0byBrZWVw
IHRoZSBwcm9jZXNzIHJ1bm5pbmcgb24gaU9TIHdoZW4gbmVjZXNzYXJ5LiBUaGlzIGFsbG93cyB1
cyB0byBnZXQgcmlkIG9mCisgICAgICAgIHRoZSBoYWNrIEkgbGFuZGVkIHByZXZpb3VzbHkgdG8g
YWx3YXlzIHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiBvbiBiZWhhbGYgb2YgdGhlIHNoYXJlZCB3
b3JrZXIKKyAgICAgICAgcHJvY2VzcyAoZXZlbiBpZiBhbGwgaXRzIGNsaWVudHMgYXJlIHN1c3Bl
bmRlZCkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2
aWNlV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpXZWJTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXI6OmRpZENyZWF0ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjphZGRTaGFyZWRXb3JrZXJPYmplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnJlbW92ZVNoYXJlZFdvcmtlck9iamVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6Zm9yRWFjaFNoYXJlZFdvcmtlck9i
amVjdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6Y29udGV4dENv
bm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpzaGFy
ZWRXb3JrZXJPYmplY3RzQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OnNoYXJlZFdvcmtlck9iamVjdHMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hh
cmVkV29ya2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
OjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3du
U2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpy
ZW1vdmVDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6YWRkU2hhcmVkV29ya2VyT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
cmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAuCisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJlbW90ZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVSZW1vdGVXb3JrZXJVc2VyQWdlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlv
bnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFn
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JSZW1vdGVXb3JrZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRSZW1vdGVXb3JrZXJVc2Vy
QWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlbW90ZVdv
cmtlclByZWZlcmVuY2VzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVu
dFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZl
cmVuY2VzU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wMi0wOCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEdQVVAgV2ViR0wgUkVMRUFTRV9MT0dzIGVycm9ybmVv
dXNseSBmb3IgdW5oYW5kbGVkIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IGM3YjE3ZmQ3MDc4NTRiMTI4NDk4ZDExMThmNGU2ZTdkNWIzZDg1ZmQuLjgzMDdhZDI3NDhm
OWM2MjlhMjBjMDY5N2EzYzQzZjRlNWQwM2MzZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiUGluZ0xvYWQuaCIKICNpbmNsdWRlICJQ
cmVjb25uZWN0VGFzay5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclBy
b3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgpAQCAtMTI0OCw3ICsxMjQ5LDcgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5l
Y3Rpb24oKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQogewogICAgIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAic2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdlYlBy
b2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVt
b3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IFJlbW90ZVdvcmtlclR5
cGU6OlNoYXJlZFdvcmtlciwgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIAogICAgIG1f
c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQpAQCAtMTI5OSw3ICsx
MzAwLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTV0NvbnRl
eHRDb25uZWN0aW9uKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZp
Y2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQogewogICAg
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInNlcnZpY2VXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQ6IFdlYlByb2Nlc3Mgbm8gbG9uZ2Vy
IHVzZWZ1bCBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMiKTsKLSAgICBtX25ldHdvcmtQcm9j
ZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7
IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6UmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IFJlbW90ZVdv
cmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAK
ICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBiMzkwY2FmYTYwNDFmM2U4MDFmZDJkM2E4YzI0
M2I1NTQ3NTEyMjk0Li4zMjZjOWI3N2E1ZDM2MmE0YTc4YmZlNTEwM2E1NmJmODUxYmE5YjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5j
bHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKQEAgLTM3OCw3ICszNzksNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcAogCiAgICAg
aWYgKGNvbnRleHRDb25uZWN0aW9uKSB7CiAgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBzdGF0
aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rp
b24pOwotICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzIHsgaWRlbnRpZmllcigpLCBjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVu
dGlmaWVyKCkgfSwgMCk7CisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlZ2lzdGVy
UmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyB7IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIsIGlkZW50aWZpZXIoKSwgY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDAp
OwogICAgIH0KIH0KIApAQCAtNDAzLDcgKzQwNCw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTY3JpcHRFeGVjdXRpb25D
CiAgICAgaWYgKGlzRGVsZXRlZE9yaWdpbikgewogICAgICAgICBpZiAoYXV0byogY29udGV4dENv
bm5lY3Rpb24gPSBzZXJ2ZXIoKS5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWlu
KFJlZ2lzdHJhYmxlRG9tYWluIHsgY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbiB9KSkgewogICAg
ICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiY+KCpjb250ZXh0Q29ubmVjdGlvbik7Ci0gICAgICAgICAgICBtX25ldHdv
cmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpVbnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MgeyBp
ZGVudGlmaWVyKCksIGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKyAg
ICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlVucmVnaXN0ZXJSZW1vdGVXb3JrZXJD
bGllbnRQcm9jZXNzIHsgUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgaWRlbnRpZmll
cigpLCBjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAgICAgICAgIH0K
ICAgICB9CiB9CkBAIC01NDQsNyArNTQ1LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246
OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KICAg
ICBjb25uZWN0aW9uLnNldFRocm90dGxlU3RhdGUoY29tcHV0ZVRocm90dGxlU3RhdGUoY29ubmVj
dGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSk7CiAKICAgICBpZiAoaGFzTWF0Y2hpbmdDbGllbnQo
Y29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSkKLSAgICAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyB7IGlkZW50aWZpZXIo
KSwgY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MgeyBS
ZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBpZGVudGlmaWVyKCksIGNvbm5lY3Rpb24u
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnRlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxs
YmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCmluZGV4IDgwMDkxMzk1MjgwYzhkNzYwZWYx
YTFkMTIxYzIxNDc1ZjQ5NWViYjguLmY5NjhlNzA5MjgxZWQwNWI3YTA2MzI2ZTA0N2E0NjM1YTcz
MTUwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgogCisjaW5jbHVk
ZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAg
LTM5LDggKzQxLDkgQEAgc3RhdGljIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciwgV2ViU2hhcmVkV29ya2VyKj4mIGFsbFdvcmtlcnMoKQogICAgIHJldHVybiBhbGxXb3Jr
ZXJzOwogfQogCi1XZWJTaGFyZWRXb3JrZXI6OldlYlNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29y
a2VyT3B0aW9ucykKLSAgICA6IG1faWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpKQorV2ViU2hhcmVkV29ya2VyOjpXZWJTaGFyZWRXb3JrZXIoV2Vi
U2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eSYga2V5LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQorICAg
IDogbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV9pZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAgLCBtX2tleShrZXkpCiAgICAgLCBtX3dv
cmtlck9wdGlvbnMod29ya2VyT3B0aW9ucykKIHsKQEAgLTY0LDQgKzY3LDM1IEBAIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIFdlYlNoYXJlZFdvcmtlcjo6cmVnaXN0cmFibGVEb21haW4oKSBj
b25zdAogICAgIHJldHVybiBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCgpIH07CiB9
CiAKK3ZvaWQgV2ViU2hhcmVkV29ya2VyOjpkaWRDcmVhdGVDb250ZXh0Q29ubmVjdGlvbihXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikK
K3sKKyAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiBtX3NoYXJl
ZFdvcmtlck9iamVjdHMua2V5cygpKQorICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi5hZGRTaGFy
ZWRXb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
V2ViU2hhcmVkV29ya2VyOjphZGRTaGFyZWRXb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiBwb3J0KQoreworICAgIG1fc2hhcmVkV29y
a2VyT2JqZWN0cy5hZGQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgcG9ydCk7CisgICAg
aWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICBjb25u
ZWN0aW9uLT5hZGRTaGFyZWRXb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyOjpyZW1vdmVTaGFyZWRXb3JrZXJPYmplY3Qo
V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKQoreworICAgIG1fc2hhcmVkV29ya2VyT2JqZWN0cy5yZW1vdmUoc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBjb250ZXh0
Q29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uLT5yZW1vdmVTaGFyZWRXb3JrZXJPYmpl
Y3Qoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29y
a2VyOjpmb3JFYWNoU2hhcmVkV29ya2VyT2JqZWN0KGNvbnN0IEZ1bmN0aW9uPHZvaWQoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCYpPiYgYXBwbHkpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBbc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciwgcG9ydF0gOiBtX3NoYXJlZFdvcmtlck9iamVjdHMpCisg
ICAgICAgIGFwcGx5KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBvcnQpOworfQorCitX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBXZWJTaGFyZWRXb3JrZXI6
OmNvbnRleHRDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zZXJ2ZXIuY29udGV4
dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbigpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oCmluZGV4IDM0Yjdh
NGE4NDNjZWY5YTE3ZWJjMGIzYTVmYTRjY2Q0ZDA2MTZiMzQuLjkzYmI1NjY4MmRhMTkyY2YzNDc3
YWUwNTE5ODI0NDZjNDAwM2NjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oCkBAIC0zOSwxMCAr
MzksMTMgQEAgY2xhc3MgUmVnaXN0cmFibGVEb21haW47CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCiBjbGFzcyBXZWJTaGFyZWRXb3JrZXIgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8V2ViU2hhcmVkV29ya2VyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgV2ViU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcktleSYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKTsKKyAgICBXZWJTaGFy
ZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyJiwgY29uc3QgV2ViQ29yZTo6U2hhcmVkV29y
a2VyS2V5JiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpOwogICAgIH5XZWJTaGFyZWRX
b3JrZXIoKTsKIAogICAgIHN0YXRpYyBXZWJTaGFyZWRXb3JrZXIqIGZyb21JZGVudGlmaWVyKFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIpOwpAQCAtNTMsNyArNTYsMTQgQEAgcHVibGlj
OgogICAgIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9rZXkub3JpZ2luOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBt
X2tleS51cmw7IH0KICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURv
bWFpbigpIGNvbnN0OwotICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydD4mIHNoYXJlZFdvcmtlck9i
amVjdHMoKSB7IHJldHVybiBtX3NoYXJlZFdvcmtlck9iamVjdHM7IH0KKyAgICBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVjdGlvbigpIGNvbnN0
OworCisgICAgdm9pZCBhZGRTaGFyZWRXb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYp
OworICAgIHZvaWQgcmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIpOworICAgIHVuc2lnbmVkIHNoYXJlZFdvcmtlck9iamVjdHNDb3Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCk7IH0KKyAgICB2
b2lkIGZvckVhY2hTaGFyZWRXb3JrZXJPYmplY3QoY29uc3QgRnVuY3Rpb248dm9pZChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJl
ZE1lc3NhZ2VQb3J0Jik+JikgY29uc3Q7CisKKyAgICB2b2lkIGRpZENyZWF0ZUNvbnRleHRDb25u
ZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKIAogICAg
IGJvb2wgaXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1J1bm5pbmc7IH0KICAgICB2b2lk
IG1hcmtBc1J1bm5pbmcoKSB7IG1faXNSdW5uaW5nID0gdHJ1ZTsgfQpAQCAtNjgsNiArNzgsNyBA
QCBwcml2YXRlOgogICAgIFdlYlNoYXJlZFdvcmtlcihjb25zdCBXZWJTaGFyZWRXb3JrZXImKSA9
IGRlbGV0ZTsKICAgICBXZWJTaGFyZWRXb3JrZXImIG9wZXJhdG9yPShjb25zdCBXZWJTaGFyZWRX
b3JrZXImKSA9IGRlbGV0ZTsKIAorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlciYgbV9zZXJ2ZXI7
CiAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAg
V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IG1fa2V5OwogICAgIFdlYkNvcmU6Oldvcmtlck9wdGlv
bnMgbV93b3JrZXJPcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAK
aW5kZXggZmM2ODMwMjE0ZDQwYzQ3ZjIyZTk1NTljYzg2YWQ3MjVhYjUxMDViMy4uYjhlNDcxY2I0
NWI1MDYwNGFmYmM4N2FmMmNkZjk4Mzk1YWU5M2UyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFBBTDo6U2Vzc2lvbklEIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6c2Vzc2lvbklEKCkKIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpy
ZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYmIHNoYXJlZFdvcmtl
cktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgcG9ydCwg
V2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMpCiB7CiAgICAgYXV0byYgc2hh
cmVkV29ya2VyID0gbV9zaGFyZWRXb3JrZXJzLmVuc3VyZShzaGFyZWRXb3JrZXJLZXksIFsmXSB7
Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlcj4oc2hhcmVkV29ya2Vy
S2V5LCB3b3JrZXJPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU2hhcmVk
V29ya2VyPigqdGhpcywgc2hhcmVkV29ya2VyS2V5LCB3b3JrZXJPcHRpb25zKTsKICAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CiAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVk
V29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyPSV7cHJpdmF0ZX1zLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHNoYXJl
ZFdvcmtlci0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCkBAIC02NiwxNiArNjYsMTYgQEAg
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5JiYgc2hhcmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNo
YXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLmFkZChzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBwb3J0KTsKKyAgICBzaGFyZWRXb3JrZXItPmFkZFNoYXJlZFdvcmtlck9iamVj
dChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0KTsKIAotICAgIGlmIChzaGFyZWRX
b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5zaXplKCkgPiAxKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJl
ZFdvcmtlcjogQSBzaGFyZWQgd29ya2VyIHdpdGggdGhpcyBVUkwgYWxyZWFkeSBleGlzdHMgKG5v
dyBzaGFyZWQgYnkgJXUgc2hhcmVkIHdvcmtlciBvYmplY3RzKSIsIHNoYXJlZFdvcmtlci0+c2hh
cmVkV29ya2VyT2JqZWN0cygpLnNpemUoKSk7CisgICAgaWYgKHNoYXJlZFdvcmtlci0+c2hhcmVk
V29ya2VyT2JqZWN0c0NvdW50KCkgPiAxKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdv
cmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFy
ZWQgd29ya2VyIHdpdGggdGhpcyBVUkwgYWxyZWFkeSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUg
c2hhcmVkIHdvcmtlciBvYmplY3RzKSIsIHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0
c0NvdW50KCkpOwogICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5kaWRGaW5pc2hGZXRjaGluZygp
KSB7CiAgICAgICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlv
bnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkp
CiAgICAgICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZM
b2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB7IH0pOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmlzUnVubmluZygpKSB7Ci0gICAgICAgICAg
ICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1fY29udGV4dENvbm5lY3Rpb25zLmdldChzaGFy
ZWRXb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgICAgICAgICAgYXV0byogY29udGV4
dENvbm5lY3Rpb24gPSBzaGFyZWRXb3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCk7CiAgICAgICAg
ICAgICBBU1NFUlQoY29udGV4dENvbm5lY3Rpb24pOwogICAgICAgICAgICAgaWYgKGNvbnRleHRD
b25uZWN0aW9uKQogICAgICAgICAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5wb3N0Q29ubmVj
dEV2ZW50KCpzaGFyZWRXb3JrZXIsIHBvcnQpOwpAQCAtOTgsMTAgKzk4LDEwIEBAIHZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdChX
ZWJTaGFyZWRXb3JrZXImCiB7CiAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtlclNjcmlwdCBzaGFy
ZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBzaGFyZWRXb3JrZXI9JXAsIHN1Y2Nlc3M9
JWQiLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLnRvVUludDY0KCksICZzaGFyZWRXb3JrZXIs
IGZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKTsKIAotICAgIGZvciAoYXV0byBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyLnNoYXJlZFdvcmtlck9iamVjdHMoKS5r
ZXlzKCkpIHsKKyAgICBzaGFyZWRXb3JrZXIuZm9yRWFjaFNoYXJlZFdvcmtlck9iamVjdChbJl0o
YXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBhdXRvJikgewogICAgICAgICBpZiAo
YXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCiAgICAgICAgICAgICBzZXJ2ZXJD
b25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIGZldGNoUmVzdWx0LmVycm9yKTsKLSAgICB9CisgICAgfSk7CiAK
ICAgICBpZiAoIWZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIG1fc2hhcmVk
V29ya2Vycy5yZW1vdmUoc2hhcmVkV29ya2VyLmtleSgpKTsKQEAgLTExMCwxNCArMTEwLDExIEBA
IHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtl
clNjcmlwdChXZWJTaGFyZWRXb3JrZXImCiAKICAgICBzaGFyZWRXb3JrZXIuc2V0RmV0Y2hSZXN1
bHQoV1RGTW92ZShmZXRjaFJlc3VsdCkpOwogCi0gICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9
IHNoYXJlZFdvcmtlci5yZWdpc3RyYWJsZURvbWFpbigpOwotICAgIGF1dG8qIGNvbnRleHRDb25u
ZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJs
ZURvbWFpbik7Ci0gICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikgewotICAgICAgICBjcmVhdGVD
b250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYgKGF1dG8qIGNvbnRl
eHRDb25uZWN0aW9uID0gc2hhcmVkV29ya2VyLmNvbnRleHRDb25uZWN0aW9uKCkpIHsKKyAgICAg
ICAgY29udGV4dENvbm5lY3Rpb24tPmxhdW5jaFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgY29udGV4dENvbm5lY3Rpb24tPmxhdW5jaFNo
YXJlZFdvcmtlcihzaGFyZWRXb3JrZXIpOworICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHNo
YXJlZFdvcmtlci5yZWdpc3RyYWJsZURvbWFpbigpKTsKIH0KIAogYm9vbCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pIGNvbnN0CkBA
IC0xNDYsNyArMTQzLDYgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNyZWF0ZUNvbnRl
eHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG8KIAogICAgICAgICBBU1NF
UlQobV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5zKHJlZ2lzdHJhYmxl
RG9tYWluKSk7CiAgICAgICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5yZW1v
dmUocmVnaXN0cmFibGVEb21haW4pOwotCiAgICAgICAgIGlmIChtX2NvbnRleHRDb25uZWN0aW9u
cy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAg
LTE3Niw3ICsxNzIsNyBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4
dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZQogCiAgICAgbV9jb250ZXh0
Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKIAotICAgIGlmIChuZWVkc0Nv
bnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pKQor
ICAgIGlmIChjb250ZXh0Q29ubmVjdGlvbi5oYXNTaGFyZWRXb3JrZXJPYmplY3RzKCkpCiAgICAg
ICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIApAQCAt
MTg1LDcgKzE4MSwxMSBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5l
Y3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udAogICAgIFJFTEVBU0VfTE9H
KFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4dENvbm5lY3Rpb25D
cmVhdGVkKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZjb250ZXh0Q29ubmVj
dGlvbiwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKICAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25uZWN0aW9uLnJlZ2lz
dHJhYmxlRG9tYWluKCk7CiAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBtX3NoYXJlZFdv
cmtlcnMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+ZGlkRmluaXNoRmV0
Y2hpbmcoKSAmJiByZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHNoYXJlZFdvcmtlci0+dXJsKCkp
KQorICAgICAgICBpZiAoIXJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hhcmVkV29ya2VyLT51
cmwoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzaGFyZWRXb3JrZXItPmRp
ZENyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnRleHRDb25uZWN0aW9uKTsKKyAgICAgICAgaWYg
KHNoYXJlZFdvcmtlci0+ZGlkRmluaXNoRmV0Y2hpbmcoKSkKICAgICAgICAgICAgIGNvbnRleHRD
b25uZWN0aW9uLmxhdW5jaFNoYXJlZFdvcmtlcigqc2hhcmVkV29ya2VyKTsKICAgICB9CiB9CkBA
IC0xOTcsOCArMTk3LDggQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNoYXJlZFdvcmtl
ck9iamVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFcKICAgICBpZiAoIXNoYXJl
ZFdvcmtlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3Jr
ZXJPYmplY3RzKCkucmVtb3ZlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOwotICAgIGlm
ICghc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuaXNFbXB0eSgpKQorICAgIHNo
YXJlZFdvcmtlci0+cmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIpOworICAgIGlmIChzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHNDb3Vu
dCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBzaHV0RG93blNoYXJlZFdvcmtlcihzaGFyZWRX
b3JrZXJLZXkpOwpAQCAtMjExLDEzICsyMTEsMTMgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXI6OnNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYK
ICAgICBpZiAoIXNoYXJlZFdvcmtlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogY29u
dGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHNo
YXJlZFdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgYXV0byogY29udGV4dENvbm5l
Y3Rpb24gPSBzaGFyZWRXb3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCk7CiAgICAgaWYgKCFjb250
ZXh0Q29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29udGV4dENvbm5lY3Rpb24t
PnRlcm1pbmF0ZVNoYXJlZFdvcmtlcigqc2hhcmVkV29ya2VyKTsKIAotICAgIGlmICghbmVlZHND
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHNoYXJlZFdvcmtlci0+cmVnaXN0
cmFibGVEb21haW4oKSkpCisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbi0+aGFzU2hhcmVkV29y
a2VyT2JqZWN0cygpKQogICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+Y29ubmVjdGlvbklzTm9M
b25nZXJOZWVkZWQoKTsKIH0KIApAQCAtMjM3LDEwICsyMzcsMTAgQEAgdm9pZCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbm5lY3Rpb24oV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
cHJvY2Vzc0kKIAogICAgIFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPj4gc2hhcmVkV29ya2VyT2Jq
ZWN0c0dvaW5nQXdheTsKICAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6IG1fc2hhcmVkV29y
a2Vycy52YWx1ZXMoKSkgewotICAgICAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgOiBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5rZXlzKCkpIHsK
KyAgICAgICAgc2hhcmVkV29ya2VyLT5mb3JFYWNoU2hhcmVkV29ya2VyT2JqZWN0KFsmXShhdXRv
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGF1dG8mKSB7CiAgICAgICAgICAgICBpZiAo
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpID09IHByb2Nl
c3NJZGVudGlmaWVyKQogICAgICAgICAgICAgICAgIHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3
YXkuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNoYXJlZFdvcmtlci0+a2V5KCksIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIpKTsKLSAgICAgICAgfQorICAgICAgICB9KTsKICAgICB9CiAgICAg
Zm9yIChhdXRvJiBbc2hhcmVkV29ya2VyS2V5LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
XSA6IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkpCiAgICAgICAgIHNoYXJlZFdvcmtlck9i
amVjdElzR29pbmdBd2F5KHNoYXJlZFdvcmtlcktleSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcik7CkBAIC0yNTgsMTAgKzI1OCwxMCBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZQogICAg
IGlmICghc2hhcmVkV29ya2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8gc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2Jq
ZWN0cygpLmtleXMoKSkgeworICAgIHNoYXJlZFdvcmtlci0+Zm9yRWFjaFNoYXJlZFdvcmtlck9i
amVjdChbJl0oYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBhdXRvJikgewogICAg
ICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCiAgICAgICAgICAg
ICBzZXJ2ZXJDb25uZWN0aW9uLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3Qoc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHNvdXJjZVVSTCk7Ci0gICAgfQorICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggZmY4NmJjN2Q2YTJkNDMxZjM4MzRkZjg1ZTFkMjYy
MzQ1NmY1YTk4Ny4uOGQ4YTZjMTg2Y2M2NmVkOTU5ZTBlYjZhMjI0NDFmNmU5ZWYxMmExZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTI4LDYgKzI4LDkgQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdv
cmtlci5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCkBAIC05MCw4
ICs5Myw5IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
bGF1bmNoU2hhcmVkV29ya2VyKFdlYlNoYXJlZFdvcmtlCiAgICAgQ09OVEVYVF9DT05ORUNUSU9O
X1JFTEVBU0VfTE9HKCJsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9
JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIHNo
YXJlZFdvcmtlci5tYXJrQXNSdW5uaW5nKCk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVk
V29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpMYXVuY2hTaGFyZWRXb3JrZXIgeyBzaGFy
ZWRXb3JrZXIub3JpZ2luKCksIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCksIHNoYXJlZFdvcmtl
ci51cmwoKSwgc2hhcmVkV29ya2VyLndvcmtlck9wdGlvbnMoKSwgc2hhcmVkV29ya2VyLmZldGNo
UmVzdWx0KCkgfSk7Ci0gICAgZm9yIChhdXRvJiBwb3J0IDogc2hhcmVkV29ya2VyLnNoYXJlZFdv
cmtlck9iamVjdHMoKS52YWx1ZXMoKSkKKyAgICBzaGFyZWRXb3JrZXIuZm9yRWFjaFNoYXJlZFdv
cmtlck9iamVjdChbJl0oYXV0bywgYXV0byYgcG9ydCkgewogICAgICAgICBwb3N0Q29ubmVjdEV2
ZW50KHNoYXJlZFdvcmtlciwgcG9ydCk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudChjb25zdCBXZWJT
aGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNz
YWdlUG9ydCYgcG9ydCkKQEAgLTEwNiw2ICsxMTAsMjkgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoY29uc3QgV2Vi
U2gKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OlRlcm1pbmF0ZVNoYXJlZFdvcmtlciB7IHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCkg
fSk7CiB9CiAKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
YWRkU2hhcmVkV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRvJiBzaGFyZWRXb3Jr
ZXJPYmplY3RzID0gbV9zaGFyZWRXb3JrZXJPYmplY3RzLmVuc3VyZShzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCksIFtdIHsgcmV0dXJuIEhhc2hTZXQ8V2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj4geyB9OyB9KS5pdGVyYXRvci0+dmFs
dWU7CisgICAgc2hhcmVkV29ya2VyT2JqZWN0cy5hZGQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcik7CisKKyAgICBpZiAod2ViUHJvY2Vzc0lkZW50aWZpZXIoKSAhPSBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgJiYgc2hhcmVkV29ya2VyT2JqZWN0
cy5zaXplKCkgPT0gMSkKKyAgICAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGll
bnRQcm9jZXNzIHsgUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlByb2Nlc3NJZGVudGlmaWVy
KCkgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6cmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0
ID0gbV9zaGFyZWRXb3JrZXJPYmplY3RzLmZpbmQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ci5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBpZiAoaXQgPT0gbV9zaGFyZWRXb3JrZXJPYmpl
Y3RzLmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgaXQtPnZhbHVlLnJlbW92ZShzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBpZiAoIWl0LT52YWx1ZS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fc2hhcmVkV29ya2VyT2JqZWN0cy5yZW1vdmUoaXQpOwor
ICAgIGlmICh3ZWJQcm9jZXNzSWRlbnRpZmllcigpICE9IHNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkKKyAgICAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQ
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VW5yZWdpc3RlclJl
bW90ZVdvcmtlckNsaWVudFByb2Nlc3MgeyBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIs
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJv
Y2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKK30KKwogI3VuZGVmIENPTlRFWFRfQ09OTkVDVElPTl9S
RUxFQVNFX0xPRwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBk
NmFlYTMxOWFhM2U4MGU2NzBkZWRiYzBjOGFiZDBmMmY2YjVjYTI0Li44NDkwNzc4NGVkOWMzNGY4
ZjY4ZDFmZTQwNmMyOWJlNWI2YjE0NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklk
ZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNjEsOSArNjIsMTMgQEAgcHVibGljOgogICAgIHZvaWQgdGVy
bWluYXRlU2hhcmVkV29ya2VyKGNvbnN0IFdlYlNoYXJlZFdvcmtlciYpOwogCiAgICAgdm9pZCBj
b25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworICAgIGJvb2wgaGFzU2hhcmVkV29ya2VyT2Jq
ZWN0cygpIGNvbnN0IHsgcmV0dXJuICFtX3NoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpOyB9
CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOwogCisgICAgdm9pZCBhZGRTaGFyZWRXb3JrZXJPYmplY3QoV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdmVTaGFyZWRXb3Jr
ZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKIHByaXZh
dGU6CiAgICAgLy8gSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2Vy
T2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkwpOwpAQCAtNzUsNiArODAsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CiAgICAgV2Vha1B0cjxXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI+IG1fc2VydmVyOwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1f
cmVnaXN0cmFibGVEb21haW47CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciwgSGFzaFNldDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPj4gbV9zaGFy
ZWRXb3JrZXJPYmplY3RzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI4MTZkOTQxZjgyZmVjNDdl
ZjhmNTQ2NGRmZDY4OWViNjBiN2NmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZVdvcmtlclR5cGUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIGNsYXNzIFJlbW90ZVdv
cmtlclR5cGUgOiB1aW50MzJfdCB7CisgICAgU2VydmljZVdvcmtlciA9IDEgPDwgMCwKKyAgICBT
aGFyZWRXb3JrZXIgPSAxIDw8IDEKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCituYW1l
c3BhY2UgV1RGIHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpSZW1vdGVX
b3JrZXJUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2Vi
S2l0OjpSZW1vdGVXb3JrZXJUeXBlLAorICAgICAgICBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIsCisgICAgICAgIFdlYktpdDo6UmVtb3RlV29ya2VyVHlwZTo6U2hhcmVk
V29ya2VyCisgICAgPjsKK307Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzMzAyMGJkNWMzY2Q5NDE3
NzU2MTU3OWFjMjBmYzM4ZjljNjkyNzhlLi5lZGNjZmYyMDhlYWNlZDQxNGY3MjdiYWZhNDM2MzZh
NGFlMDJiY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgd2ViUHJvYwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVVbnJlc3Bv
bnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHBy
b2Nlc3NJZGVudGlmaWVyKQogewogICAgIGlmIChSZWZQdHIgcHJvY2VzcyA9IFdlYlByb2Nlc3NQ
cm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIpKSB7Ci0gICAgICAg
IHByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlcik7CisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVSZW1vdGVXb3JrZXJzKFJlbW90
ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogICAgICAgICBwcm9jZXNzLT5yZXF1ZXN0VGVy
bWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpFeGNlZWRlZENQVUxpbWl0KTsKICAg
ICB9CiB9CkBAIC0xNDIwLDM2ICsxNDIwLDM2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzCiAg
ICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklELCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3Ry
YWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
cj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90
ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNoYXJlZFdvcmtlclBy
b2Nlc3NJZGVudGlmaWVyKQogewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFi
bGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQorICAgIGF1dG8qIHdlYlByb2Nlc3MgPSBXZWJQcm9j
ZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKTsKKyAg
ICBhdXRvKiBzaGFyZWRXb3JrZXJQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9y
SWRlbnRpZmllcihzaGFyZWRXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgaWYgKCF3ZWJQ
cm9jZXNzIHx8ICFzaGFyZWRXb3JrZXJQcm9jZXNzKQorICAgICAgICByZXR1cm47CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25n
ZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBp
ZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIo
aWRlbnRpZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQ
cm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CisgICAgc2hhcmVkV29ya2VyUHJvY2Vz
cy0+cmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKHdvcmtlclR5cGUsICp3ZWJQcm9j
ZXNzKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lk
ZW50aWZpZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJSZW1vdGVXb3Jr
ZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHNoYXJlZFdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogewogICAgIGF1dG8qIHdlYlBy
b2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHdlYlByb2Nlc3NJ
ZGVudGlmaWVyKTsKLSAgICBhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA9IFdlYlByb2Nlc3NQ
cm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVy
KTsKLSAgICBpZiAoIXdlYlByb2Nlc3MgfHwgIXNlcnZpY2VXb3JrZXJQcm9jZXNzKQorICAgIGF1
dG8qIHNoYXJlZFdvcmtlclByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVu
dGlmaWVyKHNoYXJlZFdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdlYlByb2Nl
c3MgfHwgIXNoYXJlZFdvcmtlclByb2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzLT5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKCp3ZWJQ
cm9jZXNzKTsKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzLT51bnJlZ2lzdGVyUmVtb3RlV29ya2Vy
Q2xpZW50UHJvY2Vzcyh3b3JrZXJUeXBlLCAqd2ViUHJvY2Vzcyk7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCit2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVk
ZWQoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogewotICAgIGF1dG8qIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6
OnByb2Nlc3NGb3JJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBhdXRvKiBz
ZXJ2aWNlV29ya2VyUHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZp
ZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIGlmICghd2ViUHJvY2VzcyB8fCAhc2Vydmlj
ZVdvcmtlclByb2Nlc3MpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0byogcHJvY2VzcyA9
IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAg
ICAgIHByb2Nlc3MtPmRpc2FibGVSZW1vdGVXb3JrZXJzKHdvcmtlclR5cGUpOworfQogCi0gICAg
c2VydmljZVdvcmtlclByb2Nlc3MtPnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2Vz
cygqd2ViUHJvY2Vzcyk7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6
b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV2ViUHJvY2Vzc1Bvb2w6OmVz
dGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RG
TW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc2Vz
c2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQpAQCAt
MTQ2NSwxMiArMTQ2NSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdv
cmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJCiB9CiAjZW5kaWYKIAot
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0g
ICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlm
aWVyKGlkZW50aWZpZXIpKQotICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7Ci19Ci0KIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBjdXJyZW50UXVv
dGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhTdG9yYWdlLCAiJXAgLSBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlIiwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDY4
NDFhMzRmZTA5ZDEyYmE5M2Q0ZWY4YzgwZTQ1MzNhNTVmZDY1YzQuLjA4MzNjNzEzYWIyNGJmYmE1
Mjk1NzlkZGU5NDE1ODkyNGE3OTQ0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC04NSw2ICs4NSw3IEBAIGNs
YXNzIFdlYkNvb2tpZU1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogCitlbnVtIGNsYXNzIFJlbW90ZVdvcmtlclR5
cGUgOiB1aW50MzJfdDsKIGVudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDog
Ym9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24gOiB1aW50OF90OwpAQCAtMzI4LDE0ICszMjksMTMg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFi
bGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyKTsKLSAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3Mo
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAg
dm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCBzdGFydFNlcnZp
Y2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgZW5kU2VydmljZVdvcmtl
ckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKLSAgICB2b2lkIHNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIp
OworICAgIHZvaWQgcmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChS
ZW1vdGVXb3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCBl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCByZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nl
c3MoUmVtb3RlV29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vz
c0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNoYXJlZFdvcmtlclByb2Nl
c3NJZGVudGlmaWVyKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9j
ZXNzKFJlbW90ZVdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nl
c3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzaGFyZWRXb3JrZXJQcm9j
ZXNzSWRlbnRpZmllcik7CiAKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
MTU3NTdlZDlhMjUyYjA5ZGNkMTFiYjVlNmI5YzhhMTBkMDUzNGM5YS4uNzQ2MDYwOTAxZThmZGQ5
MmY0N2RkYmVmYTJlNGE4MGYxNmJjNDk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgpAQCAtNTQsMTQgKzU0LDEzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVn
YWN5UmVjZWl2ZXIgewogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAgIFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJv
Y2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQot
ICAgIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogICAgIFN0YXJ0U2VydmljZVdvcmtl
ckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICAgICBFbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFBy
b2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJ
ZGVudGlmaWVyKQogI2VuZGlmCiAgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJh
YmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0gICAgU2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9u
Tm9Mb25nZXJOZWVkZWQoZW51bTp1aW50MzJfdCBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGUgd29y
a2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBSZWdp
c3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoZW51bTp1aW50MzJfdCBXZWJLaXQ6OlJlbW90
ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHJlbW90ZVdvcmtlclBy
b2Nlc3NJZGVudGlmaWVyKTsKKyAgICBVbnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vz
cyhlbnVtOnVpbnQzMl90IFdlYktpdDo6UmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgcmVtb3RlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogCiAgICAgU2V0
V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lE
LCBib29sIGhhc1VwbG9hZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggZjgyNDhmNWMzNTRkNzg3YjAxM2NmYzdmMGI2NjUyOTk0YTJlNDg3My4uNDJiOGJm
ODY4M2FiZWE3NDg0ZGNiMTdlM2Q2NWM4ZmVmMGEzMjYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjk2LDcgKzM2OTYsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkKIAogICAgIC8vIFdlIHVwZGF0
ZSB0aGUgc2VydmljZSB3b3JrZXIgdGhlcmUgYXQgdGhlIG1vbWVudCB0byBiZSBzdXJlIHdlIHVz
ZSB2YWx1ZXMgdXNlZCBieSBhY3R1YWwgd2ViIHBhZ2VzLgogICAgIC8vIEZJWE1FOiBSZWZhY3Rv
ciB0aGlzIHdoZW4gd2UgaGF2ZSBhIGJldHRlciBVc2VyLUFnZW50IHN0b3J5LgotICAgIHByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7Cisg
ICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlUmVtb3RlV29ya2VyVXNlckFnZW50KG1f
dXNlckFnZW50KTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDRi
MTliMGQxZDNjMTU0Y2IyZTZmMzAyMzZiMTM0ZTA1OThjYTI0ZmYuLjg5NTkwNGUxNGU1ZmVlYTJm
MWJjNWNkYzNlZTE1NTlhMzY0N2IzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJl
ZwogICAgIGlmIChzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpIHsKICAgICAgICAgLy8gVGhp
cyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ugd29ya2VyIHBhZ2Ugc28gd2UgbmVl
ZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdzIFdlYlByb2Nlc3MgZm9yIHRoZSBz
ZXJ2aWNlIHdvcmtlci4KICAgICAgICAgaWYgKChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0g
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXItPnByb2Nlc3NJZGVudGlmaWVyKCkpKSkgewotICAgICAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyRm9yV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHktPmVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwg
cHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkp
OwogICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNz
Q2FjaGUoKSkgewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUo
KS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2Fj
aGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwogICAgICAgICAgICAgICAgIEFTU0VSVCgh
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsKQEAgLTU2NCw3
ICs1NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZwogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gcHJvY2Vzcy5w
dHIoKTsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtl
cnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9v
bC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CisgICAgICAg
ICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVSZW1vdGVXb3JrZXJzKFJlbW90
ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKIAogICAgICAgICAgICAgaWYgKHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgewogICAgICAgICAgICAgICAg
IHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6
Tm8pOwpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNl
cnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnCiAgICAgfQog
CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSB7Ci0gICAgICAgIGF1dG8gbmV3
UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nl
c3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3Ry
YWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7Cisg
ICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JS
ZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsICpwcm9jZXNzUG9v
bCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRh
U3RvcmUpOwogICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1By
b3h5LnB0cigpOwogCiAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhT
ZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9j
ZXM9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTU5MCw3ICs1OTAsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFJlZwogCiAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVy
ZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vz
c1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3Ry
YWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgaWYgKCFwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQuaXNO
dWxsKCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnNldFdvcmtlclVzZXJB
Z2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOworICAgICAgICBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LT5zZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1f
d29ya2VyVXNlckFnZW50KTsKIH0KICNlbmRpZgogCkBAIC02MjMsNyArNjIzLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKFdlYkMKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7Ci0gICAgICAgIHNoYXJlZFdvcmtl
clByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6
OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXJGb3JXb3JrZXJzKCkpOworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJs
ZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCBwcm9jZXNzUG9v
bC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CiAKICAgICAg
ICAgaWYgKHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAg
ICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygq
c2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3du
UHJvY2Vzczo6Tm8pOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVz
dGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJD
CiAgICAgfQogCiAgICAgaWYgKCFzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkpIHsKLSAgICAgICAg
YXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMo
V2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsICpwcm9jZXNzUG9vbCwg
UmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3Rv
cmUpOworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3Jl
YXRlRm9yUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsICpwcm9j
ZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNp
dGVEYXRhU3RvcmUpOwogICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9j
ZXNzUHJveHkucHRyKCk7CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RB
VElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChw
cm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3Jr
ZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNjQ4LDcgKzY0OCw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDCiAKICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkt
PmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVy
ZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vz
c1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3Ry
YWJsZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGlmICghcHJvY2Vz
c1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQotICAgICAgICBzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHktPnNldFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2Vy
QWdlbnQpOworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNldFJlbW90ZVdvcmtl
clVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQogCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKQEAgLTEx
NzAsNyArMTE3MCw3IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVX
ZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgaWYgKCFtX3dvcmtl
clByZWZlcmVuY2VzKSB7CiAgICAgICAgIG1fd29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVm
ZXJlbmNlc1N0b3JlKCk7CiAgICAgICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtl
clByb2Nlc3NlcygpKQotICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcmVm
ZXJlbmNlc1N0b3JlKCptX3dvcmtlclByZWZlcmVuY2VzKTsKKyAgICAgICAgICAgIHdvcmtlclBy
b2Nlc3MudXBkYXRlUmVtb3RlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSgqbV93b3JrZXJQcmVmZXJl
bmNlcyk7CiAgICAgfQogICAgIGlmICh1c2VyQ29udGVudENvbnRyb2xsZXIpCiAgICAgICAgIG1f
dXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsK
QEAgLTExOTYsMTMgKzExOTYsMTMgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICByZXR1
cm4gcGFnZTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50
KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUmVt
b3RlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewogICAgIGlmICht
X3dvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3dv
cmtlclVzZXJBZ2VudCA9IHVzZXJBZ2VudDsKICAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3Mg
OiB3b3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgd29ya2VyUHJvY2Vzcy5zZXRXb3JrZXJVc2Vy
QWdlbnQobV93b3JrZXJVc2VyQWdlbnQpOworICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFJlbW90
ZVdvcmtlclVzZXJBZ2VudChtX3dvcmtlclVzZXJBZ2VudCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlm
aWVyIHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQpAQCAtMTU4OCw3ICsxNTg4
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQogICAg
ICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Nlcy5hcHBlbmQocHJvY2Vzcyk7CiAgICAgfSk7
CiAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQ
cm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOworICAgICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlcik7CiAjZW5kaWYKIH0KIApAQCAtMTgzOCwxMCArMTgzOCwxMCBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAgICAgICAgIHdvcmtlclBy
b2Nlc3NlcygpLmZvckVhY2goW10oYXV0byYgd29ya2VyUHJvY2VzcykgewogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICAgICAgICAgIGlmICh3b3JrZXJQcm9jZXNzLmlzUnVubmluZ1Nl
cnZpY2VXb3JrZXJzKCkpCi0gICAgICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3Jr
ZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdv
cmtlcik7CisgICAgICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVSZW1vdGVXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlm
CiAgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkp
Ci0gICAgICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAg
ICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24o
UmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBlNzBiNmY0Mjlm
N2NiNzA2OTU0OTUwZjkwMGQzNzgxM2JkYWRkYmI3Li40MjRjZjBiNzY4MmYwOGZmM2UwNzMxY2I2
OGU2NTE2MzhiYTg1OTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKQEAgLTM4NSw3ICszODUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lkIHNlcnZpY2VX
b3JrZXJQcm9jZXNzQ3Jhc2hlZChXZWJQcm9jZXNzUHJveHkmKTsKIAotICAgIHZvaWQgdXBkYXRl
V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKKyAgICB2b2lkIHVwZGF0
ZVJlbW90ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7CiAgICAgc3Rh
dGljIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBiNzQ2YTdkN2QyMTcw
YzM5MjA1ZjMxZTUxYWVkOGJiYzVlNmRlYjVhLi5jMDFjYmVmN2QwYjU3NWMxNzQxODI1Mzk2ODlm
Nzc3YjM2N2E5MjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTE4MywxMSArMTgzLDExIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nl
c3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0CiB9CiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1SZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9j
ZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21h
aW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCitSZWY8V2ViUHJvY2Vzc1By
b3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2Vy
VHlwZSB3b3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxl
RG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRh
U3RvcmUpCiB7CiAgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5
KHByb2Nlc3NQb29sLCAmd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09y
aWdpbk1vZGU6OlNoYXJlZCwgQ2FwdGl2ZVBvcnRhbE1vZGU6OkRpc2FibGVkKSk7CiAgICAgcHJv
eHktPm1fcmVnaXN0cmFibGVEb21haW4gPSBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAg
ICBwcm94eS0+ZW5hYmxlV29ya2Vycyh3b3JrZXJUeXBlLCBwcm9jZXNzUG9vbC51c2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKKyAgICBwcm94eS0+ZW5hYmxlUmVt
b3RlV29ya2Vycyh3b3JrZXJUeXBlLCBwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyRm9yV29ya2VycygpKTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVy
biBwcm94eTsKIH0KQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlk
QmVjb21lVW5yZXNwb25zaXZlKCkKICAgICAvLyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1
bnJlc3BvbnNpdmUgYW5kIG9ubHkgcnVucyBzZXJ2aWNlL3NoYXJlZCB3b3JrZXJzLCBraWxsIGl0
IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCiAg
ICAgaWYgKGlzUnVubmluZ1dvcmtlcnMoKSAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcs
ICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6IFRlcm1pbmF0aW5nIHdvcmtlci1vbmx5IHdlYiBwcm9j
ZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25zaXZlIik7Ci0gICAgICAgIGRpc2FibGVXb3JrZXJz
KHsgV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyIH0p
OworICAgICAgICBkaXNhYmxlUmVtb3RlV29ya2Vycyh7IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIsIFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciB9KTsKICAgICAgICAgdGVy
bWluYXRlKCk7CiAgICAgfQogfQpAQCAtMTY5NSw3ICsxNjk1LDcgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJs
KQogICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB7IHVybCB9OwogICAgIGlmIChtX3JlZ2lzdHJhYmxlRG9tYWluICYmICptX3JlZ2lzdHJhYmxl
RG9tYWluICE9IHJlZ2lzdHJhYmxlRG9tYWluKSB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgICAgICBkaXNhYmxlV29ya2VycyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKKyAg
ICAgICAgZGlzYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
cik7CiAjZW5kaWYKIAogICAgICAgICAvLyBOdWxsIG91dCByZWdpc3RyYWJsZSBkb21haW4gc2lu
Y2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZlcmFsIGRvbWFpbnMuCkBA
IC0xODc2LDcgKzE4NzYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcwogfQogI2VuZGlmCiAK
LXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0UmVtb3RlV29ya2VyVXNlckFnZW50
KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCkBAIC0xODg2LDcgKzE4ODYsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYg
dXNlckFnZW50KQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3Qg
V2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRl
UmVtb3RlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBz
dG9yZSkKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uKQpAQCAtMTg5NiwyMSArMTg5NiwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6dXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiBzdAogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29y
a2VyVHlwZSB3b3JrZXJUeXBlKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlbW90ZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlKQogewotICAg
IGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFy
ZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb247CisgICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFJl
bW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24g
OiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKICAgICBBU1NFUlQod29ya2VySW5mb3JtYXRp
b24pOwogICAgIGlmICghd29ya2VySW5mb3JtYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAg
IFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVdv
cmtlclByb2Nlc3NBc3NlcnRpb246IHdvcmtlclR5cGU9JXtwdWJsaWN9cyIsIHdvcmtlclR5cGUg
PT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gInNoYXJlZCIgOiAic2VydmljZSIpOwotCi0g
ICAgLy8gRklYTUU6IENsaWVudHMgZG8gbm90IHByb3Blcmx5IGdldCBwb3B1bGF0ZWQgaW4gbV9z
aGFyZWRXb3JrZXJJbmZvcm1hdGlvbiBzbyB3ZSBjdXJyZW50bHkgdGFrZSBhbiBhc3NlcnRpb24g
bm8gbWF0dGVyIHdoYXQuCi0gICAgaWYgKHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVk
V29ya2VyKSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91
bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgd29y
a2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5
KCJXb3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAi
dXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjogd29ya2VyVHlwZT0le3B1YmxpY31z
Iiwgd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyAic2hhcmVk
IiA6ICJzZXJ2aWNlIik7CiAKICAgICBib29sIHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkg
PSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRv
JiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYmICEhcHJvY2Vz
cy5tX2ZvcmVncm91bmRUb2tlbjsKQEAgLTE5MzAsNyArMTkyMyw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5Ojp1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUgd29ya2VyVHlw
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh3b3JrZXJUeXBlID09IFdvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIgJiYgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmcpIHsKKyAgICBpZiAod29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNl
V29ya2VyICYmIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CiAgICAg
ICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlNlcnZp
Y2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciKTsKICAgICAgICAgaWYgKCFQcm9j
ZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9u
LT5hY3Rpdml0eSkpCiAgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBt
X3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3Jv
dW5kIHByb2Nlc3NpbmciX3MpOwpAQCAtMTk1MSwyOCArMTk0NCwzMCBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiBzdAogICAgIH0sIDApOwogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
Ci12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVy
UmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdl
YlByb2Nlc3NQcm94eSYgcHJveHkpCiB7Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbikKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gUmVtb3Rl
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIGlmICghd29ya2VySW5mb3JtYXRpb24pCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNl
V29ya2VyLCAicmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzczogY2xpZW50UHJvY2Vz
cz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94eS5wcm9jZXNzSWRlbnRpZmllcigpKTsK
LSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLmFkZChwcm94
eSk7Ci0gICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNl
V29ya2VyKTsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coV29ya2VyLCAicmVnaXN0
ZXJXb3JrZXJDbGllbnRQcm9jZXNzOiB3b3JrZXJUeXBlPSV7cHVibGljfXMsIGNsaWVudFByb2Nl
c3M9JXAsIGNsaWVudFBJRD0lZCIsIHdvcmtlclR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2hh
cmVkV29ya2VyID8gInNoYXJlZCIgOiAic2VydmljZSIsICZwcm94eSwgcHJveHkucHJvY2Vzc0lk
ZW50aWZpZXIoKSk7CisgICAgd29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcy5hZGQo
cHJveHkpOworICAgIHVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2VyVHlw
ZSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojp1bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdv
cmtlclR5cGUsIFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiB7Ci0gICAgaWYgKCFtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbikKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5
cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZv
cm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIGlmICghd29ya2VySW5m
b3JtYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNF
X0xPRyhTZXJ2aWNlV29ya2VyLCAidW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNz
OiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9j
ZXNzZXMucmVtb3ZlKHByb3h5KTsKLSAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdv
cmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
RyhXb3JrZXIsICJ1bnJlZ2lzdGVyV29ya2VyQ2xpZW50UHJvY2Vzczogd29ya2VyVHlwZT0le3B1
YmxpY31zLCBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCB3b3JrZXJUeXBlID09IFJl
bW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/ICJzaGFyZWQiIDogInNlcnZpY2UiLCAmcHJv
eHksIHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIHdvcmtlckluZm9ybWF0aW9uLT5j
bGllbnRQcm9jZXNzZXMucmVtb3ZlKHByb3h5KTsKKyAgICB1cGRhdGVSZW1vdGVXb3JrZXJQcm9j
ZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQorCiBib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rp
dml0eUZvclRlc3RpbmcoKSBjb25zdAogewogICAgIHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbiA/IFByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkobV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSA6IGZhbHNlOwpAQCAtMTk5MCw3ICsx
OTg1LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91
bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNz
U3VzcGVuc2lvbiwgInN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIik7CiAg
ICAgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSB0cnVlOwotICAgIHVw
ZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7Cisg
ICAgdXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihSZW1vdGVXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCkBAIC0yMDAwLDI3ICsxOTk1LDI3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAg
ICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiZW5kU2Vy
dmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIik7CiAgICAgbV9oYXNTZXJ2aWNlV29ya2Vy
QmFja2dyb3VuZFByb2Nlc3NpbmcgPSBmYWxzZTsKLSAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNz
ZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOworICAgIHVwZGF0ZVJlbW90ZVdvcmtl
clByb2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6
ZGlzYWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+IHdvcmtlclR5cGUpCit2b2lkIFdl
YlByb2Nlc3NQcm94eTo6ZGlzYWJsZVJlbW90ZVdvcmtlcnMoT3B0aW9uU2V0PFJlbW90ZVdvcmtl
clR5cGU+IHdvcmtlclR5cGUpCiB7CiAgICAgQVNTRVJUKCF3b3JrZXJUeXBlLmlzRW1wdHkoKSk7
CiAKICAgICBib29sIGRpZENoYW5nZSA9IGZhbHNlOwotICAgIGlmICh3b3JrZXJUeXBlLmNvbnRh
aW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uKSB7CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoUmVtb3RlV29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlcikgJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pIHsKICAgICAgICAgbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07CiAgICAgICAgIGRpZENoYW5nZSA9IHRydWU7
CiAgICAgfQotICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdv
cmtlcikgJiYgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikgeworICAgIGlmICh3b3JrZXJUeXBl
LmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRXb3Jr
ZXJJbmZvcm1hdGlvbikgewogICAgICAgICBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uID0geyB9
OwogICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOwogICAgIH0KICAgICBpZiAoIWRpZENoYW5nZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nl
c3MsICJkaXNhYmxlV29ya2VyczogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQs
IFNlcnZpY2VXb3JrZXJzPSVkKSIsIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hh
cmVkV29ya2VyKSwgd29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
KSk7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29y
a2VyczogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJz
PSVkKSIsIHdvcmtlclR5cGUuY29udGFpbnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2Vy
KSwgd29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7
CiAKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCkBAIC0yMDI4
LDEwICsyMDIzLDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlV29ya2VycyhPcHRp
b25TZXQ8V29ya2VyVHlwZT4gd29ya2VyVHlwZSkKICAgICAgICAgcHJvY2Vzc1Bvb2woKS5yZW1v
dmVGcm9tV29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLSAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
KSkKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNl
V29ya2VyKSkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OkNsb3NlIHsgfSwgMCk7CiAjZW5kaWYKLSAgICBpZiAod29ya2VyVHlwZS5jb250YWlu
cyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpKQorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5z
KFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsK
IAogICAgIG1heWJlU2h1dERvd24oKTsKQEAgLTIwNTMsMTAgKzIwNDgsMTAgQEAgc3RhdGljIFZl
Y3RvcjxzdGQ6OnBhaXI8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLCBVUkw+PiBjb250
ZW50UnVsZUxpc3RzRnIKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxl
V29ya2VycyhXb3JrZXJUeXBlIHdvcmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCit2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5
cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIpCiB7CiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNl
cnZpY2VXb3JrZXIsICJlbmFibGVXb3JrZXJzOiB3b3JrZXJUeXBlPSV1Iiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHdvcmtlclR5cGUpKTsKLSAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdv
cmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZv
cm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIGF1dG8mIHdvcmtlcklu
Zm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIg
PyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247
CiAgICAgQVNTRVJUKCF3b3JrZXJJbmZvcm1hdGlvbik7CiAKICAgICB3b3JrZXJJbmZvcm1hdGlv
biA9IFJlbW90ZVdvcmtlckluZm9ybWF0aW9uIHsKQEAgLTIwNzMsNyArMjA2OCw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29u
c3QgVXNlckNvbnRlbnRDb250CiAgICAgfTsKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2
ZW5lc3NUaW1lcigpOwogCi0gICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbih3b3JrZXJU
eXBlKTsKKyAgICB1cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUp
OwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihTbGVl
cERpc2FibGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgYm9v
bCBkaXNwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRl
eCA3MGU4OTA1MWNjYmJjN2U5MDQ2YmMxYzk5OGI5MGEwYjY4ZWY2NTk5Li4yZTE2ZjA5MjkyNzA5
ZDMzNTgzZjJhODE3YTNmZTE2MTEzYjMxNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NUaHJv
dHRsZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
UmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2Vy
VHlwZS5oIgogI2luY2x1ZGUgIlJlc3BvbnNpdmVuZXNzVGltZXIuaCIKICNpbmNsdWRlICJTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIuaCIKQEAgLTEzNiwxMyArMTM3LDkgQEAgcHVibGljOgogCiAgICAgZW51bSBjbGFz
cyBTaG91bGRMYXVuY2hQcm9jZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBlbnVtIGNsYXNz
IENhcHRpdmVQb3J0YWxNb2RlIDogYm9vbCB7IERpc2FibGVkLCBFbmFibGVkIH07Ci0gICAgZW51
bSBjbGFzcyBXb3JrZXJUeXBlIDogdWludDMyX3QgewotICAgICAgICBTZXJ2aWNlV29ya2VyID0g
MSA8PCAwLAotICAgICAgICBTaGFyZWRXb3JrZXIgPSAxIDw8IDEKLSAgICB9OwogCiAgICAgc3Rh
dGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVE
YXRhU3RvcmUqLCBDYXB0aXZlUG9ydGFsTW9kZSwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNyb3Nz
T3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBTaG91bGRMYXVu
Y2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKTsKLSAgICBzdGF0aWMgUmVmPFdl
YlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9v
bCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAg
ICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yUmVtb3RlV29ya2VycyhSZW1v
dGVXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIApAQCAt
MTY1LDggKzE2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzSW5Qcm9jZXNzQ2FjaGUoYm9v
bCwgV2lsbFNodXREb3duID0gV2lsbFNodXREb3duOjpObyk7CiAgICAgYm9vbCBpc0luUHJvY2Vz
c0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9pc0luUHJvY2Vzc0NhY2hlOyB9CiAKLSAgICB2b2lk
IGVuYWJsZVdvcmtlcnMoV29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllciYpOwotICAgIHZvaWQgZGlzYWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+
KTsKKyAgICB2b2lkIGVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSwgY29uc3Qg
VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOworICAgIHZvaWQgZGlzYWJsZVJlbW90
ZVdvcmtlcnMoT3B0aW9uU2V0PFJlbW90ZVdvcmtlclR5cGU+KTsKIAogICAgIFdlYnNpdGVEYXRh
U3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3Rv
cmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0ZURh
dGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CkBAIC0zNjYsMTUgKzM2MywxNSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHVwZGF0ZUF1ZGlibGVNZWRpYUFzc2VydGlvbnMoKTsKIAotICAgIHZvaWQg
c2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdXBkYXRlV29ya2Vy
UHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgdm9pZCBz
ZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVS
ZW1vdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsK
ICAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24o
V29ya2VyVHlwZSk7CisgICAgdm9pZCByZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3Mo
UmVtb3RlV29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9pZCB1bnJlZ2lzdGVy
UmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUHJv
eHkmKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oUmVtb3Rl
V29ya2VyVHlwZSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtl
clBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
cmVtb3RlV29ya2VyUGFnZVByb3h5SUQgPT0gcGFnZVByb3h5SUQ7IH0KLSAgICB2b2lkIHJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7Ci0gICAgdm9p
ZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7
CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygp
IGNvbnN0OwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRl
c3RpbmcoKSBjb25zdDsKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9j
ZXNzaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBlYTY1ODdjNTc3NjIyZTJhZDUxZjNjNTEzM2VhZTlmZjY2M2E1NDc0Li4zN2Zi
MjNhYTM1ZjAxNGI5YWZhMjkzZjFlY2RhMmRmZTA3MTgxZGViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5Myw2ICs4OTMsNyBAQAog
CQk0NjcxRkYxRjIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzFGRjFEMjMy
MTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyB9OwogCQk0NjdF
NDNFODIyNDNGRjdEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0U0M0U3MjI0
M0ZGNkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovOyB9Owog
CQk0NjgwOUE3QzIzRDkyMjVFMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODA5QTdBMjNEOTIyNTMwMEMy
OTdEMCAvKiBXZWJDb29raWVDYWNoZS5oICovOyB9OworCQk0NjkxQ0I5QjI3QjJERDJEMDBCMjlB
QUYgLyogUmVtb3RlV29ya2VyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY5MUNCOUEyN0IyREQxODAwQjI5QUFGIC8qIFJlbW90ZVdvcmtlclR5
cGUuaCAqLzsgfTsKIAkJNDZBMkI2MDkxRTU2NzZBNjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9j
ZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9j
ZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovOyB9OwogCQk0NkIwNTI0NzIyNjY4RDg1MDAyNjVC
OTcgLyogV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkIwNTI0NDIyNjY4
RDIzMDAyNjVCOTcgLyogV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9s
bGVyLmggKi87IH07CiAJCTQ2QkVCNkQ3MjJGQjlCRDcwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2RDUy
MkZCOUJENjAwMjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggKi87IH07CkBAIC00MjcxLDYgKzQyNzIs
NyBAQAogCQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVy
Q29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJD
b25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MEYyNzU2
RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVXZWJMb2NrUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
OUI5MTAyNzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NjkxQ0I5QTI3QjJERDE4MDBCMjlBQUYgLyogUmVtb3RlV29ya2VyVHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVXb3JrZXJUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJP
YmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENv
bm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OURF
ODAyMjczRUNDNUQwMDkzMDI3NiAvKiBQcm9jZXNzTGF1bmNoZXJDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nlc3NMYXVuY2hlckNvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyog
QmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1l
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MjYxLDYgKzcyNjMsNyBAQAog
CQkJCTlCMTIyOUQwMjNGRjJBNUUwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRl
bnRpZmllci5oICovLAogCQkJCTVDODBCM0REMjM2OTBGMTAwMDg2RTZERSAvKiBSZW1vdGVXb3Jr
ZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwICovLAogCQkJCTVDODBCM0RCMjM2OTBEOEQwMDg2RTZE
RSAvKiBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuaCAqLywKKwkJCQk0NjkxQ0I5QTI3
QjJERDE4MDBCMjlBQUYgLyogUmVtb3RlV29ya2VyVHlwZS5oICovLAogCQkJCTcyMDM0NDlCMjZB
NkM0NzYwMDBBNUY1NCAvKiBSZW5kZXJpbmdVcGRhdGVJRC5oICovLAogCQkJCTVDQjdBRkU2MjND
NjgxQjAwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi8sCiAJCQkJNUMwMDk5M0IyNDE3
RkI3RTAwRDUzQzI1IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggKi8sCkBA
IC0xMzM2MSw2ICsxMzM2NCw3IEBACiAJCQkJQTU1QkE4MjUxQkEyNUNGQjAwN0NEMzNEIC8qIFJl
bW90ZVdlYkluc3BlY3RvclVJUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZD
NUI3Q0UyN0FBREREMzAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0NkM1QjdDRjI3QUFEREQ2MDAwQzVCNDcgLyogUmVtb3RlV29y
a2VyTGliV2ViUlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTFDQjlCMjdCMkRE
MkQwMEIyOUFBRiAvKiBSZW1vdGVXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0I3
QUZFNzIzQzY4MjA3MDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNkJFOTY5Q0QxRTU0RTA1NDAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3ND
bGFzc2lmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2QkU5NjlDQjFFNTRENENGMDA4Qjc0ODMg
LyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8s
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451277</attachid>
            <date>2022-02-08 11:00:42 -0800</date>
            <delta_ts>2022-02-08 16:51:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236271-20220208110041.patch</filename>
            <type>text/plain</type>
            <size>70920</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBmZjFkZWI0MGEyZjk0ZjZl
ODNhZjQzNWEzNGM4NzE3YTFkNzc3NmEuLjBjMDcyM2JhM2E5YWY0NWM2ZmMwNTMzM2MzZTExOTky
NWUyZjY0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIwMjItMDItMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBUYWtlIGFkZXF1YXRlIHBy
b2Nlc3MgYXNzZXJ0aW9uIGZvciB0aGUgU2hhcmVkV29ya2VyIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjI3MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgdHJhY2sgb2YgY2xpZW50
IHByb2Nlc3NlcyB0aGF0IHJlbHkgb24gYSBwYXJ0aWN1bGFyIFNoYXJlZFdvcmtlciBwcm9jZXNz
IGFuZCB0YWtlIHRoZSBhZGVxdWF0ZQorICAgICAgICBwcm9jZXNzIGFzc2VydGlvbiB0byBrZWVw
IHRoZSBwcm9jZXNzIHJ1bm5pbmcgb24gaU9TIHdoZW4gbmVjZXNzYXJ5LiBUaGlzIGFsbG93cyB1
cyB0byBnZXQgcmlkIG9mCisgICAgICAgIHRoZSBoYWNrIEkgbGFuZGVkIHByZXZpb3VzbHkgdG8g
YWx3YXlzIHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiBvbiBiZWhhbGYgb2YgdGhlIHNoYXJlZCB3
b3JrZXIKKyAgICAgICAgcHJvY2VzcyAoZXZlbiBpZiBhbGwgaXRzIGNsaWVudHMgYXJlIHN1c3Bl
bmRlZCkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2
aWNlV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpXZWJTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXI6OmRpZENyZWF0ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjphZGRTaGFyZWRXb3JrZXJPYmplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnJlbW92ZVNoYXJlZFdvcmtlck9iamVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6Zm9yRWFjaFNoYXJlZFdvcmtlck9i
amVjdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6Y29udGV4dENv
bm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpzaGFy
ZWRXb3JrZXJPYmplY3RzQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OnNoYXJlZFdvcmtlck9iamVjdHMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hh
cmVkV29ya2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
OjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3du
U2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpy
ZW1vdmVDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6YWRkU2hhcmVkV29ya2VyT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
cmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAuCisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJlbW90ZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVSZW1vdGVXb3JrZXJVc2VyQWdlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlv
bnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFn
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JSZW1vdGVXb3JrZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRSZW1vdGVXb3JrZXJVc2Vy
QWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlbW90ZVdv
cmtlclByZWZlcmVuY2VzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVu
dFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZl
cmVuY2VzU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wMi0wOCAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVu
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEdQVVAgV2ViR0wgUkVMRUFTRV9MT0dzIGVycm9ybmVv
dXNseSBmb3IgdW5oYW5kbGVkIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmlu
ZGV4IGM3YjE3ZmQ3MDc4NTRiMTI4NDk4ZDExMThmNGU2ZTdkNWIzZDg1ZmQuLjgzMDdhZDI3NDhm
OWM2MjlhMjBjMDY5N2EzYzQzZjRlNWQwM2MzZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiUGluZ0xvYWQuaCIKICNpbmNsdWRlICJQ
cmVjb25uZWN0VGFzay5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclBy
b3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgpAQCAtMTI0OCw3ICsxMjQ5LDcgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5l
Y3Rpb24oKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQogewogICAgIENPTk5F
Q1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAic2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdlYlBy
b2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVt
b3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IFJlbW90ZVdvcmtlclR5
cGU6OlNoYXJlZFdvcmtlciwgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIAogICAgIG1f
c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQpAQCAtMTI5OSw3ICsx
MzAwLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTV0NvbnRl
eHRDb25uZWN0aW9uKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZp
Y2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQogewogICAg
IENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInNlcnZpY2VXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQ6IFdlYlByb2Nlc3Mgbm8gbG9uZ2Vy
IHVzZWZ1bCBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMiKTsKLSAgICBtX25ldHdvcmtQcm9j
ZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7
IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6UmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IFJlbW90ZVdv
cmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAK
ICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBiMzkwY2FmYTYwNDFmM2U4MDFmZDJkM2E4YzI0
M2I1NTQ3NTEyMjk0Li4zMjZjOWI3N2E1ZDM2MmE0YTc4YmZlNTEwM2E1NmJmODUxYmE5YjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5j
bHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKQEAgLTM3OCw3ICszNzksNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcAogCiAgICAg
aWYgKGNvbnRleHRDb25uZWN0aW9uKSB7CiAgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBzdGF0
aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rp
b24pOwotICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzIHsgaWRlbnRpZmllcigpLCBjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVu
dGlmaWVyKCkgfSwgMCk7CisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlZ2lzdGVy
UmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyB7IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIsIGlkZW50aWZpZXIoKSwgY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDAp
OwogICAgIH0KIH0KIApAQCAtNDAzLDcgKzQwNCw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTY3JpcHRFeGVjdXRpb25D
CiAgICAgaWYgKGlzRGVsZXRlZE9yaWdpbikgewogICAgICAgICBpZiAoYXV0byogY29udGV4dENv
bm5lY3Rpb24gPSBzZXJ2ZXIoKS5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWlu
KFJlZ2lzdHJhYmxlRG9tYWluIHsgY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbiB9KSkgewogICAg
ICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiY+KCpjb250ZXh0Q29ubmVjdGlvbik7Ci0gICAgICAgICAgICBtX25ldHdv
cmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpVbnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MgeyBp
ZGVudGlmaWVyKCksIGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKyAg
ICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlVucmVnaXN0ZXJSZW1vdGVXb3JrZXJD
bGllbnRQcm9jZXNzIHsgUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgaWRlbnRpZmll
cigpLCBjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAgICAgICAgIH0K
ICAgICB9CiB9CkBAIC01NDQsNyArNTQ1LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246
OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KICAg
ICBjb25uZWN0aW9uLnNldFRocm90dGxlU3RhdGUoY29tcHV0ZVRocm90dGxlU3RhdGUoY29ubmVj
dGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSk7CiAKICAgICBpZiAoaGFzTWF0Y2hpbmdDbGllbnQo
Y29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSkKLSAgICAgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyB7IGlkZW50aWZpZXIo
KSwgY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MgeyBS
ZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBpZGVudGlmaWVyKCksIGNvbm5lY3Rpb24u
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnRlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxs
YmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCmluZGV4IDgwMDkxMzk1MjgwYzhkNzYwZWYx
YTFkMTIxYzIxNDc1ZjQ5NWViYjguLjQ2MTdkYTI1OWI4OWJkNTIxODZlZjM4NGZkMjBiNTFlM2Fi
YmNiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29y
a2VyL1dlYlNoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgogCisjaW5jbHVk
ZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAg
LTM5LDggKzQxLDkgQEAgc3RhdGljIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciwgV2ViU2hhcmVkV29ya2VyKj4mIGFsbFdvcmtlcnMoKQogICAgIHJldHVybiBhbGxXb3Jr
ZXJzOwogfQogCi1XZWJTaGFyZWRXb3JrZXI6OldlYlNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29y
a2VyT3B0aW9ucykKLSAgICA6IG1faWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpKQorV2ViU2hhcmVkV29ya2VyOjpXZWJTaGFyZWRXb3JrZXIoV2Vi
U2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktl
eSYga2V5LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQorICAg
IDogbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV9pZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAgLCBtX2tleShrZXkpCiAgICAgLCBtX3dv
cmtlck9wdGlvbnMod29ya2VyT3B0aW9ucykKIHsKQEAgLTUyLDYgKzU1LDcgQEAgV2ViU2hhcmVk
V29ya2VyOjp+V2ViU2hhcmVkV29ya2VyKCkKIHsKICAgICBBU1NFUlQoYWxsV29ya2VycygpLmdl
dChtX2lkZW50aWZpZXIpID09IHRoaXMpOwogICAgIGFsbFdvcmtlcnMoKS5yZW1vdmUobV9pZGVu
dGlmaWVyKTsKKyAgICBBU1NFUlQoIW1fc2hhcmVkV29ya2VyT2JqZWN0cy5pc0VtcHR5KCkpOwog
fQogCiBXZWJTaGFyZWRXb3JrZXIqIFdlYlNoYXJlZFdvcmtlcjo6ZnJvbUlkZW50aWZpZXIoV2Vi
Q29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQpAQCAtNjQsNCArNjgsMzUg
QEAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gV2ViU2hhcmVkV29ya2VyOjpyZWdpc3RyYWJs
ZURvbWFpbigpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsg
dXJsKCkgfTsKIH0KIAordm9pZCBXZWJTaGFyZWRXb3JrZXI6OmRpZENyZWF0ZUNvbnRleHRDb25u
ZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRD
b25uZWN0aW9uKQoreworICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciA6IG1fc2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpCisgICAgICAgIGNvbnRleHRDb25uZWN0
aW9uLmFkZFNoYXJlZFdvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXI6OmFkZFNoYXJlZFdvcmtlck9iamVjdChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHBvcnQpCit7CisgICAg
bV9zaGFyZWRXb3JrZXJPYmplY3RzLmFkZChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBw
b3J0KTsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uKCkpCisg
ICAgICAgIGNvbm5lY3Rpb24tPmFkZFNoYXJlZFdvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXI6OnJlbW92ZVNoYXJlZFdv
cmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgbV9zaGFyZWRXb3JrZXJPYmplY3RzLnJlbW92
ZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBpZiAoYXV0byogY29ubmVjdGlv
biA9IGNvbnRleHRDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb24tPnJlbW92ZVNoYXJl
ZFdvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKK30KKwordm9pZCBX
ZWJTaGFyZWRXb3JrZXI6OmZvckVhY2hTaGFyZWRXb3JrZXJPYmplY3QoY29uc3QgRnVuY3Rpb248
dm9pZChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Jik+JiBhcHBseSkgY29uc3QKK3sKKyAgICBmb3IgKGF1
dG8mIFtzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0XSA6IG1fc2hhcmVkV29ya2Vy
T2JqZWN0cykKKyAgICAgICAgYXBwbHkoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgcG9y
dCk7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFdlYlNo
YXJlZFdvcmtlcjo6Y29udGV4dENvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX3Nl
cnZlci5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9t
YWluKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmgK
aW5kZXggMzRiN2E0YTg0M2NlZjlhMTdlYmMwYjNhNWZhNGNjZDRkMDYxNmIzNC4uOTNiYjU2Njgy
ZGExOTJjZjM0NzdhZTA1MTk4MjQ0NmM0MDAzY2MzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmgK
QEAgLTM5LDEwICszOSwxMyBAQCBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKK2NsYXNzIFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKIGNsYXNzIFdlYlNoYXJlZFdvcmtl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXI+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXZWJTaGFyZWRXb3JrZXIoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5JiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpOwor
ICAgIFdlYlNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImLCBjb25zdCBXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJLZXkmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJik7CiAgICAg
fldlYlNoYXJlZFdvcmtlcigpOwogCiAgICAgc3RhdGljIFdlYlNoYXJlZFdvcmtlciogZnJvbUlk
ZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CkBAIC01Myw3ICs1Niwx
NCBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBj
b25zdCB7IHJldHVybiBtX2tleS5vcmlnaW47IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0
IHsgcmV0dXJuIG1fa2V5LnVybDsgfQogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJl
Z2lzdHJhYmxlRG9tYWluKCkgY29uc3Q7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0PiYgc2hh
cmVkV29ya2VyT2JqZWN0cygpIHsgcmV0dXJuIG1fc2hhcmVkV29ya2VyT2JqZWN0czsgfQorICAg
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0
aW9uKCkgY29uc3Q7CisKKyAgICB2b2lkIGFkZFNoYXJlZFdvcmtlck9iamVjdChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0Jik7CisgICAgdm9pZCByZW1vdmVTaGFyZWRXb3JrZXJPYmplY3QoV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdW5zaWduZWQgc2hhcmVkV29ya2Vy
T2JqZWN0c0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJPYmplY3RzLnNpemUo
KTsgfQorICAgIHZvaWQgZm9yRWFjaFNoYXJlZFdvcmtlck9iamVjdChjb25zdCBGdW5jdGlvbjx2
b2lkKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmKT4mKSBjb25zdDsKKworICAgIHZvaWQgZGlkQ3JlYXRl
Q29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biYpOwogCiAgICAgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUnVubmluZzsg
fQogICAgIHZvaWQgbWFya0FzUnVubmluZygpIHsgbV9pc1J1bm5pbmcgPSB0cnVlOyB9CkBAIC02
OCw2ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgV2ViU2hhcmVkV29ya2VyKGNvbnN0IFdlYlNoYXJl
ZFdvcmtlciYpID0gZGVsZXRlOwogICAgIFdlYlNoYXJlZFdvcmtlciYgb3BlcmF0b3I9KGNvbnN0
IFdlYlNoYXJlZFdvcmtlciYpID0gZGVsZXRlOwogCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVy
JiBtX3NlcnZlcjsKICAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKICAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkgbV9rZXk7CiAgICAgV2ViQ29yZTo6
V29ya2VyT3B0aW9ucyBtX3dvcmtlck9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmNwcAppbmRleCBmYzY4MzAyMTRkNDBjNDdmMjJlOTU1OWNjODZhZDcyNWFiNTEwNWIz
Li5iOGU0NzFjYjQ1YjUwNjA0YWZiYzg3YWYyY2RmOTgzOTVhZTkzZTJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgUEFMOjpTZXNzaW9u
SUQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzZXNzaW9uSUQoKQogdm9pZCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiYg
c2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBv
cnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykKIHsKICAg
ICBhdXRvJiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZW5zdXJlKHNoYXJlZFdvcmtl
cktleSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyPihz
aGFyZWRXb3JrZXJLZXksIHdvcmtlck9wdGlvbnMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxXZWJTaGFyZWRXb3JrZXI+KCp0aGlzLCBzaGFyZWRXb3JrZXJLZXksIHdvcmtlck9wdGlvbnMp
OwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIs
ICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXI9JXtwcml2YXRlfXMsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIg
UFJJdTY0LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKQEAgLTY2LDE2
ICs2NiwxNiBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtl
cihXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmJiBzaGFyZQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuYWRkKHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIHBvcnQpOworICAgIHNoYXJlZFdvcmtlci0+YWRkU2hhcmVk
V29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBvcnQpOwogCi0gICAg
aWYgKHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLnNpemUoKSA+IDEpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpy
ZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHNoYXJlZCB3b3JrZXIgd2l0aCB0aGlzIFVSTCBhbHJlYWR5
IGV4aXN0cyAobm93IHNoYXJlZCBieSAldSBzaGFyZWQgd29ya2VyIG9iamVjdHMpIiwgc2hhcmVk
V29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuc2l6ZSgpKTsKKyAgICBpZiAoc2hhcmVkV29y
a2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzQ291bnQoKSA+IDEpIHsKKyAgICAgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29y
a2VyOiBBIHNoYXJlZCB3b3JrZXIgd2l0aCB0aGlzIFVSTCBhbHJlYWR5IGV4aXN0cyAobm93IHNo
YXJlZCBieSAldSBzaGFyZWQgd29ya2VyIG9iamVjdHMpIiwgc2hhcmVkV29ya2VyLT5zaGFyZWRX
b3JrZXJPYmplY3RzQ291bnQoKSk7CiAgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmRpZEZpbmlz
aEZldGNoaW5nKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0g
bV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRl
bnRpZmllcigpKSkKICAgICAgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3Jr
ZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsg
fSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKCkpIHsK
LSAgICAgICAgICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9jb250ZXh0Q29ubmVjdGlv
bnMuZ2V0KHNoYXJlZFdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgICAgICBh
dXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHNoYXJlZFdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24o
KTsKICAgICAgICAgICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlvbik7CiAgICAgICAgICAgICBp
ZiAoY29udGV4dENvbm5lY3Rpb24pCiAgICAgICAgICAgICAgICAgY29udGV4dENvbm5lY3Rpb24t
PnBvc3RDb25uZWN0RXZlbnQoKnNoYXJlZFdvcmtlciwgcG9ydCk7CkBAIC05OCwxMCArOTgsMTAg
QEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29y
a2VyU2NyaXB0KFdlYlNoYXJlZFdvcmtlciYKIHsKICAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3Jr
ZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2Vy
U2NyaXB0IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHNoYXJlZFdvcmtlcj0l
cCwgc3VjY2Vzcz0lZCIsIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgJnNo
YXJlZFdvcmtlciwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOwogCi0gICAgZm9yIChhdXRv
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiBzaGFyZWRXb3JrZXIuc2hhcmVkV29ya2Vy
T2JqZWN0cygpLmtleXMoKSkgeworICAgIHNoYXJlZFdvcmtlci5mb3JFYWNoU2hhcmVkV29ya2Vy
T2JqZWN0KFsmXShhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGF1dG8mKSB7CiAg
ICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKICAgICAgICAg
ICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24o
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZmV0Y2hSZXN1bHQuZXJyb3IpOwotICAgIH0K
KyAgICB9KTsKIAogICAgIGlmICghZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpIHsKICAgICAg
ICAgbV9zaGFyZWRXb3JrZXJzLnJlbW92ZShzaGFyZWRXb3JrZXIua2V5KCkpOwpAQCAtMTEwLDE0
ICsxMTAsMTEgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5n
U2hhcmVkV29ya2VyU2NyaXB0KFdlYlNoYXJlZFdvcmtlciYKIAogICAgIHNoYXJlZFdvcmtlci5z
ZXRGZXRjaFJlc3VsdChXVEZNb3ZlKGZldGNoUmVzdWx0KSk7CiAKLSAgICBhdXRvIHJlZ2lzdHJh
YmxlRG9tYWluID0gc2hhcmVkV29ya2VyLnJlZ2lzdHJhYmxlRG9tYWluKCk7Ci0gICAgYXV0byog
Y29udGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWlu
KHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKSB7Ci0gICAg
ICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAo
YXV0byogY29udGV4dENvbm5lY3Rpb24gPSBzaGFyZWRXb3JrZXIuY29udGV4dENvbm5lY3Rpb24o
KSkgeworICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+bGF1bmNoU2hhcmVkV29ya2VyKHNoYXJl
ZFdvcmtlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBjb250ZXh0Q29ubmVjdGlv
bi0+bGF1bmNoU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcik7CisgICAgY3JlYXRlQ29udGV4dENv
bm5lY3Rpb24oc2hhcmVkV29ya2VyLnJlZ2lzdHJhYmxlRG9tYWluKCkpOwogfQogCiBib29sIFdl
YlNoYXJlZFdvcmtlclNlcnZlcjo6bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFp
bikgY29uc3QKQEAgLTE0Niw3ICsxNDMsNiBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEbwogCiAg
ICAgICAgIEFTU0VSVChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMo
cmVnaXN0cmFibGVEb21haW4pKTsKICAgICAgICAgbV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25E
b21haW5zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0KICAgICAgICAgaWYgKG1fY29udGV4
dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAgIHJl
dHVybjsKIApAQCAtMTc2LDcgKzE3Miw3IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpy
ZW1vdmVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRlCiAKICAg
ICBtX2NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOwogCi0gICAg
aWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJs
ZURvbWFpbikpCisgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uLmhhc1NoYXJlZFdvcmtlck9iamVj
dHMoKSkKICAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4p
OwogfQogCkBAIC0xODUsNyArMTgxLDExIEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpj
b250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250CiAgICAg
UkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0
Q29ubmVjdGlvbkNyZWF0ZWQoJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNv
bnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigp
LnRvVUludDY0KCkpOwogICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gY29udGV4dENvbm5l
Y3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKICAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6
IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5k
aWRGaW5pc2hGZXRjaGluZygpICYmIHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hhcmVkV29y
a2VyLT51cmwoKSkpCisgICAgICAgIGlmICghcmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyhzaGFy
ZWRXb3JrZXItPnVybCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNoYXJl
ZFdvcmtlci0+ZGlkQ3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29udGV4dENvbm5lY3Rpb24pOwor
ICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5kaWRGaW5pc2hGZXRjaGluZygpKQogICAgICAgICAg
ICAgY29udGV4dENvbm5lY3Rpb24ubGF1bmNoU2hhcmVkV29ya2VyKCpzaGFyZWRXb3JrZXIpOwog
ICAgIH0KIH0KQEAgLTE5Nyw4ICsxOTcsOCBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoY29uc3QgV2ViQ29yZTo6U2hhcmVkVwogICAg
IGlmICghc2hhcmVkV29ya2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBzaGFyZWRXb3JrZXIt
PnNoYXJlZFdvcmtlck9iamVjdHMoKS5yZW1vdmUoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cik7Ci0gICAgaWYgKCFzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5pc0VtcHR5
KCkpCisgICAgc2hhcmVkV29ya2VyLT5yZW1vdmVTaGFyZWRXb3JrZXJPYmplY3Qoc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgaWYgKHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2Vy
T2JqZWN0c0NvdW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNodXREb3duU2hhcmVkV29y
a2VyKHNoYXJlZFdvcmtlcktleSk7CkBAIC0yMTEsMTMgKzIxMSwxMyBAQCB2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5JgogICAgIGlmICghc2hhcmVkV29ya2VyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFi
bGVEb21haW4oc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBhdXRvKiBj
b250ZXh0Q29ubmVjdGlvbiA9IHNoYXJlZFdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKTsKICAg
ICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBjb250ZXh0
Q29ubmVjdGlvbi0+dGVybWluYXRlU2hhcmVkV29ya2VyKCpzaGFyZWRXb3JrZXIpOwogCi0gICAg
aWYgKCFuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oc2hhcmVkV29y
a2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKSkKKyAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uLT5o
YXNTaGFyZWRXb3JrZXJPYmplY3RzKCkpCiAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5jb25u
ZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOwogfQogCkBAIC0yMzcsMTAgKzIzNywxMCBAQCB2b2lk
IFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciBwcm9jZXNzSQogCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI+PiBzaGFy
ZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5OwogICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyIDog
bV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygp
LmtleXMoKSkgeworICAgICAgICBzaGFyZWRXb3JrZXItPmZvckVhY2hTaGFyZWRXb3JrZXJPYmpl
Y3QoWyZdKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgYXV0byYpIHsKICAgICAg
ICAgICAgIGlmIChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVy
KCkgPT0gcHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAgc2hhcmVkV29ya2VyT2Jq
ZWN0c0dvaW5nQXdheS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc2hhcmVkV29ya2VyLT5rZXkoKSwg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikpOwotICAgICAgICB9CisgICAgICAgIH0pOwog
ICAgIH0KICAgICBmb3IgKGF1dG8mIFtzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXJdIDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkKICAgICAgICAgc2hh
cmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyS2V5LCBzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyKTsKQEAgLTI1OCwxMCArMjU4LDEwIEBAIHZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29y
a2VySWRlCiAgICAgaWYgKCFzaGFyZWRXb3JrZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZv
ciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyLT5zaGFy
ZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgc2hhcmVkV29ya2VyLT5mb3JFYWNoU2hh
cmVkV29ya2VyT2JqZWN0KFsmXShhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGF1
dG8mKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9u
cy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkK
ICAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVj
dChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKLSAgICB9CisgICAgfSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBmZjg2YmM3ZDZhMmQ0MzFmMzgz
NGRmODVlMWQyNjIzNDU2ZjVhOTg3Li44ZDhhNmMxODZjYzY2ZWQ5NTllMGViNmEyMjQ0MWY2ZTll
ZjEyYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMjgsNiArMjgsOSBAQAogCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1By
b3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSAi
V2ViU2hhcmVkV29ya2VyLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIu
aCIKQEAgLTkwLDggKzkzLDkgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2UKICAgICBDT05URVhU
X0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coImxhdW5jaFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2Vy
SWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCkudG9VSW50NjQo
KSk7CiAgICAgc2hhcmVkV29ya2VyLm1hcmtBc1J1bm5pbmcoKTsKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkxhdW5jaFNoYXJlZFdv
cmtlciB7IHNoYXJlZFdvcmtlci5vcmlnaW4oKSwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKSwg
c2hhcmVkV29ya2VyLnVybCgpLCBzaGFyZWRXb3JrZXIud29ya2VyT3B0aW9ucygpLCBzaGFyZWRX
b3JrZXIuZmV0Y2hSZXN1bHQoKSB9KTsKLSAgICBmb3IgKGF1dG8mIHBvcnQgOiBzaGFyZWRXb3Jr
ZXIuc2hhcmVkV29ya2VyT2JqZWN0cygpLnZhbHVlcygpKQorICAgIHNoYXJlZFdvcmtlci5mb3JF
YWNoU2hhcmVkV29ya2VyT2JqZWN0KFsmXShhdXRvLCBhdXRvJiBwb3J0KSB7CiAgICAgICAgIHBv
c3RDb25uZWN0RXZlbnQoc2hhcmVkV29ya2VyLCBwb3J0KTsKKyAgICB9KTsKIH0KIAogdm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0Q29ubmVjdEV2ZW50
KGNvbnN0IFdlYlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBjb25zdCBXZWJDb3JlOjpUcmFu
c2ZlcnJlZE1lc3NhZ2VQb3J0JiBwb3J0KQpAQCAtMTA2LDYgKzExMCwyOSBAQCB2b2lkIFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZVNoYXJlZFdvcmtl
cihjb25zdCBXZWJTaAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlU2hhcmVkV29ya2VyIHsgc2hhcmVkV29ya2VyLmlk
ZW50aWZpZXIoKSB9KTsKIH0KIAordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjphZGRTaGFyZWRXb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIGF1dG8m
IHNoYXJlZFdvcmtlck9iamVjdHMgPSBtX3NoYXJlZFdvcmtlck9iamVjdHMuZW5zdXJlKHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSwgW10geyByZXR1cm4g
SGFzaFNldDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPiB7IH07IH0pLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICBzaGFyZWRXb3JrZXJPYmplY3RzLmFkZChzaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyKTsKKworICAgIGlmICh3ZWJQcm9jZXNzSWRlbnRpZmllcigpICE9IHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSAmJiBzaGFyZWRX
b3JrZXJPYmplY3RzLnNpemUoKSA9PSAxKQorICAgICAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1By
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWdpc3RlclJlbW90
ZVdvcmtlckNsaWVudFByb2Nlc3MgeyBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSB9LCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpyZW1vdmVTaGFyZWRXb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQorewor
ICAgIGF1dG8gaXQgPSBtX3NoYXJlZFdvcmtlck9iamVjdHMuZmluZChzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIGlmIChpdCA9PSBtX3NoYXJl
ZFdvcmtlck9iamVjdHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpdC0+dmFsdWUucmVt
b3ZlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIGlmICghaXQtPnZhbHVlLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zaGFyZWRXb3JrZXJPYmplY3RzLnJl
bW92ZShpdCk7CisgICAgaWYgKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgIT0gc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKQorICAgICAgICBtX2Nvbm5lY3Rp
b24ubmV0d29ya1Byb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpV
bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyB7IFJlbW90ZVdvcmtlclR5cGU6OlNo
YXJlZFdvcmtlciwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmll
cigpLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworfQorCiAjdW5kZWYgQ09OVEVYVF9D
T05ORUNUSU9OX1JFTEVBU0VfTE9HCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCmluZGV4IGQ2YWVhMzE5YWEzZTgwZTY3MGRlZGJjMGM4YWJkMGYyZjZiNWNhMjQuLjg0OTA3
Nzg0ZWQ5YzM0ZjhmNjhkMWZlNDA2YzI5YmU1YjZiMTQ1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkV29ya2VySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmZXJyZWRNZXNzYWdlUG9y
dC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MSw5ICs2MiwxMyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoY29uc3QgV2ViU2hhcmVkV29ya2VyJik7CiAK
ICAgICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisgICAgYm9vbCBoYXNTaGFy
ZWRXb3JrZXJPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gIW1fc2hhcmVkV29ya2VyT2JqZWN0cy5p
c0VtcHR5KCk7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKKyAgICB2b2lkIGFkZFNoYXJlZFdvcmtlck9iamVj
dChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92
ZVNoYXJlZFdvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
KTsKKwogcHJpdmF0ZToKICAgICAvLyBJUEMgbWVzc2FnZXMuCiAgICAgdm9pZCBwb3N0RXhjZXB0
aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CkBAIC03NSw2ICs4MCw3IEBAIHByaXZhdGU6CiAgICAg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvbjsKICAgICBXZWFrUHRy
PFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zZXJ2ZXI7CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyLCBIYXNoU2V0PFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXI+PiBtX3NoYXJlZFdvcmtlck9iamVjdHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZVdvcmtlclR5cGUuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZVdvcmtlclR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjgxNmQ5
NDFmODJmZWM0N2VmOGY1NDY0ZGZkNjg5ZWI2MGI3Y2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlV29ya2VyVHlwZS5oCkBAIC0wLDAgKzEsNDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xh
c3MgUmVtb3RlV29ya2VyVHlwZSA6IHVpbnQzMl90IHsKKyAgICBTZXJ2aWNlV29ya2VyID0gMSA8
PCAwLAorICAgIFNoYXJlZFdvcmtlciA9IDEgPDwgMQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJL
aXQ6OlJlbW90ZVdvcmtlclR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAor
ICAgICAgICBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGUsCisgICAgICAgIFdlYktpdDo6UmVtb3Rl
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwKKyAgICAgICAgV2ViS2l0OjpSZW1vdGVXb3JrZXJU
eXBlOjpTaGFyZWRXb3JrZXIKKyAgICA+OworfTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDMzMDIw
YmQ1YzNjZDk0MTc3NTYxNTc5YWMyMGZjMzhmOWM2OTI3OGUuLmVkY2NmZjIwOGVhY2VkNDE0Zjcy
N2JhZmE0MzYzNmE0YWUwMmJjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTI5LDcgKzUyOSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1p
bmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAgICAgaWYgKFJlZlB0ciBwcm9jZXNzID0g
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihwcm9jZXNzSWRlbnRpZmllcikp
IHsKLSAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVJlbW90ZVdv
cmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAgICAgICAgIHByb2Nlc3Mt
PnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb246OkV4Y2VlZGVkQ1BV
TGltaXQpOwogICAgIH0KIH0KQEAgLTE0MjAsMzYgKzE0MjAsMzYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MKICAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBz
ZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFp
biYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFBy
b2Nlc3MoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2hh
cmVkV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiB7Ci0gICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFi
bGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92
ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc2Vzc2lv
bklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19CisgICAgYXV0byogd2ViUHJvY2Vz
cyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50
aWZpZXIpOworICAgIGF1dG8qIHNoYXJlZFdvcmtlclByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6
OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNoYXJlZFdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKKyAg
ICBpZiAoIXdlYlByb2Nlc3MgfHwgIXNoYXJlZFdvcmtlclByb2Nlc3MpCisgICAgICAgIHJldHVy
bjsKIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVy
KQotewotICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9y
SWRlbnRpZmllcihpZGVudGlmaWVyKSkKLSAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMo
V2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICBzaGFyZWRX
b3JrZXJQcm9jZXNzLT5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3Mod29ya2VyVHlw
ZSwgKndlYlByb2Nlc3MpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzSWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dW5yZWdpc3Rl
clJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgc2hhcmVkV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAgICAg
YXV0byogd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIo
d2ViUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzID0g
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VyUHJvY2Vz
c0lkZW50aWZpZXIpOwotICAgIGlmICghd2ViUHJvY2VzcyB8fCAhc2VydmljZVdvcmtlclByb2Nl
c3MpCisgICAgYXV0byogc2hhcmVkV29ya2VyUHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJv
Y2Vzc0ZvcklkZW50aWZpZXIoc2hhcmVkV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIGlm
ICghd2ViUHJvY2VzcyB8fCAhc2hhcmVkV29ya2VyUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgc2VydmljZVdvcmtlclByb2Nlc3MtPnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFBy
b2Nlc3MoKndlYlByb2Nlc3MpOworICAgIHNoYXJlZFdvcmtlclByb2Nlc3MtPnVucmVnaXN0ZXJS
ZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKHdvcmtlclR5cGUsICp3ZWJQcm9jZXNzKTsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFBy
b2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25O
b0xvbmdlck5lZWRlZChSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byogd2ViUHJvY2VzcyA9IFdlYlBy
b2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpOwot
ICAgIGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNz
Rm9ySWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgaWYgKCF3ZWJQcm9jZXNz
IHx8ICFzZXJ2aWNlV29ya2VyUHJvY2VzcykKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRv
KiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlm
aWVyKSkKKyAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVJlbW90ZVdvcmtlcnMod29ya2VyVHlwZSk7
Cit9CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRQcm9jZXNzKCp3ZWJQcm9jZXNzKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCit2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURv
bWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vy
dmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXZWJQcm9j
ZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50
aWZpZXIpCkBAIC0xNDY1LDEyICsxNDY1LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpl
bmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0kKIH0K
ICNlbmRpZgogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRp
ZmllcikKLXsKLSAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vz
c0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVXb3Jr
ZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKLX0KLQogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90
IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWly
ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcXVvdGEp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFN0b3JhZ2UsICIlcCAt
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UiLCB0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKaW5kZXggNjg0MWEzNGZlMDlkMTJiYTkzZDRlZjhjODBlNDUzM2E1NWZkNjVjNC4uMDgzM2M3
MTNhYjI0YmZiYTUyOTU3OWRkZTk0MTU4OTI0YTc5NDQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTg1LDYg
Kzg1LDcgQEAgY2xhc3MgV2ViQ29va2llTWFuYWdlclByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5
OwogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiAKK2VudW0gY2xhc3MgUmVt
b3RlV29ya2VyVHlwZSA6IHVpbnQzMl90OwogZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0
YXRpc3RpY3MgOiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVzIDogdWludDhf
dDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbiA6IHVpbnQ4X3Q7CkBAIC0zMjgs
MTQgKzMyOSwxMyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAg
IHZvaWQgc2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmll
ciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlm
aWVyKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lk
IHN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCBlbmRT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICNlbmRpZgotICAgIHZvaWQgc2hh
cmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9u
Z2VyTmVlZGVkKFJlbW90ZVdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsK
ICAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVtb3RlV29ya2Vy
Q2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2hhcmVk
V29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHZvaWQgdW5yZWdpc3RlclJlbW90ZVdvcmtl
ckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgdGVybWluYXRlV2ViUHJvY2Vz
cyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgppbmRleCAxNTc1N2VkOWEyNTJiMDlkY2QxMWJiNWU2YjljOGExMGQwNTM0YzlhLi43NDYw
NjA5MDFlOGZkZDkyZjQ3ZGRiZWZhMmU0YTgwZjE2YmM0OTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCkBAIC01NCwxNCArNTQsMTMgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgRXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5j
Ci0gICAgU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICBSZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lk
ZW50aWZpZXIpCi0gICAgVW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgU3RhcnRT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogICAgIEVuZFNlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29y
a2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAjZW5kaWYKICAgICBFc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5
bmMKLSAgICBTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgUmVtb3RlV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChlbnVtOnVpbnQzMl90IFdlYktpdDo6UmVtb3RlV29y
a2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVy
KQorICAgIFJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhlbnVtOnVpbnQzMl90IFdl
YktpdDo6UmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcmVt
b3RlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIFVucmVnaXN0ZXJSZW1vdGVXb3JrZXJD
bGllbnRQcm9jZXNzKGVudW06dWludDMyX3QgV2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlIHdvcmtl
clR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciByZW1vdGVXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7
CiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBmODI0OGY1YzM1NGQ3ODdiMDEzY2ZjN2YwYjY2NTI5OTRhMmU0
ODczLi40MmI4YmY4NjgzYWJlYTc0ODRkY2IxN2UzZDY1YzhmZWYwYTMyNjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2OTYsNyArMzY5Niw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQogCiAgICAg
Ly8gV2UgdXBkYXRlIHRoZSBzZXJ2aWNlIHdvcmtlciB0aGVyZSBhdCB0aGUgbW9tZW50IHRvIGJl
IHN1cmUgd2UgdXNlIHZhbHVlcyB1c2VkIGJ5IGFjdHVhbCB3ZWIgcGFnZXMuCiAgICAgLy8gRklY
TUU6IFJlZmFjdG9yIHRoaXMgd2hlbiB3ZSBoYXZlIGEgYmV0dGVyIFVzZXItQWdlbnQgc3Rvcnku
Ci0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlV29ya2VyVXNlckFnZW50KG1fdXNl
ckFnZW50KTsKKyAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVSZW1vdGVXb3JrZXJV
c2VyQWdlbnQobV91c2VyQWdlbnQpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKaW5kZXggNGIxOWIwZDFkM2MxNTRjYjJlNmYzMDIzNmIxMzRlMDU5OGNhMjRmZi4uODk1OTA0
ZTE0ZTVmZWVhMmYxYmM1Y2RjM2VlMTU1OWEzNjQ3YjNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoUmVnCiAgICAgaWYgKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcikgewogICAg
ICAgICAvLyBUaGlzIGlzIGEgc2VydmljZSB3b3JrZXIgZm9yIGEgc2VydmljZSB3b3JrZXIgcGFn
ZSBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1c2UgdXNlIHRoZSBwYWdlJ3MgV2ViUHJvY2Vz
cyBmb3IgdGhlIHNlcnZpY2Ugd29ya2VyLgogICAgICAgICBpZiAoKHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllci0+cHJvY2Vzc0lkZW50aWZpZXIoKSkpKSB7Ci0gICAgICAgICAg
ICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94
eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworICAgICAgICAgICAgc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eS0+ZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZv
cldvcmtlcnMoKSk7CiAgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+
aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlBy
b2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdl
YlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkp
OwpAQCAtNTY0LDcgKzU2NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkg
PSBwcm9jZXNzLnB0cigpOwotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+
ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIs
IHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2Vycygp
KTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVJlbW90ZVdv
cmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogCiAgICAgICAgICAgICBp
ZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAgICAg
ICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3Mo
KnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERv
d25Qcm9jZXNzOjpObyk7CkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhS
ZWcKICAgICB9CiAKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpIHsKLSAgICAg
ICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtl
cnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCAqcHJvY2Vzc1Bv
b2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0
YVN0b3JlKTsKKyAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZUZvclJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwg
KnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAq
d2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBu
ZXdQcm9jZXNzUHJveHkucHRyKCk7CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9M
T0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHBy
b2Nlc3MgKHByb2Nlcz0lcCwgUElEPSVkKSIsIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIHNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNTkwLDcg
KzU5MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnCiAKICAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV93
b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzLnZhbHVl
KCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3Jl
KCksIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3dvcmtlclVz
ZXJBZ2VudC5pc051bGwoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0
V29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CisgICAgICAg
IHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChwcm9j
ZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOwogfQogI2VuZGlmCiAKQEAgLTYyMyw3ICs2MjMs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29u
bmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQwogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5ID0gcHJvY2Vzcy5wdHIoKTsKLSAgICAgICAg
c2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eS0+ZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIs
IHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2Vycygp
KTsKIAogICAgICAgICBpZiAoc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0Nh
Y2hlKCkpIHsKICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1v
dmVQcm9jZXNzKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hv
dWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFdlYkMKICAgICB9CiAKICAgICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkg
ewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRl
Rm9yV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnBy
b2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vi
c2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vz
c1Byb3h5OjpjcmVhdGVGb3JSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdv
cmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFp
biB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKIAogICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxF
QVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2Vy
IHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHks
IHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC02NDgs
NyArNjQ4LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkMKIAogICAgIHNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV93
b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzLnZhbHVl
KCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3Jl
KCksIHJlZ2lzdHJhYmxlRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAg
aWYgKCFwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCi0gICAgICAgIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eS0+c2V0V29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5t
X3dvcmtlclVzZXJBZ2VudCk7CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+c2V0
UmVtb3RlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CiB9
CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5n
ZWQoKQpAQCAtMTE3MCw3ICsxMTcwLDcgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICBp
ZiAoIW1fd29ya2VyUHJlZmVyZW5jZXMpIHsKICAgICAgICAgbV93b3JrZXJQcmVmZXJlbmNlcyA9
IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKICAgICAgICAgZm9yIChhdXRvJiB3b3JrZXJQcm9j
ZXNzIDogd29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0
ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoKm1fd29ya2VyUHJlZmVyZW5jZXMpOworICAgICAgICAg
ICAgd29ya2VyUHJvY2Vzcy51cGRhdGVSZW1vdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dv
cmtlclByZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikK
ICAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzID0gdXNlckNvbnRlbnRD
b250cm9sbGVyOwpAQCAtMTE5NiwxMyArMTE5NiwxMyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJ
OgogICAgIHJldHVybiBwYWdlOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVXb3Jr
ZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit2b2lkIFdlYlByb2Nlc3NQb29s
Ojp1cGRhdGVSZW1vdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7
CiAgICAgaWYgKG1fd29ya2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fd29ya2VyVXNlckFnZW50ID0gdXNlckFnZW50OwogICAgIGZvciAoYXV0byYgd29y
a2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQotICAgICAgICB3b3JrZXJQcm9jZXNzLnNl
dFdvcmtlclVzZXJBZ2VudChtX3dvcmtlclVzZXJBZ2VudCk7CisgICAgICAgIHdvcmtlclByb2Nl
c3Muc2V0UmVtb3RlV29ya2VyVXNlckFnZW50KG1fd29ya2VyVXNlckFnZW50KTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCkBAIC0x
NTg4LDcgKzE1ODgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTZXJ2aWNlV29y
a2VycygpCiAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNz
KTsKICAgICB9KTsKICAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2Vydmlj
ZVdvcmtlclByb2Nlc3NlcykKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MtPmRpc2FibGVX
b3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CisgICAg
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5kaXNhYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0xODM4LDEwICsxODM4LDEw
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKICAgICAg
ICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbXShhdXRvJiB3b3JrZXJQcm9jZXNzKSB7CiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nlc3Mu
aXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKLSAgICAgICAgICAgICAgICB3b3JrZXJQcm9jZXNz
LnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyKTsKKyAgICAgICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVJl
bW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
cik7CiAjZW5kaWYKICAgICAgICAgICAgIGlmICh3b3JrZXJQcm9jZXNzLmlzUnVubmluZ1NoYXJl
ZFdvcmtlcnMoKSkKLSAgICAgICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIp
OworICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vz
c0Fzc2VydGlvbihSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4
IGU3MGI2ZjQyOWY3Y2I3MDY5NTQ5NTBmOTAwZDM3ODEzYmRhZGRiYjcuLjQyNGNmMGI3NjgyZjA4
ZmYzZTA3MzFjYjY4ZTY1MTYzOGJhODU5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaApAQCAtMzg1LDcgKzM4NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZv
aWQgc2VydmljZVdvcmtlclByb2Nlc3NDcmFzaGVkKFdlYlByb2Nlc3NQcm94eSYpOwogCi0gICAg
dm9pZCB1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOworICAg
IHZvaWQgdXBkYXRlUmVtb3RlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KTsKICAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICNpZiBQTEFURk9STShDT0NP
QSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGI3
NDZhN2Q3ZDIxNzBjMzkyMDVmMzFlNTFhZWQ4YmJjNWU2ZGViNWEuLmMwMWNiZWY3ZDBiNTc1YzE3
NDE4MjUzOTY4OWY3NzdiMzY3YTkyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTgzLDExICsxODMsMTEgQEAgUmVmPFdlYlByb2Nlc3NQcm94
eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBX
ZWJzaXQKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVJlZjxXZWJQcm9jZXNzUHJv
eHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlIHdvcmtlclR5
cGUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdp
c3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKK1JlZjxX
ZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yUmVtb3RlV29ya2VycyhS
ZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwg
UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYg
d2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQ
cm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6
Tm8sIENyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQp
KTsKICAgICBwcm94eS0+bV9yZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pOwotICAgIHByb3h5LT5lbmFibGVXb3JrZXJzKHdvcmtlclR5cGUsIHByb2Nlc3NQb29s
LnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworICAgIHByb3h5
LT5lbmFibGVSZW1vdGVXb3JrZXJzKHdvcmtlclR5cGUsIHByb2Nlc3NQb29sLnVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwogICAgIHByb3h5LT5jb25uZWN0KCk7
CiAgICAgcmV0dXJuIHByb3h5OwogfQpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogICAgIC8vIElmIHRoZSB3ZWIgcHJvY2Vz
cyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNlcnZpY2Uvc2hhcmVkIHdvcmtl
cnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xpZW50cyB0
byBkbyBpdC4KICAgICBpZiAoaXNSdW5uaW5nV29ya2VycygpICYmIG1fcGFnZU1hcC5pc0VtcHR5
KCkpIHsKICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1h
bmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVybWluYXRpbmcgd29ya2VyLW9u
bHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsKLSAgICAgICAgZGlz
YWJsZVdvcmtlcnMoeyBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBXb3JrZXJUeXBlOjpTaGFy
ZWRXb3JrZXIgfSk7CisgICAgICAgIGRpc2FibGVSZW1vdGVXb3JrZXJzKHsgUmVtb3RlV29ya2Vy
VHlwZTo6U2VydmljZVdvcmtlciwgUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyIH0pOwog
ICAgICAgICB0ZXJtaW5hdGUoKTsKICAgICB9CiB9CkBAIC0xNjk1LDcgKzE2OTUsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29u
c3QgVVJMJiB1cmwpCiAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHsgdXJsIH07CiAgICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1f
cmVnaXN0cmFibGVEb21haW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi0gICAgICAgIGRpc2FibGVXb3JrZXJzKFdvcmtlclR5cGU6OlNlcnZpY2VX
b3JrZXIpOworICAgICAgICBkaXNhYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogCiAgICAgICAgIC8vIE51bGwgb3V0IHJlZ2lzdHJhYmxl
IGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3MgaGFzIG5vdyBiZWVuIHVzZWQgZm9yIHNldmVyYWwg
ZG9tYWlucy4KQEAgLTE4NzYsNyArMTg3Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzCiB9
CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFdvcmtlclVzZXJBZ2VudChjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRSZW1vdGVXb3Jr
ZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKQEAgLTE4ODYs
NyArMTg4Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQoY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0s
IDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJlZmVyZW5jZXNT
dG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1By
b3h5Ojp1cGRhdGVSZW1vdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmIHN0b3JlKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAo
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCkBAIC0xODk2LDIxICsxODk2LDE0IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtl
ckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3Jl
IH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJvY2Vzc0Fz
c2VydGlvbihXb3JrZXJUeXBlIHdvcmtlclR5cGUpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBk
YXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5
cGUpCiB7Ci0gICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtl
clR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtl
clR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJ
bmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOwogICAgIEFTU0VSVCh3b3Jr
ZXJJbmZvcm1hdGlvbik7CiAgICAgaWYgKCF3b3JrZXJJbmZvcm1hdGlvbikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9u
LCAidXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjogd29ya2VyVHlwZT0le3B1YmxpY31zIiwg
d29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyAic2hhcmVkIiA6ICJzZXJ2
aWNlIik7Ci0KLSAgICAvLyBGSVhNRTogQ2xpZW50cyBkbyBub3QgcHJvcGVybHkgZ2V0IHBvcHVs
YXRlZCBpbiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHNvIHdlIGN1cnJlbnRseSB0YWtlIGFu
IGFzc2VydGlvbiBubyBtYXR0ZXIgd2hhdC4KLSAgICBpZiAod29ya2VyVHlwZSA9PSBXb3JrZXJU
eXBlOjpTaGFyZWRXb3JrZXIpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1Zh
bGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0gICAg
ICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5mb3JlZ3Jv
dW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICJ1cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiB3b3JrZXJUeXBl
PSV7cHVibGljfXMiLCB3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtl
ciA/ICJzaGFyZWQiIDogInNlcnZpY2UiKTsKIAogICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91
bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nl
cywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9IHRoaXMg
JiYgISFwcm9jZXNzLm1fZm9yZWdyb3VuZFRva2VuOwpAQCAtMTkzMCw3ICsxOTIzLDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlw
ZSB3b3JrZXJUeXBlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHdvcmtlclR5
cGUgPT0gV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciAmJiBtX2hhc1NlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZykgeworICAgIGlmICh3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIgJiYgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcpIHsKICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyIpOwogICAgICAg
ICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2Vy
SW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKICAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5h
Y3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIg
Zm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyJfcyk7CkBAIC0xOTUxLDI4ICsxOTQ0LDMwIEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0CiAgICAgfSwgMCk7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCit2b2lkIFdlYlByb2Nlc3NQcm94
eTo6cmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUgd29y
a2VyVHlwZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIHsKLSAgICBpZiAoIW1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uKQorICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlw
ZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9y
bWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgaWYgKCF3b3JrZXJJbmZv
cm1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0Vf
TE9HKFNlcnZpY2VXb3JrZXIsICJyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzOiBj
bGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnByb2Nlc3NJZGVu
dGlmaWVyKCkpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNz
ZXMuYWRkKHByb3h5KTsKLSAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIpOworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhXb3Jr
ZXIsICJyZWdpc3RlcldvcmtlckNsaWVudFByb2Nlc3M6IHdvcmtlclR5cGU9JXtwdWJsaWN9cywg
Y2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgd29ya2VyVHlwZSA9PSBSZW1vdGVXb3Jr
ZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyAic2hhcmVkIiA6ICJzZXJ2aWNlIiwgJnByb3h5LCBwcm94
eS5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICB3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJv
Y2Vzc2VzLmFkZChwcm94eSk7CisgICAgdXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlv
bih3b3JrZXJUeXBlKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQordm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnVucmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdv
cmtlclR5cGUgd29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIHsKLSAgICBpZiAo
IW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9u
ID0gd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJl
ZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgaWYg
KCF3b3JrZXJJbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJ1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJv
eHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24t
PmNsaWVudFByb2Nlc3Nlcy5yZW1vdmUocHJveHkpOwotICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CisgICAgV0VCUFJPQ0VTU1BST1hZ
X1JFTEVBU0VfTE9HKFdvcmtlciwgInVucmVnaXN0ZXJXb3JrZXJDbGllbnRQcm9jZXNzOiB3b3Jr
ZXJUeXBlPSV7cHVibGljfXMsIGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsIHdvcmtl
clR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gInNoYXJlZCIgOiAic2Vy
dmljZSIsICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgd29ya2VySW5m
b3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcy5yZW1vdmUocHJveHkpOworICAgIHVwZGF0ZVJlbW90
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7CiB9CiAKKyNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCisKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29ya2VyRm9y
ZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2Vydmlj
ZVdvcmtlckluZm9ybWF0aW9uID8gUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRB
Y3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpIDogZmFsc2U7CkBA
IC0xOTkwLDcgKzE5ODUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29y
a2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAic3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IHRy
dWU7Ci0gICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNl
V29ya2VyKTsKKyAgICB1cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFJlbW90ZVdv
cmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5k
U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKQEAgLTIwMDAsMjcgKzE5OTUsMjcg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNp
b24sICJlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1Nl
cnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IGZhbHNlOwotICAgIHVwZGF0ZVdvcmtl
clByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CisgICAgdXBkYXRl
UmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLXZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpkaXNhYmxlV29ya2VycyhPcHRpb25TZXQ8V29ya2VyVHlwZT4gd29ya2VyVHlw
ZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlUmVtb3RlV29ya2VycyhPcHRpb25TZXQ8
UmVtb3RlV29ya2VyVHlwZT4gd29ya2VyVHlwZSkKIHsKICAgICBBU1NFUlQoIXdvcmtlclR5cGUu
aXNFbXB0eSgpKTsKIAogICAgIGJvb2wgZGlkQ2hhbmdlID0gZmFsc2U7Ci0gICAgaWYgKHdvcmtl
clR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYgbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24pIHsKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikgewog
ICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKICAgICAgICAgZGlkQ2hh
bmdlID0gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlw
ZTo6U2hhcmVkV29ya2VyKSAmJiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKSB7CisgICAgaWYg
KHdvcmtlclR5cGUuY29udGFpbnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSAmJiBt
X3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKSB7CiAgICAgICAgIG1fc2hhcmVkV29ya2VySW5mb3Jt
YXRpb24gPSB7IH07CiAgICAgICAgIGRpZENoYW5nZSA9IHRydWU7CiAgICAgfQogICAgIGlmICgh
ZGlkQ2hhbmdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFT
RV9MT0coUHJvY2VzcywgImRpc2FibGVXb3JrZXJzOiBEaXNhYmxpbmcgd29ya2VycyAoU2hhcmVk
V29ya2Vycz0lZCwgU2VydmljZVdvcmtlcnM9JWQpIiwgd29ya2VyVHlwZS5jb250YWlucyhXb3Jr
ZXJUeXBlOjpTaGFyZWRXb3JrZXIpLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpKTsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzcywg
ImRpc2FibGVXb3JrZXJzOiBEaXNhYmxpbmcgd29ya2VycyAoU2hhcmVkV29ya2Vycz0lZCwgU2Vy
dmljZVdvcmtlcnM9JWQpIiwgd29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpT
aGFyZWRXb3JrZXIpLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIpKTsKIAogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7
CiAKQEAgLTIwMjgsMTAgKzIwMjMsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVX
b3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlKQogICAgICAgICBwcm9jZXNz
UG9vbCgpLnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoKnRoaXMpOwogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpKQorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIpKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKICNlbmRpZgotICAgIGlmICh3b3JrZXJU
eXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikpCisgICAgaWYgKHdvcmtlclR5
cGUuY29udGFpbnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSkKICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9z
ZSB7IH0sIDApOwogCiAgICAgbWF5YmVTaHV0RG93bigpOwpAQCAtMjA1MywxMCArMjA0OCwxMCBA
QCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEs
IFVSTD4+IGNvbnRlbnRSdWxlTGlzdHNGcgogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1By
b3h5OjplbmFibGVXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikK
K3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5
cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKIHsKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVM
RUFTRV9MT0coU2VydmljZVdvcmtlciwgImVuYWJsZVdvcmtlcnM6IHdvcmtlclR5cGU9JXUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4od29ya2VyVHlwZSkpOwotICAgIGF1dG8mIHdvcmtlckluZm9y
bWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJl
ZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgYXV0
byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNo
YXJlZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbjsKICAgICBBU1NFUlQoIXdvcmtlckluZm9ybWF0aW9uKTsKIAogICAgIHdvcmtl
ckluZm9ybWF0aW9uID0gUmVtb3RlV29ya2VySW5mb3JtYXRpb24gewpAQCAtMjA3Myw3ICsyMDY4
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMoV29ya2VyVHlwZSB3b3Jr
ZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnQKICAgICB9OwogICAgIHVwZGF0ZUJhY2tncm91
bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKLSAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKHdvcmtlclR5cGUpOworICAgIHVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24o
d29ya2VyVHlwZSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTbGVlcERp
c2FibGVyKFNsZWVwRGlzYWJsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
cmVhc29uLCBib29sIGRpc3BsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCmluZGV4IDcwZTg5MDUxY2NiYmM3ZTkwNDZiYzFjOTk4YjkwYTBiNjhlZjY1OTkuLjJl
MTZmMDkyOTI3MDlkMzM1ODNmMmE4MTdhM2ZlMTYxMTNiMzE1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
UHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJS
ZW1vdGVXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSAiUmVzcG9uc2l2ZW5lc3NUaW1lci5oIgogI2lu
Y2x1ZGUgIlNwZWVjaFJlY29nbml0aW9uU2VydmVyLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllci5oIgpAQCAtMTM2LDEzICsxMzcsOSBAQCBwdWJsaWM6CiAKICAg
ICBlbnVtIGNsYXNzIFNob3VsZExhdW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAg
IGVudW0gY2xhc3MgQ2FwdGl2ZVBvcnRhbE1vZGUgOiBib29sIHsgRGlzYWJsZWQsIEVuYWJsZWQg
fTsKLSAgICBlbnVtIGNsYXNzIFdvcmtlclR5cGUgOiB1aW50MzJfdCB7Ci0gICAgICAgIFNlcnZp
Y2VXb3JrZXIgPSAxIDw8IDAsCi0gICAgICAgIFNoYXJlZFdvcmtlciA9IDEgPDwgMQotICAgIH07
CiAKICAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29s
JiwgV2Vic2l0ZURhdGFTdG9yZSosIENhcHRpdmVQb3J0YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2Vi
Q29yZTo6Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQs
IFNob3VsZExhdW5jaFByb2Nlc3MgPSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpOwotICAgIHN0
YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUsIFdl
YlByb2Nlc3NQb29sJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFT
dG9yZSYpOworICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JSZW1vdGVX
b3JrZXJzKFJlbW90ZVdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAgICAgfldlYlByb2Nlc3NQcm94
eSgpOwogCkBAIC0xNjUsOCArMTYyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNJblByb2Nl
c3NDYWNoZShib29sLCBXaWxsU2h1dERvd24gPSBXaWxsU2h1dERvd246Ok5vKTsKICAgICBib29s
IGlzSW5Qcm9jZXNzQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2lzSW5Qcm9jZXNzQ2FjaGU7IH0K
IAotICAgIHZvaWQgZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyJik7Ci0gICAgdm9pZCBkaXNhYmxlV29ya2VycyhPcHRpb25TZXQ8
V29ya2VyVHlwZT4pOworICAgIHZvaWQgZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJU
eXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7CisgICAgdm9pZCBk
aXNhYmxlUmVtb3RlV29ya2VycyhPcHRpb25TZXQ8UmVtb3RlV29ya2VyVHlwZT4pOwogCiAgICAg
V2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJUKG1fd2Vi
c2l0ZURhdGFTdG9yZSk7IHJldHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAgdm9pZCBz
ZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKQEAgLTM2NiwxNSArMzYzLDE1
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9ucygpOwog
Ci0gICAgdm9pZCBzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCB1
cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsK
KyAgICB2b2lkIHNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIHVwZGF0ZVJlbW90ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYpOwogICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgdXBkYXRlV29ya2VyUHJvY2Vz
c0Fzc2VydGlvbihXb3JrZXJUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xp
ZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUHJveHkmKTsKKyAgICB2b2lk
IHVucmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUsIFdl
YlByb2Nlc3NQcm94eSYpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbihSZW1vdGVXb3JrZXJUeXBlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
dm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgYm9vbCBoYXNT
ZXJ2aWNlV29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQp
IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYmIG1fc2VydmljZVdvcmtlcklu
Zm9ybWF0aW9uLT5yZW1vdGVXb3JrZXJQYWdlUHJveHlJRCA9PSBwYWdlUHJveHlJRDsgfQotICAg
IHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkm
KTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9j
ZXNzUHJveHkmKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlG
b3JUZXN0aW5nKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFj
dGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZFByb2Nlc3NpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGVhNjU4N2M1Nzc2MjJlMmFkNTFmM2M1MTMzZWFlOWZmNjYz
YTU0NzQuLjM3ZmIyM2FhMzVmMDE0YjlhZmEyOTNmMWVjZGEyZGZlMDcxODFkZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODkzLDYg
Kzg5Myw3IEBACiAJCTQ2NzFGRjFGMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRP
YnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY3MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggKi87
IH07CiAJCTQ2N0U0M0U4MjI0M0ZGN0QwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY3RTQzRTcyMjQzRkY2RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJz
LmggKi87IH07CiAJCTQ2ODA5QTdDMjNEOTIyNUUwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MDlBN0Ey
M0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi87IH07CisJCTQ2OTFDQjlCMjdC
MkREMkQwMEIyOUFBRiAvKiBSZW1vdGVXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjkxQ0I5QTI3QjJERDE4MDBCMjlBQUYgLyogUmVt
b3RlV29ya2VyVHlwZS5oICovOyB9OwogCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyogQmFj
a2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFj
a2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJCTQ2QjA1MjQ3MjI2
NjhEODUwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
QjA1MjQ0MjI2NjhEMjMwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFj
Y2Vzc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNDZCRUI2RDcyMkZCOUJENzAwMjY5ODY3IC8qIFN0
b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkJFQjZENTIyRkI5QkQ2MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCAqLzsgfTsKQEAgLTQy
NzEsNiArNDI3Miw3IEBACiAJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdv
cmtlclNlcnZlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
Njg5QjkwRjI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0Njg5QjkxMDI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2OTFDQjlBMjdCMkREMTgwMEIyOUFBRiAvKiBSZW1v
dGVXb3JrZXJUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdvcmtlclR5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNo
YXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29y
a2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDY5REU4MDIyNzNFQ0M1RDAwOTMwMjc2IC8qIFByb2Nlc3NMYXVuY2hlckNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc0xhdW5jaGVy
Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIw
MEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25z
aXZlbmVzc1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyNjEsNiAr
NzI2Myw3IEBACiAJCQkJOUIxMjI5RDAyM0ZGMkE1RTAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVz
dGluYXRpb25JZGVudGlmaWVyLmggKi8sCiAJCQkJNUM4MEIzREQyMzY5MEYxMDAwODZFNkRFIC8q
IFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5jcHAgKi8sCiAJCQkJNUM4MEIzREIyMzY5
MEQ4RDAwODZFNkRFIC8qIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5oICovLAorCQkJ
CTQ2OTFDQjlBMjdCMkREMTgwMEIyOUFBRiAvKiBSZW1vdGVXb3JrZXJUeXBlLmggKi8sCiAJCQkJ
NzIwMzQ0OUIyNkE2QzQ3NjAwMEE1RjU0IC8qIFJlbmRlcmluZ1VwZGF0ZUlELmggKi8sCiAJCQkJ
NUNCN0FGRTYyM0M2ODFCMDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCAqLywKIAkJCQk1
QzAwOTkzQjI0MTdGQjdFMDBENTNDMjUgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRl
cnMuaCAqLywKQEAgLTEzMzYxLDYgKzEzMzY0LDcgQEAKIAkJCQlBNTVCQTgyNTFCQTI1Q0ZCMDA3
Q0QzM0QgLyogUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NkM1QjdDRTI3QUFEREQzMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2Fk
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QzVCN0NGMjdBQURERDYwMDBDNUI0NyAv
KiBSZW1vdGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5
MUNCOUIyN0IyREQyRDAwQjI5QUFGIC8qIFJlbW90ZVdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDQjdBRkU3MjNDNjgyMDcwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQk2QkU5NjlDRDFFNTRFMDU0MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0NsYXNzaWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZCRTk2OUNCMUU1NEQ0
Q0YwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmggaW4g
SGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451325</attachid>
            <date>2022-02-08 16:51:40 -0800</date>
            <delta_ts>2022-02-09 07:12:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236271-20220208165139.patch</filename>
            <type>text/plain</type>
            <size>78210</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE0NDFiZjc1NDBmYTllYzAw
ZGIwZDJkNDI2MDdkMTk4YzdjZDVhZWYuLjZmNGVjYzdlY2RjZjc5OWVlZTg1ZmFjMWVmMmRiM2Zm
M2ZlNjAwOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIwMjItMDItMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBUYWtlIGFkZXF1YXRlIHBy
b2Nlc3MgYXNzZXJ0aW9uIGZvciB0aGUgU2hhcmVkV29ya2VyIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjI3MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgdHJhY2sgb2YgY2xpZW50
IHByb2Nlc3NlcyB0aGF0IHJlbHkgb24gYSBwYXJ0aWN1bGFyIFNoYXJlZFdvcmtlciBwcm9jZXNz
IGFuZCB0YWtlIHRoZSBhZGVxdWF0ZQorICAgICAgICBwcm9jZXNzIGFzc2VydGlvbiB0byBrZWVw
IHRoZSBwcm9jZXNzIHJ1bm5pbmcgb24gaU9TIHdoZW4gbmVjZXNzYXJ5LiBUaGlzIGFsbG93cyB1
cyB0byBnZXQgcmlkIG9mCisgICAgICAgIHRoZSBoYWNrIEkgbGFuZGVkIHByZXZpb3VzbHkgdG8g
YWx3YXlzIHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiBvbiBiZWhhbGYgb2YgdGhlIHNoYXJlZCB3
b3JrZXIKKyAgICAgICAgcHJvY2VzcyAoZXZlbiBpZiBhbGwgaXRzIGNsaWVudHMgYXJlIHN1c3Bl
bmRlZCkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2
aWNlV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpXZWJTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXI6OmRpZENyZWF0ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjphZGRTaGFyZWRXb3JrZXJPYmplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnJlbW92ZVNoYXJlZFdvcmtlck9iamVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6Zm9yRWFjaFNoYXJlZFdvcmtlck9i
amVjdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6Y29udGV4dENv
bm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpzaGFy
ZWRXb3JrZXJPYmplY3RzQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OnNoYXJlZFdvcmtlck9iamVjdHMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hh
cmVkV29ya2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
OjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3du
U2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpy
ZW1vdmVDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6YWRkU2hhcmVkV29ya2VyT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
cmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAuCisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJlbW90ZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVSZW1vdGVXb3JrZXJVc2VyQWdlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlv
bnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFn
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JSZW1vdGVXb3JrZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRSZW1vdGVXb3JrZXJVc2Vy
QWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlbW90ZVdv
cmtlclByZWZlcmVuY2VzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVu
dFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZl
cmVuY2VzU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wMi0wOCAgSmlnZW4gWmhvdSAgPGppZ2VuLnpob3VA
c29ueS5jb20+CiAKICAgICAgICAgW1BsYXlzdGF0aW9uXSBGaXggYnVpbGQgYnJlYWsgYWZ0ZXIg
cjI4OTI0NyBpZiBFTkFCTEVfU0VSVklDRV9XT1JLRVIgaXMgb2ZmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IGM3YjE3ZmQ3MDc4NTRiMTI4NDk4ZDExMThmNGU2ZTdkNWIzZDg1ZmQu
LjgzMDdhZDI3NDhmOWM2MjlhMjBjMDY5N2EzYzQzZjRlNWQwM2MzZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiUGluZ0xvYWQuaCIK
ICNpbmNsdWRlICJQcmVjb25uZWN0VGFzay5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVt
b3RlTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgpAQCAtMTI0OCw3ICsxMjQ5
LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNoYXJl
ZFdvcmtlckNvbm5lY3Rpb24oKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
c2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQog
ewogICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAic2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7Ci0gICAgbV9uZXR3
b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5l
ZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAgbV9uZXR3b3JrUHJvY2Vz
cy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6UmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IFJl
bW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAw
KTsKIAogICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQpA
QCAtMTI5OSw3ICsxMzAwLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVk
ZWQoKQogewogICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInNlcnZp
Y2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQ6IFdlYlByb2Nl
c3Mgbm8gbG9uZ2VyIHVzZWZ1bCBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMiKTsKLSAgICBt
X25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xv
bmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6UmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZCB7IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHdlYlByb2Nlc3NJZGVudGlmaWVy
KCkgfSwgMCk7CiAKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBiMzkwY2FmYTYwNDFmM2U4
MDFmZDJkM2E4YzI0M2I1NTQ3NTEyMjk0Li4zMjZjOWI3N2E1ZDM2MmE0YTc4YmZlNTEwM2E1NmJm
ODUxYmE5YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNz
aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKQEAgLTM3OCw3ICszNzksNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29u
bmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNlY3VyaXR5T3JpZ2luRGF0YSYm
IHRvcAogCiAgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKSB7CiAgICAgICAgIGF1dG8mIGNvbm5l
Y3Rpb24gPSBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29u
dGV4dENvbm5lY3Rpb24pOwotICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzIHsgaWRlbnRpZmllcigpLCBjb25uZWN0aW9uLndl
YlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OlJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyB7IFJlbW90ZVdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIsIGlkZW50aWZpZXIoKSwgY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRp
ZmllcigpIH0sIDApOwogICAgIH0KIH0KIApAQCAtNDAzLDcgKzQwNCw3IEBAIHZvaWQgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTY3Jp
cHRFeGVjdXRpb25DCiAgICAgaWYgKGlzRGVsZXRlZE9yaWdpbikgewogICAgICAgICBpZiAoYXV0
byogY29udGV4dENvbm5lY3Rpb24gPSBzZXJ2ZXIoKS5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluIHsgY2xpZW50T3JpZ2luLmNsaWVudE9yaWdp
biB9KSkgewogICAgICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiY+KCpjb250ZXh0Q29ubmVjdGlvbik7Ci0gICAgICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpVbnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFByb2Nlc3MgeyBpZGVudGlmaWVyKCksIGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIo
KSB9LCAwKTsKKyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlVucmVnaXN0ZXJS
ZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzIHsgUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
ciwgaWRlbnRpZmllcigpLCBjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7
CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC01NDQsNyArNTQ1LDcgQEAgdm9pZCBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24KICAgICBjb25uZWN0aW9uLnNldFRocm90dGxlU3RhdGUoY29tcHV0ZVRocm90dGxl
U3RhdGUoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSk7CiAKICAgICBpZiAoaGFzTWF0
Y2hpbmdDbGllbnQoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSkKLSAgICAgICAgbV9u
ZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyB7
IGlkZW50aWZpZXIoKSwgY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOwor
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWdpc3RlclJlbW90ZVdvcmtlckNsaWVu
dFByb2Nlc3MgeyBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBpZGVudGlmaWVyKCks
IGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIH0KIAogdm9pZCBXZWJT
V1NlcnZlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCmluZGV4IDgwMDkxMzk1
MjgwYzhkNzYwZWYxYTFkMTIxYzIxNDc1ZjQ5NWViYjguLjQ2MTdkYTI1OWI4OWJkNTIxODZlZjM4
NGZkMjBiNTFlM2FiYmNiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcApAQCAtMjYsNiAr
MjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5o
IgogCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisjaW5jbHVkZSAiV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KQEAgLTM5LDggKzQxLDkgQEAgc3RhdGljIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVk
V29ya2VySWRlbnRpZmllciwgV2ViU2hhcmVkV29ya2VyKj4mIGFsbFdvcmtlcnMoKQogICAgIHJl
dHVybiBhbGxXb3JrZXJzOwogfQogCi1XZWJTaGFyZWRXb3JrZXI6OldlYlNoYXJlZFdvcmtlcihj
b25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6V29ya2Vy
T3B0aW9ucyYgd29ya2VyT3B0aW9ucykKLSAgICA6IG1faWRlbnRpZmllcihXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorV2ViU2hhcmVkV29ya2VyOjpXZWJTaGFy
ZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFdlYkNvcmU6OlNo
YXJlZFdvcmtlcktleSYga2V5LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJP
cHRpb25zKQorICAgIDogbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV9pZGVudGlmaWVyKFdlYkNv
cmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAgLCBtX2tleShrZXkp
CiAgICAgLCBtX3dvcmtlck9wdGlvbnMod29ya2VyT3B0aW9ucykKIHsKQEAgLTUyLDYgKzU1LDcg
QEAgV2ViU2hhcmVkV29ya2VyOjp+V2ViU2hhcmVkV29ya2VyKCkKIHsKICAgICBBU1NFUlQoYWxs
V29ya2VycygpLmdldChtX2lkZW50aWZpZXIpID09IHRoaXMpOwogICAgIGFsbFdvcmtlcnMoKS5y
ZW1vdmUobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoIW1fc2hhcmVkV29ya2VyT2JqZWN0cy5p
c0VtcHR5KCkpOwogfQogCiBXZWJTaGFyZWRXb3JrZXIqIFdlYlNoYXJlZFdvcmtlcjo6ZnJvbUlk
ZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQpAQCAt
NjQsNCArNjgsMzUgQEAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gV2ViU2hhcmVkV29ya2Vy
OjpyZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHsgdXJsKCkgfTsKIH0KIAordm9pZCBXZWJTaGFyZWRXb3JrZXI6OmRpZENyZWF0
ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mIGNvbnRleHRDb25uZWN0aW9uKQoreworICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciA6IG1fc2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpCisgICAgICAgIGNv
bnRleHRDb25uZWN0aW9uLmFkZFNoYXJlZFdvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXI6OmFkZFNoYXJlZFdvcmtlck9i
amVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHBv
cnQpCit7CisgICAgbV9zaGFyZWRXb3JrZXJPYmplY3RzLmFkZChzaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBwb3J0KTsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IGNvbnRleHRDb25u
ZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb24tPmFkZFNoYXJlZFdvcmtlck9iamVjdChzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXI6OnJl
bW92ZVNoYXJlZFdvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgbV9zaGFyZWRXb3JrZXJP
YmplY3RzLnJlbW92ZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBpZiAoYXV0
byogY29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb24t
PnJlbW92ZVNoYXJlZFdvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsK
K30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXI6OmZvckVhY2hTaGFyZWRXb3JrZXJPYmplY3QoY29u
c3QgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Jik+JiBhcHBseSkgY29uc3QKK3sK
KyAgICBmb3IgKGF1dG8mIFtzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0XSA6IG1f
c2hhcmVkV29ya2VyT2JqZWN0cykKKyAgICAgICAgYXBwbHkoc2hhcmVkV29ya2VyT2JqZWN0SWRl
bnRpZmllciwgcG9ydCk7Cit9CisKK1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24qIFdlYlNoYXJlZFdvcmtlcjo6Y29udGV4dENvbm5lY3Rpb24oKSBjb25zdAoreworICAg
IHJldHVybiBtX3NlcnZlci5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJl
Z2lzdHJhYmxlRG9tYWluKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyLmgKaW5kZXggMzRiN2E0YTg0M2NlZjlhMTdlYmMwYjNhNWZhNGNjZDRkMDYxNmIz
NC4uOTNiYjU2NjgyZGExOTJjZjM0NzdhZTA1MTk4MjQ0NmM0MDAzY2MzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hh
cmVkV29ya2VyLmgKQEAgLTM5LDEwICszOSwxMyBAQCBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKK2Ns
YXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKIGNsYXNzIFdl
YlNoYXJlZFdvcmtlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXI+IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXZWJTaGFyZWRXb3Jr
ZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiwgY29uc3QgV2ViQ29yZTo6V29ya2Vy
T3B0aW9ucyYpOworICAgIFdlYlNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImLCBj
b25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRp
b25zJik7CiAgICAgfldlYlNoYXJlZFdvcmtlcigpOwogCiAgICAgc3RhdGljIFdlYlNoYXJlZFdv
cmtlciogZnJvbUlkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CkBA
IC01Myw3ICs1NiwxNCBAQCBwdWJsaWM6CiAgICAgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2lu
JiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2tleS5vcmlnaW47IH0KICAgICBjb25zdCBVUkwm
IHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5LnVybDsgfQogICAgIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3Q7Ci0gICAgSGFzaE1hcDxXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3Nh
Z2VQb3J0PiYgc2hhcmVkV29ya2VyT2JqZWN0cygpIHsgcmV0dXJuIG1fc2hhcmVkV29ya2VyT2Jq
ZWN0czsgfQorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNv
bnRleHRDb25uZWN0aW9uKCkgY29uc3Q7CisKKyAgICB2b2lkIGFkZFNoYXJlZFdvcmtlck9iamVj
dChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Jik7CisgICAgdm9pZCByZW1vdmVTaGFyZWRXb3JrZXJPYmpl
Y3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdW5zaWduZWQg
c2hhcmVkV29ya2VyT2JqZWN0c0NvdW50KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJP
YmplY3RzLnNpemUoKTsgfQorICAgIHZvaWQgZm9yRWFjaFNoYXJlZFdvcmtlck9iamVjdChjb25z
dCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmKT4mKSBjb25zdDsKKworICAgIHZv
aWQgZGlkQ3JlYXRlQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiYpOwogCiAgICAgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCB7IHJldHVybiBt
X2lzUnVubmluZzsgfQogICAgIHZvaWQgbWFya0FzUnVubmluZygpIHsgbV9pc1J1bm5pbmcgPSB0
cnVlOyB9CkBAIC02OCw2ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgV2ViU2hhcmVkV29ya2VyKGNv
bnN0IFdlYlNoYXJlZFdvcmtlciYpID0gZGVsZXRlOwogICAgIFdlYlNoYXJlZFdvcmtlciYgb3Bl
cmF0b3I9KGNvbnN0IFdlYlNoYXJlZFdvcmtlciYpID0gZGVsZXRlOwogCisgICAgV2ViU2hhcmVk
V29ya2VyU2VydmVyJiBtX3NlcnZlcjsKICAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkgbV9rZXk7CiAg
ICAgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyBtX3dvcmtlck9wdGlvbnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2Vi
U2hhcmVkV29ya2VyU2VydmVyLmNwcAppbmRleCBmYzY4MzAyMTRkNDBjNDdmMjJlOTU1OWNjODZh
ZDcyNWFiNTEwNWIzLi5iOGU0NzFjYjQ1YjUwNjA0YWZiYzg3YWYyY2RmOTgzOTVhZTkzZTJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
UEFMOjpTZXNzaW9uSUQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzZXNzaW9uSUQoKQogdm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVk
V29ya2VyS2V5JiYgc2hhcmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQmJiBwb3J0LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0
aW9ucykKIHsKICAgICBhdXRvJiBzaGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZW5zdXJl
KHNoYXJlZFdvcmtlcktleSwgWyZdIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU2hh
cmVkV29ya2VyPihzaGFyZWRXb3JrZXJLZXksIHdvcmtlck9wdGlvbnMpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXI+KCp0aGlzLCBzaGFyZWRXb3JrZXJLZXksIHdv
cmtlck9wdGlvbnMpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICBSRUxFQVNFX0xPRyhT
aGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI9JXtwcml2YXRlfXMsIHNoYXJlZFdvcmtlcklk
ZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgc2hhcmVkV29ya2VyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7
CiAKQEAgLTY2LDE2ICs2NiwxNiBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVz
dFNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmJiBzaGFyZQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCku
YWRkKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBvcnQpOworICAgIHNoYXJlZFdvcmtl
ci0+YWRkU2hhcmVkV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBv
cnQpOwogCi0gICAgaWYgKHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLnNpemUo
KSA+IDEpIHsKLSAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHNoYXJlZCB3b3JrZXIgd2l0aCB0aGlz
IFVSTCBhbHJlYWR5IGV4aXN0cyAobm93IHNoYXJlZCBieSAldSBzaGFyZWQgd29ya2VyIG9iamVj
dHMpIiwgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuc2l6ZSgpKTsKKyAgICBp
ZiAoc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzQ291bnQoKSA+IDEpIHsKKyAgICAg
ICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1
ZXN0U2hhcmVkV29ya2VyOiBBIHNoYXJlZCB3b3JrZXIgd2l0aCB0aGlzIFVSTCBhbHJlYWR5IGV4
aXN0cyAobm93IHNoYXJlZCBieSAldSBzaGFyZWQgd29ya2VyIG9iamVjdHMpIiwgc2hhcmVkV29y
a2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzQ291bnQoKSk7CiAgICAgICAgIGlmIChzaGFyZWRXb3Jr
ZXItPmRpZEZpbmlzaEZldGNoaW5nKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJD
b25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ci5wcm9jZXNzSWRlbnRpZmllcigpKSkKICAgICAgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9u
LT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9uKHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIHsgfSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+aXNS
dW5uaW5nKCkpIHsKLSAgICAgICAgICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9jb250
ZXh0Q29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7Cisg
ICAgICAgICAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHNoYXJlZFdvcmtlci0+Y29udGV4
dENvbm5lY3Rpb24oKTsKICAgICAgICAgICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlvbik7CiAg
ICAgICAgICAgICBpZiAoY29udGV4dENvbm5lY3Rpb24pCiAgICAgICAgICAgICAgICAgY29udGV4
dENvbm5lY3Rpb24tPnBvc3RDb25uZWN0RXZlbnQoKnNoYXJlZFdvcmtlciwgcG9ydCk7CkBAIC05
OCwxMCArOTgsMTAgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNo
aW5nU2hhcmVkV29ya2VyU2NyaXB0KFdlYlNoYXJlZFdvcmtlciYKIHsKICAgICBSRUxFQVNFX0xP
RyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5n
U2hhcmVkV29ya2VyU2NyaXB0IHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHNo
YXJlZFdvcmtlcj0lcCwgc3VjY2Vzcz0lZCIsIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCkudG9V
SW50NjQoKSwgJnNoYXJlZFdvcmtlciwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOwogCi0g
ICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiBzaGFyZWRXb3JrZXIu
c2hhcmVkV29ya2VyT2JqZWN0cygpLmtleXMoKSkgeworICAgIHNoYXJlZFdvcmtlci5mb3JFYWNo
U2hhcmVkV29ya2VyT2JqZWN0KFsmXShhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIs
IGF1dG8mKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0
aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigp
KSkKICAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9h
ZENvbXBsZXRpb24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZmV0Y2hSZXN1bHQuZXJy
b3IpOwotICAgIH0KKyAgICB9KTsKIAogICAgIGlmICghZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxs
KCkpIHsKICAgICAgICAgbV9zaGFyZWRXb3JrZXJzLnJlbW92ZShzaGFyZWRXb3JrZXIua2V5KCkp
OwpAQCAtMTEwLDE0ICsxMTAsMTEgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZp
bmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0KFdlYlNoYXJlZFdvcmtlciYKIAogICAgIHNo
YXJlZFdvcmtlci5zZXRGZXRjaFJlc3VsdChXVEZNb3ZlKGZldGNoUmVzdWx0KSk7CiAKLSAgICBh
dXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gc2hhcmVkV29ya2VyLnJlZ2lzdHJhYmxlRG9tYWluKCk7
Ci0gICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBpZiAoIWNvbnRleHRDb25uZWN0
aW9uKSB7Ci0gICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKKyAgICBpZiAoYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBzaGFyZWRXb3JrZXIuY29udGV4
dENvbm5lY3Rpb24oKSkgeworICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+bGF1bmNoU2hhcmVk
V29ya2VyKHNoYXJlZFdvcmtlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBjb250
ZXh0Q29ubmVjdGlvbi0+bGF1bmNoU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcik7CisgICAgY3Jl
YXRlQ29udGV4dENvbm5lY3Rpb24oc2hhcmVkV29ya2VyLnJlZ2lzdHJhYmxlRG9tYWluKCkpOwog
fQogCiBib29sIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbikgY29uc3QKQEAgLTE0Niw3ICsxNDMsNiBAQCB2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6Y3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEbwogCiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFp
bnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKTsKICAgICAgICAgbV9wZW5kaW5nQ29udGV4
dENvbm5lY3Rpb25Eb21haW5zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0KICAgICAgICAg
aWYgKG1fY29udGV4dENvbm5lY3Rpb25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMTc2LDcgKzE3Miw3IEBAIHZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRlCiAKICAgICBtX2NvbnRleHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21h
aW4pOwogCi0gICAgaWYgKG5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbikpCisgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uLmhhc1NoYXJl
ZFdvcmtlck9iamVjdHMoKSkKICAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0
cmFibGVEb21haW4pOwogfQogCkBAIC0xODUsNyArMTgxLDExIEBAIHZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250CiAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2Vy
dmVyOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUi
IFBSSXU2NCwgJmNvbnRleHRDb25uZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNz
SWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0g
Y29udGV4dENvbm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKTsKICAgICBmb3IgKGF1dG8mIHNo
YXJlZFdvcmtlciA6IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoc2hh
cmVkV29ya2VyLT5kaWRGaW5pc2hGZXRjaGluZygpICYmIHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNo
ZXMoc2hhcmVkV29ya2VyLT51cmwoKSkpCisgICAgICAgIGlmICghcmVnaXN0cmFibGVEb21haW4u
bWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIHNoYXJlZFdvcmtlci0+ZGlkQ3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29udGV4dENv
bm5lY3Rpb24pOworICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5kaWRGaW5pc2hGZXRjaGluZygp
KQogICAgICAgICAgICAgY29udGV4dENvbm5lY3Rpb24ubGF1bmNoU2hhcmVkV29ya2VyKCpzaGFy
ZWRXb3JrZXIpOwogICAgIH0KIH0KQEAgLTE5Nyw4ICsxOTcsOCBAQCB2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoY29uc3QgV2ViQ29yZTo6
U2hhcmVkVwogICAgIGlmICghc2hhcmVkV29ya2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
aGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5yZW1vdmUoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcik7Ci0gICAgaWYgKCFzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVj
dHMoKS5pc0VtcHR5KCkpCisgICAgc2hhcmVkV29ya2VyLT5yZW1vdmVTaGFyZWRXb3JrZXJPYmpl
Y3Qoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgaWYgKHNoYXJlZFdvcmtlci0+
c2hhcmVkV29ya2VyT2JqZWN0c0NvdW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNodXRE
b3duU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcktleSk7CkBAIC0yMTEsMTMgKzIxMSwxMyBAQCB2
b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2Vi
Q29yZTo6U2hhcmVkV29ya2VyS2V5JgogICAgIGlmICghc2hhcmVkV29ya2VyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9u
Rm9yUmVnaXN0cmFibGVEb21haW4oc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsK
KyAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHNoYXJlZFdvcmtlci0+Y29udGV4dENvbm5l
Y3Rpb24oKTsKICAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAK
ICAgICBjb250ZXh0Q29ubmVjdGlvbi0+dGVybWluYXRlU2hhcmVkV29ya2VyKCpzaGFyZWRXb3Jr
ZXIpOwogCi0gICAgaWYgKCFuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21h
aW4oc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKSkKKyAgICBpZiAoIWNvbnRleHRD
b25uZWN0aW9uLT5oYXNTaGFyZWRXb3JrZXJPYmplY3RzKCkpCiAgICAgICAgIGNvbnRleHRDb25u
ZWN0aW9uLT5jb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOwogfQogCkBAIC0yMzcsMTAgKzIz
NywxMCBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSQogCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXI+PiBzaGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5OwogICAgIGZvciAoYXV0byYgc2hh
cmVkV29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7Ci0gICAgICAgIGZvciAoYXV0
byYgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlci0+c2hhcmVkV29y
a2VyT2JqZWN0cygpLmtleXMoKSkgeworICAgICAgICBzaGFyZWRXb3JrZXItPmZvckVhY2hTaGFy
ZWRXb3JrZXJPYmplY3QoWyZdKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgYXV0
byYpIHsKICAgICAgICAgICAgIGlmIChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKCkgPT0gcHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAgc2hh
cmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc2hhcmVkV29y
a2VyLT5rZXkoKSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikpOwotICAgICAgICB9Cisg
ICAgICAgIH0pOwogICAgIH0KICAgICBmb3IgKGF1dG8mIFtzaGFyZWRXb3JrZXJLZXksIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXJdIDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkK
ICAgICAgICAgc2hhcmVkV29ya2VyT2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyS2V5LCBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKQEAgLTI1OCwxMCArMjU4LDEwIEBAIHZvaWQg
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29y
ZTo6U2hhcmVkV29ya2VySWRlCiAgICAgaWYgKCFzaGFyZWRXb3JrZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGZvciAoYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVk
V29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgc2hhcmVkV29ya2Vy
LT5mb3JFYWNoU2hhcmVkV29ya2VyT2JqZWN0KFsmXShhdXRvIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIsIGF1dG8mKSB7CiAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0g
bV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRl
bnRpZmllcigpKSkKICAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPnBvc3RFeGNlcHRpb25U
b1dvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2Us
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlVVJMKTsKLSAgICB9CisgICAgfSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBmZjg2YmM3
ZDZhMmQ0MzFmMzgzNGRmODVlMWQyNjIzNDU2ZjVhOTg3Li44ZDhhNmMxODZjYzY2ZWQ5NTllMGVi
NmEyMjQ0MWY2ZTllZjEyYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMjgsNiArMjgsOSBA
QAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJUeXBlLmgi
CiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXIuaCIKQEAgLTkwLDggKzkzLDkgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpsYXVuY2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2UK
ICAgICBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0coImxhdW5jaFNoYXJlZFdvcmtlcjog
c2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlci5pZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CiAgICAgc2hhcmVkV29ya2VyLm1hcmtBc1J1bm5pbmcoKTsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Okxh
dW5jaFNoYXJlZFdvcmtlciB7IHNoYXJlZFdvcmtlci5vcmlnaW4oKSwgc2hhcmVkV29ya2VyLmlk
ZW50aWZpZXIoKSwgc2hhcmVkV29ya2VyLnVybCgpLCBzaGFyZWRXb3JrZXIud29ya2VyT3B0aW9u
cygpLCBzaGFyZWRXb3JrZXIuZmV0Y2hSZXN1bHQoKSB9KTsKLSAgICBmb3IgKGF1dG8mIHBvcnQg
OiBzaGFyZWRXb3JrZXIuc2hhcmVkV29ya2VyT2JqZWN0cygpLnZhbHVlcygpKQorICAgIHNoYXJl
ZFdvcmtlci5mb3JFYWNoU2hhcmVkV29ya2VyT2JqZWN0KFsmXShhdXRvLCBhdXRvJiBwb3J0KSB7
CiAgICAgICAgIHBvc3RDb25uZWN0RXZlbnQoc2hhcmVkV29ya2VyLCBwb3J0KTsKKyAgICB9KTsK
IH0KIAogdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0
Q29ubmVjdEV2ZW50KGNvbnN0IFdlYlNoYXJlZFdvcmtlciYgc2hhcmVkV29ya2VyLCBjb25zdCBX
ZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiBwb3J0KQpAQCAtMTA2LDYgKzExMCwyOSBA
QCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0
ZVNoYXJlZFdvcmtlcihjb25zdCBXZWJTaAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdv
cmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlU2hhcmVkV29ya2VyIHsgc2hh
cmVkV29ya2VyLmlkZW50aWZpZXIoKSB9KTsKIH0KIAordm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjphZGRTaGFyZWRXb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKQor
eworICAgIGF1dG8mIHNoYXJlZFdvcmtlck9iamVjdHMgPSBtX3NoYXJlZFdvcmtlck9iamVjdHMu
ZW5zdXJlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSwg
W10geyByZXR1cm4gSGFzaFNldDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
PiB7IH07IH0pLml0ZXJhdG9yLT52YWx1ZTsKKyAgICBzaGFyZWRXb3JrZXJPYmplY3RzLmFkZChz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKworICAgIGlmICh3ZWJQcm9jZXNzSWRlbnRp
ZmllcigpICE9IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIo
KSAmJiBzaGFyZWRXb3JrZXJPYmplY3RzLnNpemUoKSA9PSAxKQorICAgICAgICBtX2Nvbm5lY3Rp
b24ubmV0d29ya1Byb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpS
ZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MgeyBSZW1vdGVXb3JrZXJUeXBlOjpTaGFy
ZWRXb3JrZXIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIo
KSwgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpyZW1vdmVTaGFyZWRXb3JrZXJPYmplY3QoV2Vi
Q29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyKQoreworICAgIGF1dG8gaXQgPSBtX3NoYXJlZFdvcmtlck9iamVjdHMuZmluZChzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIGlmIChp
dCA9PSBtX3NoYXJlZFdvcmtlck9iamVjdHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBp
dC0+dmFsdWUucmVtb3ZlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIGlmICgh
aXQtPnZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zaGFyZWRXb3Jr
ZXJPYmplY3RzLnJlbW92ZShpdCk7CisgICAgaWYgKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgIT0g
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKQorICAgICAg
ICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpVbnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyB7IFJlbW90ZVdv
cmtlclR5cGU6OlNoYXJlZFdvcmtlciwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworfQorCiAjdW5k
ZWYgQ09OVEVYVF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIv
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGQ2YWVhMzE5YWEzZTgwZTY3MGRlZGJjMGM4YWJkMGYyZjZi
NWNhMjQuLjg0OTA3Nzg0ZWQ5YzM0ZjhmNjhkMWZlNDA2YzI5YmU1YjZiMTQ1NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2hhcmVkV29ya2VySWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MSw5ICs2MiwxMyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoY29uc3QgV2ViU2hhcmVk
V29ya2VyJik7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisgICAg
Ym9vbCBoYXNTaGFyZWRXb3JrZXJPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gIW1fc2hhcmVkV29y
a2VyT2JqZWN0cy5pc0VtcHR5KCk7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAKKyAgICB2b2lkIGFkZFNoYXJl
ZFdvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIHJlbW92ZVNoYXJlZFdvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyKTsKKwogcHJpdmF0ZToKICAgICAvLyBJUEMgbWVzc2FnZXMuCiAgICAgdm9p
ZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CkBAIC03NSw2ICs4MCw3IEBAIHBy
aXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvbjsK
ICAgICBXZWFrUHRyPFdlYlNoYXJlZFdvcmtlclNlcnZlcj4gbV9zZXJ2ZXI7CiAgICAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBIYXNoU2V0PFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXI+PiBtX3NoYXJlZFdvcmtlck9iamVjdHM7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZVdvcmtl
clR5cGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZVdvcmtlclR5cGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41MjgxNmQ5NDFmODJmZWM0N2VmOGY1NDY0ZGZkNjg5ZWI2MGI3Y2Y5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlV29ya2VyVHlwZS5oCkBAIC0wLDAg
KzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2VudW0gY2xhc3MgUmVtb3RlV29ya2VyVHlwZSA6IHVpbnQzMl90IHsKKyAgICBTZXJ2aWNl
V29ya2VyID0gMSA8PCAwLAorICAgIFNoYXJlZFdvcmtlciA9IDEgPDwgMQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAorICAgICAgICBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGUsCisgICAgICAgIFdl
YktpdDo6UmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwKKyAgICAgICAgV2ViS2l0OjpS
ZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIKKyAgICA+OworfTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDMzMDIwYmQ1YzNjZDk0MTc3NTYxNTc5YWMyMGZjMzhmOWM2OTI3OGUuLmVkY2NmZjIw
OGVhY2VkNDE0ZjcyN2JhZmE0MzYzNmE0YWUwMmJjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTI5
LDcgKzUyOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlV2ViUHJvY2Vz
cyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCiB7CiAgICAgaWYgKFJlZlB0
ciBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihwcm9jZXNz
SWRlbnRpZmllcikpIHsKLSAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vz
c1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICAgICAgcHJvY2Vzcy0+ZGlz
YWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAgICAg
ICAgIHByb2Nlc3MtPnJlcXVlc3RUZXJtaW5hdGlvbihQcm9jZXNzVGVybWluYXRpb25SZWFzb246
OkV4Y2VlZGVkQ1BVTGltaXQpOwogICAgIH0KIH0KQEAgLTE0MjAsMzYgKzE0MjAsMzYgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MKICAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFi
bGVEb21haW4pLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdp
c3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclJlbW90ZVdv
cmtlckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgc2hhcmVkV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiB7Ci0gICAgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
Zmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19CisgICAgYXV0
byogd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIod2Vi
UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIGF1dG8qIHNoYXJlZFdvcmtlclByb2Nlc3MgPSBXZWJQ
cm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNoYXJlZFdvcmtlclByb2Nlc3NJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIXdlYlByb2Nlc3MgfHwgIXNoYXJlZFdvcmtlclByb2Nlc3MpCisg
ICAgICAgIHJldHVybjsKIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXJ2aWNlV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBpZGVudGlmaWVyKQotewotICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5
Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKLSAgICAgICAgcHJvY2Vzcy0+ZGlz
YWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsK
KyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzLT5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nl
c3Mod29ya2VyVHlwZSwgKndlYlByb2Nlc3MpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6dW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSB3
b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmll
ciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2hhcmVkV29ya2VyUHJvY2Vzc0lkZW50aWZp
ZXIpCiB7CiAgICAgYXV0byogd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0Zv
cklkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIGF1dG8qIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihzZXJ2aWNl
V29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIGlmICghd2ViUHJvY2VzcyB8fCAhc2Vydmlj
ZVdvcmtlclByb2Nlc3MpCisgICAgYXV0byogc2hhcmVkV29ya2VyUHJvY2VzcyA9IFdlYlByb2Nl
c3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoc2hhcmVkV29ya2VyUHJvY2Vzc0lkZW50aWZp
ZXIpOworICAgIGlmICghd2ViUHJvY2VzcyB8fCAhc2hhcmVkV29ya2VyUHJvY2VzcykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgc2VydmljZVdvcmtlclByb2Nlc3MtPnJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudFByb2Nlc3MoKndlYlByb2Nlc3MpOworICAgIHNoYXJlZFdvcmtlclByb2Nlc3Mt
PnVucmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKHdvcmtlclR5cGUsICp3ZWJQcm9j
ZXNzKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lk
ZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNz
SWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVtb3RlV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byogd2ViUHJv
Y2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIod2ViUHJvY2Vzc0lk
ZW50aWZpZXIpOwotICAgIGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzID0gV2ViUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgaWYg
KCF3ZWJQcm9jZXNzIHx8ICFzZXJ2aWNlV29ya2VyUHJvY2VzcykKLSAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRp
ZmllcihpZGVudGlmaWVyKSkKKyAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVJlbW90ZVdvcmtlcnMo
d29ya2VyVHlwZSk7Cit9CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+dW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKCp3ZWJQcm9jZXNzKTsKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBy
ZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzdGFydFNlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc0lkZW50aWZpZXIpCkBAIC0xNDY1LDEyICsxNDY1LDYgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6
UHJvY2Vzc0kKIH0KICNlbmRpZgogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQ
cm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCi0gICAgICAgIHByb2Nlc3Mt
PmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2Vy
KTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmln
aW4sIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90
IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gcXVvdGEpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFN0
b3JhZ2UsICIlcCAtIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UiLCB0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKaW5kZXggNjg0MWEzNGZlMDlkMTJiYTkzZDRlZjhjODBlNDUzM2E1NWZk
NjVjNC4uMDgzM2M3MTNhYjI0YmZiYTUyOTU3OWRkZTk0MTU4OTI0YTc5NDQ2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKQEAgLTg1LDYgKzg1LDcgQEAgY2xhc3MgV2ViQ29va2llTWFuYWdlclByb3h5OwogY2xhc3Mg
V2ViUGFnZVByb3h5OwogY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiAKK2Vu
dW0gY2xhc3MgUmVtb3RlV29ya2VyVHlwZSA6IHVpbnQzMl90OwogZW51bSBjbGFzcyBTaG91bGRH
cmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3Rh
dHVzIDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbiA6IHVpbnQ4
X3Q7CkBAIC0zMjgsMTQgKzMyOSwxMyBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwotICAgIHZvaWQgc2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJO
ZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIHZvaWQgcmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclBy
b2Nlc3NJZGVudGlmaWVyKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVy
KTsKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICNlbmRpZgot
ICAgIHZvaWQgc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdGVXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFJlbW90ZVdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6OlNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlZ2lzdGVy
UmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgc2hhcmVkV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHZvaWQgdW5yZWdpc3Rl
clJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSwgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHNoYXJlZFdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgdGVybWlu
YXRlV2ViUHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCAxNTc1N2VkOWEyNTJiMDlkY2QxMWJiNWU2YjljOGExMGQw
NTM0YzlhLi43NDYwNjA5MDFlOGZkZDkyZjQ3ZGRiZWZhMmU0YTgwZjE2YmM0OTQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC01NCwxNCArNTQsMTMgQEAgbWVzc2FnZXMgLT4g
TmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgRXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFp
biwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
cj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+ICgpIEFzeW5jCi0gICAgU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJO
ZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICBSZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdl
YlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29y
a2VyUHJvY2Vzc0lkZW50aWZpZXIpCi0gICAgVW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQ
cm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIp
CiAgICAgU3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogICAgIEVuZFNl
cnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAjZW5kaWYKICAgICBFc3RhYmxpc2hT
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkgLT4gKCkgQXN5bmMKLSAgICBTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2Vy
TmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgUmVtb3Rl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChlbnVtOnVpbnQzMl90IFdlYktp
dDo6UmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIFJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhlbnVt
OnVpbnQzMl90IFdlYktpdDo6UmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgcmVtb3RlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIFVucmVnaXN0ZXJS
ZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKGVudW06dWludDMyX3QgV2ViS2l0OjpSZW1vdGVXb3Jr
ZXJUeXBlIHdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciByZW1vdGVXb3JrZXJQcm9jZXNz
SWRlbnRpZmllcik7CiAKICAgICBTZXRXZWJQcm9jZXNzSGFzVXBsb2FkcyhXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBwcm9jZXNzSUQsIGJvb2wgaGFzVXBsb2FkKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmODI0OGY1YzM1NGQ3ODdiMDEzY2ZjN2Yw
YjY2NTI5OTRhMmU0ODczLi40MmI4YmY4NjgzYWJlYTc0ODRkY2IxN2UzZDY1YzhmZWYwYTMyNjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2OTYsNyAr
MzY5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFn
ZW50KQogCiAgICAgLy8gV2UgdXBkYXRlIHRoZSBzZXJ2aWNlIHdvcmtlciB0aGVyZSBhdCB0aGUg
bW9tZW50IHRvIGJlIHN1cmUgd2UgdXNlIHZhbHVlcyB1c2VkIGJ5IGFjdHVhbCB3ZWIgcGFnZXMu
CiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIHRoaXMgd2hlbiB3ZSBoYXZlIGEgYmV0dGVyIFVzZXIt
QWdlbnQgc3RvcnkuCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlV29ya2VyVXNl
ckFnZW50KG1fdXNlckFnZW50KTsKKyAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVS
ZW1vdGVXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKaW5kZXggZjExNmZlMjljOGIyMTY1ZjExY2Y2MGE2ZjFmNjZjNWYxM2Rh
MDYwYy4uNmQ4ODI4ZjJlNGQxYjg5MTEwMjcxMzU3MjZlNzVhZTMwYjg1NDA2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtNTQ2LDcgKzU0Niw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnCiAgICAgaWYgKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRp
ZmllcikgewogICAgICAgICAvLyBUaGlzIGlzIGEgc2VydmljZSB3b3JrZXIgZm9yIGEgc2Vydmlj
ZSB3b3JrZXIgcGFnZSBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1c2UgdXNlIHRoZSBwYWdl
J3MgV2ViUHJvY2VzcyBmb3IgdGhlIHNlcnZpY2Ugd29ya2VyLgogICAgICAgICBpZiAoKHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlm
aWVyKHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllci0+cHJvY2Vzc0lkZW50aWZpZXIoKSkpKSB7
Ci0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdl
YlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworICAgICAgICAgICAg
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllckZvclJlbW90ZVdvcmtlcnMoKSk7CiAgICAgICAgICAgICBpZiAoc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAgICAgICAgICAgICAgICAg
cHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpO
byk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5p
c0luUHJvY2Vzc0NhY2hlKCkpOwpAQCAtNTY0LDcgKzU2NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoUmVnCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIHNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOwotICAgICAgICAgICAgc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyRm9yV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHktPmVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwg
cHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JSZW1vdGVXb3Jr
ZXJzKCkpOwogCiAgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJ
blByb2Nlc3NDYWNoZSgpKSB7CiAgICAgICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nl
c3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHksIFdlYlBy
b2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CkBAIC01NzcsNyArNTc3LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWcKICAgICB9CiAKICAgICBpZiAoIXNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9j
ZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJh
YmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKKyAgICAgICAgYXV0byBuZXdQcm9jZXNz
UHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclJlbW90ZVdvcmtlcnMoUmVtb3RlV29y
a2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAg
eyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7CiAKICAgICAgICAg
V0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNlcnZpY2VXb3JrZXIsICJlc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5n
IGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlcz0lcCwgUElEPSVkKSIsIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHksIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOwpAQCAtNTg2LDE4ICs1ODYsMTggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhS
ZWcKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1By
b2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIHdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSk7CisgICAgcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpz
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3dvcmtlclBy
ZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHBy
b2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVn
aXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwotICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50
LmlzTnVsbCgpKQotICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJV
c2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50KTsKKyAgICBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9v
bC0+bV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtl
clByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5w
cmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoIXByb2Nl
c3NQb29sLT5tX3JlbW90ZVdvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAgICAgICAgc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0UmVtb3RlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29s
LT5tX3JlbW90ZVdvcmtlclVzZXJBZ2VudCk7CiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Mp
Cit2b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tUmVtb3RlV29ya2VyUHJvY2Vzc2VzKFdl
YlByb2Nlc3NQcm94eSYgcHJvY2VzcykKIHsKLSAgICBBU1NFUlQod29ya2VyUHJvY2Vzc2VzKCku
Y29udGFpbnMocHJvY2VzcykpOwotICAgIHdvcmtlclByb2Nlc3NlcygpLnJlbW92ZShwcm9jZXNz
KTsKKyAgICBBU1NFUlQocmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkuY29udGFpbnMocHJvY2Vzcykp
OworICAgIHJlbW90ZVdvcmtlclByb2Nlc3NlcygpLnJlbW92ZShwcm9jZXNzKTsKIH0KIAogdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVE
b21haW4sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNjIzLDcgKzYyMyw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJDCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHkgPSBwcm9jZXNzLnB0cigpOwotICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRX
b3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29y
a2VycygpKTsKKyAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVSZW1vdGVX
b3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JSZW1vdGVXb3JrZXJzKCkpOwogCiAgICAgICAg
IGlmIChzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgewogICAg
ICAgICAgICAgcHJvY2Vzc1Bvb2wtPndlYlByb2Nlc3NDYWNoZSgpLnJlbW92ZVByb2Nlc3MoKnNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blBy
b2Nlc3M6Ok5vKTsKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQwog
ICAgIH0KIAogICAgIGlmICghc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KSB7Ci0gICAgICAgIGF1
dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdl
YlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJl
Z2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3Jl
KTsKKyAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0
ZUZvclJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCAqcHJvY2Vz
c1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRl
RGF0YVN0b3JlKTsKICAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vz
c1Byb3h5LnB0cigpOwogCiAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJ
QyhTaGFyZWRXb3JrZXIsICJlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJv
Y2Vzcz0lcCwgUElEPSVkKSIsIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSwgc2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTY0NCwxMSArNjQ0LDExIEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDCiAgICAgICAgIHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nl
cy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKICAgICB9CiAKLSAgICB3b3JrZXJQ
cm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSk7CisgICAgcmVtb3RlV29y
a2VyUHJvY2Vzc2VzKCkuYWRkKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkpOwogCi0gICAgc2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KHByb2Nl
c3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVy
ZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVu
Y2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKLSAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwoKSkK
LSAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRXb3JrZXJVc2VyQWdlbnQocHJv
Y2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50KTsKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHktPmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29y
a2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlcy52
YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5z
dG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQor
ICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNldFJlbW90ZVdvcmtlclVzZXJBZ2Vu
dChwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjp3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCkKQEAgLTEwNTQs
NyArMTA1NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmRpc2Nvbm5lY3RQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcykKICAgICBtX2JhY2tGb3J3YXJkQ2FjaGUtPnJlbW92ZUVudHJp
ZXNGb3JQcm9jZXNzKHByb2Nlc3MpOwogCiAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nV29ya2Vy
cygpKQotICAgICAgICByZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOworICAgICAg
ICByZW1vdmVGcm9tUmVtb3RlV29ya2VyUHJvY2Vzc2VzKHByb2Nlc3MpOwogCiAgICAgc3RhdGlj
X2Nhc3Q8V2ViQ29udGV4dFN1cHBsZW1lbnQqPihzdXBwbGVtZW50PFdlYkdlb2xvY2F0aW9uTWFu
YWdlclByb3h5PigpKS0+cHJvY2Vzc0RpZENsb3NlKCZwcm9jZXNzKTsKIApAQCAtMTExNCwxMiAr
MTExNCwxMiBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUG9vbDo6cHJvY2Vzc0Zv
clJlZ2lzdHJhYmxlRG9tYWluKFdlYnNpdGVEYXRhU3RvcgogICAgIHJldHVybiBjcmVhdGVOZXdX
ZWJQcm9jZXNzKCZ3ZWJzaXRlRGF0YVN0b3JlLCBjYXB0aXZlUG9ydGFsTW9kZSk7CiB9CiAKLVVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkKK1VzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIgV2ViUHJvY2Vzc1Bvb2w6OnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJG
b3JSZW1vdGVXb3JrZXJzKCkKIHsKLSAgICBpZiAoIW1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9y
V29ya2VycykKLSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzID0gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSgpOworICAgIGlmICghbV91c2VyQ29u
dGVudENvbnRyb2xsZXJGb3JSZW1vdGVXb3JrZXJzKQorICAgICAgICBtX3VzZXJDb250ZW50Q29u
dHJvbGxlckZvclJlbW90ZVdvcmtlcnMgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
Y3JlYXRlKCk7CiAKLSAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJz
LT5pZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yUmVt
b3RlV29ya2Vycy0+aWRlbnRpZmllcigpOwogfQogCiBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9j
ZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQ
YWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29uZmlndXJhdGlvbikKQEAgLTExNjUsMTMgKzExNjUs
MTMgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFn
ZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKIAogICAgIGF1dG8gcGFnZSA9IHByb2Nlc3Mt
PmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwog
Ci0gICAgaWYgKCFtX3dvcmtlclByZWZlcmVuY2VzKSB7Ci0gICAgICAgIG1fd29ya2VyUHJlZmVy
ZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7Ci0gICAgICAgIGZvciAoYXV0byYgd29y
a2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQotICAgICAgICAgICAgd29ya2VyUHJvY2Vz
cy51cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3dvcmtlclByZWZlcmVuY2VzKTsKKyAg
ICBpZiAoIW1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXMpIHsKKyAgICAgICAgbV9yZW1vdGVXb3Jr
ZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKKyAgICAgICAgZm9yIChh
dXRvJiB3b3JrZXJQcm9jZXNzIDogcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkpCisgICAgICAgICAg
ICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVJlbW90ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoKm1fcmVt
b3RlV29ya2VyUHJlZmVyZW5jZXMpOwogICAgIH0KICAgICBpZiAodXNlckNvbnRlbnRDb250cm9s
bGVyKQotICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMgPSB1c2VyQ29u
dGVudENvbnRyb2xsZXI7CisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yUmVtb3Rl
V29ya2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKIAogICAgIGJvb2wgZW5hYmxlUHJvY2Vz
c1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb24gPSBwYWdlLT5wcmVmZXJlbmNlcygpLnByb2Nlc3NT
d2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uRW5hYmxlZCgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCkBAIC0xMTk0LDEzICsxMTk0LDEzIEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAg
cmV0dXJuIHBhZ2U7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0ZVdvcmtlclVzZXJB
Z2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVwZGF0
ZVJlbW90ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAgICBp
ZiAobV93b3JrZXJVc2VyQWdlbnQgPT0gdXNlckFnZW50KQorICAgIGlmIChtX3JlbW90ZVdvcmtl
clVzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3dvcmtlclVz
ZXJBZ2VudCA9IHVzZXJBZ2VudDsKLSAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiB3b3Jr
ZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgd29ya2VyUHJvY2Vzcy5zZXRXb3JrZXJVc2VyQWdlbnQo
bV93b3JrZXJVc2VyQWdlbnQpOworICAgIG1fcmVtb3RlV29ya2VyVXNlckFnZW50ID0gdXNlckFn
ZW50OworICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHJlbW90ZVdvcmtlclByb2Nlc3Nl
cygpKQorICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChtX3Jl
bW90ZVdvcmtlclVzZXJBZ2VudCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdp
blVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgV2Vi
c2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQpAQCAtMTU4MSwxMiArMTU4MSwxMiBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjp0ZXJtaW5hdGVTZXJ2aWNlV29ya2VycygpCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKICAgICBWZWN0b3I8
UmVmPFdlYlByb2Nlc3NQcm94eT4+IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXM7Ci0gICAgd29ya2Vy
UHJvY2Vzc2VzKCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2VzcykgeworICAgIHJlbW90ZVdvcmtl
clByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgaWYgKHBy
b2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKICAgICAgICAgICAgIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMuYXBwZW5kKHByb2Nlc3MpOwogICAgIH0pOwogICAgIGZvciAoYXV0byYgc2Vy
dmljZVdvcmtlclByb2Nlc3MgOiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKQotICAgICAgICBzZXJ2
aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJU
eXBlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MtPmRpc2Fi
bGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlm
CiB9CiAKQEAgLTE4MTQsNyArMTgxNCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlcG9ydFdl
YkNvbnRlbnRDUFVUaW1lKFNlY29uZHMgY3B1VGltZSwgdWludDY0X3QgYWN0aXZpdHlTCiAjZW5k
aWYKIH0KIAotV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgV2ViUHJvY2Vzc1Bvb2w6Ondv
cmtlclByb2Nlc3NlcygpCitXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBXZWJQcm9jZXNz
UG9vbDo6cmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8V2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5Pj4gcHJvY2Vzc2VzOwogICAgIHJldHVybiBw
cm9jZXNzZXM7CkBAIC0xODMzLDEzICsxODMzLDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnVw
ZGF0ZVByb2Nlc3NBc3NlcnRpb25zKCkKIAogICAgIC8vIENoZWNrIG9uIG5leHQgcnVuIGxvb3Ag
c2luY2UgdGhlIHdlYiBwcm9jZXNzIHByb3h5IHRva2VucyBhcmUgcHJvYmFibHkgYmVpbmcgdXBk
YXRlZC4KICAgICBjYWxsT25NYWluUnVuTG9vcChbXSB7Ci0gICAgICAgIHdvcmtlclByb2Nlc3Nl
cygpLmZvckVhY2goW10oYXV0byYgd29ya2VyUHJvY2VzcykgeworICAgICAgICByZW1vdGVXb3Jr
ZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8mIHdvcmtlclByb2Nlc3MpIHsKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5p
bmdTZXJ2aWNlV29ya2VycygpKQotICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRl
V29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIpOworICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlUmVtb3RlV29y
a2VyUHJvY2Vzc0Fzc2VydGlvbihSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNl
bmRpZgogICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nlc3MuaXNSdW5uaW5nU2hhcmVkV29ya2Vy
cygpKQotICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJvY2Vzc0Fz
c2VydGlvbihXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7CisgICAg
ICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7CiAgICAgICAgIH0pOwogICAgIH0p
OwogfQpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6aXNTZXJ2aWNl
V29ya2VyUGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmVmZmljaWVu
dC4KLSAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0
byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFueU9mKHJlbW90ZVdvcmtlclByb2Nlc3Nl
cygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhh
c1NlcnZpY2VXb3JrZXJQYWdlUHJveHkocGFnZUlEKTsKICAgICB9KTsKICNlbmRpZgpAQCAtMjE3
Nyw3ICsyMTc3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6c2V0VXNlU2VwYXJhdGVTZXJ2aWNl
V29ya2VyUHJvY2Vzcyhib29sIHVzZVNlcGFyYXRlU2VydmljZVcKIHNpemVfdCBXZWJQcm9jZXNz
UG9vbDo6c2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQg
Y291bnQgPSAwOwotICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nl
c3MpIHsKKyAgICByZW1vdGVXb3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9j
ZXNzKSB7CiAgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCiAg
ICAgICAgICAgICArK2NvdW50OwogICAgIH0pOwpAQCAtMjE4NiwxNCArMjE4NiwxNCBAQCBzaXpl
X3QgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAogCiBi
b29sIFdlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9y
VGVzdGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2Vz
KCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjphbnlPZihyZW1vdGVXb3Jr
ZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gcHJvY2Vz
cy5oYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpOwogICAgIH0p
OwogfQogCiBib29sIFdlYlByb2Nlc3NQb29sOjpoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFj
dGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2Vy
UHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjphbnlPZihy
ZW1vdGVXb3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1
cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygp
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5k
ZXggY2IzODk2ZGViZTNhNGM0NTA5OWZmNTMxNDQyYWIyZWEwODZlMmM2ZS4uZTI1M2E1ZTczYTQ4
NjlhYjg5ZDQyMDcwODA2NmYxMDVlZTgxMDg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCkBAIC0zNzQsNyArMzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgbmV0
d29ya1Byb2Nlc3NEaWRUZXJtaW5hdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYsIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OlRlcm1pbmF0aW9uUmVhc29uKTsKIAogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2Vy
UGFnZUlEKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OwotICAgIHZvaWQgcmVtb3ZlRnJv
bVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKKyAgICB2b2lkIHJlbW92ZUZyb21S
ZW1vdGVXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMzg0LDggKzM4NCw4IEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIHZvaWQgc2VydmljZVdvcmtlclByb2Nlc3NDcmFzaGVkKFdlYlByb2Nlc3NQcm94eSYpOwog
Ci0gICAgdm9pZCB1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQp
OwotICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllckZvcldvcmtlcnMoKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZVdvcmtlclVz
ZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7CisgICAgVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yUmVtb3RlV29y
a2VycygpOwogICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQpAQCAtNjIxLDExICs2MjEsMTEgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8UEFM
OjpTZXNzaW9uSUQsIFdlYWtQdHI8V2ViUHJvY2Vzc1Byb3h5Pj4gbV9kdW1teVByb2Nlc3NQcm94
aWVzOyAvLyBMaWdodHdlaWdodCBXZWJQcm9jZXNzUHJveHkgb2JqZWN0cyB3aXRob3V0IGJhY2tp
bmcgcHJvY2Vzcy4KIAotICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiB3
b3JrZXJQcm9jZXNzZXMoKTsKKyAgICBzdGF0aWMgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5
PiYgcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZl
cmVuY2VzU3RvcmU+IG1fd29ya2VyUHJlZmVyZW5jZXM7Ci0gICAgUmVmUHRyPFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnM7Ci0g
ICAgU3RyaW5nIG1fd29ya2VyVXNlckFnZW50OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVy
ZW5jZXNTdG9yZT4gbV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlczsKKyAgICBSZWZQdHI8V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yUmVtb3Rl
V29ya2VyczsKKyAgICBTdHJpbmcgbV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQ7CiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAgICAgUmVmUHRyPEdQVVByb2Nlc3NQcm94eT4gbV9ncHVQcm9jZXNz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZjQ2
NjkyNDlhMzMxYWRiY2FmNzkyZWUzZDVhNjQyNzRhNDczOWU2Mi4uMmMwYTgwMzAwMzE0OTdjNTA5
NTU1ZjUzNDJkZjg1ZWMzOTkwZjBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCkBAIC0xODIsMTEgKzE4MiwxMSBAQCBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdl
YnNpdAogICAgIHJldHVybiBwcm94eTsKIH0KIAotUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJv
Y2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9t
YWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKQorUmVmPFdlYlByb2Nlc3NQ
cm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtl
clR5cGUgd29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBSZWdpc3RyYWJs
ZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0
YVN0b3JlKQogewogICAgIGF1dG8gcHJveHkgPSBhZG9wdFJlZigqbmV3IFdlYlByb2Nlc3NQcm94
eShwcm9jZXNzUG9vbCwgJndlYnNpdGVEYXRhU3RvcmUsIElzUHJld2FybWVkOjpObywgQ3Jvc3NP
cmlnaW5Nb2RlOjpTaGFyZWQsIENhcHRpdmVQb3J0YWxNb2RlOjpEaXNhYmxlZCkpOwogICAgIHBy
b3h5LT5tX3JlZ2lzdHJhYmxlRG9tYWluID0gV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0g
ICAgcHJveHktPmVuYWJsZVdvcmtlcnMod29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2wudXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CisgICAgcHJveHktPmVuYWJsZVJl
bW90ZVdvcmtlcnMod29ya2VyVHlwZSwgcHJvY2Vzc1Bvb2wudXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllckZvclJlbW90ZVdvcmtlcnMoKSk7CiAgICAgcHJveHktPmNvbm5lY3QoKTsKICAg
ICByZXR1cm4gcHJveHk7CiB9CkBAIC05OTcsNyArOTk3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiAgICAgLy8gSWYgdGhlIHdlYiBwcm9jZXNzIGJl
Y29tZXMgdW5yZXNwb25zaXZlIGFuZCBvbmx5IHJ1bnMgc2VydmljZS9zaGFyZWQgd29ya2Vycywg
a2lsbCBpdCBvdXJzZWx2ZXMgc2luY2UgdGhlcmUgYXJlIG5vIG5hdGl2ZSBjbGllbnRzIHRvIGRv
IGl0LgogICAgIGlmIChpc1J1bm5pbmdXb3JrZXJzKCkgJiYgbV9wYWdlTWFwLmlzRW1wdHkoKSkg
ewogICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0dfRVJST1IoUGVyZm9ybWFuY2VM
b2dnaW5nLCAiZGlkQmVjb21lVW5yZXNwb25zaXZlOiBUZXJtaW5hdGluZyB3b3JrZXItb25seSB3
ZWIgcHJvY2VzcyBiZWNhdXNlIGl0IGlzIHVucmVzcG9uc2l2ZSIpOwotICAgICAgICBkaXNhYmxl
V29ya2Vycyh7IFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIFdvcmtlclR5cGU6OlNoYXJlZFdv
cmtlciB9KTsKKyAgICAgICAgZGlzYWJsZVJlbW90ZVdvcmtlcnMoeyBSZW1vdGVXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyLCBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgfSk7CiAgICAg
ICAgIHRlcm1pbmF0ZSgpOwogICAgIH0KIH0KQEAgLTE2OTMsNyArMTY5Myw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBV
UkwmIHVybCkKICAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4geyB1cmwgfTsKICAgICBpZiAobV9yZWdpc3RyYWJsZURvbWFpbiAmJiAqbV9yZWdp
c3RyYWJsZURvbWFpbiAhPSByZWdpc3RyYWJsZURvbWFpbikgewogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICAgICAgZGlzYWJsZVdvcmtlcnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
cik7CisgICAgICAgIGRpc2FibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIpOwogI2VuZGlmCiAKICAgICAgICAgLy8gTnVsbCBvdXQgcmVnaXN0cmFibGUgZG9t
YWluIHNpbmNlIHRoaXMgcHJvY2VzcyBoYXMgbm93IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBkb21h
aW5zLgpAQCAtMTg3NCw3ICsxODc0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHMKIH0KICNl
bmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0
cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFJlbW90ZVdvcmtlclVz
ZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgaWYgKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQpAQCAtMTg4NCw3ICsx
ODg0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFdvcmtlclVzZXJBZ2VudChjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2Vy
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTZXRVc2VyQWdlbnQgeyB1c2VyQWdlbnQgfSwgMCk7
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3Jl
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQordm9pZCBXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVJlbW90ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYgc3RvcmUpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKQEAgLTE4OTQsMjEgKzE4OTQsMTQgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYgc3QKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwg
MCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKFdvcmtlclR5cGUgd29ya2VyVHlwZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVS
ZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSkK
IHsKLSAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlw
ZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uOworICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlw
ZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9y
bWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CiAgICAgQVNTRVJUKHdvcmtlcklu
Zm9ybWF0aW9uKTsKICAgICBpZiAoIXdvcmtlckluZm9ybWF0aW9uKQogICAgICAgICByZXR1cm47
CiAKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1
cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiB3b3JrZXJUeXBlPSV7cHVibGljfXMiLCB3b3Jr
ZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/ICJzaGFyZWQiIDogInNlcnZpY2Ui
KTsKLQotICAgIC8vIEZJWE1FOiBDbGllbnRzIGRvIG5vdCBwcm9wZXJseSBnZXQgcG9wdWxhdGVk
IGluIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gc28gd2UgY3VycmVudGx5IHRha2UgYW4gYXNz
ZXJ0aW9uIG5vIG1hdHRlciB3aGF0LgotICAgIGlmICh3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6
OlNoYXJlZFdvcmtlcikgewotICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRG
b3JlZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKLSAgICAgICAg
ICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmZvcmVncm91bmRB
Y3Rpdml0eSgiV29ya2VyIGZvciBmb3JlZ3JvdW5kIHZpZXcocykiX3MpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgInVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb246IHdvcmtlclR5cGU9JXtw
dWJsaWN9cyIsIHdvcmtlclR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8g
InNoYXJlZCIgOiAic2VydmljZSIpOwogCiAgICAgYm9vbCBzaG91bGRUYWtlRm9yZWdyb3VuZEFj
dGl2aXR5ID0gV1RGOjphbnlPZih3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLCBb
Jl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gJnByb2Nlc3MgIT0gdGhpcyAmJiAh
IXByb2Nlc3MubV9mb3JlZ3JvdW5kVG9rZW47CkBAIC0xOTI4LDcgKzE5MjEsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlIHdv
cmtlclR5cGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAod29ya2VyVHlwZSA9
PSBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyICYmIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91
bmRQcm9jZXNzaW5nKSB7CisgICAgaWYgKHdvcmtlclR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlciAmJiBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZykg
ewogICAgICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24s
ICJTZXJ2aWNlIFdvcmtlciBmb3IgYmFja2dyb3VuZCBwcm9jZXNzaW5nIik7CiAgICAgICAgIGlm
ICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZv
cm1hdGlvbi0+YWN0aXZpdHkpKQogICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2
aXR5ID0gbV90aHJvdHRsZXIuYmFja2dyb3VuZEFjdGl2aXR5KCJTZXJ2aWNlIFdvcmtlciBmb3Ig
YmFja2dyb3VuZCBwcm9jZXNzaW5nIl9zKTsKQEAgLTE5NDksMjggKzE5NDIsMzAgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYgc3QKICAgICB9LCAwKTsKIH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKLQotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpy
ZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJU
eXBlLCBXZWJQcm9jZXNzUHJveHkmIHByb3h5KQogewotICAgIGlmICghbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24pCisgICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09
IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRp
b24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBpZiAoIXdvcmtlckluZm9ybWF0
aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0co
U2VydmljZVdvcmtlciwgInJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3M6IGNsaWVu
dFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50aWZp
ZXIoKSk7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcy5h
ZGQocHJveHkpOwotICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcik7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFdvcmtlciwg
InJlZ2lzdGVyV29ya2VyQ2xpZW50UHJvY2Vzczogd29ya2VyVHlwZT0le3B1YmxpY31zLCBjbGll
bnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCB3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5
cGU6OlNoYXJlZFdvcmtlciA/ICJzaGFyZWQiIDogInNlcnZpY2UiLCAmcHJveHksIHByb3h5LnBy
b2Nlc3NJZGVudGlmaWVyKCkpOworICAgIHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNz
ZXMuYWRkKHByb3h5KTsKKyAgICB1cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdv
cmtlclR5cGUpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCit2b2lkIFdlYlByb2Nl
c3NQcm94eTo6dW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2Vy
VHlwZSB3b3JrZXJUeXBlLCBXZWJQcm9jZXNzUHJveHkmIHByb3h5KQogewotICAgIGlmICghbV9z
ZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCisgICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3
b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29y
a2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBpZiAoIXdv
cmtlckluZm9ybWF0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBXRUJQUk9DRVNTUFJPWFlf
UkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
UHJvY2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94eS5w
cm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xp
ZW50UHJvY2Vzc2VzLnJlbW92ZShwcm94eSk7Ci0gICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVM
RUFTRV9MT0coV29ya2VyLCAidW5yZWdpc3RlcldvcmtlckNsaWVudFByb2Nlc3M6IHdvcmtlclR5
cGU9JXtwdWJsaWN9cywgY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgd29ya2VyVHlw
ZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyAic2hhcmVkIiA6ICJzZXJ2aWNl
IiwgJnByb3h5LCBwcm94eS5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICB3b3JrZXJJbmZvcm1h
dGlvbi0+Y2xpZW50UHJvY2Vzc2VzLnJlbW92ZShwcm94eSk7CisgICAgdXBkYXRlUmVtb3RlV29y
a2VyUHJvY2Vzc0Fzc2VydGlvbih3b3JrZXJUeXBlKTsKIH0KIAorI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKwogYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1NlcnZpY2VXb3JrZXJGb3JlZ3Jv
dW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24gPyBQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2
aXR5KG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkgOiBmYWxzZTsKQEAgLTE5
ODgsNyArMTk4Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzdGFydFNlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICJzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2lu
ZyIpOwogICAgIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gdHJ1ZTsK
LSAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIpOworICAgIHVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2Vy
VHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2
aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQpAQCAtMTk5OCwzOCArMTk5MywzOCBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5n
KCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
ImVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyIpOwogICAgIG1faGFzU2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nID0gZmFsc2U7Ci0gICAgdXBkYXRlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICB1cGRhdGVSZW1v
dGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIp
OwogfQogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAotdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpc2FibGVXb3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPiB3b3JrZXJUeXBlKQor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVSZW1vdGVXb3JrZXJzKE9wdGlvblNldDxSZW1v
dGVXb3JrZXJUeXBlPiB3b3JrZXJUeXBlKQogewogICAgIEFTU0VSVCghd29ya2VyVHlwZS5pc0Vt
cHR5KCkpOwogCiAgICAgYm9vbCBkaWRDaGFuZ2UgPSBmYWxzZTsKLSAgICBpZiAod29ya2VyVHlw
ZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSAmJiBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbikgeworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIpICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKSB7CiAgICAg
ICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID0geyB9OwogICAgICAgICBkaWRDaGFuZ2Ug
PSB0cnVlOwogICAgIH0KLSAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpT
aGFyZWRXb3JrZXIpICYmIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24pIHsKKyAgICBpZiAod29y
a2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpICYmIG1fc2hh
cmVkV29ya2VySW5mb3JtYXRpb24pIHsKICAgICAgICAgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlv
biA9IHsgfTsKICAgICAgICAgZGlkQ2hhbmdlID0gdHJ1ZTsKICAgICB9CiAgICAgaWYgKCFkaWRD
aGFuZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
RyhQcm9jZXNzLCAiZGlzYWJsZVdvcmtlcnM6IERpc2FibGluZyB3b3JrZXJzIChTaGFyZWRXb3Jr
ZXJzPSVkLCBTZXJ2aWNlV29ya2Vycz0lZCkiLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5
cGU6OlNoYXJlZFdvcmtlciksIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlcikpOworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAiZGlz
YWJsZVdvcmtlcnM6IERpc2FibGluZyB3b3JrZXJzIChTaGFyZWRXb3JrZXJzPSVkLCBTZXJ2aWNl
V29ya2Vycz0lZCkiLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJl
ZFdvcmtlciksIHdvcmtlclR5cGUuY29udGFpbnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdv
cmtlcikpOwogCiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAog
ICAgIGlmICghaXNSdW5uaW5nV29ya2VycygpKQotICAgICAgICBwcm9jZXNzUG9vbCgpLnJlbW92
ZUZyb21Xb3JrZXJQcm9jZXNzZXMoKnRoaXMpOworICAgICAgICBwcm9jZXNzUG9vbCgpLnJlbW92
ZUZyb21SZW1vdGVXb3JrZXJQcm9jZXNzZXMoKnRoaXMpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VX
b3JrZXIpKQorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKICNlbmRpZgotICAgIGlmICh3b3JrZXJUeXBlLmNv
bnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikpCisgICAgaWYgKHdvcmtlclR5cGUuY29u
dGFpbnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSkKICAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0s
IDApOwogCiAgICAgbWF5YmVTaHV0RG93bigpOwpAQCAtMjA1MSwxMCArMjA0NiwxMCBAQCBzdGF0
aWMgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEsIFVSTD4+
IGNvbnRlbnRSdWxlTGlzdHNGcgogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpl
bmFibGVXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGUgd29y
a2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYgdXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllcikKIHsKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9M
T0coU2VydmljZVdvcmtlciwgImVuYWJsZVdvcmtlcnM6IHdvcmtlclR5cGU9JXUiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4od29ya2VyVHlwZSkpOwotICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9u
ID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtl
ckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgYXV0byYgd29y
a2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdv
cmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbjsKICAgICBBU1NFUlQoIXdvcmtlckluZm9ybWF0aW9uKTsKIAogICAgIHdvcmtlckluZm9y
bWF0aW9uID0gUmVtb3RlV29ya2VySW5mb3JtYXRpb24gewpAQCAtMjA3MSw3ICsyMDY2LDcgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMoV29ya2VyVHlwZSB3b3JrZXJUeXBl
LCBjb25zdCBVc2VyQ29udGVudENvbnQKICAgICB9OwogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNw
b25zaXZlbmVzc1RpbWVyKCk7CiAKLSAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdv
cmtlclR5cGUpOworICAgIHVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2Vy
VHlwZSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVTbGVlcERpc2FibGVy
KFNsZWVwRGlzYWJsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgcmVhc29u
LCBib29sIGRpc3BsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CmluZGV4IDcwZTg5MDUxY2NiYmM3ZTkwNDZiYzFjOTk4YjkwYTBiNjhlZjY1OTkuLjJlMTZmMDky
OTI3MDlkMzM1ODNmMmE4MTdhM2ZlMTYxMTNiMzE1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUHJvY2Vz
c1Rocm90dGxlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKICNpbmNs
dWRlICJSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJSZW1vdGVX
b3JrZXJUeXBlLmgiCiAjaW5jbHVkZSAiUmVzcG9uc2l2ZW5lc3NUaW1lci5oIgogI2luY2x1ZGUg
IlNwZWVjaFJlY29nbml0aW9uU2VydmVyLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllci5oIgpAQCAtMTM2LDEzICsxMzcsOSBAQCBwdWJsaWM6CiAKICAgICBlbnVt
IGNsYXNzIFNob3VsZExhdW5jaFByb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwogICAgIGVudW0g
Y2xhc3MgQ2FwdGl2ZVBvcnRhbE1vZGUgOiBib29sIHsgRGlzYWJsZWQsIEVuYWJsZWQgfTsKLSAg
ICBlbnVtIGNsYXNzIFdvcmtlclR5cGUgOiB1aW50MzJfdCB7Ci0gICAgICAgIFNlcnZpY2VXb3Jr
ZXIgPSAxIDw8IDAsCi0gICAgICAgIFNoYXJlZFdvcmtlciA9IDEgPDwgMQotICAgIH07CiAKICAg
ICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlKFdlYlByb2Nlc3NQb29sJiwgV2Vi
c2l0ZURhdGFTdG9yZSosIENhcHRpdmVQb3J0YWxNb2RlLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6
Q3Jvc3NPcmlnaW5Nb2RlID0gV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlOjpTaGFyZWQsIFNob3Vs
ZExhdW5jaFByb2Nlc3MgPSBTaG91bGRMYXVuY2hQcm9jZXNzOjpZZXMpOwotICAgIHN0YXRpYyBS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JXb3JrZXJzKFdvcmtlclR5cGUsIFdlYlByb2Nl
c3NQb29sJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYp
OworICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGVGb3JSZW1vdGVXb3JrZXJz
KFJlbW90ZVdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAgICAgfldlYlByb2Nlc3NQcm94eSgpOwog
CkBAIC0xNjUsOCArMTYyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNJblByb2Nlc3NDYWNo
ZShib29sLCBXaWxsU2h1dERvd24gPSBXaWxsU2h1dERvd246Ok5vKTsKICAgICBib29sIGlzSW5Q
cm9jZXNzQ2FjaGUoKSBjb25zdCB7IHJldHVybiBtX2lzSW5Qcm9jZXNzQ2FjaGU7IH0KIAotICAg
IHZvaWQgZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyJik7Ci0gICAgdm9pZCBkaXNhYmxlV29ya2VycyhPcHRpb25TZXQ8V29ya2Vy
VHlwZT4pOworICAgIHZvaWQgZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlLCBj
b25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJik7CisgICAgdm9pZCBkaXNhYmxl
UmVtb3RlV29ya2VycyhPcHRpb25TZXQ8UmVtb3RlV29ya2VyVHlwZT4pOwogCiAgICAgV2Vic2l0
ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSgpIGNvbnN0IHsgQVNTRVJUKG1fd2Vic2l0ZURh
dGFTdG9yZSk7IHJldHVybiAqbV93ZWJzaXRlRGF0YVN0b3JlOyB9CiAgICAgdm9pZCBzZXRXZWJz
aXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKQEAgLTM2NiwxNSArMzYzLDE1IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlQXVkaWJsZU1lZGlhQXNzZXJ0aW9ucygpOwogCi0gICAg
dm9pZCBzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCB1cGRhdGVX
b3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICB2
b2lkIHNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHVw
ZGF0ZVJlbW90ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYpOwogICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbihXb3JrZXJUeXBlKTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJv
Y2VzcyhSZW1vdGVXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUHJveHkmKTsKKyAgICB2b2lkIHVucmVn
aXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUsIFdlYlByb2Nl
c3NQcm94eSYpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihS
ZW1vdGVXb3JrZXJUeXBlKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBl
c3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgYm9vbCBoYXNTZXJ2aWNl
V29ya2VyUGFnZVByb3h5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVByb3h5SUQpIHsgcmV0
dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5yZW1vdGVXb3JrZXJQYWdlUHJveHlJRCA9PSBwYWdlUHJveHlJRDsgfQotICAgIHZvaWQg
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKLSAg
ICB2b2lkIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0
aW5nKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5
Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3Vu
ZFByb2Nlc3NpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDYwZDNlOTgyMDVkNWRkMzk4NGU1ODdjZDMwMTBlOTgzMGQyMzg3NTAu
LmRlMTY5ZTdjMmE3YjQ5OGIzM2YxOGRlZTgzOWU0OWUzYWZlZjhlNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODkzLDYgKzg5Myw3
IEBACiAJCTQ2NzFGRjFGMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MUZG
MUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggKi87IH07CiAJ
CTQ2N0U0M0U4MjI0M0ZGN0QwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3RTQz
RTcyMjQzRkY2RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggKi87
IH07CiAJCTQ2ODA5QTdDMjNEOTIyNUUwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MDlBN0EyM0Q5MjI1
MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi87IH07CisJCTQ2OTFDQjlCMjdCMkREMkQw
MEIyOUFBRiAvKiBSZW1vdGVXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjkxQ0I5QTI3QjJERDE4MDBCMjlBQUYgLyogUmVtb3RlV29y
a2VyVHlwZS5oICovOyB9OwogCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyogQmFja2dyb3Vu
ZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3Vu
ZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJCTQ2QjA1MjQ3MjI2NjhEODUw
MDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjA1MjQ0
MjI2NjhEMjMwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0Nv
bnRyb2xsZXIuaCAqLzsgfTsKIAkJNDZCRUI2RDcyMkZCOUJENzAwMjY5ODY3IC8qIFN0b3JhZ2VB
cmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJF
QjZENTIyRkI5QkQ2MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCAqLzsgfTsKQEAgLTQyNzEsNiAr
NDI3Miw3IEBACiAJCTQ2ODM4NjY4Mjc2M0ZBQjEwMENGOTE4MiAvKiBXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlclNl
cnZlckNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njg5Qjkw
RjI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0Njg5QjkxMDI3NTZEMTQzMDAwN0M2NTEgLyogUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ2OTFDQjlBMjdCMkREMTgwMEIyOUFBRiAvKiBSZW1vdGVXb3Jr
ZXJUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVdvcmtlclR5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY5NDNEQ0IyNzYzRjgzNDAwNEI2MTBFIC8qIFdlYlNoYXJlZFdv
cmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViU2hhcmVkV29ya2VyT2Jq
ZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY5REU4MDIyNzNFQ0M1RDAwOTMwMjc2IC8qIFByb2Nlc3NMYXVuY2hlckNvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJvY2Vzc0xhdW5jaGVyQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVE
QSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVz
c1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyNjEsNiArNzI2Myw3
IEBACiAJCQkJOUIxMjI5RDAyM0ZGMkE1RTAwOENBNzUxIC8qIFJlbW90ZUF1ZGlvRGVzdGluYXRp
b25JZGVudGlmaWVyLmggKi8sCiAJCQkJNUM4MEIzREQyMzY5MEYxMDAwODZFNkRFIC8qIFJlbW90
ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5jcHAgKi8sCiAJCQkJNUM4MEIzREIyMzY5MEQ4RDAw
ODZFNkRFIC8qIFJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5oICovLAorCQkJCTQ2OTFD
QjlBMjdCMkREMTgwMEIyOUFBRiAvKiBSZW1vdGVXb3JrZXJUeXBlLmggKi8sCiAJCQkJNzIwMzQ0
OUIyNkE2QzQ3NjAwMEE1RjU0IC8qIFJlbmRlcmluZ1VwZGF0ZUlELmggKi8sCiAJCQkJNUNCN0FG
RTYyM0M2ODFCMDAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCAqLywKIAkJCQk1QzAwOTkz
QjI0MTdGQjdFMDBENTNDMjUgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuaCAq
LywKQEAgLTEzMzYxLDYgKzEzMzY0LDcgQEAKIAkJCQlBNTVCQTgyNTFCQTI1Q0ZCMDA3Q0QzM0Qg
LyogUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NkM1QjdDRTI3QUFEREQzMDAwQzVCNDcgLyogUmVtb3RlV29ya2VyRnJhbWVMb2FkZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QzVCN0NGMjdBQURERDYwMDBDNUI0NyAvKiBSZW1v
dGVXb3JrZXJMaWJXZWJSVENQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY5MUNCOUIy
N0IyREQyRDAwQjI5QUFGIC8qIFJlbW90ZVdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDQjdBRkU3MjNDNjgyMDcwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2QkU5NjlDRDFFNTRFMDU0MDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0NsYXNzaWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZCRTk2OUNCMUU1NEQ0Q0YwMDhC
NzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmggaW4gSGVhZGVy
cyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451369</attachid>
            <date>2022-02-09 07:12:42 -0800</date>
            <delta_ts>2022-02-09 07:19:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236271-20220209071241.patch</filename>
            <type>text/plain</type>
            <size>78199</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDYxNmIwMDQ5NDc3MWZhODkz
NjE3MjU0OTExYmI0MjIxZjM2YzcxOTEuLjQwYzhiZDQxNjJmNWRmMThkZTkxOWQ2NTg4MmNlNzZl
MmRkYzZhMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIwMjItMDItMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBUYWtlIGFkZXF1YXRlIHBy
b2Nlc3MgYXNzZXJ0aW9uIGZvciB0aGUgU2hhcmVkV29ya2VyIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjI3MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgdHJhY2sgb2YgY2xpZW50
IHByb2Nlc3NlcyB0aGF0IHJlbHkgb24gYSBwYXJ0aWN1bGFyIFNoYXJlZFdvcmtlciBwcm9jZXNz
IGFuZCB0YWtlIHRoZSBhZGVxdWF0ZQorICAgICAgICBwcm9jZXNzIGFzc2VydGlvbiB0byBrZWVw
IHRoZSBwcm9jZXNzIHJ1bm5pbmcgb24gaU9TIHdoZW4gbmVjZXNzYXJ5LiBUaGlzIGFsbG93cyB1
cyB0byBnZXQgcmlkIG9mCisgICAgICAgIHRoZSBoYWNrIEkgbGFuZGVkIHByZXZpb3VzbHkgdG8g
YWx3YXlzIHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiBvbiBiZWhhbGYgb2YgdGhlIHNoYXJlZCB3
b3JrZXIKKyAgICAgICAgcHJvY2VzcyAoZXZlbiBpZiBhbGwgaXRzIGNsaWVudHMgYXJlIHN1c3Bl
bmRlZCkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2
aWNlV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpXZWJTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXI6OmRpZENyZWF0ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjphZGRTaGFyZWRXb3JrZXJPYmplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnJlbW92ZVNoYXJlZFdvcmtlck9iamVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6Zm9yRWFjaFNoYXJlZFdvcmtlck9i
amVjdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6Y29udGV4dENv
bm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpzaGFy
ZWRXb3JrZXJPYmplY3RzQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OnNoYXJlZFdvcmtlck9iamVjdHMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hh
cmVkV29ya2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
OjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3du
U2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpy
ZW1vdmVDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6YWRkU2hhcmVkV29ya2VyT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
cmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAuCisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJlbW90ZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVSZW1vdGVXb3JrZXJVc2VyQWdlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlv
bnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFn
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JSZW1vdGVXb3JrZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRSZW1vdGVXb3JrZXJVc2Vy
QWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlbW90ZVdv
cmtlclByZWZlcmVuY2VzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVu
dFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZl
cmVuY2VzU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wMi0wOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgV2ViRHJpdmVyOiBhZGQgYSBqYXZhc2NyaXB0
IGF0b20gdG8gZ2V0IHRoZSB2aXNpYmxlIHRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggYzdiMTdmZDcwNzg1NGIxMjg0OThkMTExOGY0ZTZlN2Q1YjNkODVmZC4uODMwN2FkMjc0
OGY5YzYyOWEyMGMwNjk3YTNjNDNmNGU1ZDAzYzNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJQaW5nTG9hZC5oIgogI2luY2x1ZGUg
IlByZWNvbm5lY3RUYXNrLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2Vy
UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlckZldGNoVGFza01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCkBAIC0xMjQ4LDcgKzEyNDksNyBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnJlZ2lzdGVyU2hhcmVkV29ya2VyQ29u
bmVjdGlvbigpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzaGFyZWRXb3Jr
ZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpCiB7CiAgICAgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJzaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZDoiKTsKLSAgICBtX25ldHdvcmtQcm9jZXNz
LT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpS
ZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgUmVtb3RlV29ya2Vy
VHlwZTo6U2hhcmVkV29ya2VyLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOwogCiAgICAg
bV9zaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CkBAIC0xMjk5LDcg
KzEzMDAsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbG9zZVNXQ29u
dGV4dENvbm5lY3Rpb24oKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2Vy
dmljZVdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCgpCiB7CiAg
ICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAic2VydmljZVdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZDogV2ViUHJvY2VzcyBubyBsb25n
ZXIgdXNlZnVsIGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyIpOwotICAgIG1fbmV0d29ya1By
b2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OlNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVk
IHsgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1By
b3h5OjpSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkIHsgUmVtb3Rl
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsK
IAogICAgIG1fc3dDb250ZXh0Q29ubmVjdGlvbiA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IGIzOTBjYWZhNjA0MWYzZTgwMWZkMmQzYThj
MjQzYjU1NDc1MTIyOTQuLjMyNmM5Yjc3YTVkMzYyYTRhNzhiZmU1MTAzYTU2YmY4NTFiYTliNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0zNyw2ICszNyw3
IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNp
bmNsdWRlICJSZW1vdGVXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNz
YWdlcy5oIgpAQCAtMzc4LDcgKzM3OSw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpy
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wCiAKICAg
ICBpZiAoY29udGV4dENvbm5lY3Rpb24pIHsKICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IHN0
YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiY+KCpjb250ZXh0Q29ubmVj
dGlvbik7Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudFByb2Nlc3MgeyBpZGVudGlmaWVyKCksIGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lk
ZW50aWZpZXIoKSB9LCAwKTsKKyAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVnaXN0
ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzIHsgUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdv
cmtlciwgaWRlbnRpZmllcigpLCBjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwg
MCk7CiAgICAgfQogfQogCkBAIC00MDMsNyArNDA0LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNjcmlwdEV4ZWN1dGlv
bkMKICAgICBpZiAoaXNEZWxldGVkT3JpZ2luKSB7CiAgICAgICAgIGlmIChhdXRvKiBjb250ZXh0
Q29ubmVjdGlvbiA9IHNlcnZlcigpLmNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21h
aW4oUmVnaXN0cmFibGVEb21haW4geyBjbGllbnRPcmlnaW4uY2xpZW50T3JpZ2luIH0pKSB7CiAg
ICAgICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uJj4oKmNvbnRleHRDb25uZWN0aW9uKTsKLSAgICAgICAgICAgIG1fbmV0
d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OlVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyB7
IGlkZW50aWZpZXIoKSwgY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOwor
ICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VW5yZWdpc3RlclJlbW90ZVdvcmtl
ckNsaWVudFByb2Nlc3MgeyBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBpZGVudGlm
aWVyKCksIGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKICAgICAgICAg
fQogICAgIH0KIH0KQEAgLTU0NCw3ICs1NDUsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlv
bjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbgog
ICAgIGNvbm5lY3Rpb24uc2V0VGhyb3R0bGVTdGF0ZShjb21wdXRlVGhyb3R0bGVTdGF0ZShjb25u
ZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpKTsKIAogICAgIGlmIChoYXNNYXRjaGluZ0NsaWVu
dChjb25uZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCkpKQotICAgICAgICBtX25ldHdvcmtQcm9j
ZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzIHsgaWRlbnRpZmll
cigpLCBjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyB7
IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIGlkZW50aWZpZXIoKSwgY29ubmVjdGlv
bi53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOwogfQogCiB2b2lkIFdlYlNXU2VydmVyQ29u
bmVjdGlvbjo6dGVybWluYXRlV29ya2VyRnJvbUNsaWVudChTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNh
bGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAKaW5kZXggODAwOTEzOTUyODBjOGQ3NjBl
ZjFhMWQxMjFjMjE0NzVmNDk1ZWJiOC4uMDUzNzY2NmEwOGVjYWQyYTU4MGE4MzVmNWRhZGI5YzBm
ODExODc1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyLmgiCiAKKyNpbmNs
dWRlICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuaCIKKyNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpA
QCAtMzksOCArNDEsOSBAQCBzdGF0aWMgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVu
dGlmaWVyLCBXZWJTaGFyZWRXb3JrZXIqPiYgYWxsV29ya2VycygpCiAgICAgcmV0dXJuIGFsbFdv
cmtlcnM7CiB9CiAKLVdlYlNoYXJlZFdvcmtlcjo6V2ViU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNv
cmU6OlNoYXJlZFdvcmtlcktleSYga2V5LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3
b3JrZXJPcHRpb25zKQotICAgIDogbV9pZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklk
ZW50aWZpZXI6OmdlbmVyYXRlKCkpCitXZWJTaGFyZWRXb3JrZXI6OldlYlNoYXJlZFdvcmtlcihX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIHNlcnZlciwgY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2Vy
S2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtlck9wdGlvbnMpCisg
ICAgOiBtX3NlcnZlcihzZXJ2ZXIpCisgICAgLCBtX2lkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVk
V29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fa2V5KGtleSkKICAgICAsIG1f
d29ya2VyT3B0aW9ucyh3b3JrZXJPcHRpb25zKQogewpAQCAtNTIsNiArNTUsNyBAQCBXZWJTaGFy
ZWRXb3JrZXI6On5XZWJTaGFyZWRXb3JrZXIoKQogewogICAgIEFTU0VSVChhbGxXb3JrZXJzKCku
Z2V0KG1faWRlbnRpZmllcikgPT0gdGhpcyk7CiAgICAgYWxsV29ya2VycygpLnJlbW92ZShtX2lk
ZW50aWZpZXIpOworICAgIEFTU0VSVChtX3NoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpKTsK
IH0KIAogV2ViU2hhcmVkV29ya2VyKiBXZWJTaGFyZWRXb3JrZXI6OmZyb21JZGVudGlmaWVyKFdl
YkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKQEAgLTY0LDQgKzY4LDM1
IEBAIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIFdlYlNoYXJlZFdvcmtlcjo6cmVnaXN0cmFi
bGVEb21haW4oKSBjb25zdAogICAgIHJldHVybiBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7
IHVybCgpIH07CiB9CiAKK3ZvaWQgV2ViU2hhcmVkV29ya2VyOjpkaWRDcmVhdGVDb250ZXh0Q29u
bmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0
Q29ubmVjdGlvbikKK3sKKyAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgOiBtX3NoYXJlZFdvcmtlck9iamVjdHMua2V5cygpKQorICAgICAgICBjb250ZXh0Q29ubmVj
dGlvbi5hZGRTaGFyZWRXb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7
Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyOjphZGRTaGFyZWRXb3JrZXJPYmplY3QoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiBwb3J0KQoreworICAg
IG1fc2hhcmVkV29ya2VyT2JqZWN0cy5hZGQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
cG9ydCk7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbigpKQor
ICAgICAgICBjb25uZWN0aW9uLT5hZGRTaGFyZWRXb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcik7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyOjpyZW1vdmVTaGFyZWRX
b3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyKQoreworICAgIG1fc2hhcmVkV29ya2VyT2JqZWN0cy5yZW1v
dmUoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rp
b24gPSBjb250ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uLT5yZW1vdmVTaGFy
ZWRXb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
V2ViU2hhcmVkV29ya2VyOjpmb3JFYWNoU2hhcmVkV29ya2VyT2JqZWN0KGNvbnN0IEZ1bmN0aW9u
PHZvaWQoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYpPiYgYXBwbHkpIGNvbnN0Cit7CisgICAgZm9yIChh
dXRvJiBbc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgcG9ydF0gOiBtX3NoYXJlZFdvcmtl
ck9iamVjdHMpCisgICAgICAgIGFwcGx5KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBv
cnQpOworfQorCitXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBXZWJT
aGFyZWRXb3JrZXI6OmNvbnRleHRDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9z
ZXJ2ZXIuY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURv
bWFpbigpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5o
CmluZGV4IDM0YjdhNGE4NDNjZWY5YTE3ZWJjMGIzYTVmYTRjY2Q0ZDA2MTZiMzQuLjkzYmI1NjY4
MmRhMTkyY2YzNDc3YWUwNTE5ODI0NDZjNDAwM2NjM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5o
CkBAIC0zOSwxMCArMzksMTMgQEAgY2xhc3MgUmVnaXN0cmFibGVEb21haW47CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitjbGFzcyBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI7CitjbGFzcyBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworCiBjbGFzcyBXZWJTaGFyZWRXb3Jr
ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViU2hhcmVkV29ya2VyPiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV2ViU2hhcmVkV29ya2VyKGNvbnN0IFdl
YkNvcmU6OlNoYXJlZFdvcmtlcktleSYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKTsK
KyAgICBXZWJTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyJiwgY29uc3QgV2ViQ29y
ZTo6U2hhcmVkV29ya2VyS2V5JiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpOwogICAg
IH5XZWJTaGFyZWRXb3JrZXIoKTsKIAogICAgIHN0YXRpYyBXZWJTaGFyZWRXb3JrZXIqIGZyb21J
ZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIpOwpAQCAtNTMsNyArNTYs
MTQgQEAgcHVibGljOgogICAgIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luKCkg
Y29uc3QgeyByZXR1cm4gbV9rZXkub3JpZ2luOyB9CiAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25z
dCB7IHJldHVybiBtX2tleS51cmw7IH0KICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBy
ZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0OwotICAgIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydD4mIHNo
YXJlZFdvcmtlck9iamVjdHMoKSB7IHJldHVybiBtX3NoYXJlZFdvcmtlck9iamVjdHM7IH0KKyAg
ICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uKiBjb250ZXh0Q29ubmVj
dGlvbigpIGNvbnN0OworCisgICAgdm9pZCBhZGRTaGFyZWRXb3JrZXJPYmplY3QoV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRN
ZXNzYWdlUG9ydCYpOworICAgIHZvaWQgcmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIHVuc2lnbmVkIHNoYXJlZFdvcmtl
ck9iamVjdHNDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkV29ya2VyT2JqZWN0cy5zaXpl
KCk7IH0KKyAgICB2b2lkIGZvckVhY2hTaGFyZWRXb3JrZXJPYmplY3QoY29uc3QgRnVuY3Rpb248
dm9pZChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Jik+JikgY29uc3Q7CisKKyAgICB2b2lkIGRpZENyZWF0
ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mKTsKIAogICAgIGJvb2wgaXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1J1bm5pbmc7
IH0KICAgICB2b2lkIG1hcmtBc1J1bm5pbmcoKSB7IG1faXNSdW5uaW5nID0gdHJ1ZTsgfQpAQCAt
NjgsNiArNzgsNyBAQCBwcml2YXRlOgogICAgIFdlYlNoYXJlZFdvcmtlcihjb25zdCBXZWJTaGFy
ZWRXb3JrZXImKSA9IGRlbGV0ZTsKICAgICBXZWJTaGFyZWRXb3JrZXImIG9wZXJhdG9yPShjb25z
dCBXZWJTaGFyZWRXb3JrZXImKSA9IGRlbGV0ZTsKIAorICAgIFdlYlNoYXJlZFdvcmtlclNlcnZl
ciYgbV9zZXJ2ZXI7CiAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CiAgICAgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5IG1fa2V5OwogICAgIFdlYkNvcmU6
Oldvcmtlck9wdGlvbnMgbV93b3JrZXJPcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlci5jcHAKaW5kZXggZmM2ODMwMjE0ZDQwYzQ3ZjIyZTk1NTljYzg2YWQ3MjVhYjUxMDVi
My4uYjhlNDcxY2I0NWI1MDYwNGFmYmM4N2FmMmNkZjk4Mzk1YWU5M2UyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIFBBTDo6U2Vzc2lv
bklEIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2Vzc2lvbklEKCkKIHZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYm
IHNoYXJlZFdvcmtlcktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0JiYgcG9ydCwgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYmIHdvcmtlck9wdGlvbnMpCiB7CiAg
ICAgYXV0byYgc2hhcmVkV29ya2VyID0gbV9zaGFyZWRXb3JrZXJzLmVuc3VyZShzaGFyZWRXb3Jr
ZXJLZXksIFsmXSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlcj4o
c2hhcmVkV29ya2VyS2V5LCB3b3JrZXJPcHRpb25zKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8V2ViU2hhcmVkV29ya2VyPigqdGhpcywgc2hhcmVkV29ya2VyS2V5LCB3b3JrZXJPcHRpb25z
KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29ya2Vy
LCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyPSV7cHJpdmF0ZX1zLCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUi
IFBSSXU2NCwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCksIHNoYXJlZFdvcmtlci0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCkBAIC02Niwx
NiArNjYsMTYgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3Jr
ZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiYgc2hhcmUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLmFkZChzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0KTsKKyAgICBzaGFyZWRXb3JrZXItPmFkZFNoYXJl
ZFdvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0KTsKIAotICAg
IGlmIChzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5zaXplKCkgPiAxKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6
cmVxdWVzdFNoYXJlZFdvcmtlcjogQSBzaGFyZWQgd29ya2VyIHdpdGggdGhpcyBVUkwgYWxyZWFk
eSBleGlzdHMgKG5vdyBzaGFyZWQgYnkgJXUgc2hhcmVkIHdvcmtlciBvYmplY3RzKSIsIHNoYXJl
ZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLnNpemUoKSk7CisgICAgaWYgKHNoYXJlZFdv
cmtlci0+c2hhcmVkV29ya2VyT2JqZWN0c0NvdW50KCkgPiAxKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdv
cmtlcjogQSBzaGFyZWQgd29ya2VyIHdpdGggdGhpcyBVUkwgYWxyZWFkeSBleGlzdHMgKG5vdyBz
aGFyZWQgYnkgJXUgc2hhcmVkIHdvcmtlciBvYmplY3RzKSIsIHNoYXJlZFdvcmtlci0+c2hhcmVk
V29ya2VyT2JqZWN0c0NvdW50KCkpOwogICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5kaWRGaW5p
c2hGZXRjaGluZygpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9
IG1fY29ubmVjdGlvbnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lk
ZW50aWZpZXIoKSkpCiAgICAgICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5V29y
a2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCB7
IH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmlzUnVubmluZygpKSB7
Ci0gICAgICAgICAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IG1fY29udGV4dENvbm5lY3Rp
b25zLmdldChzaGFyZWRXb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgICAgICAgICAg
YXV0byogY29udGV4dENvbm5lY3Rpb24gPSBzaGFyZWRXb3JrZXItPmNvbnRleHRDb25uZWN0aW9u
KCk7CiAgICAgICAgICAgICBBU1NFUlQoY29udGV4dENvbm5lY3Rpb24pOwogICAgICAgICAgICAg
aWYgKGNvbnRleHRDb25uZWN0aW9uKQogICAgICAgICAgICAgICAgIGNvbnRleHRDb25uZWN0aW9u
LT5wb3N0Q29ubmVjdEV2ZW50KCpzaGFyZWRXb3JrZXIsIHBvcnQpOwpAQCAtOTgsMTAgKzk4LDEw
IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdv
cmtlclNjcmlwdChXZWJTaGFyZWRXb3JrZXImCiB7CiAgICAgUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGluZ1NoYXJlZFdvcmtl
clNjcmlwdCBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBzaGFyZWRXb3JrZXI9
JXAsIHN1Y2Nlc3M9JWQiLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLnRvVUludDY0KCksICZz
aGFyZWRXb3JrZXIsIGZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKTsKIAotICAgIGZvciAoYXV0
byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyLnNoYXJlZFdvcmtl
ck9iamVjdHMoKS5rZXlzKCkpIHsKKyAgICBzaGFyZWRXb3JrZXIuZm9yRWFjaFNoYXJlZFdvcmtl
ck9iamVjdChbJl0oYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBhdXRvJikgewog
ICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkpCiAgICAgICAg
ICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RPZkxvYWRDb21wbGV0aW9u
KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGZldGNoUmVzdWx0LmVycm9yKTsKLSAgICB9
CisgICAgfSk7CiAKICAgICBpZiAoIWZldGNoUmVzdWx0LmVycm9yLmlzTnVsbCgpKSB7CiAgICAg
ICAgIG1fc2hhcmVkV29ya2Vycy5yZW1vdmUoc2hhcmVkV29ya2VyLmtleSgpKTsKQEAgLTExMCwx
NCArMTEwLDExIEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpkaWRGaW5pc2hGZXRjaGlu
Z1NoYXJlZFdvcmtlclNjcmlwdChXZWJTaGFyZWRXb3JrZXImCiAKICAgICBzaGFyZWRXb3JrZXIu
c2V0RmV0Y2hSZXN1bHQoV1RGTW92ZShmZXRjaFJlc3VsdCkpOwogCi0gICAgYXV0byByZWdpc3Ry
YWJsZURvbWFpbiA9IHNoYXJlZFdvcmtlci5yZWdpc3RyYWJsZURvbWFpbigpOwotICAgIGF1dG8q
IGNvbnRleHRDb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bihyZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikgewotICAg
ICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CisgICAgaWYg
KGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gc2hhcmVkV29ya2VyLmNvbnRleHRDb25uZWN0aW9u
KCkpIHsKKyAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmxhdW5jaFNoYXJlZFdvcmtlcihzaGFy
ZWRXb3JrZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgY29udGV4dENvbm5lY3Rp
b24tPmxhdW5jaFNoYXJlZFdvcmtlcihzaGFyZWRXb3JrZXIpOworICAgIGNyZWF0ZUNvbnRleHRD
b25uZWN0aW9uKHNoYXJlZFdvcmtlci5yZWdpc3RyYWJsZURvbWFpbigpKTsKIH0KIAogYm9vbCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6Om5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21h
aW4pIGNvbnN0CkBAIC0xNDYsNyArMTQzLDYgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OmNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG8KIAog
ICAgICAgICBBU1NFUlQobV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLmNvbnRhaW5z
KHJlZ2lzdHJhYmxlRG9tYWluKSk7CiAgICAgICAgIG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9u
RG9tYWlucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOwotCiAgICAgICAgIGlmIChtX2NvbnRl
eHRDb25uZWN0aW9ucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTE3Niw3ICsxNzIsNyBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZQogCiAg
ICAgbV9jb250ZXh0Q29ubmVjdGlvbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKIAotICAg
IGlmIChuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFi
bGVEb21haW4pKQorICAgIGlmIChjb250ZXh0Q29ubmVjdGlvbi5oYXNTaGFyZWRXb3JrZXJPYmpl
Y3RzKCkpCiAgICAgICAgIGNyZWF0ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWlu
KTsKIH0KIApAQCAtMTg1LDcgKzE4MSwxMSBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6
Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udAogICAg
IFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y29udGV4
dENvbm5lY3Rpb25DcmVhdGVkKCVwKSB3ZWJQcm9jZXNzSWRlbnRpZmllcj0lIiBQUkl1NjQsICZj
b250ZXh0Q29ubmVjdGlvbiwgY29udGV4dENvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIo
KS50b1VJbnQ2NCgpKTsKICAgICBhdXRvJiByZWdpc3RyYWJsZURvbWFpbiA9IGNvbnRleHRDb25u
ZWN0aW9uLnJlZ2lzdHJhYmxlRG9tYWluKCk7CiAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIg
OiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+
ZGlkRmluaXNoRmV0Y2hpbmcoKSAmJiByZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHNoYXJlZFdv
cmtlci0+dXJsKCkpKQorICAgICAgICBpZiAoIXJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hh
cmVkV29ya2VyLT51cmwoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzaGFy
ZWRXb3JrZXItPmRpZENyZWF0ZUNvbnRleHRDb25uZWN0aW9uKGNvbnRleHRDb25uZWN0aW9uKTsK
KyAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+ZGlkRmluaXNoRmV0Y2hpbmcoKSkKICAgICAgICAg
ICAgIGNvbnRleHRDb25uZWN0aW9uLmxhdW5jaFNoYXJlZFdvcmtlcigqc2hhcmVkV29ya2VyKTsK
ICAgICB9CiB9CkBAIC0xOTcsOCArMTk3LDggQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OnNoYXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KGNvbnN0IFdlYkNvcmU6OlNoYXJlZFcKICAg
ICBpZiAoIXNoYXJlZFdvcmtlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2hhcmVkV29ya2Vy
LT5zaGFyZWRXb3JrZXJPYmplY3RzKCkucmVtb3ZlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpOwotICAgIGlmICghc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuaXNFbXB0
eSgpKQorICAgIHNoYXJlZFdvcmtlci0+cmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIpOworICAgIGlmIChzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtl
ck9iamVjdHNDb3VudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBzaHV0RG93blNoYXJlZFdv
cmtlcihzaGFyZWRXb3JrZXJLZXkpOwpAQCAtMjExLDEzICsyMTEsMTMgQEAgdm9pZCBXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3duU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcktleSYKICAgICBpZiAoIXNoYXJlZFdvcmtlcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKHNoYXJlZFdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgYXV0byog
Y29udGV4dENvbm5lY3Rpb24gPSBzaGFyZWRXb3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCk7CiAg
ICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29udGV4
dENvbm5lY3Rpb24tPnRlcm1pbmF0ZVNoYXJlZFdvcmtlcigqc2hhcmVkV29ya2VyKTsKIAotICAg
IGlmICghbmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHNoYXJlZFdv
cmtlci0+cmVnaXN0cmFibGVEb21haW4oKSkpCisgICAgaWYgKCFjb250ZXh0Q29ubmVjdGlvbi0+
aGFzU2hhcmVkV29ya2VyT2JqZWN0cygpKQogICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+Y29u
bmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKIH0KIApAQCAtMjM3LDEwICsyMzcsMTAgQEAgdm9p
ZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbm5lY3Rpb24oV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgcHJvY2Vzc0kKIAogICAgIFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPj4gc2hh
cmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheTsKICAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6
IG1fc2hhcmVkV29ya2Vycy52YWx1ZXMoKSkgewotICAgICAgICBmb3IgKGF1dG8mIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgOiBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMo
KS5rZXlzKCkpIHsKKyAgICAgICAgc2hhcmVkV29ya2VyLT5mb3JFYWNoU2hhcmVkV29ya2VyT2Jq
ZWN0KFsmXShhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGF1dG8mKSB7CiAgICAg
ICAgICAgICBpZiAoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmll
cigpID09IHByb2Nlc3NJZGVudGlmaWVyKQogICAgICAgICAgICAgICAgIHNoYXJlZFdvcmtlck9i
amVjdHNHb2luZ0F3YXkuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNoYXJlZFdvcmtlci0+a2V5KCks
IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpKTsKLSAgICAgICAgfQorICAgICAgICB9KTsK
ICAgICB9CiAgICAgZm9yIChhdXRvJiBbc2hhcmVkV29ya2VyS2V5LCBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyXSA6IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXkpCiAgICAgICAgIHNo
YXJlZFdvcmtlck9iamVjdElzR29pbmdBd2F5KHNoYXJlZFdvcmtlcktleSwgc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcik7CkBAIC0yNTgsMTAgKzI1OCwxMCBAQCB2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdv
cmtlcklkZQogICAgIGlmICghc2hhcmVkV29ya2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBm
b3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlci0+c2hh
cmVkV29ya2VyT2JqZWN0cygpLmtleXMoKSkgeworICAgIHNoYXJlZFdvcmtlci0+Zm9yRWFjaFNo
YXJlZFdvcmtlck9iamVjdChbJl0oYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBh
dXRvJikgewogICAgICAgICBpZiAoYXV0byogc2VydmVyQ29ubmVjdGlvbiA9IG1fY29ubmVjdGlv
bnMuZ2V0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkp
CiAgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5wb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmpl
Y3Qoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7Ci0gICAgfQorICAgIH0pOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggZmY4NmJjN2Q2YTJkNDMxZjM4
MzRkZjg1ZTFkMjYyMzQ1NmY1YTk4Ny4uOGQ4YTZjMTg2Y2M2NmVkOTU5ZTBlYjZhMjI0NDFmNmU5
ZWYxMmExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2Vy
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTI4LDYgKzI4LDkgQEAKIAogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQ
cm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlci5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVy
LmgiCkBAIC05MCw4ICs5Myw5IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKFdlYlNoYXJlZFdvcmtlCiAgICAgQ09OVEVY
VF9DT05ORUNUSU9OX1JFTEVBU0VfTE9HKCJsYXVuY2hTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtl
cklkZW50aWZpZXI9JSIgUFJJdTY0LCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOwogICAgIHNoYXJlZFdvcmtlci5tYXJrQXNSdW5uaW5nKCk7CiAgICAgc2VuZChNZXNzYWdl
czo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpMYXVuY2hTaGFyZWRX
b3JrZXIgeyBzaGFyZWRXb3JrZXIub3JpZ2luKCksIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCks
IHNoYXJlZFdvcmtlci51cmwoKSwgc2hhcmVkV29ya2VyLndvcmtlck9wdGlvbnMoKSwgc2hhcmVk
V29ya2VyLmZldGNoUmVzdWx0KCkgfSk7Ci0gICAgZm9yIChhdXRvJiBwb3J0IDogc2hhcmVkV29y
a2VyLnNoYXJlZFdvcmtlck9iamVjdHMoKS52YWx1ZXMoKSkKKyAgICBzaGFyZWRXb3JrZXIuZm9y
RWFjaFNoYXJlZFdvcmtlck9iamVjdChbJl0oYXV0bywgYXV0byYgcG9ydCkgewogICAgICAgICBw
b3N0Q29ubmVjdEV2ZW50KHNoYXJlZFdvcmtlciwgcG9ydCk7CisgICAgfSk7CiB9CiAKIHZvaWQg
V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVu
dChjb25zdCBXZWJTaGFyZWRXb3JrZXImIHNoYXJlZFdvcmtlciwgY29uc3QgV2ViQ29yZTo6VHJh
bnNmZXJyZWRNZXNzYWdlUG9ydCYgcG9ydCkKQEAgLTEwNiw2ICsxMTAsMjkgQEAgdm9pZCBXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3Jr
ZXIoY29uc3QgV2ViU2gKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVNoYXJlZFdvcmtlciB7IHNoYXJlZFdvcmtlci5p
ZGVudGlmaWVyKCkgfSk7CiB9CiAKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6YWRkU2hhcmVkV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRv
JiBzaGFyZWRXb3JrZXJPYmplY3RzID0gbV9zaGFyZWRXb3JrZXJPYmplY3RzLmVuc3VyZShzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCksIFtdIHsgcmV0dXJu
IEhhc2hTZXQ8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj4geyB9OyB9KS5p
dGVyYXRvci0+dmFsdWU7CisgICAgc2hhcmVkV29ya2VyT2JqZWN0cy5hZGQoc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcik7CisKKyAgICBpZiAod2ViUHJvY2Vzc0lkZW50aWZpZXIoKSAhPSBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgJiYgc2hhcmVk
V29ya2VyT2JqZWN0cy5zaXplKCkgPT0gMSkKKyAgICAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQ
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVnaXN0ZXJSZW1v
dGVXb3JrZXJDbGllbnRQcm9jZXNzIHsgUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlByb2Nl
c3NJZGVudGlmaWVyKCkgfSwgMCk7Cit9CisKK3ZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6cmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sK
KyAgICBhdXRvIGl0ID0gbV9zaGFyZWRXb3JrZXJPYmplY3RzLmZpbmQoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICBpZiAoaXQgPT0gbV9zaGFy
ZWRXb3JrZXJPYmplY3RzLmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgaXQtPnZhbHVlLnJl
bW92ZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBpZiAoIWl0LT52YWx1ZS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2hhcmVkV29ya2VyT2JqZWN0cy5y
ZW1vdmUoaXQpOworICAgIGlmICh3ZWJQcm9jZXNzSWRlbnRpZmllcigpICE9IHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSkKKyAgICAgICAgbV9jb25uZWN0
aW9uLm5ldHdvcmtQcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6
VW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MgeyBSZW1vdGVXb3JrZXJUeXBlOjpT
aGFyZWRXb3JrZXIsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZp
ZXIoKSwgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKK30KKwogI3VuZGVmIENPTlRFWFRf
Q09OTkVDVElPTl9SRUxFQVNFX0xPRwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaAppbmRleCBkNmFlYTMxOWFhM2U4MGU2NzBkZWRiYzBjOGFiZDBmMmY2YjVjYTI0Li44NDkw
Nzc4NGVkOWMzNGY4ZjY4ZDFmZTQwNmMyOWJlNWI2YjE0NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
aGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZmVycmVkTWVzc2FnZVBv
cnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjEsOSArNjIsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2VyKGNvbnN0IFdlYlNoYXJlZFdvcmtlciYpOwog
CiAgICAgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworICAgIGJvb2wgaGFzU2hh
cmVkV29ya2VyT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuICFtX3NoYXJlZFdvcmtlck9iamVjdHMu
aXNFbXB0eSgpOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCisgICAgdm9pZCBhZGRTaGFyZWRXb3JrZXJPYmpl
Y3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdm9pZCByZW1v
dmVTaGFyZWRXb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
cik7CisKIHByaXZhdGU6CiAgICAgLy8gSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQgcG9zdEV4Y2Vw
dGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwpAQCAtNzUsNiArODAsNyBAQCBwcml2YXRlOgogICAg
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb247CiAgICAgV2Vha1B0
cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IG1fc2VydmVyOwogICAgIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciwgSGFzaFNldDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyPj4gbV9zaGFyZWRXb3JrZXJPYmplY3RzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI4MTZk
OTQxZjgyZmVjNDdlZjhmNTQ2NGRmZDY4OWViNjBiN2NmOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZVdvcmtlclR5cGUuaApAQCAtMCwwICsxLDQ1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIGNs
YXNzIFJlbW90ZVdvcmtlclR5cGUgOiB1aW50MzJfdCB7CisgICAgU2VydmljZVdvcmtlciA9IDEg
PDwgMCwKKyAgICBTaGFyZWRXb3JrZXIgPSAxIDw8IDEKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
S2l0OjpSZW1vdGVXb3JrZXJUeXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwK
KyAgICAgICAgV2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlLAorICAgICAgICBXZWJLaXQ6OlJlbW90
ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsCisgICAgICAgIFdlYktpdDo6UmVtb3RlV29ya2Vy
VHlwZTo6U2hhcmVkV29ya2VyCisgICAgPjsKK307Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzMzAy
MGJkNWMzY2Q5NDE3NzU2MTU3OWFjMjBmYzM4ZjljNjkyNzhlLi5lZGNjZmYyMDhlYWNlZDQxNGY3
MjdiYWZhNDM2MzZhNGFlMDJiY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTUyOSw3ICs1MjksNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvYwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJt
aW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogewogICAgIGlmIChSZWZQdHIgcHJvY2VzcyA9
IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIp
KSB7Ci0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29y
a2VyVHlwZTo6U2VydmljZVdvcmtlcik7CisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVSZW1vdGVX
b3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogICAgICAgICBwcm9jZXNz
LT5yZXF1ZXN0VGVybWluYXRpb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uOjpFeGNlZWRlZENQ
VUxpbWl0KTsKICAgICB9CiB9CkBAIC0xNDIwLDM2ICsxNDIwLDM2IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzCiAgICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwg
c2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLSNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZp
Y2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQ
cm9jZXNzKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNo
YXJlZFdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogewotICAgIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1v
dmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Np
b25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQorICAgIGF1dG8qIHdlYlByb2Nl
c3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVu
dGlmaWVyKTsKKyAgICBhdXRvKiBzaGFyZWRXb3JrZXJQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5
Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihzaGFyZWRXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7Cisg
ICAgaWYgKCF3ZWJQcm9jZXNzIHx8ICFzaGFyZWRXb3JrZXJQcm9jZXNzKQorICAgICAgICByZXR1
cm47CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmll
cikKLXsKLSAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0Zv
cklkZW50aWZpZXIoaWRlbnRpZmllcikpCi0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVXb3JrZXJz
KFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CisgICAgc2hhcmVk
V29ya2VyUHJvY2Vzcy0+cmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKHdvcmtlclR5
cGUsICp3ZWJQcm9jZXNzKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdl
YlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29y
a2VyUHJvY2Vzc0lkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVucmVnaXN0
ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHNoYXJlZFdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogewogICAg
IGF1dG8qIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVy
KHdlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA9
IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlclByb2Nl
c3NJZGVudGlmaWVyKTsKLSAgICBpZiAoIXdlYlByb2Nlc3MgfHwgIXNlcnZpY2VXb3JrZXJQcm9j
ZXNzKQorICAgIGF1dG8qIHNoYXJlZFdvcmtlclByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnBy
b2Nlc3NGb3JJZGVudGlmaWVyKHNoYXJlZFdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBp
ZiAoIXdlYlByb2Nlc3MgfHwgIXNoYXJlZFdvcmtlclByb2Nlc3MpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQ
cm9jZXNzKCp3ZWJQcm9jZXNzKTsKKyAgICBzaGFyZWRXb3JrZXJQcm9jZXNzLT51bnJlZ2lzdGVy
UmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyh3b3JrZXJUeXBlLCAqd2ViUHJvY2Vzcyk7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQ
cm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9u
Tm9Mb25nZXJOZWVkZWQoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGF1dG8qIHdlYlByb2Nlc3MgPSBXZWJQ
cm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKTsK
LSAgICBhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vz
c0ZvcklkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIGlmICghd2ViUHJvY2Vz
cyB8fCAhc2VydmljZVdvcmtlclByb2Nlc3MpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0
byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRp
ZmllcikpCisgICAgICAgIHByb2Nlc3MtPmRpc2FibGVSZW1vdGVXb3JrZXJzKHdvcmtlclR5cGUp
OworfQogCi0gICAgc2VydmljZVdvcmtlclByb2Nlc3MtPnVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50UHJvY2Vzcygqd2ViUHJvY2Vzcyk7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVE
b21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgV2ViUHJv
Y2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nl
c3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVu
dGlmaWVyKQpAQCAtMTQ2NSwxMiArMTQ2NSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJCiB9
CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50
aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQotICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29y
a2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlcik7Ci19Ci0KIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRf
dCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVp
cmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3Rh
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPRyhTdG9yYWdlLCAiJXAg
LSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZVNwYWNlIiwgdGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCmluZGV4IDY4NDFhMzRmZTA5ZDEyYmE5M2Q0ZWY4YzgwZTQ1MzNhNTVmZDY1YzQuLjA4MzNj
NzEzYWIyNGJmYmE1Mjk1NzlkZGU5NDE1ODkyNGE3OTQ0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC04NSw2
ICs4NSw3IEBAIGNsYXNzIFdlYkNvb2tpZU1hbmFnZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OwogCitlbnVtIGNsYXNzIFJl
bW90ZVdvcmtlclR5cGUgOiB1aW50MzJfdDsKIGVudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzIDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4
X3Q7CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24gOiB1aW50OF90OwpAQCAtMzI4
LDE0ICszMjksMTMgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAg
ICB2b2lkIHNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZp
ZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRp
Zmllcik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9p
ZCBzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgZW5k
U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAjZW5kaWYKLSAgICB2b2lkIHNo
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xv
bmdlck5lZWRlZChSZW1vdGVXb3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7
CiAgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCByZWdpc3RlclJlbW90ZVdvcmtl
ckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJSZW1vdGVXb3Jr
ZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAKICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nl
c3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggMTU3NTdlZDlhMjUyYjA5ZGNkMTFiYjVlNmI5YzhhMTBkMDUzNGM5YS4uNzQ2
MDYwOTAxZThmZGQ5MmY0N2RkYmVmYTJlNGE4MGYxNmJjNDk0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgpAQCAtNTQsMTQgKzU0LDEzIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3lu
YwotICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgUmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRl
bnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJ
ZGVudGlmaWVyKQotICAgIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogICAgIFN0YXJ0
U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICAgICBFbmRTZXJ2aWNlV29ya2Vy
QmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdv
cmtlclByb2Nlc3NJZGVudGlmaWVyKQogI2VuZGlmCiAgICAgRXN0YWJsaXNoU2hhcmVkV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFz
eW5jCi0gICAgU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIFJlbW90ZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoZW51bTp1aW50MzJfdCBXZWJLaXQ6OlJlbW90ZVdv
cmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmll
cikKKyAgICBSZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoZW51bTp1aW50MzJfdCBX
ZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHJl
bW90ZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBVbnJlZ2lzdGVyUmVtb3RlV29ya2Vy
Q2xpZW50UHJvY2VzcyhlbnVtOnVpbnQzMl90IFdlYktpdDo6UmVtb3RlV29ya2VyVHlwZSB3b3Jr
ZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcmVtb3RlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIp
OwogCiAgICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9hZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgcHJvY2Vzc0lELCBib29sIGhhc1VwbG9hZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggMzA1ZTJiOWFiZGYzNWRiMGViODZkYWRmM2E5MTMzNDA3MjYy
MmVhNi4uMDgwNzIzMDA2MTIzNmNiZmYzOWU5MmEwYThmN2Y3MWFkYjkyMGIwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zNjk2LDcgKzM2OTYsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkKIAogICAg
IC8vIFdlIHVwZGF0ZSB0aGUgc2VydmljZSB3b3JrZXIgdGhlcmUgYXQgdGhlIG1vbWVudCB0byBi
ZSBzdXJlIHdlIHVzZSB2YWx1ZXMgdXNlZCBieSBhY3R1YWwgd2ViIHBhZ2VzLgogICAgIC8vIEZJ
WE1FOiBSZWZhY3RvciB0aGlzIHdoZW4gd2UgaGF2ZSBhIGJldHRlciBVc2VyLUFnZW50IHN0b3J5
LgotICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVdvcmtlclVzZXJBZ2VudChtX3Vz
ZXJBZ2VudCk7CisgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkudXBkYXRlUmVtb3RlV29ya2Vy
VXNlckFnZW50KG1fdXNlckFnZW50KTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCmluZGV4IGYxMTZmZTI5YzhiMjE2NWYxMWNmNjBhNmYxZjY2YzVmMTNkYTA2MGMuLjZkODgy
OGYyZTRkMWI4OTExMDI3MTM1NzI2ZTc1YWUzMGI4NTQwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFJlZwogICAgIGlmIChzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpIHsKICAg
ICAgICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29ya2VyIGZvciBhIHNlcnZpY2Ugd29ya2VyIHBh
Z2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXNlIHVzZSB0aGUgcGFnZSdzIFdlYlByb2Nl
c3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAgICAgICAgaWYgKChzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXItPnByb2Nlc3NJZGVudGlmaWVyKCkpKSkgewotICAgICAgICAg
ICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHktPmVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJG
b3JSZW1vdGVXb3JrZXJzKCkpOwogICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29s
LT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwogICAgICAg
ICAgICAgICAgIEFTU0VSVCghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3ND
YWNoZSgpKTsKQEAgLTU2NCw3ICs1NjQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZwogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5ID0gcHJvY2Vzcy5wdHIoKTsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNl
V29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldv
cmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVS
ZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQb29s
LT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yUmVtb3RlV29ya2VycygpKTsKIAog
ICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2Fj
aGUoKSkgewogICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5y
ZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6
OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoUmVnCiAgICAgfQogCiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5KSB7Ci0gICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpj
cmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtl
ciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9
LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2Vi
UHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFi
bGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOwogICAgICAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0cigpOwogCiAgICAgICAgIFdFQlBST0NFU1NQ
T09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNlV29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2
aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXM9JXAsIFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigp
KTsKQEAgLTU4NiwxOCArNTg2LDE4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNl
cnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnCiAgICAgICAg
IHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkp
KTsKICAgICB9CiAKLSAgICB3b3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkpOworICAgIHJlbW90ZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSk7CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxp
c2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/
IHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+
bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9t
YWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKLSAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudC5pc051bGwoKSkK
LSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+c2V0V29ya2VyVXNlckFnZW50KHBy
b2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CisgICAgc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fcmVtb3Rl
V29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNl
cy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMo
KS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVy
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9y
ZW1vdGVXb3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCisgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHktPnNldFJlbW90ZVdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV9yZW1vdGVX
b3JrZXJVc2VyQWdlbnQpOwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92
ZUZyb21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVJlbW90ZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MpCiB7Ci0gICAgQVNTRVJUKHdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHBy
b2Nlc3MpKTsKLSAgICB3b3JrZXJQcm9jZXNzZXMoKS5yZW1vdmUocHJvY2Vzcyk7CisgICAgQVNT
RVJUKHJlbW90ZVdvcmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKKyAgICByZW1v
dGVXb3JrZXJQcm9jZXNzZXMoKS5yZW1vdmUocHJvY2Vzcyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTYyMyw3ICs2MjMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3Rh
Ymxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQwog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5
ID0gcHJvY2Vzcy5wdHIoKTsKLSAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFi
bGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCBwcm9j
ZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7Cisg
ICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlUmVtb3RlV29ya2VycyhSZW1v
dGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyRm9yUmVtb3RlV29ya2VycygpKTsKIAogICAgICAgICBpZiAoc2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAgICAgICAgIHBy
b2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7
CkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkMKICAgICB9CiAKICAg
ICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nl
c3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURv
bWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAg
IGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JSZW1vdGVX
b3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdp
c3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7
CiAgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIo
KTsKIAogICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29y
a2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29ya2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJ
RD0lZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC02NDQsMTEgKzY0NCwxMSBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV2ViQwogICAgICAgICBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMuYXBwZW5kKFdU
Rk1vdmUobmV3UHJvY2Vzc1Byb3h5KSk7CiAgICAgfQogCi0gICAgd29ya2VyUHJvY2Vzc2VzKCku
YWRkKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkpOworICAgIHJlbW90ZVdvcmtlclByb2Nlc3Nl
cygpLmFkZCgqc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KTsKIAotICAgIHNoYXJlZFdvcmtlclBy
b2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV93
b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVuY2VzLnZhbHVl
KCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3Jl
KCksIHJlZ2lzdHJhYmxlRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAg
aWYgKCFwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCi0gICAgICAgIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eS0+c2V0V29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5t
X3dvcmtlclVzZXJBZ2VudCk7CisgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxp
c2hTaGFyZWRXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVu
Y2VzID8gcHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHBy
b2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVn
aXN0cmFibGVEb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoIXBy
b2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKKyAgICAgICAgc2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bv
b2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6
d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpCkBAIC0xMDU0LDcgKzEwNTQsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25uZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MpCiAgICAgbV9iYWNrRm9yd2FyZENhY2hlLT5yZW1vdmVFbnRyaWVzRm9yUHJvY2Vz
cyhwcm9jZXNzKTsKIAogICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1dvcmtlcnMoKSkKLSAgICAg
ICAgcmVtb3ZlRnJvbVdvcmtlclByb2Nlc3Nlcyhwcm9jZXNzKTsKKyAgICAgICAgcmVtb3ZlRnJv
bVJlbW90ZVdvcmtlclByb2Nlc3Nlcyhwcm9jZXNzKTsKIAogICAgIHN0YXRpY19jYXN0PFdlYkNv
bnRleHRTdXBwbGVtZW50Kj4oc3VwcGxlbWVudDxXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4o
KSktPnByb2Nlc3NEaWRDbG9zZSgmcHJvY2Vzcyk7CiAKQEAgLTExMTQsMTIgKzExMTQsMTIgQEAg
UmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbihXZWJzaXRlRGF0YVN0b3IKICAgICByZXR1cm4gY3JlYXRlTmV3V2ViUHJvY2Vzcygm
d2Vic2l0ZURhdGFTdG9yZSwgY2FwdGl2ZVBvcnRhbE1vZGUpOwogfQogCi1Vc2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyRm9yV29ya2VycygpCitVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdl
YlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yUmVtb3RlV29y
a2VycygpCiB7Ci0gICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCi0g
ICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKKyAgICBpZiAoIW1fdXNlckNvbnRlbnRDb250cm9s
bGVyRm9yUmVtb3RlV29ya2VycykKKyAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JS
ZW1vdGVXb3JrZXJzID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmNyZWF0ZSgpOwog
Ci0gICAgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2Vycy0+aWRlbnRpZmll
cigpOworICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclJlbW90ZVdvcmtlcnMt
PmlkZW50aWZpZXIoKTsKIH0KIAogUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNy
ZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRpb24pCkBAIC0xMTY1LDEzICsxMTY1LDEzIEBAIFJlZjxX
ZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBh
Z2VDbGllbnQsIFJlZjxBUEk6CiAKICAgICBhdXRvIHBhZ2UgPSBwcm9jZXNzLT5jcmVhdGVXZWJQ
YWdlKHBhZ2VDbGllbnQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAotICAgIGlmICgh
bV93b3JrZXJQcmVmZXJlbmNlcykgewotICAgICAgICBtX3dvcmtlclByZWZlcmVuY2VzID0gcGFn
ZS0+cHJlZmVyZW5jZXNTdG9yZSgpOwotICAgICAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3Mg
OiB3b3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29y
a2VyUHJlZmVyZW5jZXNTdG9yZSgqbV93b3JrZXJQcmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3Jl
bW90ZVdvcmtlclByZWZlcmVuY2VzKSB7CisgICAgICAgIG1fcmVtb3RlV29ya2VyUHJlZmVyZW5j
ZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7CisgICAgICAgIGZvciAoYXV0byYgd29ya2Vy
UHJvY2VzcyA6IHJlbW90ZVdvcmtlclByb2Nlc3NlcygpKQorICAgICAgICAgICAgd29ya2VyUHJv
Y2Vzcy51cGRhdGVSZW1vdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKCptX3JlbW90ZVdvcmtlclBy
ZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVzZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAg
ICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzID0gdXNlckNvbnRlbnRDb250cm9s
bGVyOworICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclJlbW90ZVdvcmtlcnMgPSB1
c2VyQ29udGVudENvbnRyb2xsZXI7CiAKICAgICBib29sIGVuYWJsZVByb2Nlc3NTd2FwT25Dcm9z
c1NpdGVOYXZpZ2F0aW9uID0gcGFnZS0+cHJlZmVyZW5jZXMoKS5wcm9jZXNzU3dhcE9uQ3Jvc3NT
aXRlTmF2aWdhdGlvbkVuYWJsZWQoKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTE5
NCwxMyArMTE5NCwxMyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRl
V2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogICAgIHJldHVybiBwYWdl
OwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpCit2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVSZW1vdGVXb3Jr
ZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7Ci0gICAgaWYgKG1fd29ya2Vy
VXNlckFnZW50ID09IHVzZXJBZ2VudCkKKyAgICBpZiAobV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQg
PT0gdXNlckFnZW50KQogICAgICAgICByZXR1cm47Ci0gICAgbV93b3JrZXJVc2VyQWdlbnQgPSB1
c2VyQWdlbnQ7Ci0gICAgZm9yIChhdXRvJiB3b3JrZXJQcm9jZXNzIDogd29ya2VyUHJvY2Vzc2Vz
KCkpCi0gICAgICAgIHdvcmtlclByb2Nlc3Muc2V0V29ya2VyVXNlckFnZW50KG1fd29ya2VyVXNl
ckFnZW50KTsKKyAgICBtX3JlbW90ZVdvcmtlclVzZXJBZ2VudCA9IHVzZXJBZ2VudDsKKyAgICBm
b3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiByZW1vdGVXb3JrZXJQcm9jZXNzZXMoKSkKKyAgICAg
ICAgd29ya2VyUHJvY2Vzcy5zZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQobV9yZW1vdGVXb3JrZXJV
c2VyQWdlbnQpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNp
dGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3Rv
cmUmIGRhdGFTdG9yZSkKQEAgLTE1ODEsMTIgKzE1ODEsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlzIH07CiAgICAgVmVjdG9yPFJlZjxXZWJQcm9j
ZXNzUHJveHk+PiBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOwotICAgIHdvcmtlclByb2Nlc3Nlcygp
LmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZW1vdGVXb3JrZXJQcm9jZXNzZXMo
KS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIGlmIChwcm9jZXNzLmlzUnVu
bmluZ1NlcnZpY2VXb3JrZXJzKCkpCiAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
LmFwcGVuZChwcm9jZXNzKTsKICAgICB9KTsKICAgICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3NlcykKLSAgICAgICAgc2VydmljZVdvcmtlclBy
b2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlcik7CisgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5kaXNhYmxlUmVtb3RlV29y
a2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0x
ODE0LDcgKzE4MTQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZXBvcnRXZWJDb250ZW50Q1BV
VGltZShTZWNvbmRzIGNwdVRpbWUsIHVpbnQ2NF90IGFjdGl2aXR5UwogI2VuZGlmCiB9CiAKLVdl
YWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNz
ZXMoKQorV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgV2ViUHJvY2Vzc1Bvb2w6OnJlbW90
ZVdvcmtlclByb2Nlc3NlcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYWtIYXNo
U2V0PFdlYlByb2Nlc3NQcm94eT4+IHByb2Nlc3NlczsKICAgICByZXR1cm4gcHJvY2Vzc2VzOwpA
QCAtMTgzMywxMyArMTgzMywxMyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNz
QXNzZXJ0aW9ucygpCiAKICAgICAvLyBDaGVjayBvbiBuZXh0IHJ1biBsb29wIHNpbmNlIHRoZSB3
ZWIgcHJvY2VzcyBwcm94eSB0b2tlbnMgYXJlIHByb2JhYmx5IGJlaW5nIHVwZGF0ZWQuCiAgICAg
Y2FsbE9uTWFpblJ1bkxvb3AoW10gewotICAgICAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNo
KFtdKGF1dG8mIHdvcmtlclByb2Nlc3MpIHsKKyAgICAgICAgcmVtb3RlV29ya2VyUHJvY2Vzc2Vz
KCkuZm9yRWFjaChbXShhdXRvJiB3b3JrZXJQcm9jZXNzKSB7CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgICAgICAgICAgaWYgKHdvcmtlclByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdv
cmtlcnMoKSkKLSAgICAgICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByb2Nl
c3NBc3NlcnRpb24oV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsK
KyAgICAgICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24oUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKICAgICAg
ICAgICAgIGlmICh3b3JrZXJQcm9jZXNzLmlzUnVubmluZ1NoYXJlZFdvcmtlcnMoKSkKLSAgICAg
ICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV2Vi
UHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpOworICAgICAgICAgICAgICAg
IHdvcmtlclByb2Nlc3MudXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihSZW1vdGVX
b3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTE4
NDgsNyArMTg0OCw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJ
RChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgcmV0
dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nlc3Mp
IHsKKyAgICByZXR1cm4gV1RGOjphbnlPZihyZW1vdGVXb3JrZXJQcm9jZXNzZXMoKSwgW3BhZ2VJ
RF0oYXV0byYgcHJvY2VzcykgewogICAgICAgICByZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29y
a2VyUGFnZVByb3h5KHBhZ2VJRCk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTIxNzcsNyArMjE3Nyw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFVzZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nl
c3MoYm9vbCB1c2VTZXBhcmF0ZVNlcnZpY2VXCiBzaXplX3QgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZp
Y2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAogewogICAgIHVuc2lnbmVkIGNvdW50ID0gMDsK
LSAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAg
cmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2VzcykgewogICAg
ICAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQogICAgICAgICAgICAg
Kytjb3VudDsKICAgICB9KTsKQEAgLTIxODYsMTQgKzIxODYsMTQgQEAgc2l6ZV90IFdlYlByb2Nl
c3NQb29sOjpzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3QKIAogYm9vbCBXZWJQcm9j
ZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBj
b25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRv
JiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2YocmVtb3RlV29ya2VyUHJvY2Vzc2Vz
KCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2Vydmlj
ZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKTsKICAgICB9KTsKIH0KIAogYm9v
bCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRl
c3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3Nlcygp
LCBbXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2YocmVtb3RlV29ya2Vy
UHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3Mu
aGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGNiMzg5NmRl
YmUzYTRjNDUwOTlmZjUzMTQ0MmFiMmVhMDg2ZTJjNmUuLmUyNTNhNWU3M2E0ODY5YWI4OWQ0MjA3
MDgwNjZmMTA1ZWU4MTA4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaApAQCAtMzc0LDcgKzM3NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5ldHdvcmtQcm9jZXNz
RGlkVGVybWluYXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmLCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpU
ZXJtaW5hdGlvblJlYXNvbik7CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQ
YWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKLSAgICB2b2lkIHJlbW92ZUZyb21Xb3JrZXJQcm9j
ZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9pZCByZW1vdmVGcm9tUmVtb3RlV29ya2Vy
UHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKQEAgLTM4NCw4ICszODQsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lkIHNl
cnZpY2VXb3JrZXJQcm9jZXNzQ3Jhc2hlZChXZWJQcm9jZXNzUHJveHkmKTsKIAotICAgIHZvaWQg
dXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKLSAgICBVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXJGb3JXb3JrZXJzKCk7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVXb3JrZXJVc2VyQWdlbnQoY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQpOworICAgIFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclJlbW90ZVdvcmtlcnMoKTsKICAg
ICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAg
LTYyMSwxMSArNjIxLDExIEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklE
LCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1fZHVtbXlQcm9jZXNzUHJveGllczsgLy8gTGln
aHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVjdHMgd2l0aG91dCBiYWNraW5nIHByb2Nlc3Mu
CiAKLSAgICBzdGF0aWMgV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1Byb3h5PiYgd29ya2VyUHJvY2Vz
c2VzKCk7CisgICAgc3RhdGljIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHJlbW90ZVdv
cmtlclByb2Nlc3NlcygpOwogCi0gICAgc3RkOjpvcHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3Jl
PiBtX3dvcmtlclByZWZlcmVuY2VzOwotICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzOwotICAgIFN0cmluZyBt
X3dvcmtlclVzZXJBZ2VudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+
IG1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXM7CisgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5PiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclJlbW90ZVdvcmtlcnM7Cisg
ICAgU3RyaW5nIG1fcmVtb3RlV29ya2VyVXNlckFnZW50OwogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogICAgIFJlZlB0cjxHUFVQcm9jZXNzUHJveHk+IG1fZ3B1UHJvY2VzczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGY0NjY5MjQ5YTMzMWFk
YmNhZjc5MmVlM2Q1YTY0Mjc0YTQ3MzllNjIuLjJjMGE4MDMwMDMxNDk3YzUwOTU1NWY1MzQyZGY4
NWVjMzk5MGYwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcApAQCAtMTgyLDExICsxODIsMTEgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vz
c1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXQKICAgICBy
ZXR1cm4gcHJveHk7CiB9CiAKLVJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6
Y3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiBw
cm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0
ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKK1JlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlRm9yUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtl
clR5cGUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4mJiBy
ZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKIHsK
ICAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5ldyBXZWJQcm9jZXNzUHJveHkocHJvY2Vzc1Bv
b2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdhcm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9kZTo6
U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9kZTo6RGlzYWJsZWQpKTsKICAgICBwcm94eS0+bV9yZWdp
c3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pOwotICAgIHByb3h5LT5l
bmFibGVXb3JrZXJzKHdvcmtlclR5cGUsIHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworICAgIHByb3h5LT5lbmFibGVSZW1vdGVXb3JrZXJz
KHdvcmtlclR5cGUsIHByb2Nlc3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJG
b3JSZW1vdGVXb3JrZXJzKCkpOwogICAgIHByb3h5LT5jb25uZWN0KCk7CiAgICAgcmV0dXJuIHBy
b3h5OwogfQpAQCAtOTk3LDcgKzk5Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNv
bWVVbnJlc3BvbnNpdmUoKQogICAgIC8vIElmIHRoZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVz
cG9uc2l2ZSBhbmQgb25seSBydW5zIHNlcnZpY2Uvc2hhcmVkIHdvcmtlcnMsIGtpbGwgaXQgb3Vy
c2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRpdmUgY2xpZW50cyB0byBkbyBpdC4KICAgICBp
ZiAoaXNSdW5uaW5nV29ya2VycygpICYmIG1fcGFnZU1hcC5pc0VtcHR5KCkpIHsKICAgICAgICAg
V0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HX0VSUk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRp
ZEJlY29tZVVucmVzcG9uc2l2ZTogVGVybWluYXRpbmcgd29ya2VyLW9ubHkgd2ViIHByb2Nlc3Mg
YmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsKLSAgICAgICAgZGlzYWJsZVdvcmtlcnMoeyBX
b3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgfSk7Cisg
ICAgICAgIGRpc2FibGVSZW1vdGVXb3JrZXJzKHsgUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdv
cmtlciwgUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyIH0pOwogICAgICAgICB0ZXJtaW5h
dGUoKTsKICAgICB9CiB9CkBAIC0xNjkzLDcgKzE2OTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJhbWUoY29uc3QgVVJMJiB1cmwpCiAg
ICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsg
dXJsIH07CiAgICAgaWYgKG1fcmVnaXN0cmFibGVEb21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21h
aW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgICAgIGRpc2FibGVXb3JrZXJzKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOworICAgICAg
ICBkaXNhYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsK
ICNlbmRpZgogCiAgICAgICAgIC8vIE51bGwgb3V0IHJlZ2lzdHJhYmxlIGRvbWFpbiBzaW5jZSB0
aGlzIHByb2Nlc3MgaGFzIG5vdyBiZWVuIHVzZWQgZm9yIHNldmVyYWwgZG9tYWlucy4KQEAgLTE4
NzQsNyArMTg3NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzCiB9CiAjZW5kaWYKIAotdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQoY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGlmIChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKQEAgLTE4ODQsNyArMTg4NCw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsgdXNlckFnZW50IH0sIDApOwogfQogCi12b2lk
IFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVSZW1v
dGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3Jl
KQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAobV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24pCkBAIC0xODk0LDIxICsxODk0LDE0IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
Ojp1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12
b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJU
eXBlIHdvcmtlclR5cGUpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlUmVtb3RlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbihSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUpCiB7Ci0gICAgYXV0
byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdv
cmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbjsKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gUmVtb3Rl
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uOwogICAgIEFTU0VSVCh3b3JrZXJJbmZvcm1hdGlvbik7
CiAgICAgaWYgKCF3b3JrZXJJbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0VC
UFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlV29ya2Vy
UHJvY2Vzc0Fzc2VydGlvbjogd29ya2VyVHlwZT0le3B1YmxpY31zIiwgd29ya2VyVHlwZSA9PSBX
b3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyAic2hhcmVkIiA6ICJzZXJ2aWNlIik7Ci0KLSAgICAv
LyBGSVhNRTogQ2xpZW50cyBkbyBub3QgcHJvcGVybHkgZ2V0IHBvcHVsYXRlZCBpbiBtX3NoYXJl
ZFdvcmtlckluZm9ybWF0aW9uIHNvIHdlIGN1cnJlbnRseSB0YWtlIGFuIGFzc2VydGlvbiBubyBt
YXR0ZXIgd2hhdC4KLSAgICBpZiAod29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3Jr
ZXIpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFj
dGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCi0gICAgICAgICAgICB3b3JrZXJJ
bmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIldv
cmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9zKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRh
dGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uOiB3b3JrZXJUeXBlPSV7cHVibGljfXMiLCB3
b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/ICJzaGFyZWQiIDog
InNlcnZpY2UiKTsKIAogICAgIGJvb2wgc2hvdWxkVGFrZUZvcmVncm91bmRBY3Rpdml0eSA9IFdU
Rjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHBy
b2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9jZXNzICE9IHRoaXMgJiYgISFwcm9jZXNzLm1f
Zm9yZWdyb3VuZFRva2VuOwpAQCAtMTkyOCw3ICsxOTIxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSB3b3JrZXJUeXBlKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHdvcmtlclR5cGUgPT0gV29ya2VyVHlw
ZTo6U2VydmljZVdvcmtlciAmJiBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2lu
ZykgeworICAgIGlmICh3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIgJiYgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpIHsKICAgICAgICAg
V0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiU2VydmljZSBX
b3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyIpOwogICAgICAgICBpZiAoIVByb2Nlc3NU
aHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFj
dGl2aXR5KSkKICAgICAgICAgICAgIHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhy
b3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQg
cHJvY2Vzc2luZyJfcyk7CkBAIC0xOTQ5LDI4ICsxOTQyLDMwIEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0CiAgICAgfSwgMCk7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLXZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdl
YlByb2Nlc3NQcm94eSYgcHJveHkpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJSZW1v
dGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViUHJv
Y2Vzc1Byb3h5JiBwcm94eSkKIHsKLSAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
KQorICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBSZW1vdGVXb3Jr
ZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgaWYgKCF3b3JrZXJJbmZvcm1hdGlvbikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3Jr
ZXIsICJyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzOiBjbGllbnRQcm9jZXNzPSVw
LCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAg
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMuYWRkKHByb3h5KTsK
LSAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIpOworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhXb3JrZXIsICJyZWdpc3Rlcldv
cmtlckNsaWVudFByb2Nlc3M6IHdvcmtlclR5cGU9JXtwdWJsaWN9cywgY2xpZW50UHJvY2Vzcz0l
cCwgY2xpZW50UElEPSVkIiwgd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRX
b3JrZXIgPyAic2hhcmVkIiA6ICJzZXJ2aWNlIiwgJnByb3h5LCBwcm94eS5wcm9jZXNzSWRlbnRp
ZmllcigpKTsKKyAgICB3b3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLmFkZChwcm94
eSk7CisgICAgdXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbih3b3JrZXJUeXBlKTsK
IH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVu
cmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUgd29ya2Vy
VHlwZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIHsKLSAgICBpZiAoIW1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uKQorICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9
PSBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0
aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgaWYgKCF3b3JrZXJJbmZvcm1h
dGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9H
KFNlcnZpY2VXb3JrZXIsICJ1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3M6IGNs
aWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50
aWZpZXIoKSk7Ci0gICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nl
cy5yZW1vdmUocHJveHkpOwotICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2Vy
VHlwZTo6U2VydmljZVdvcmtlcik7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFdv
cmtlciwgInVucmVnaXN0ZXJXb3JrZXJDbGllbnRQcm9jZXNzOiB3b3JrZXJUeXBlPSV7cHVibGlj
fXMsIGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsIHdvcmtlclR5cGUgPT0gUmVtb3Rl
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gInNoYXJlZCIgOiAic2VydmljZSIsICZwcm94eSwg
cHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgd29ya2VySW5mb3JtYXRpb24tPmNsaWVu
dFByb2Nlc3Nlcy5yZW1vdmUocHJveHkpOworICAgIHVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NB
c3NlcnRpb24od29ya2VyVHlwZSk7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisK
IGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5
Rm9yVGVzdGluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uID8gUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eShtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpIDogZmFsc2U7CkBAIC0xOTg4LDcgKzE5ODMs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFBy
b2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAic3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsKICAgICBt
X2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IHRydWU7Ci0gICAgdXBkYXRl
V29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICB1
cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJh
Y2tncm91bmRQcm9jZXNzaW5nKCkKQEAgLTE5OTgsMzggKzE5OTMsMzggQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBX
RUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICJlbmRTZXJ2aWNl
V29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZyA9IGZhbHNlOwotICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRp
b24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CisgICAgdXBkYXRlUmVtb3RlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbihSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KICNlbmRp
ZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNh
YmxlV29ya2VycyhPcHRpb25TZXQ8V29ya2VyVHlwZT4gd29ya2VyVHlwZSkKK3ZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpkaXNhYmxlUmVtb3RlV29ya2VycyhPcHRpb25TZXQ8UmVtb3RlV29ya2VyVHlw
ZT4gd29ya2VyVHlwZSkKIHsKICAgICBBU1NFUlQoIXdvcmtlclR5cGUuaXNFbXB0eSgpKTsKIAog
ICAgIGJvb2wgZGlkQ2hhbmdlID0gZmFsc2U7Ci0gICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMo
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24p
IHsKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNl
V29ya2VyKSAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikgewogICAgICAgICBtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKICAgICAgICAgZGlkQ2hhbmdlID0gdHJ1ZTsKICAg
ICB9Ci0gICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2Vy
KSAmJiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKSB7CisgICAgaWYgKHdvcmtlclR5cGUuY29u
dGFpbnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSAmJiBtX3NoYXJlZFdvcmtlcklu
Zm9ybWF0aW9uKSB7CiAgICAgICAgIG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gPSB7IH07CiAg
ICAgICAgIGRpZENoYW5nZSA9IHRydWU7CiAgICAgfQogICAgIGlmICghZGlkQ2hhbmdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzcywg
ImRpc2FibGVXb3JrZXJzOiBEaXNhYmxpbmcgd29ya2VycyAoU2hhcmVkV29ya2Vycz0lZCwgU2Vy
dmljZVdvcmtlcnM9JWQpIiwgd29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRX
b3JrZXIpLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKTsK
KyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgImRpc2FibGVXb3JrZXJz
OiBEaXNhYmxpbmcgd29ya2VycyAoU2hhcmVkV29ya2Vycz0lZCwgU2VydmljZVdvcmtlcnM9JWQp
Iiwgd29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpLCB3
b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKTsKIAog
ICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZlbmVzc1RpbWVyKCk7CiAKICAgICBpZiAoIWlz
UnVubmluZ1dvcmtlcnMoKSkKLSAgICAgICAgcHJvY2Vzc1Bvb2woKS5yZW1vdmVGcm9tV29ya2Vy
UHJvY2Vzc2VzKCp0aGlzKTsKKyAgICAgICAgcHJvY2Vzc1Bvb2woKS5yZW1vdmVGcm9tUmVtb3Rl
V29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSkKKyAg
ICBpZiAod29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
KSkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OkNsb3NlIHsgfSwgMCk7CiAjZW5kaWYKLSAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3Jr
ZXJUeXBlOjpTaGFyZWRXb3JrZXIpKQorICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90
ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNo
YXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q2xvc2UgeyB9LCAwKTsKIAogICAg
IG1heWJlU2h1dERvd24oKTsKQEAgLTIwNTEsMTAgKzIwNDYsMTAgQEAgc3RhdGljIFZlY3Rvcjxz
dGQ6OnBhaXI8V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLCBVUkw+PiBjb250ZW50UnVs
ZUxpc3RzRnIKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlV29ya2Vy
cyhXb3JrZXJUeXBlIHdvcmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCit2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIGNv
bnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIpCiB7CiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VX
b3JrZXIsICJlbmFibGVXb3JrZXJzOiB3b3JrZXJUeXBlPSV1Iiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHdvcmtlclR5cGUpKTsKLSAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5
cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlv
biA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIGF1dG8mIHdvcmtlckluZm9ybWF0
aW9uID0gd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3No
YXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CiAgICAg
QVNTRVJUKCF3b3JrZXJJbmZvcm1hdGlvbik7CiAKICAgICB3b3JrZXJJbmZvcm1hdGlvbiA9IFJl
bW90ZVdvcmtlckluZm9ybWF0aW9uIHsKQEAgLTIwNzEsNyArMjA2Niw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjplbmFibGVXb3JrZXJzKFdvcmtlclR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNl
ckNvbnRlbnRDb250CiAgICAgfTsKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NU
aW1lcigpOwogCi0gICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbih3b3JrZXJUeXBlKTsK
KyAgICB1cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUpOwogfQog
CiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlU2xlZXBEaXNhYmxlcihTbGVlcERpc2Fi
bGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgYm9vbCBkaXNw
bGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA3MGU4
OTA1MWNjYmJjN2U5MDQ2YmMxYzk5OGI5MGEwYjY4ZWY2NTk5Li4yZTE2ZjA5MjkyNzA5ZDMzNTgz
ZjJhODE3YTNmZTE2MTEzYjMxNTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIu
aCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVtb3Rl
V29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyVHlwZS5o
IgogI2luY2x1ZGUgIlJlc3BvbnNpdmVuZXNzVGltZXIuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNv
Z25pdGlvblNlcnZlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIuaCIKQEAgLTEzNiwxMyArMTM3LDkgQEAgcHVibGljOgogCiAgICAgZW51bSBjbGFzcyBTaG91
bGRMYXVuY2hQcm9jZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBlbnVtIGNsYXNzIENhcHRp
dmVQb3J0YWxNb2RlIDogYm9vbCB7IERpc2FibGVkLCBFbmFibGVkIH07Ci0gICAgZW51bSBjbGFz
cyBXb3JrZXJUeXBlIDogdWludDMyX3QgewotICAgICAgICBTZXJ2aWNlV29ya2VyID0gMSA8PCAw
LAotICAgICAgICBTaGFyZWRXb3JrZXIgPSAxIDw8IDEKLSAgICB9OwogCiAgICAgc3RhdGljIFJl
ZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3Rv
cmUqLCBDYXB0aXZlUG9ydGFsTW9kZSwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNyb3NzT3JpZ2lu
TW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBTaG91bGRMYXVuY2hQcm9j
ZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVzKTsKLSAgICBzdGF0aWMgUmVmPFdlYlByb2Nl
c3NQcm94eT4gY3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0
aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yUmVtb3RlV29ya2VycyhSZW1vdGVXb3Jr
ZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdl
YnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIH5XZWJQcm9jZXNzUHJveHkoKTsKIApAQCAtMTY1LDgg
KzE2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCwgV2ls
bFNodXREb3duID0gV2lsbFNodXREb3duOjpObyk7CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hl
KCkgY29uc3QgeyByZXR1cm4gbV9pc0luUHJvY2Vzc0NhY2hlOyB9CiAKLSAgICB2b2lkIGVuYWJs
ZVdvcmtlcnMoV29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
ciYpOwotICAgIHZvaWQgZGlzYWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+KTsKKyAg
ICB2b2lkIGVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSwgY29uc3QgVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOworICAgIHZvaWQgZGlzYWJsZVJlbW90ZVdvcmtl
cnMoT3B0aW9uU2V0PFJlbW90ZVdvcmtlclR5cGU+KTsKIAogICAgIFdlYnNpdGVEYXRhU3RvcmUm
IHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUpOyBy
ZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQogICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9y
ZShXZWJzaXRlRGF0YVN0b3JlJik7CkBAIC0zNjYsMTUgKzM2MywxNSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHVwZGF0ZUF1ZGlibGVNZWRpYUFzc2VydGlvbnMoKTsKIAotICAgIHZvaWQgc2V0V29y
a2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdXBkYXRlV29ya2VyUHJlZmVy
ZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgdm9pZCBzZXRSZW1v
dGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVX
b3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB2
b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKLSAgICB2b2lkIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2Vy
VHlwZSk7CisgICAgdm9pZCByZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVtb3Rl
V29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9pZCB1bnJlZ2lzdGVyUmVtb3Rl
V29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUHJveHkmKTsK
KyAgICB2b2lkIHVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2Vy
VHlwZSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2Vy
dmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQ
cm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3Rl
V29ya2VyUGFnZVByb3h5SUQgPT0gcGFnZVByb3h5SUQ7IH0KLSAgICB2b2lkIHJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7Ci0gICAgdm9pZCB1bnJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAg
Ym9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0
OwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3Rpbmco
KSBjb25zdDsKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5n
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA2MGQzZTk4MjA1ZDVkZDM5ODRlNTg3Y2QzMDEwZTk4MzBkMjM4NzUwLi5kZTE2OWU3YzJh
N2I0OThiMzNmMThkZWU4MzllNDllM2FmZWY4ZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5Myw2ICs4OTMsNyBAQAogCQk0Njcx
RkYxRjIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzFGRjFEMjMyMTdFRkYw
MDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyB9OwogCQk0NjdFNDNFODIy
NDNGRjdEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0U0M0U3MjI0M0ZGNkQw
MEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovOyB9OwogCQk0Njgw
OUE3QzIzRDkyMjVFMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAv
KiBXZWJDb29raWVDYWNoZS5oICovOyB9OworCQk0NjkxQ0I5QjI3QjJERDJEMDBCMjlBQUYgLyog
UmVtb3RlV29ya2VyVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY5MUNCOUEyN0IyREQxODAwQjI5QUFGIC8qIFJlbW90ZVdvcmtlclR5cGUuaCAq
LzsgfTsKIAkJNDZBMkI2MDkxRTU2NzZBNjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVz
cG9uc2l2ZW5lc3NUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVz
cG9uc2l2ZW5lc3NUaW1lci5oICovOyB9OwogCQk0NkIwNTI0NzIyNjY4RDg1MDAyNjVCOTcgLyog
V2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkIwNTI0NDIyNjY4RDIzMDAy
NjVCOTcgLyogV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmgg
Ki87IH07CiAJCTQ2QkVCNkQ3MjJGQjlCRDcwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2RDUyMkZCOUJE
NjAwMjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggKi87IH07CkBAIC00MjcxLDYgKzQyNzIsNyBAQAog
CQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIgLyogV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MEYyNzU2RDE0MzAw
MDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVX
ZWJMb2NrUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MTAy
NzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk0NjkxQ0I5QTI3QjJERDE4MDBCMjlBQUYgLyogUmVtb3RlV29ya2VyVHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVXb3JrZXJUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEwRSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RD
b25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rp
b24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OURFODAyMjcz
RUNDNUQwMDkzMDI3NiAvKiBQcm9jZXNzTGF1bmNoZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nlc3NMYXVuY2hlckNvY29hLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dy
b3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MjYxLDYgKzcyNjMsNyBAQAogCQkJCTlC
MTIyOUQwMjNGRjJBNUUwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmll
ci5oICovLAogCQkJCTVDODBCM0REMjM2OTBGMTAwMDg2RTZERSAvKiBSZW1vdGVXb3JrZXJJbml0
aWFsaXphdGlvbkRhdGEuY3BwICovLAogCQkJCTVDODBCM0RCMjM2OTBEOEQwMDg2RTZERSAvKiBS
ZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuaCAqLywKKwkJCQk0NjkxQ0I5QTI3QjJERDE4
MDBCMjlBQUYgLyogUmVtb3RlV29ya2VyVHlwZS5oICovLAogCQkJCTcyMDM0NDlCMjZBNkM0NzYw
MDBBNUY1NCAvKiBSZW5kZXJpbmdVcGRhdGVJRC5oICovLAogCQkJCTVDQjdBRkU2MjNDNjgxQjAw
MEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi8sCiAJCQkJNUMwMDk5M0IyNDE3RkI3RTAw
RDUzQzI1IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmggKi8sCkBAIC0xMzM2
MSw2ICsxMzM2NCw3IEBACiAJCQkJQTU1QkE4MjUxQkEyNUNGQjAwN0NEMzNEIC8qIFJlbW90ZVdl
Ykluc3BlY3RvclVJUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZDNUI3Q0Uy
N0FBREREMzAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk0NkM1QjdDRjI3QUFEREQ2MDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGli
V2ViUlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2OTFDQjlCMjdCMkREMkQwMEIy
OUFBRiAvKiBSZW1vdGVXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0I3QUZFNzIz
QzY4MjA3MDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NkJFOTY5Q0QxRTU0RTA1NDAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lm
aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2QkU5NjlDQjFFNTRENENGMDA4Qjc0ODMgLyogUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451372</attachid>
            <date>2022-02-09 07:19:36 -0800</date>
            <delta_ts>2022-02-09 10:43:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236271-20220209071935.patch</filename>
            <type>text/plain</type>
            <size>78170</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVjMGU0YTU5YTUwZDUyMzc3
MGE2Y2I5NjliMzZlYjBiNTg0NTZlM2MuLmQ1MGRlZDU3MjBmM2MyNTk2OTMwN2NhZWU5ODdhYjA5
YTRjMmMzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIwMjItMDItMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBUYWtlIGFkZXF1YXRlIHBy
b2Nlc3MgYXNzZXJ0aW9uIGZvciB0aGUgU2hhcmVkV29ya2VyIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjI3MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgdHJhY2sgb2YgY2xpZW50
IHByb2Nlc3NlcyB0aGF0IHJlbHkgb24gYSBwYXJ0aWN1bGFyIFNoYXJlZFdvcmtlciBwcm9jZXNz
IGFuZCB0YWtlIHRoZSBhZGVxdWF0ZQorICAgICAgICBwcm9jZXNzIGFzc2VydGlvbiB0byBrZWVw
IHRoZSBwcm9jZXNzIHJ1bm5pbmcgb24gaU9TIHdoZW4gbmVjZXNzYXJ5LiBUaGlzIGFsbG93cyB1
cyB0byBnZXQgcmlkIG9mCisgICAgICAgIHRoZSBoYWNrIEkgbGFuZGVkIHByZXZpb3VzbHkgdG8g
YWx3YXlzIHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiBvbiBiZWhhbGYgb2YgdGhlIHNoYXJlZCB3
b3JrZXIKKyAgICAgICAgcHJvY2VzcyAoZXZlbiBpZiBhbGwgaXRzIGNsaWVudHMgYXJlIHN1c3Bl
bmRlZCkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2
aWNlV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpXZWJTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXI6OmRpZENyZWF0ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjphZGRTaGFyZWRXb3JrZXJPYmplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnJlbW92ZVNoYXJlZFdvcmtlck9iamVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6Zm9yRWFjaFNoYXJlZFdvcmtlck9i
amVjdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6Y29udGV4dENv
bm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpzaGFy
ZWRXb3JrZXJPYmplY3RzQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OnNoYXJlZFdvcmtlck9iamVjdHMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hh
cmVkV29ya2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
OjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3du
U2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpy
ZW1vdmVDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6YWRkU2hhcmVkV29ya2VyT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
cmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAuCisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJlbW90ZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVSZW1vdGVXb3JrZXJVc2VyQWdlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlv
bnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFn
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JSZW1vdGVXb3JrZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRSZW1vdGVXb3JrZXJVc2Vy
QWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlbW90ZVdv
cmtlclByZWZlcmVuY2VzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVu
dFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZl
cmVuY2VzU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wMi0wOSAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBOb24tdW5pZmllZCBidWlsZCBmaXhlcyBhZnRlciByMjg5MjQ3
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGM3YjE3ZmQ3MDc4NTRiMTI4NDk4ZDEx
MThmNGU2ZTdkNWIzZDg1ZmQuLjgzMDdhZDI3NDhmOWM2MjlhMjBjMDY5N2EzYzQzZjRlNWQwM2Mz
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5j
bHVkZSAiUGluZ0xvYWQuaCIKICNpbmNsdWRlICJQcmVjb25uZWN0VGFzay5oIgogI2luY2x1ZGUg
IlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlV29y
a2VyVHlwZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5o
IgpAQCAtMTI0OCw3ICsxMjQ5LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6dW5yZWdpc3RlclNoYXJlZFdvcmtlckNvbm5lY3Rpb24oKQogdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklz
Tm9Mb25nZXJOZWVkZWQoKQogewogICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29y
a2VyLCAic2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVk
ZWQ6Iik7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6U2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7Cisg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25O
b0xvbmdlck5lZWRlZCB7IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgd2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSB9LCAwKTsKIAogICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rp
b24gPSBudWxscHRyOwogfQpAQCAtMTI5OSw3ICsxMzAwLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y2xvc2VTV0NvbnRleHRDb25uZWN0aW9uKCkKIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uTm9Mb25nZXJOZWVkZWQoKQogewogICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2Vy
dmljZVdvcmtlciwgInNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25n
ZXJOZWVkZWQ6IFdlYlByb2Nlc3Mgbm8gbG9uZ2VyIHVzZWZ1bCBmb3IgcnVubmluZyBzZXJ2aWNl
IHdvcmtlcnMiKTsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwg
MCk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVtb3RlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZCB7IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHdl
YlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24g
PSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRl
eCBiMzkwY2FmYTYwNDFmM2U4MDFmZDJkM2E4YzI0M2I1NTQ3NTEyMjk0Li4zMjZjOWI3N2E1ZDM2
MmE0YTc4YmZlNTEwM2E1NmJmODUxYmE5YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgog
I2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKQEAgLTM3OCw3ICszNzksNyBAQCB2
b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNl
Y3VyaXR5T3JpZ2luRGF0YSYmIHRvcAogCiAgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKSB7CiAg
ICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pOwotICAgICAgICBtX25ldHdvcmtQcm9j
ZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzIHsgaWRlbnRpZmll
cigpLCBjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAgICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyB7
IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIGlkZW50aWZpZXIoKSwgY29ubmVjdGlv
bi53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOwogICAgIH0KIH0KIApAQCAtNDAzLDcgKzQw
NCw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudChjb25zdCBTY3JpcHRFeGVjdXRpb25DCiAgICAgaWYgKGlzRGVsZXRlZE9yaWdpbikg
ewogICAgICAgICBpZiAoYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBzZXJ2ZXIoKS5jb250ZXh0
Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluIHsgY2xpZW50
T3JpZ2luLmNsaWVudE9yaWdpbiB9KSkgewogICAgICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9
IHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiY+KCpjb250ZXh0Q29u
bmVjdGlvbik7Ci0gICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpVbnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MgeyBpZGVudGlmaWVyKCksIGNvbm5lY3Rpb24ud2Vi
UHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OlVucmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzIHsgUmVtb3RlV29ya2Vy
VHlwZTo6U2VydmljZVdvcmtlciwgaWRlbnRpZmllcigpLCBjb25uZWN0aW9uLndlYlByb2Nlc3NJ
ZGVudGlmaWVyKCkgfSwgMCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC01NDQsNyArNTQ1LDcg
QEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24KICAgICBjb25uZWN0aW9uLnNldFRocm90dGxlU3Rh
dGUoY29tcHV0ZVRocm90dGxlU3RhdGUoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSk7
CiAKICAgICBpZiAoaGFzTWF0Y2hpbmdDbGllbnQoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFp
bigpKSkKLSAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50UHJvY2VzcyB7IGlkZW50aWZpZXIoKSwgY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRl
bnRpZmllcigpIH0sIDApOworICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWdpc3Rl
clJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MgeyBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyLCBpZGVudGlmaWVyKCksIGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAw
KTsKIH0KIAogdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlckZyb21D
bGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIu
Y3BwCmluZGV4IDgwMDkxMzk1MjgwYzhkNzYwZWYxYTFkMTIxYzIxNDc1ZjQ5NWViYjguLjA1Mzc2
NjZhMDhlY2FkMmE1ODBhODM1ZjVkYWRiOWMwZjgxMTg3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29y
a2VyLmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlci5oIgogCisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgi
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTM5LDggKzQxLDkgQEAgc3RhdGljIEhhc2hN
YXA8V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllciwgV2ViU2hhcmVkV29ya2VyKj4mIGFs
bFdvcmtlcnMoKQogICAgIHJldHVybiBhbGxXb3JrZXJzOwogfQogCi1XZWJTaGFyZWRXb3JrZXI6
OldlYlNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtleSwgY29u
c3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucykKLSAgICA6IG1faWRlbnRp
ZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorV2ViU2hh
cmVkV29ya2VyOjpXZWJTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIs
IGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYga2V5LCBjb25zdCBXZWJDb3JlOjpXb3Jr
ZXJPcHRpb25zJiB3b3JrZXJPcHRpb25zKQorICAgIDogbV9zZXJ2ZXIoc2VydmVyKQorICAgICwg
bV9pZGVudGlmaWVyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkp
CiAgICAgLCBtX2tleShrZXkpCiAgICAgLCBtX3dvcmtlck9wdGlvbnMod29ya2VyT3B0aW9ucykK
IHsKQEAgLTUyLDYgKzU1LDcgQEAgV2ViU2hhcmVkV29ya2VyOjp+V2ViU2hhcmVkV29ya2VyKCkK
IHsKICAgICBBU1NFUlQoYWxsV29ya2VycygpLmdldChtX2lkZW50aWZpZXIpID09IHRoaXMpOwog
ICAgIGFsbFdvcmtlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAgICBBU1NFUlQobV9zaGFy
ZWRXb3JrZXJPYmplY3RzLmlzRW1wdHkoKSk7CiB9CiAKIFdlYlNoYXJlZFdvcmtlciogV2ViU2hh
cmVkV29ya2VyOjpmcm9tSWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCkBAIC02NCw0ICs2OCwzNSBAQCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBXZWJTaGFyZWRXb3JrZXI6OnJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QKICAgICByZXR1cm4g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwoKSB9OwogfQogCit2b2lkIFdlYlNoYXJl
ZFdvcmtlcjo6ZGlkQ3JlYXRlQ29udGV4dENvbm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit7CisgICAgZm9yIChhdXRv
JiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogbV9zaGFyZWRXb3JrZXJPYmplY3RzLmtl
eXMoKSkKKyAgICAgICAgY29udGV4dENvbm5lY3Rpb24uYWRkU2hhcmVkV29ya2VyT2JqZWN0KHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlcjo6
YWRkU2hhcmVkV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJy
ZWRNZXNzYWdlUG9ydCYgcG9ydCkKK3sKKyAgICBtX3NoYXJlZFdvcmtlck9iamVjdHMuYWRkKHNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBvcnQpOworICAgIGlmIChhdXRvKiBjb25uZWN0
aW9uID0gY29udGV4dENvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlvbi0+YWRkU2hhcmVk
V29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworfQorCit2b2lkIFdl
YlNoYXJlZFdvcmtlcjo6cmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAg
ICBtX3NoYXJlZFdvcmtlck9iamVjdHMucmVtb3ZlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpOworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb24oKSkKKyAg
ICAgICAgY29ubmVjdGlvbi0+cmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlcjo6Zm9yRWFjaFNoYXJl
ZFdvcmtlck9iamVjdChjb25zdCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmKT4m
IGFwcGx5KSBjb25zdAoreworICAgIGZvciAoYXV0byYgW3NoYXJlZFdvcmtlck9iamVjdElkZW50
aWZpZXIsIHBvcnRdIDogbV9zaGFyZWRXb3JrZXJPYmplY3RzKQorICAgICAgICBhcHBseShzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0KTsKK30KKworV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiogV2ViU2hhcmVkV29ya2VyOjpjb250ZXh0Q29ubmVjdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VydmVyLmNvbnRleHRDb25uZWN0aW9uRm9yUmVn
aXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4oKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaAppbmRleCAzNGI3YTRhODQzY2VmOWExN2ViYzBi
M2E1ZmE0Y2NkNGQwNjE2YjM0Li45M2JiNTY2ODJkYTE5MmNmMzQ3N2FlMDUxOTgyNDQ2YzQwMDNj
YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1No
YXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaApAQCAtMzksMTAgKzM5LDEzIEBAIGNsYXNzIFJl
Z2lzdHJhYmxlRG9tYWluOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViU2hhcmVk
V29ya2VyU2VydmVyOworY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjsKKwogY2xhc3MgV2ViU2hhcmVkV29ya2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdl
YlNoYXJlZFdvcmtlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIFdlYlNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmLCBjb25z
dCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJik7CisgICAgV2ViU2hhcmVkV29ya2VyKFdlYlNoYXJl
ZFdvcmtlclNlcnZlciYsIGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYsIGNvbnN0IFdl
YkNvcmU6Oldvcmtlck9wdGlvbnMmKTsKICAgICB+V2ViU2hhcmVkV29ya2VyKCk7CiAKICAgICBz
dGF0aWMgV2ViU2hhcmVkV29ya2VyKiBmcm9tSWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyKTsKQEAgLTUzLDcgKzU2LDE0IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fa2V5Lm9yaWdpbjsg
fQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9rZXkudXJsOyB9CiAgICAg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oKSBjb25zdDsKLSAg
ICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6
OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQ+JiBzaGFyZWRXb3JrZXJPYmplY3RzKCkgeyByZXR1cm4g
bV9zaGFyZWRXb3JrZXJPYmplY3RzOyB9CisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbiogY29udGV4dENvbm5lY3Rpb24oKSBjb25zdDsKKworICAgIHZvaWQgYWRk
U2hhcmVkV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmKTsKKyAgICB2b2lkIHJlbW92
ZVNoYXJlZFdvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
KTsKKyAgICB1bnNpZ25lZCBzaGFyZWRXb3JrZXJPYmplY3RzQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX3NoYXJlZFdvcmtlck9iamVjdHMuc2l6ZSgpOyB9CisgICAgdm9pZCBmb3JFYWNoU2hhcmVk
V29ya2VyT2JqZWN0KGNvbnN0IEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYpPiYp
IGNvbnN0OworCisgICAgdm9pZCBkaWRDcmVhdGVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CiAKICAgICBib29sIGlzUnVubmluZygp
IGNvbnN0IHsgcmV0dXJuIG1faXNSdW5uaW5nOyB9CiAgICAgdm9pZCBtYXJrQXNSdW5uaW5nKCkg
eyBtX2lzUnVubmluZyA9IHRydWU7IH0KQEAgLTY4LDYgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBX
ZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViU2hhcmVkV29ya2VyJikgPSBkZWxldGU7CiAgICAgV2Vi
U2hhcmVkV29ya2VyJiBvcGVyYXRvcj0oY29uc3QgV2ViU2hhcmVkV29ya2VyJikgPSBkZWxldGU7
CiAKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImIG1fc2VydmVyOwogICAgIFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlNoYXJlZFdv
cmtlcktleSBtX2tleTsKICAgICBXZWJDb3JlOjpXb3JrZXJPcHRpb25zIG1fd29ya2VyT3B0aW9u
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2Vy
L1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwCmluZGV4IDBjNTIzNTg0MGE1
ZWNkYmU0MzM1OWYxMjhmNDBmMDBmYjM1ZmVkZGUuLjI0NmU4Mzk3YTQ3MmZhNzU4NTg2MDMzODI1
ZTQwMGMwZGYwYmZmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApA
QCAtNTMsNyArNTMsNyBAQCBQQUw6OlNlc3Npb25JRCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNl
c3Npb25JRCgpCiB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtl
cihXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmJiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNo
YXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
V2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9w
dGlvbnMmJiB3b3JrZXJPcHRpb25zKQogewogICAgIGF1dG8mIHNoYXJlZFdvcmtlciA9IG1fc2hh
cmVkV29ya2Vycy5lbnN1cmUoc2hhcmVkV29ya2VyS2V5LCBbJl0gewotICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXI+KHNoYXJlZFdvcmtlcktleSwgd29ya2VyT3B0aW9u
cyk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFdlYlNoYXJlZFdvcmtlcj4oKnRoaXMsIHNo
YXJlZFdvcmtlcktleSwgd29ya2VyT3B0aW9ucyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwog
ICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVx
dWVzdFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj0le3ByaXZhdGV9
cywgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzaGFyZWRXb3JrZXItPmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKIApAQCAtNjQsMTYgKzY0LDE2IEBAIHZvaWQgV2ViU2hhcmVkV29y
a2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYm
IHNoYXJlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzaGFyZWRXb3JrZXItPnNoYXJl
ZFdvcmtlck9iamVjdHMoKS5hZGQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgcG9ydCk7
CisgICAgc2hhcmVkV29ya2VyLT5hZGRTaGFyZWRXb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllciwgcG9ydCk7CiAKLSAgICBpZiAoc2hhcmVkV29ya2VyLT5zaGFyZWRXb3Jr
ZXJPYmplY3RzKCkuc2l6ZSgpID4gMSkgewotICAgICAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3Jr
ZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgc2hhcmVk
IHdvcmtlciB3aXRoIHRoaXMgVVJMIGFscmVhZHkgZXhpc3RzIChub3cgc2hhcmVkIGJ5ICV1IHNo
YXJlZCB3b3JrZXIgb2JqZWN0cykiLCBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMo
KS5zaXplKCkpOworICAgIGlmIChzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHNDb3Vu
dCgpID4gMSkgeworICAgICAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgc2hhcmVkIHdvcmtlciB3aXRoIHRo
aXMgVVJMIGFscmVhZHkgZXhpc3RzIChub3cgc2hhcmVkIGJ5ICV1IHNoYXJlZCB3b3JrZXIgb2Jq
ZWN0cykiLCBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHNDb3VudCgpKTsKICAgICAg
ICAgaWYgKHNoYXJlZFdvcmtlci0+ZGlkRmluaXNoRmV0Y2hpbmcoKSkgewogICAgICAgICAgICAg
aWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQogICAgICAgICAgICAgICAg
IHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgeyB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAo
c2hhcmVkV29ya2VyLT5pc1J1bm5pbmcoKSkgewotICAgICAgICAgICAgYXV0byogY29udGV4dENv
bm5lY3Rpb24gPSBtX2NvbnRleHRDb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2VyLT5yZWdpc3Ry
YWJsZURvbWFpbigpKTsKKyAgICAgICAgICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gc2hh
cmVkV29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpOwogICAgICAgICAgICAgQVNTRVJUKGNvbnRl
eHRDb25uZWN0aW9uKTsKICAgICAgICAgICAgIGlmIChjb250ZXh0Q29ubmVjdGlvbikKICAgICAg
ICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+cG9zdENvbm5lY3RFdmVudCgqc2hhcmVkV29y
a2VyLCBwb3J0KTsKQEAgLTk2LDEwICs5NiwxMCBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZl
cjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoV2ViU2hhcmVkV29ya2VyJgog
ewogICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6
ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQgc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQgIiwgc2hhcmVkV29ya2VyPSVwLCBzdWNjZXNzPSVkIiwgc2hhcmVkV29ya2Vy
LmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAmc2hhcmVkV29ya2VyLCBmZXRjaFJlc3VsdC5lcnJv
ci5pc051bGwoKSk7CiAKLSAgICBmb3IgKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmll
ciA6IHNoYXJlZFdvcmtlci5zaGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgc2hh
cmVkV29ya2VyLmZvckVhY2hTaGFyZWRXb3JrZXJPYmplY3QoWyZdKGF1dG8gc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllciwgYXV0byYpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5l
Y3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnBy
b2Nlc3NJZGVudGlmaWVyKCkpKQogICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5
V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlvbihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
LCBmZXRjaFJlc3VsdC5lcnJvcik7Ci0gICAgfQorICAgIH0pOwogCiAgICAgaWYgKCFmZXRjaFJl
c3VsdC5lcnJvci5pc051bGwoKSkgewogICAgICAgICBtX3NoYXJlZFdvcmtlcnMucmVtb3ZlKHNo
YXJlZFdvcmtlci5rZXkoKSk7CkBAIC0xMDgsMTQgKzEwOCwxMSBAQCB2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3JrZXJTY3JpcHQoV2ViU2hhcmVk
V29ya2VyJgogCiAgICAgc2hhcmVkV29ya2VyLnNldEZldGNoUmVzdWx0KFdURk1vdmUoZmV0Y2hS
ZXN1bHQpKTsKIAotICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBzaGFyZWRXb3JrZXIucmVn
aXN0cmFibGVEb21haW4oKTsKLSAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRD
b25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVEb21haW4pOwotICAgIGlm
ICghY29udGV4dENvbm5lY3Rpb24pIHsKLSAgICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24o
cmVnaXN0cmFibGVEb21haW4pOworICAgIGlmIChhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHNo
YXJlZFdvcmtlci5jb250ZXh0Q29ubmVjdGlvbigpKSB7CisgICAgICAgIGNvbnRleHRDb25uZWN0
aW9uLT5sYXVuY2hTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLQotICAgIGNvbnRleHRDb25uZWN0aW9uLT5sYXVuY2hTaGFyZWRXb3JrZXIoc2hhcmVk
V29ya2VyKTsKKyAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihzaGFyZWRXb3JrZXIucmVnaXN0
cmFibGVEb21haW4oKSk7CiB9CiAKIGJvb2wgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpuZWVkc0Nv
bnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdApAQCAtMTQ0LDcgKzE0MSw2IEBA
IHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvCiAKICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0NvbnRl
eHRDb25uZWN0aW9uRG9tYWlucy5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpOwogICAgICAg
ICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9t
YWluKTsKLQogICAgICAgICBpZiAobV9jb250ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0
cmFibGVEb21haW4pKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzQsNyArMTcwLDcgQEAg
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNo
YXJlZFdvcmtlclNlcnZlclRvQ29udGUKIAogICAgIG1fY29udGV4dENvbm5lY3Rpb25zLnJlbW92
ZShyZWdpc3RyYWJsZURvbWFpbik7CiAKLSAgICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICBpZiAoY29udGV4dENv
bm5lY3Rpb24uaGFzU2hhcmVkV29ya2VyT2JqZWN0cygpKQogICAgICAgICBjcmVhdGVDb250ZXh0
Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKQEAgLTE4Myw3ICsxNzksMTEgQEAg
dm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnQKICAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCglcCkgd2ViUHJv
Y2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAmY29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25u
ZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAgYXV0byYgcmVn
aXN0cmFibGVEb21haW4gPSBjb250ZXh0Q29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOwog
ICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyIDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7
Ci0gICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkgJiYgcmVnaXN0
cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXItPnVybCgpKSkKKyAgICAgICAgaWYgKCFy
ZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHNoYXJlZFdvcmtlci0+dXJsKCkpKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgc2hhcmVkV29ya2VyLT5kaWRDcmVhdGVDb250ZXh0Q29u
bmVjdGlvbihjb250ZXh0Q29ubmVjdGlvbik7CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmRp
ZEZpbmlzaEZldGNoaW5nKCkpCiAgICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi5sYXVuY2hT
aGFyZWRXb3JrZXIoKnNoYXJlZFdvcmtlcik7CiAgICAgfQogfQpAQCAtMTk1LDggKzE5NSw4IEBA
IHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdh
eShjb25zdCBXZWJDb3JlOjpTaGFyZWRXCiAgICAgaWYgKCFzaGFyZWRXb3JrZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLnJlbW92
ZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKLSAgICBpZiAoIXNoYXJlZFdvcmtlci0+
c2hhcmVkV29ya2VyT2JqZWN0cygpLmlzRW1wdHkoKSkKKyAgICBzaGFyZWRXb3JrZXItPnJlbW92
ZVNoYXJlZFdvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBp
ZiAoc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzQ291bnQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgc2h1dERvd25TaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VyS2V5KTsKQEAgLTIw
OSwxMyArMjA5LDEzIEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpzaHV0RG93blNoYXJl
ZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmCiAgICAgaWYgKCFzaGFyZWRX
b3JrZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0g
Y29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihzaGFyZWRXb3JrZXItPnJlZ2lz
dHJhYmxlRG9tYWluKCkpOworICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gc2hhcmVkV29y
a2VyLT5jb250ZXh0Q29ubmVjdGlvbigpOwogICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNvbnRleHRDb25uZWN0aW9uLT50ZXJtaW5hdGVTaGFyZWRX
b3JrZXIoKnNoYXJlZFdvcmtlcik7CiAKLSAgICBpZiAoIW5lZWRzQ29udGV4dENvbm5lY3Rpb25G
b3JSZWdpc3RyYWJsZURvbWFpbihzaGFyZWRXb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpKQor
ICAgIGlmICghY29udGV4dENvbm5lY3Rpb24tPmhhc1NoYXJlZFdvcmtlck9iamVjdHMoKSkKICAg
ICAgICAgY29udGV4dENvbm5lY3Rpb24tPmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CiB9
CiAKQEAgLTIzNSwxMCArMjM1LDEwIEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1v
dmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJCiAKICAgICBW
ZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSwgV2ViQ29yZTo6U2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcj4+IHNoYXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXk7CiAg
ICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIgOiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsK
LSAgICAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVk
V29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgICAgIHNoYXJlZFdv
cmtlci0+Zm9yRWFjaFNoYXJlZFdvcmtlck9iamVjdChbJl0oYXV0byBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLCBhdXRvJikgewogICAgICAgICAgICAgaWYgKHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSA9PSBwcm9jZXNzSWRlbnRpZmllcikKICAg
ICAgICAgICAgICAgICBzaGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5LmFwcGVuZChzdGQ6Om1h
a2VfcGFpcihzaGFyZWRXb3JrZXItPmtleSgpLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVy
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgfSk7CiAgICAgfQogICAgIGZvciAoYXV0byYgW3NoYXJl
ZFdvcmtlcktleSwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcl0gOiBzaGFyZWRXb3JrZXJP
YmplY3RzR29pbmdBd2F5KQogICAgICAgICBzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShz
aGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOwpAQCAtMjU2LDEw
ICsyNTYsMTAgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnBvc3RFeGNlcHRpb25Ub1dv
cmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGUKICAgICBpZiAoIXNoYXJlZFdvcmtl
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXIgOiBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5rZXlzKCkpIHsK
KyAgICBzaGFyZWRXb3JrZXItPmZvckVhY2hTaGFyZWRXb3JrZXJPYmplY3QoWyZdKGF1dG8gc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgYXV0byYpIHsKICAgICAgICAgaWYgKGF1dG8qIHNl
cnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQogICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlv
bi0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOwot
ICAgIH0KKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCmluZGV4IGJkNTRlZTk5YzE2Mjc4ZTU1NWNkNjdiYmI2NzczNzVjY2Q5YjViNTguLjdmODZj
MTJkOTlhZTI2NTlhNjBmOTBjNjY3OWZkNzYxNzJiMGNhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CkBAIC0yOCw2ICsyOCw5IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5o
IgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJl
bW90ZVdvcmtlclR5cGUuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJXZWJTaGFyZWRXb3JrZXIuaCIKICNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgpAQCAtOTEsOCArOTQsOSBAQCB2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtl
cihXZWJTaGFyZWRXb3JrZQogICAgIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygibGF1
bmNoU2hhcmVkV29ya2VyOiBzaGFyZWRXb3JrZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVk
V29ya2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKICAgICBzaGFyZWRXb3JrZXIubWFya0Fz
UnVubmluZygpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6TGF1bmNoU2hhcmVkV29ya2VyIHsgc2hhcmVkV29ya2VyLm9yaWdpbigp
LCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpLCBzaGFyZWRXb3JrZXIudXJsKCksIHNoYXJlZFdv
cmtlci53b3JrZXJPcHRpb25zKCksIHNoYXJlZFdvcmtlci5mZXRjaFJlc3VsdCgpIH0pOwotICAg
IGZvciAoYXV0byYgcG9ydCA6IHNoYXJlZFdvcmtlci5zaGFyZWRXb3JrZXJPYmplY3RzKCkudmFs
dWVzKCkpCisgICAgc2hhcmVkV29ya2VyLmZvckVhY2hTaGFyZWRXb3JrZXJPYmplY3QoWyZdKGF1
dG8sIGF1dG8mIHBvcnQpIHsKICAgICAgICAgcG9zdENvbm5lY3RFdmVudChzaGFyZWRXb3JrZXIs
IHBvcnQpOworICAgIH0pOwogfQogCiB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZlbnQoY29uc3QgV2ViU2hhcmVkV29ya2VyJiBzaGFy
ZWRXb3JrZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHBvcnQpCkBA
IC0xMDcsNiArMTExLDI5IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29ya2VyKGNvbnN0IFdlYlNoCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVT
aGFyZWRXb3JrZXIgeyBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigpIH0pOwogfQogCit2b2lkIFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmFkZFNoYXJlZFdvcmtlck9i
amVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIpCit7CisgICAgYXV0byYgc2hhcmVkV29ya2VyT2JqZWN0cyA9IG1fc2hh
cmVkV29ya2VyT2JqZWN0cy5lbnN1cmUoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcigpLCBbXSB7IHJldHVybiBIYXNoU2V0PFdlYkNvcmU6OlNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXI+IHsgfTsgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIHNoYXJlZFdv
cmtlck9iamVjdHMuYWRkKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworCisgICAgaWYg
KHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgIT0gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5w
cm9jZXNzSWRlbnRpZmllcigpICYmIHNoYXJlZFdvcmtlck9iamVjdHMuc2l6ZSgpID09IDEpCisg
ICAgICAgIG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OlJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyB7IFJlbW90
ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5w
cm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworfQorCit2
b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnJlbW92ZVNoYXJl
ZFdvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJl
ZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgYXV0byBpdCA9IG1fc2hhcmVkV29ya2Vy
T2JqZWN0cy5maW5kKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZp
ZXIoKSk7CisgICAgaWYgKGl0ID09IG1fc2hhcmVkV29ya2VyT2JqZWN0cy5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGl0LT52YWx1ZS5yZW1vdmUoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcik7CisgICAgaWYgKCFpdC0+dmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3NoYXJlZFdvcmtlck9iamVjdHMucmVtb3ZlKGl0KTsKKyAgICBpZiAod2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSAhPSBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVu
dGlmaWVyKCkpCisgICAgICAgIG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlVucmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQ
cm9jZXNzIHsgUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCBzaGFyZWRXb3JrZXJPYmpl
Y3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkg
fSwgMCk7Cit9CisKICN1bmRlZiBDT05URVhUX0NPTk5FQ1RJT05fUkVMRUFTRV9MT0cKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggZDZhZWEzMTlhYTNlODBlNjcw
ZGVkYmMwYzhhYmQwZjJmNmI1Y2EyNC4uODQ5MDc3ODRlZDljMzRmOGY2OGQxZmU0MDZjMjliZTVi
NmIxNDU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRX
b3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldl
YlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9t
YWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJJZGVudGlmaWVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9UcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTYxLDkgKzYyLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtl
cihjb25zdCBXZWJTaGFyZWRXb3JrZXImKTsKIAogICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25n
ZXJOZWVkZWQoKTsKKyAgICBib29sIGhhc1NoYXJlZFdvcmtlck9iamVjdHMoKSBjb25zdCB7IHJl
dHVybiAhbV9zaGFyZWRXb3JrZXJPYmplY3RzLmlzRW1wdHkoKTsgfQogCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAor
ICAgIHZvaWQgYWRkU2hhcmVkV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworCiBwcml2YXRlOgogICAgIC8vIElQQyBt
ZXNzYWdlcy4KICAgICB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpT
aGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKQEAg
LTc1LDYgKzgwLDcgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgbV9jb25uZWN0aW9uOwogICAgIFdlYWtQdHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3Nl
cnZlcjsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWlu
OworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIEhhc2hTZXQ8V2ViQ29y
ZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj4+IG1fc2hhcmVkV29ya2VyT2JqZWN0czsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlV29ya2VyVHlwZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlV29y
a2VyVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyODE2ZDk0MWY4MmZlYzQ3ZWY4ZjU0NjRkZmQ2ODllYjYw
YjdjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVXb3Jr
ZXJUeXBlLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBSZW1vdGVXb3JrZXJUeXBlIDogdWludDMy
X3QgeworICAgIFNlcnZpY2VXb3JrZXIgPSAxIDw8IDAsCisgICAgU2hhcmVkV29ya2VyID0gMSA8
PCAxCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6UmVtb3RlV29ya2VyVHlwZT4geworICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6UmVtb3RlV29ya2Vy
VHlwZSwKKyAgICAgICAgV2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLAor
ICAgICAgICBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcgorICAgID47Cit9
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMzMwMjBiZDVjM2NkOTQxNzc1NjE1NzlhYzIwZmMzOGY5
YzY5Mjc4ZS4uZWRjY2ZmMjA4ZWFjZWQ0MTRmNzI3YmFmYTQzNjM2YTRhZTAyYmNjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0
ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2MKIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtl
clByb2Nlc3NlcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikK
IHsKICAgICBpZiAoUmVmUHRyIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJ
ZGVudGlmaWVyKHByb2Nlc3NJZGVudGlmaWVyKSkgewotICAgICAgICBwcm9jZXNzLT5kaXNhYmxl
V29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOworICAg
ICAgICBwcm9jZXNzLT5kaXNhYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyKTsKICAgICAgICAgcHJvY2Vzcy0+cmVxdWVzdFRlcm1pbmF0aW9uKFByb2Nlc3NU
ZXJtaW5hdGlvblJlYXNvbjo6RXhjZWVkZWRDUFVMaW1pdCk7CiAgICAgfQogfQpAQCAtMTQyMCwz
NiArMTQyMCwzNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcwogICAgIFdlYlByb2Nlc3NQb29s
Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
V1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiksIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6
b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtl
clR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzaGFyZWRXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikK
IHsKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKLX0KKyAgICBhdXRvKiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNz
Rm9ySWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgYXV0byogc2hhcmVkV29y
a2VyUHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoc2hhcmVk
V29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOworICAgIGlmICghd2ViUHJvY2VzcyB8fCAhc2hhcmVk
V29ya2VyUHJvY2VzcykKKyAgICAgICAgcmV0dXJuOwogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8qIHByb2Nlc3Mg
PSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQotICAg
ICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIpOworICAgIHNoYXJlZFdvcmtlclByb2Nlc3MtPnJlZ2lzdGVyUmVtb3Rl
V29ya2VyQ2xpZW50UHJvY2Vzcyh3b3JrZXJUeXBlLCAqd2ViUHJvY2Vzcyk7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhS
ZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdl
YlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzaGFyZWRXb3Jr
ZXJQcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBhdXRvKiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vz
c1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAg
YXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJ
ZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgaWYgKCF3ZWJQ
cm9jZXNzIHx8ICFzZXJ2aWNlV29ya2VyUHJvY2VzcykKKyAgICBhdXRvKiBzaGFyZWRXb3JrZXJQ
cm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihzaGFyZWRXb3Jr
ZXJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgaWYgKCF3ZWJQcm9jZXNzIHx8ICFzaGFyZWRXb3Jr
ZXJQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2Vzcygqd2ViUHJvY2Vzcyk7CisgICAgc2hh
cmVkV29ya2VyUHJvY2Vzcy0+dW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3Mod29y
a2VyVHlwZSwgKndlYlByb2Nlc3MpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVu
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2Vy
dmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpy
ZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFJlbW90ZVdvcmtlclR5
cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKIHsK
LSAgICBhdXRvKiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRp
Zmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgYXV0byogc2VydmljZVdvcmtlclByb2Nl
c3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVu
dGlmaWVyKTsKLSAgICBpZiAoIXdlYlByb2Nlc3MgfHwgIXNlcnZpY2VXb3JrZXJQcm9jZXNzKQot
ICAgICAgICByZXR1cm47CisgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6
OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICBwcm9jZXNzLT5kaXNh
YmxlUmVtb3RlV29ya2Vycyh3b3JrZXJUeXBlKTsKK30KIAotICAgIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzLT51bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoKndlYlByb2Nlc3MpOwor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdp
c3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVE
b21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN0YXJ0
U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKQEAgLTE0NjUsMTIgKzE0NjUsNiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJv
Y2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSQogfQogI2VuZGlmCiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIGlmIChhdXRvKiBwcm9j
ZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkK
LSAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJU
eXBlOjpTaGFyZWRXb3JrZXIpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVl
c3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBxdW90YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgUkVMRUFTRV9MT0coU3RvcmFnZSwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVz
dFN0b3JhZ2VTcGFjZSIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA2ODQxYTM0ZmUwOWQxMmJhOTNk
NGVmOGM4MGU0NTMzYTU1ZmQ2NWM0Li4wODMzYzcxM2FiMjRiZmJhNTI5NTc5ZGRlOTQxNTg5MjRh
Nzk0NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaApAQCAtODUsNiArODUsNyBAQCBjbGFzcyBXZWJDb29raWVNYW5h
Z2VyUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTsKIAorZW51bSBjbGFzcyBSZW1vdGVXb3JrZXJUeXBlIDogdWludDMyX3Q7CiBl
bnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNz
IFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1aW50OF90OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uIDogdWludDhfdDsKQEAgLTMyOCwxNCArMzI5LDEzIEBAIHByaXZhdGU6CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXJ2aWNlV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAg
dm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIHZvaWQgdW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlBy
b2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgc3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3Vu
ZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nl
c3NJZGVudGlmaWVyKTsKICAgICB2b2lkIGVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50
aWZpZXIpOwogI2VuZGlmCi0gICAgdm9pZCBzaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5v
TG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW90
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoUmVtb3RlV29ya2VyVHlwZSwg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwor
ICAgIHZvaWQgcmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5
cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBzaGFyZWRXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7Cisg
ICAgdm9pZCB1bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJU
eXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2hhcmVkV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwog
CiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDE1NzU3ZWQ5YTI1MmIwOWRj
ZDExYmI1ZTZiOWM4YTEwZDA1MzRjOWEuLjc0NjA2MDkwMWU4ZmRkOTJmNDdkZGJlZmEyZTRhODBm
MTZiYzQ5NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTU0LDE0ICs1NCwx
MyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKLSAgICBTZXJ2aWNlV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlm
aWVyKQotICAgIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKLSAgICBVbnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzSWRlbnRpZmllcikKICAgICBTdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vz
c2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50
aWZpZXIpCiAgICAgRW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICNlbmRp
ZgogICAgIEVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAgIFNoYXJlZFdvcmtlckNvbnRleHRD
b25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRp
ZmllcikKKyAgICBSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKGVu
dW06dWludDMyX3QgV2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgUmVnaXN0ZXJSZW1vdGVXb3JrZXJD
bGllbnRQcm9jZXNzKGVudW06dWludDMyX3QgV2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlIHdvcmtl
clR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciByZW1vdGVXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7
CisgICAgVW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoZW51bTp1aW50MzJfdCBX
ZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHJl
bW90ZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKIAogICAgIFNldFdlYlByb2Nlc3NIYXNVcGxv
YWRzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJRCwgYm9vbCBoYXNVcGxvYWQp
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDMwNWUyYjlh
YmRmMzVkYjBlYjg2ZGFkZjNhOTEzMzQwNzI2MjJlYTYuLjA4MDcyMzAwNjEyMzZjYmZmMzllOTJh
MGE4ZjdmNzFhZGI5MjBiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMzY5Niw3ICszNjk2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2Vu
dChTdHJpbmcmJiB1c2VyQWdlbnQpCiAKICAgICAvLyBXZSB1cGRhdGUgdGhlIHNlcnZpY2Ugd29y
a2VyIHRoZXJlIGF0IHRoZSBtb21lbnQgdG8gYmUgc3VyZSB3ZSB1c2UgdmFsdWVzIHVzZWQgYnkg
YWN0dWFsIHdlYiBwYWdlcy4KICAgICAvLyBGSVhNRTogUmVmYWN0b3IgdGhpcyB3aGVuIHdlIGhh
dmUgYSBiZXR0ZXIgVXNlci1BZ2VudCBzdG9yeS4KLSAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2wo
KS51cGRhdGVXb3JrZXJVc2VyQWdlbnQobV91c2VyQWdlbnQpOworICAgIHByb2Nlc3MoKS5wcm9j
ZXNzUG9vbCgpLnVwZGF0ZVJlbW90ZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7CiAKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBmMTE2ZmUyOWM4YjIxNjVmMTFj
ZjYwYTZmMWY2NmM1ZjEzZGEwNjBjLi42ZDg4MjhmMmU0ZDFiODkxMTAyNzEzNTcyNmU3NWFlMzBi
ODU0MDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBA
IC01NDYsNyArNTQ2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWcKICAgICBpZiAoc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2aWNlIHdv
cmtlciBmb3IgYSBzZXJ2aWNlIHdvcmtlciBwYWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdl
IHVzZSB1c2UgdGhlIHBhZ2UncyBXZWJQcm9jZXNzIGZvciB0aGUgc2VydmljZSB3b3JrZXIuCiAg
ICAgICAgIGlmICgoc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6
cHJvY2Vzc0ZvcklkZW50aWZpZXIoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5wcm9jZXNz
SWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkt
PmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
LCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMo
KSk7CisgICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVSZW1vdGVX
b3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQb29sLT51c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yUmVtb3RlV29ya2VycygpKTsKICAgICAgICAg
ICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsK
ICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJv
Y2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRT
aHV0RG93blByb2Nlc3M6Ok5vKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSk7CkBAIC01NjQsNyArNTY0LDcgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWcKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7Ci0gICAg
ICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nl
c3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworICAgICAgICAgICAgc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllckZvclJlbW90ZVdvcmtlcnMoKSk7CiAKICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAgICAgICAgICAgICBwcm9j
ZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsK
QEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZwogICAgIH0KIAogICAg
IGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nl
c3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJv
eHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVE
b21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAg
ICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yUmVtb3Rl
V29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJl
Z2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJhYmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3Jl
KTsKICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5w
dHIoKTsKIAogICAgICAgICBXRUJQUk9DRVNTUE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2Vydmlj
ZVdvcmtlciwgImVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2VzPSVw
LCBQSUQ9JWQpIiwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC01ODYsMTggKzU4NiwxOCBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKFJlZwogICAgICAgICBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMuYXBw
ZW5kKFdURk1vdmUobmV3UHJvY2Vzc1Byb3h5KSk7CiAgICAgfQogCi0gICAgd29ya2VyUHJvY2Vz
c2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KTsKKyAgICByZW1vdGVXb3JrZXJQ
cm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOwogCi0gICAgc2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQocHJvY2Vz
c1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJl
bmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5j
ZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+
bV93b3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHktPnNldFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQp
OworICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0KHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bv
b2wtPm1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2Rl
ZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4s
IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50LmlzTnVsbCgp
KQorICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRSZW1vdGVXb3JrZXJVc2Vy
QWdlbnQocHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50KTsKIH0KICNlbmRpZgog
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcykKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21SZW1vdGVX
b3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogewotICAgIEFTU0VSVCh3
b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7Ci0gICAgd29ya2VyUHJvY2Vzc2Vz
KCkucmVtb3ZlKHByb2Nlc3MpOworICAgIEFTU0VSVChyZW1vdGVXb3JrZXJQcm9jZXNzZXMoKS5j
b250YWlucyhwcm9jZXNzKSk7CisgICAgcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHBy
b2Nlc3MpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC02MjMsNyArNjIzLDcg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkMKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSA9IHByb2Nlc3MucHRyKCk7Ci0gICAgICAgIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldv
cmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHktPmVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCBw
cm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclJlbW90ZVdvcmtl
cnMoKSk7CiAKICAgICAgICAgaWYgKHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nl
c3NDYWNoZSgpKSB7CiAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCku
cmVtb3ZlUHJvY2Vzcygqc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6
OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwpAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhXZWJDCiAgICAgfQogCiAgICAgaWYgKCFzaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9jZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNy
ZWF0ZUZvcldvcmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIs
ICpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwg
KndlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlRm9yUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFy
ZWRXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVE
b21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOwogICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNz
UHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRyKCk7CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xf
UkVMRUFTRV9MT0dfU1RBVElDKFNoYXJlZFdvcmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdv
cmtlciBwcm9jZXNzIChwcm9jZXNzPSVwLCBQSUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5LCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAt
NjQ0LDExICs2NDQsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkMKICAgICAgICAgcHJvY2Vz
c1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChXVEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAg
IH0KIAotICAgIHdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5
KTsKKyAgICByZW1vdGVXb3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eSk7CiAKLSAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJlZFdv
cmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9v
bC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBh
Z2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNl
ckFnZW50LmlzTnVsbCgpKQotICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNldFdv
cmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOworICAgIHNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChwcm9jZXNz
UG9vbC0+bV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdv
cmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3Vw
LT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJVc2Vy
QWdlbnQuaXNOdWxsKCkpCisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+c2V0UmVt
b3RlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclVzZXJBZ2VudCk7
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNo
YW5nZWQoKQpAQCAtMTA1NCw3ICsxMDU0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29u
bmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQogICAgIG1fYmFja0ZvcndhcmRD
YWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nlc3MocHJvY2Vzcyk7CiAKICAgICBpZiAocHJvY2Vz
cy5pc1J1bm5pbmdXb3JrZXJzKCkpCi0gICAgICAgIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMo
cHJvY2Vzcyk7CisgICAgICAgIHJlbW92ZUZyb21SZW1vdGVXb3JrZXJQcm9jZXNzZXMocHJvY2Vz
cyk7CiAKICAgICBzdGF0aWNfY2FzdDxXZWJDb250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8
V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCkpLT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3Mp
OwogCkBAIC0xMTE0LDEyICsxMTE0LDEyIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nl
c3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiAgICAg
cmV0dXJuIGNyZWF0ZU5ld1dlYlByb2Nlc3MoJndlYnNpdGVEYXRhU3RvcmUsIGNhcHRpdmVQb3J0
YWxNb2RlKTsKIH0KIAotVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNz
UG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKQorVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllckZvclJlbW90ZVdvcmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29u
dGVudENvbnRyb2xsZXJGb3JXb3JrZXJzKQotICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxl
ckZvcldvcmtlcnMgPSBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7Cisg
ICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJvbGxlckZvclJlbW90ZVdvcmtlcnMpCisgICAgICAg
IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yUmVtb3RlV29ya2VycyA9IFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKIAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29u
dHJvbGxlckZvcldvcmtlcnMtPmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gbV91c2VyQ29udGVu
dENvbnRyb2xsZXJGb3JSZW1vdGVXb3JrZXJzLT5pZGVudGlmaWVyKCk7CiB9CiAKIFJlZjxXZWJQ
YWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VD
bGllbnQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIHBhZ2VDb25maWd1cmF0aW9uKQpA
QCAtMTE2NSwxMyArMTE2NSwxMyBAQCBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6
Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0
byBwYWdlID0gcHJvY2Vzcy0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uKSk7CiAKLSAgICBpZiAoIW1fd29ya2VyUHJlZmVyZW5jZXMpIHsKLSAgICAg
ICAgbV93b3JrZXJQcmVmZXJlbmNlcyA9IHBhZ2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAg
ICAgZm9yIChhdXRvJiB3b3JrZXJQcm9jZXNzIDogd29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAg
ICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoKm1fd29ya2Vy
UHJlZmVyZW5jZXMpOworICAgIGlmICghbV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlcykgeworICAg
ICAgICBtX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVyZW5jZXNTdG9yZSgp
OworICAgICAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiByZW1vdGVXb3JrZXJQcm9jZXNz
ZXMoKSkKKyAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlUmVtb3RlV29ya2VyUHJlZmVy
ZW5jZXNTdG9yZSgqbV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlcyk7CiAgICAgfQogICAgIGlmICh1
c2VyQ29udGVudENvbnRyb2xsZXIpCi0gICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9y
V29ya2VycyA9IHVzZXJDb250ZW50Q29udHJvbGxlcjsKKyAgICAgICAgbV91c2VyQ29udGVudENv
bnRyb2xsZXJGb3JSZW1vdGVXb3JrZXJzID0gdXNlckNvbnRlbnRDb250cm9sbGVyOwogCiAgICAg
Ym9vbCBlbmFibGVQcm9jZXNzU3dhcE9uQ3Jvc3NTaXRlTmF2aWdhdGlvbiA9IHBhZ2UtPnByZWZl
cmVuY2VzKCkucHJvY2Vzc1N3YXBPbkNyb3NzU2l0ZU5hdmlnYXRpb25FbmFibGVkKCk7CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTExOTQsMTMgKzExOTQsMTMgQEAgUmVmPFdlYlBhZ2VQ
cm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgUmVmPEFQSToKICAgICByZXR1cm4gcGFnZTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6
dXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6dXBkYXRlUmVtb3RlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50KQogewotICAgIGlmIChtX3dvcmtlclVzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCisgICAg
aWYgKG1fcmVtb3RlV29ya2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fd29ya2VyVXNlckFnZW50ID0gdXNlckFnZW50OwotICAgIGZvciAoYXV0byYgd29y
a2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3NlcygpKQotICAgICAgICB3b3JrZXJQcm9jZXNzLnNl
dFdvcmtlclVzZXJBZ2VudChtX3dvcmtlclVzZXJBZ2VudCk7CisgICAgbV9yZW1vdGVXb3JrZXJV
c2VyQWdlbnQgPSB1c2VyQWdlbnQ7CisgICAgZm9yIChhdXRvJiB3b3JrZXJQcm9jZXNzIDogcmVt
b3RlV29ya2VyUHJvY2Vzc2VzKCkpCisgICAgICAgIHdvcmtlclByb2Nlc3Muc2V0UmVtb3RlV29y
a2VyVXNlckFnZW50KG1fcmVtb3RlV29ya2VyVXNlckFnZW50KTsKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCkBAIC0xNTgxLDEyICsx
NTgxLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzKCkK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhp
cyB9OwogICAgIFZlY3RvcjxSZWY8V2ViUHJvY2Vzc1Byb3h5Pj4gc2VydmljZVdvcmtlclByb2Nl
c3NlczsKLSAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7
CisgICAgcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2Vzcykg
ewogICAgICAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2aWNlV29ya2VycygpKQogICAgICAg
ICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Nlcy5hcHBlbmQocHJvY2Vzcyk7CiAgICAgfSk7CiAg
ICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNz
ZXMpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9j
ZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOworICAgICAgICBzZXJ2aWNlV29y
a2VyUHJvY2Vzcy0+ZGlzYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlcik7CiAjZW5kaWYKIH0KIApAQCAtMTgxNCw3ICsxODE0LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cmVwb3J0V2ViQ29udGVudENQVVRpbWUoU2Vjb25kcyBjcHVUaW1lLCB1aW50NjRf
dCBhY3Rpdml0eVMKICNlbmRpZgogfQogCi1XZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBX
ZWJQcm9jZXNzUG9vbDo6d29ya2VyUHJvY2Vzc2VzKCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nlc3NQ
cm94eT4mIFdlYlByb2Nlc3NQb29sOjpyZW1vdGVXb3JrZXJQcm9jZXNzZXMoKQogewogICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNz
ZXM7CiAgICAgcmV0dXJuIHByb2Nlc3NlczsKQEAgLTE4MzMsMTMgKzE4MzMsMTMgQEAgdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlvbnMoKQogCiAgICAgLy8gQ2hlY2sg
b24gbmV4dCBydW4gbG9vcCBzaW5jZSB0aGUgd2ViIHByb2Nlc3MgcHJveHkgdG9rZW5zIGFyZSBw
cm9iYWJseSBiZWluZyB1cGRhdGVkLgogICAgIGNhbGxPbk1haW5SdW5Mb29wKFtdIHsKLSAgICAg
ICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbXShhdXRvJiB3b3JrZXJQcm9jZXNzKSB7Cisg
ICAgICAgIHJlbW90ZVdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goW10oYXV0byYgd29ya2VyUHJv
Y2VzcykgewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICAgICAgICAgIGlmICh3b3Jr
ZXJQcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCi0gICAgICAgICAgICAgICAgd29y
a2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQcm94eTo6
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CisgICAgICAgICAgICAgICAgd29ya2VyUHJvY2Vz
cy51cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFJlbW90ZVdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIpOwogI2VuZGlmCiAgICAgICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1
bm5pbmdTaGFyZWRXb3JrZXJzKCkpCi0gICAgICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRh
dGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hh
cmVkV29ya2VyKTsKKyAgICAgICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVJlbW90ZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC0xODQ4LDcgKzE4NDgsNyBAQCBib29sIFdlYlByb2Nl
c3NQb29sOjppc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGluZWZmaWNpZW50LgotICAgIHJldHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3Nl
cygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6YW55T2YocmVt
b3RlV29ya2VyUHJvY2Vzc2VzKCksIFtwYWdlSURdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAg
cmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShwYWdlSUQpOwogICAgIH0p
OwogI2VuZGlmCkBAIC0yMTc3LDcgKzIxNzcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRV
c2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKGJvb2wgdXNlU2VwYXJhdGVTZXJ2aWNlVwog
c2l6ZV90IFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3QK
IHsKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFj
aChbJl0oYXV0byYgcHJvY2VzcykgeworICAgIHJlbW90ZVdvcmtlclByb2Nlc3NlcygpLmZvckVh
Y2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2Vy
dmljZVdvcmtlcnMoKSkKICAgICAgICAgICAgICsrY291bnQ7CiAgICAgfSk7CkBAIC0yMTg2LDE0
ICsyMTg2LDE0IEBAIHNpemVfdCBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb3hpZXND
b3VudCgpIGNvbnN0CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJGb3Jl
Z3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlP
Zih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6
OmFueU9mKHJlbW90ZVdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAg
ICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JU
ZXN0aW5nKCk7CiAgICAgfSk7CiB9CiAKIGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VX
b3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
V1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJl
dHVybiBXVEY6OmFueU9mKHJlbW90ZVdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNz
KSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0
aXZpdHlGb3JUZXN0aW5nKCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAppbmRleCBjYjM4OTZkZWJlM2E0YzQ1MDk5ZmY1MzE0NDJhYjJlYTA4NmUy
YzZlLi5lMjUzYTVlNzNhNDg2OWFiODlkNDIwNzA4MDY2ZjEwNWVlODEwODk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTM3NCw3ICszNzQsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0RpZFRlcm1pbmF0ZShOZXR3b3JrUHJvY2Vzc1By
b3h5JiwgTmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRpb25SZWFzb24pOwogCiAgICAgYm9v
bCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2ViUGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7Ci0g
ICAgdm9pZCByZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOworICAg
IHZvaWQgcmVtb3ZlRnJvbVJlbW90ZVdvcmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hT
ZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0zODQsOCArMzg0LDggQEAg
cHVibGljOgogI2VuZGlmCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyUHJvY2Vzc0NyYXNoZWQoV2Vi
UHJvY2Vzc1Byb3h5Jik7CiAKLSAgICB2b2lkIHVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpOworICAgIHZvaWQgdXBk
YXRlUmVtb3RlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KTsKKyAgICBV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXJGb3JSZW1vdGVXb3JrZXJzKCk7CiAgICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2hhcmVk
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC02MjEsMTEgKzYyMSwxMSBAQCBwcml2YXRlOgog
CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+PiBt
X2R1bW15UHJvY2Vzc1Byb3hpZXM7IC8vIExpZ2h0d2VpZ2h0IFdlYlByb2Nlc3NQcm94eSBvYmpl
Y3RzIHdpdGhvdXQgYmFja2luZyBwcm9jZXNzLgogCi0gICAgc3RhdGljIFdlYWtIYXNoU2V0PFdl
YlByb2Nlc3NQcm94eT4mIHdvcmtlclByb2Nlc3NlcygpOworICAgIHN0YXRpYyBXZWFrSGFzaFNl
dDxXZWJQcm9jZXNzUHJveHk+JiByZW1vdGVXb3JrZXJQcm9jZXNzZXMoKTsKIAotICAgIHN0ZDo6
b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9yZT4gbV93b3JrZXJQcmVmZXJlbmNlczsKLSAgICBS
ZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9s
bGVyRm9yV29ya2VyczsKLSAgICBTdHJpbmcgbV93b3JrZXJVc2VyQWdlbnQ7CisgICAgc3RkOjpv
cHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzOwor
ICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENv
bnRyb2xsZXJGb3JSZW1vdGVXb3JrZXJzOworICAgIFN0cmluZyBtX3JlbW90ZVdvcmtlclVzZXJB
Z2VudDsKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKICAgICBSZWZQdHI8R1BVUHJvY2Vzc1By
b3h5PiBtX2dwdVByb2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAppbmRleCBmNDY2OTI0OWEzMzFhZGJjYWY3OTJlZTNkNWE2NDI3NGE0NzM5ZTYyLi4y
YzBhODAzMDAzMTQ5N2M1MDk1NTVmNTM0MmRmODVlYzM5OTBmMGJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTE4MiwxMSArMTgyLDExIEBAIFJl
ZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29s
JiBwcm9jZXNzUG9vbCwgV2Vic2l0CiAgICAgcmV0dXJuIHByb3h5OwogfQogCi1SZWY8V2ViUHJv
Y2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlwZSB3
b3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWlu
JiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUp
CitSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvclJlbW90ZVdv
cmtlcnMoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRh
U3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCiB7CiAgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpu
ZXcgV2ViUHJvY2Vzc1Byb3h5KHByb2Nlc3NQb29sLCAmd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3
YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgQ2FwdGl2ZVBvcnRhbE1vZGU6OkRp
c2FibGVkKSk7CiAgICAgcHJveHktPm1fcmVnaXN0cmFibGVEb21haW4gPSBXVEZNb3ZlKHJlZ2lz
dHJhYmxlRG9tYWluKTsKLSAgICBwcm94eS0+ZW5hYmxlV29ya2Vycyh3b3JrZXJUeXBlLCBwcm9j
ZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKKyAg
ICBwcm94eS0+ZW5hYmxlUmVtb3RlV29ya2Vycyh3b3JrZXJUeXBlLCBwcm9jZXNzUG9vbC51c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yUmVtb3RlV29ya2VycygpKTsKICAgICBwcm94
eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBwcm94eTsKIH0KQEAgLTk5Nyw3ICs5OTcsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVjb21lVW5yZXNwb25zaXZlKCkKICAgICAvLyBJZiB0
aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5kIG9ubHkgcnVucyBzZXJ2aWNl
L3NoYXJlZCB3b3JrZXJzLCBraWxsIGl0IG91cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0
aXZlIGNsaWVudHMgdG8gZG8gaXQuCiAgICAgaWYgKGlzUnVubmluZ1dvcmtlcnMoKSAmJiBtX3Bh
Z2VNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPR19F
UlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJkaWRCZWNvbWVVbnJlc3BvbnNpdmU6IFRlcm1pbmF0
aW5nIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNzIGJlY2F1c2UgaXQgaXMgdW5yZXNwb25zaXZlIik7
Ci0gICAgICAgIGRpc2FibGVXb3JrZXJzKHsgV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgV29y
a2VyVHlwZTo6U2hhcmVkV29ya2VyIH0pOworICAgICAgICBkaXNhYmxlUmVtb3RlV29ya2Vycyh7
IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIFJlbW90ZVdvcmtlclR5cGU6OlNoYXJl
ZFdvcmtlciB9KTsKICAgICAgICAgdGVybWluYXRlKCk7CiAgICAgfQogfQpAQCAtMTY5Myw3ICsx
NjkzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
TWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQogICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9OwogICAgIGlmIChtX3JlZ2lzdHJhYmxl
RG9tYWluICYmICptX3JlZ2lzdHJhYmxlRG9tYWluICE9IHJlZ2lzdHJhYmxlRG9tYWluKSB7CiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgICAgICBkaXNhYmxlV29ya2VycyhXb3JrZXJU
eXBlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICAgICAgZGlzYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3Rl
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKIAogICAgICAgICAvLyBOdWxsIG91
dCByZWdpc3RyYWJsZSBkb21haW4gc2luY2UgdGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2Vk
IGZvciBzZXZlcmFsIGRvbWFpbnMuCkBAIC0xODc0LDcgKzE4NzQsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYgcwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6
c2V0UmVtb3RlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b24pCkBAIC0xODg0LDcgKzE4ODQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0V29ya2Vy
VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7
IHVzZXJBZ2VudCB9LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtl
clByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit2b2lk
IFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlUmVtb3RlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAgICAgaWYgKG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQpAQCAtMTg5NCwyMSArMTg5
NCwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9y
ZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdAogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2Vz
U3RvcmUgeyBzdG9yZSB9LCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSB3b3JrZXJUeXBlKQordm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2Vy
VHlwZSB3b3JrZXJUeXBlKQogewotICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2Vy
VHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0
aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgYXV0byYgd29ya2VySW5mb3Jt
YXRpb24gPSB3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1f
c2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKICAg
ICBBU1NFUlQod29ya2VySW5mb3JtYXRpb24pOwogICAgIGlmICghd29ya2VySW5mb3JtYXRpb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb246IHdvcmtlclR5cGU9
JXtwdWJsaWN9cyIsIHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gInNo
YXJlZCIgOiAic2VydmljZSIpOwotCi0gICAgLy8gRklYTUU6IENsaWVudHMgZG8gbm90IHByb3Bl
cmx5IGdldCBwb3B1bGF0ZWQgaW4gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiBzbyB3ZSBjdXJy
ZW50bHkgdGFrZSBhbiBhc3NlcnRpb24gbm8gbWF0dGVyIHdoYXQuCi0gICAgaWYgKHdvcmtlclR5
cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Ro
cm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRBY3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0
aXZpdHkpKQotICAgICAgICAgICAgd29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJv
dHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJXb3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhzKSJf
cyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlv
bjogd29ya2VyVHlwZT0le3B1YmxpY31zIiwgd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBl
OjpTaGFyZWRXb3JrZXIgPyAic2hhcmVkIiA6ICJzZXJ2aWNlIik7CiAKICAgICBib29sIHNob3Vs
ZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkgPSBXVEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5j
bGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJv
Y2VzcyAhPSB0aGlzICYmICEhcHJvY2Vzcy5tX2ZvcmVncm91bmRUb2tlbjsKQEAgLTE5MjgsNyAr
MTkyMSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKFdvcmtlclR5cGUgd29ya2VyVHlwZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmICh3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgJiYgbV9oYXNTZXJ2
aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpIHsKKyAgICBpZiAod29ya2VyVHlwZSA9PSBS
ZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyICYmIG1faGFzU2VydmljZVdvcmtlckJhY2tn
cm91bmRQcm9jZXNzaW5nKSB7CiAgICAgICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3Np
bmciKTsKICAgICAgICAgaWYgKCFQcm9jZXNzVGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFj
dGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rpdml0eSkpCiAgICAgICAgICAgICB3b3JrZXJJ
bmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNl
cnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciX3MpOwpAQCAtMTk0OSwyOCAr
MTk0MiwzMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdAogICAgIH0sIDApOwogfQogCi0jaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5KQordm9pZCBX
ZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVX
b3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiB7Ci0gICAgaWYg
KCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlv
biA9IHdvcmtlclR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9zaGFy
ZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIGlm
ICghd29ya2VySW5mb3JtYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAicmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50UHJvY2VzczogY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94
eS5wcm9jZXNzSWRlbnRpZmllcigpKTsKLSAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+
Y2xpZW50UHJvY2Vzc2VzLmFkZChwcm94eSk7Ci0gICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVM
RUFTRV9MT0coV29ya2VyLCAicmVnaXN0ZXJXb3JrZXJDbGllbnRQcm9jZXNzOiB3b3JrZXJUeXBl
PSV7cHVibGljfXMsIGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIsIHdvcmtlclR5cGUg
PT0gUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gInNoYXJlZCIgOiAic2VydmljZSIs
ICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgd29ya2VySW5mb3JtYXRp
b24tPmNsaWVudFByb2Nlc3Nlcy5hZGQocHJveHkpOworICAgIHVwZGF0ZVJlbW90ZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1
bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94
eSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJv
Y2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYlByb2Nlc3NQcm94eSYgcHJveHkp
CiB7Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbikKKyAgICBhdXRvJiB3b3Jr
ZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29y
a2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uOworICAgIGlmICghd29ya2VySW5mb3JtYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAg
IFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAidW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQi
LCAmcHJveHksIHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMucmVtb3ZlKHByb3h5KTsKLSAgICB1cGRhdGVX
b3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOworICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhXb3JrZXIsICJ1bnJlZ2lzdGVyV29ya2VyQ2xpZW50
UHJvY2Vzczogd29ya2VyVHlwZT0le3B1YmxpY31zLCBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQ
SUQ9JWQiLCB3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/ICJz
aGFyZWQiIDogInNlcnZpY2UiLCAmcHJveHksIHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOwor
ICAgIHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMucmVtb3ZlKHByb3h5KTsKKyAg
ICB1cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKHdvcmtlclR5cGUpOwogfQogCisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCiBib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzU2Vy
dmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA/IFByb2Nlc3NUaHJvdHRsZXI6OmlzVmFs
aWRGb3JlZ3JvdW5kQWN0aXZpdHkobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5
KSA6IGZhbHNlOwpAQCAtMTk4OCw3ICsxOTgzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnN0
YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQ
Uk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInN0YXJ0U2VydmljZVdvcmtlckJh
Y2tncm91bmRQcm9jZXNzaW5nIik7CiAgICAgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFBy
b2Nlc3NpbmcgPSB0cnVlOwotICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2Vy
VHlwZTo6U2VydmljZVdvcmtlcik7CisgICAgdXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2Vy
dGlvbihSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpCkBAIC0xOTk4
LDM4ICsxOTkzLDM4IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAiZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIik7
CiAgICAgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSBmYWxzZTsKLSAg
ICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIp
OworICAgIHVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2VyVHlw
ZTo6U2VydmljZVdvcmtlcik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
Ci12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5
cGU+IHdvcmtlclR5cGUpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlzYWJsZVJlbW90ZVdvcmtl
cnMoT3B0aW9uU2V0PFJlbW90ZVdvcmtlclR5cGU+IHdvcmtlclR5cGUpCiB7CiAgICAgQVNTRVJU
KCF3b3JrZXJUeXBlLmlzRW1wdHkoKSk7CiAKICAgICBib29sIGRpZENoYW5nZSA9IGZhbHNlOwot
ICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpICYm
IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKSB7CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFp
bnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24pIHsKICAgICAgICAgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07CiAg
ICAgICAgIGRpZENoYW5nZSA9IHRydWU7CiAgICAgfQotICAgIGlmICh3b3JrZXJUeXBlLmNvbnRh
aW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlv
bikgeworICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJl
ZFdvcmtlcikgJiYgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikgewogICAgICAgICBtX3NoYXJl
ZFdvcmtlckluZm9ybWF0aW9uID0geyB9OwogICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOwogICAg
IH0KICAgICBpZiAoIWRpZENoYW5nZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0VCUFJPQ0VT
U1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29ya2VyczogRGlzYWJsaW5nIHdv
cmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJzPSVkKSIsIHdvcmtlclR5cGUu
Y29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwgd29ya2VyVHlwZS5jb250YWlucyhX
b3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0Vf
TE9HKFByb2Nlc3MsICJkaXNhYmxlV29ya2VyczogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdv
cmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJzPSVkKSIsIHdvcmtlclR5cGUuY29udGFpbnMoUmVtb3Rl
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwgd29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CiAKICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2
ZW5lc3NUaW1lcigpOwogCiAgICAgaWYgKCFpc1J1bm5pbmdXb3JrZXJzKCkpCi0gICAgICAgIHBy
b2Nlc3NQb29sKCkucmVtb3ZlRnJvbVdvcmtlclByb2Nlc3NlcygqdGhpcyk7CisgICAgICAgIHBy
b2Nlc3NQb29sKCkucmVtb3ZlRnJvbVJlbW90ZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29y
a2VyVHlwZTo6U2VydmljZVdvcmtlcikpCisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoUmVt
b3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpDbG9zZSB7IH0sIDApOwogI2VuZGlmCi0gICAg
aWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSkKKyAgICBp
ZiAod29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpKQog
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OkNsb3NlIHsgfSwgMCk7CiAKICAgICBtYXliZVNodXREb3duKCk7CkBAIC0yMDUxLDEw
ICsyMDQ2LDEwIEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YSwgVVJMPj4gY29udGVudFJ1bGVMaXN0c0ZyCiB9CiAjZW5kaWYKIAotdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMoV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBjb25z
dCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVJlbW90ZVdvcmtlcnMoUmVt
b3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogewogICAgIFdFQlBST0NF
U1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiZW5hYmxlV29ya2Vyczogd29ya2Vy
VHlwZT0ldSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih3b3JrZXJUeXBlKSk7Ci0gICAgYXV0byYg
d29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtl
ciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bjsKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gUmVtb3RlV29y
a2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uOwogICAgIEFTU0VSVCghd29ya2VySW5mb3JtYXRpb24pOwog
CiAgICAgd29ya2VySW5mb3JtYXRpb24gPSBSZW1vdGVXb3JrZXJJbmZvcm1hdGlvbiB7CkBAIC0y
MDcxLDcgKzIwNjYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlV29ya2VycyhXb3Jr
ZXJUeXBlIHdvcmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udAogICAgIH07CiAgICAgdXBk
YXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKTsKIAotICAgIHVwZGF0ZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7CisgICAgdXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vz
c0Fzc2VydGlvbih3b3JrZXJUeXBlKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENy
ZWF0ZVNsZWVwRGlzYWJsZXIoU2xlZXBEaXNhYmxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiByZWFzb24sIGJvb2wgZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggNzBlODkwNTFjY2JiYzdlOTA0NmJjMWM5OThiOTBhMGI2
OGVmNjU5OS4uMmUxNmYwOTI5MjcwOWQzMzU4M2YyYTgxN2EzZmUxNjExM2IzMTU5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxl
ckNsaWVudC5oIgogI2luY2x1ZGUgIlJlbW90ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5oIgor
I2luY2x1ZGUgIlJlbW90ZVdvcmtlclR5cGUuaCIKICNpbmNsdWRlICJSZXNwb25zaXZlbmVzc1Rp
bWVyLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCIKICNpbmNsdWRlICJV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCkBAIC0xMzYsMTMgKzEzNyw5IEBAIHB1
YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2hvdWxkTGF1bmNoUHJvY2VzcyA6IGJvb2wgeyBObywg
WWVzIH07CiAgICAgZW51bSBjbGFzcyBDYXB0aXZlUG9ydGFsTW9kZSA6IGJvb2wgeyBEaXNhYmxl
ZCwgRW5hYmxlZCB9OwotICAgIGVudW0gY2xhc3MgV29ya2VyVHlwZSA6IHVpbnQzMl90IHsKLSAg
ICAgICAgU2VydmljZVdvcmtlciA9IDEgPDwgMCwKLSAgICAgICAgU2hhcmVkV29ya2VyID0gMSA8
PCAxCi0gICAgfTsKIAogICAgIHN0YXRpYyBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2Vi
UHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgQ2FwdGl2ZVBvcnRhbE1vZGUsIElzUHJl
d2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUgPSBXZWJDb3JlOjpDcm9zc09yaWdpbk1v
ZGU6OlNoYXJlZCwgU2hvdWxkTGF1bmNoUHJvY2VzcyA9IFNob3VsZExhdW5jaFByb2Nlc3M6Olll
cyk7Ci0gICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvcldvcmtlcnMoV29y
a2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBX
ZWJzaXRlRGF0YVN0b3JlJik7CisgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0
ZUZvclJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKICAgICB+V2Vi
UHJvY2Vzc1Byb3h5KCk7CiAKQEAgLTE2NSw4ICsxNjIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wsIFdpbGxTaHV0RG93biA9IFdpbGxTaHV0RG93bjo6Tm8p
OwogICAgIGJvb2wgaXNJblByb2Nlc3NDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblByb2Nl
c3NDYWNoZTsgfQogCi0gICAgdm9pZCBlbmFibGVXb3JrZXJzKFdvcmtlclR5cGUsIGNvbnN0IFVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKLSAgICB2b2lkIGRpc2FibGVXb3JrZXJz
KE9wdGlvblNldDxXb3JrZXJUeXBlPik7CisgICAgdm9pZCBlbmFibGVSZW1vdGVXb3JrZXJzKFJl
bW90ZVdvcmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsK
KyAgICB2b2lkIGRpc2FibGVSZW1vdGVXb3JrZXJzKE9wdGlvblNldDxSZW1vdGVXb3JrZXJUeXBl
Pik7CiAKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBB
U1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsgcmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0K
ICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpOwpAQCAtMzY2
LDE1ICszNjMsMTUgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBdWRpYmxlTWVkaWFBc3Nl
cnRpb25zKCk7CiAKLSAgICB2b2lkIHNldFdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsK
LSAgICB2b2lkIHVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYpOworICAgIHZvaWQgc2V0UmVtb3RlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmlu
ZyYpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCB1cGRhdGVX
b3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJSZW1v
dGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUsIFdlYlByb2Nlc3NQcm94eSYp
OworICAgIHZvaWQgdW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVtb3RlV29y
a2VyVHlwZSwgV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVXb3JrZXJQ
cm9jZXNzQXNzZXJ0aW9uKFJlbW90ZVdvcmtlclR5cGUpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZp
Y2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdlUHJveHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb24tPnJlbW90ZVdvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQcm94
eUlEOyB9Ci0gICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYpOwotICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91
bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkgY29uc3Q7CiAgICAgdm9pZCBzdGFydFNlcnZp
Y2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjBkM2U5ODIwNWQ1ZGQzOTg0ZTU4N2Nk
MzAxMGU5ODMwZDIzODc1MC4uZGUxNjllN2MyYTdiNDk4YjMzZjE4ZGVlODM5ZTQ5ZTNhZmVmOGU1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC04OTMsNiArODkzLDcgQEAKIAkJNDY3MUZGMUYyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJl
c291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjcxRkYxRDIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuaCAqLzsgfTsKIAkJNDY3RTQzRTgyMjQzRkY3RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NE
YXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNDY4MDlBN0MyM0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNv
b2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLzsgfTsKKwkJ
NDY5MUNCOUIyN0IyREQyRDAwQjI5QUFGIC8qIFJlbW90ZVdvcmtlclR5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OTFDQjlBMjdCMkREMTgwMEIy
OUFBRiAvKiBSZW1vdGVXb3JrZXJUeXBlLmggKi87IH07CiAJCTQ2QTJCNjA5MUU1Njc2QTYwMEMz
REVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMz
REVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJ
NDZCMDUyNDcyMjY2OEQ4NTAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9u
QWNjZXNzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZCMDUyNDQyMjY2OEQyMzAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oICovOyB9OwogCQk0NkJFQjZENzIyRkI5QkQ3MDAy
Njk4NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2QkVCNkQ1MjJGQjlCRDYwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oICov
OyB9OwpAQCAtNDI3MSw2ICs0MjcyLDcgQEAKIAkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5MTgyIC8q
IFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2ODlCOTBGMjc1NkQxNDMwMDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTEwMjc1NkQxNDMwMDA3QzY1MSAvKiBSZW1vdGVXZWJM
b2NrUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY5MUNCOUEyN0IyREQxODAwQjI5
QUFGIC8qIFJlbW90ZVdvcmtlclR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyVHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njk0M0RDQjI3NjNGODM0MDA0QjYx
MEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBX
ZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjlERTgwMjI3M0VDQzVEMDA5MzAyNzYgLyogUHJvY2Vzc0xhdW5j
aGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9j
ZXNzTGF1bmNoZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2
MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1l
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJv
Y2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzI2MSw2ICs3MjYzLDcgQEAKIAkJCQk5QjEyMjlEMDIzRkYyQTVFMDA4Q0E3NTEgLyogUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCAqLywKIAkJCQk1QzgwQjNERDIzNjkwRjEw
MDA4NkU2REUgLyogUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmNwcCAqLywKIAkJCQk1
QzgwQjNEQjIzNjkwRDhEMDA4NkU2REUgLyogUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRh
LmggKi8sCisJCQkJNDY5MUNCOUEyN0IyREQxODAwQjI5QUFGIC8qIFJlbW90ZVdvcmtlclR5cGUu
aCAqLywKIAkJCQk3MjAzNDQ5QjI2QTZDNDc2MDAwQTVGNTQgLyogUmVuZGVyaW5nVXBkYXRlSUQu
aCAqLywKIAkJCQk1Q0I3QUZFNjIzQzY4MUIwMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5o
ICovLAogCQkJCTVDMDA5OTNCMjQxN0ZCN0UwMEQ1M0MyNSAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycy5oICovLApAQCAtMTMzNjEsNiArMTMzNjQsNyBAQAogCQkJCUE1NUJBODI1
MUJBMjVDRkIwMDdDRDMzRCAvKiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTQ2QzVCN0NFMjdBQURERDMwMDBDNUI0NyAvKiBSZW1vdGVXb3Jr
ZXJGcmFtZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZDNUI3Q0YyN0FBRERE
NjAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckxpYldlYlJUQ1Byb3ZpZGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk0NjkxQ0I5QjI3QjJERDJEMDBCMjlBQUYgLyogUmVtb3RlV29ya2VyVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUNCN0FGRTcyM0M2ODIwNzAwRTQ5Q0YzIC8qIFJlc291cmNlTG9h
ZEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTZCRTk2OUNEMUU1NEUwNTQwMDhCNzQ4MyAvKiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkJF
OTY5Q0IxRTU0RDRDRjAwOEI3NDgzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVy
Q29jb2EuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451403</attachid>
            <date>2022-02-09 10:43:08 -0800</date>
            <delta_ts>2022-02-09 10:51:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236271-20220209104307.patch</filename>
            <type>text/plain</type>
            <size>78371</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiYjc1ZjUwMzQxYTI4NjI0
M2FiYjA2MDRiYWU1M2NhNmJhMTY2NTUuLjAyNjllNmJjZTNiNGYwYjc4ZmZkMjk0NTJlZGRiMGRm
ZWQ5N2QwYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIwMjItMDItMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBUYWtlIGFkZXF1YXRlIHBy
b2Nlc3MgYXNzZXJ0aW9uIGZvciB0aGUgU2hhcmVkV29ya2VyIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjI3MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgdHJhY2sgb2YgY2xpZW50
IHByb2Nlc3NlcyB0aGF0IHJlbHkgb24gYSBwYXJ0aWN1bGFyIFNoYXJlZFdvcmtlciBwcm9jZXNz
IGFuZCB0YWtlIHRoZSBhZGVxdWF0ZQorICAgICAgICBwcm9jZXNzIGFzc2VydGlvbiB0byBrZWVw
IHRoZSBwcm9jZXNzIHJ1bm5pbmcgb24gaU9TIHdoZW4gbmVjZXNzYXJ5LiBUaGlzIGFsbG93cyB1
cyB0byBnZXQgcmlkIG9mCisgICAgICAgIHRoZSBoYWNrIEkgbGFuZGVkIHByZXZpb3VzbHkgdG8g
YWx3YXlzIHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiBvbiBiZWhhbGYgb2YgdGhlIHNoYXJlZCB3
b3JrZXIKKyAgICAgICAgcHJvY2VzcyAoZXZlbiBpZiBhbGwgaXRzIGNsaWVudHMgYXJlIHN1c3Bl
bmRlZCkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2
aWNlV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpXZWJTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXI6OmRpZENyZWF0ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjphZGRTaGFyZWRXb3JrZXJPYmplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnJlbW92ZVNoYXJlZFdvcmtlck9iamVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6Zm9yRWFjaFNoYXJlZFdvcmtlck9i
amVjdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6Y29udGV4dENv
bm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpzaGFy
ZWRXb3JrZXJPYmplY3RzQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OnNoYXJlZFdvcmtlck9iamVjdHMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hh
cmVkV29ya2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
OjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3du
U2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpy
ZW1vdmVDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6YWRkU2hhcmVkV29ya2VyT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
cmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAuCisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJlbW90ZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVSZW1vdGVXb3JrZXJVc2VyQWdlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlv
bnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFn
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JSZW1vdGVXb3JrZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRSZW1vdGVXb3JrZXJVc2Vy
QWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlbW90ZVdv
cmtlclByZWZlcmVuY2VzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVu
dFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZl
cmVuY2VzU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wMi0wOSAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBTcGVjaWZ5IExvY2FsQXV0aGVudGljYXRvckFj
Y2Vzc0dyb3VwIHdoZW4gaW1wb3J0aW5nIGNyZWRlbnRpYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCmluZGV4IDI4N2MxYmY3NDhjODNjNmMxZTZjNzJiYTEyOGM0ZDBhMWM2NjEyMzguLjQw
YTdlMmFlYTRhMWJjZjlmZGY3ZWIzMmIzMzI2NmIwYmQ2YTU1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiUGluZ0xvYWQuaCIKICNp
bmNsdWRlICJQcmVjb25uZWN0VGFzay5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgpAQCAtMTI1NCw3ICsxMjU1LDcg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5yZWdpc3RlclNoYXJlZFdv
cmtlckNvbm5lY3Rpb24oKQogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKQogewog
ICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2hhcmVkV29ya2VyLCAic2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQ6Iik7Ci0gICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6U2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRl
ZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6UmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7IFJlbW90
ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsK
IAogICAgIG1fc2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQpAQCAt
MTMwNSw3ICsxMzA2LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xv
c2VTV0NvbnRleHRDb25uZWN0aW9uKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnNlcnZpY2VXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQo
KQogewogICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgInNlcnZpY2VX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQ6IFdlYlByb2Nlc3Mg
bm8gbG9uZ2VyIHVzZWZ1bCBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMiKTsKLSAgICBtX25l
dHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdl
ck5lZWRlZCB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6UmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZCB7
IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkg
fSwgMCk7CiAKICAgICBtX3N3Q29udGV4dENvbm5lY3Rpb24gPSBudWxscHRyOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBiMzkwY2FmYTYwNDFmM2U4MDFm
ZDJkM2E4YzI0M2I1NTQ3NTEyMjk0Li4zMjZjOWI3N2E1ZDM2MmE0YTc4YmZlNTEwM2E1NmJmODUx
YmE5YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9u
LmgiCisjaW5jbHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzTWVzc2FnZXMuaCIKQEAgLTM3OCw3ICszNzksNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRv
cAogCiAgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKSB7CiAgICAgICAgIGF1dG8mIGNvbm5lY3Rp
b24gPSBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4
dENvbm5lY3Rpb24pOwotICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzIHsgaWRlbnRpZmllcigpLCBjb25uZWN0aW9uLndlYlBy
b2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OlJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyB7IFJlbW90ZVdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIsIGlkZW50aWZpZXIoKSwgY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmll
cigpIH0sIDApOwogICAgIH0KIH0KIApAQCAtNDAzLDcgKzQwNCw3IEBAIHZvaWQgV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTY3JpcHRF
eGVjdXRpb25DCiAgICAgaWYgKGlzRGVsZXRlZE9yaWdpbikgewogICAgICAgICBpZiAoYXV0byog
Y29udGV4dENvbm5lY3Rpb24gPSBzZXJ2ZXIoKS5jb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJh
YmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluIHsgY2xpZW50T3JpZ2luLmNsaWVudE9yaWdpbiB9
KSkgewogICAgICAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IHN0YXRpY19jYXN0PFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbiY+KCpjb250ZXh0Q29ubmVjdGlvbik7Ci0gICAgICAgICAg
ICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpVbnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFBy
b2Nlc3MgeyBpZGVudGlmaWVyKCksIGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9
LCAwKTsKKyAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlVucmVnaXN0ZXJSZW1v
dGVXb3JrZXJDbGllbnRQcm9jZXNzIHsgUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwg
aWRlbnRpZmllcigpLCBjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAg
ICAgICAgIH0KICAgICB9CiB9CkBAIC01NDQsNyArNTQ1LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24KICAgICBjb25uZWN0aW9uLnNldFRocm90dGxlU3RhdGUoY29tcHV0ZVRocm90dGxlU3Rh
dGUoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSk7CiAKICAgICBpZiAoaGFzTWF0Y2hp
bmdDbGllbnQoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpKSkKLSAgICAgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6UmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyB7IGlk
ZW50aWZpZXIoKSwgY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworICAg
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFBy
b2Nlc3MgeyBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBpZGVudGlmaWVyKCksIGNv
bm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKIH0KIAogdm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuY3BwCmluZGV4IDgwMDkxMzk1Mjgw
YzhkNzYwZWYxYTFkMTIxYzIxNDc1ZjQ5NWViYjguLjQ5NTAxNWJmMzBiZmM4MzIwZmFlZDhjODI2
MDhlMjJmNTAwNWQwZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcApAQCAtMjYsNiArMjYs
OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlci5oIgog
CisjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyU2VydmVyLmgiCisjaW5jbHVkZSAiV2ViU2hhcmVk
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KQEAgLTM5LDggKzQxLDkgQEAgc3RhdGljIEhhc2hNYXA8V2ViQ29yZTo6U2hhcmVkV29y
a2VySWRlbnRpZmllciwgV2ViU2hhcmVkV29ya2VyKj4mIGFsbFdvcmtlcnMoKQogICAgIHJldHVy
biBhbGxXb3JrZXJzOwogfQogCi1XZWJTaGFyZWRXb3JrZXI6OldlYlNoYXJlZFdvcmtlcihjb25z
dCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0
aW9ucyYgd29ya2VyT3B0aW9ucykKLSAgICA6IG1faWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRX
b3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQorV2ViU2hhcmVkV29ya2VyOjpXZWJTaGFyZWRX
b3JrZXIoV2ViU2hhcmVkV29ya2VyU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZFdvcmtlcktleSYga2V5LCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiB3b3JrZXJPcHRp
b25zKQorICAgIDogbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV9pZGVudGlmaWVyKFdlYkNvcmU6
OlNoYXJlZFdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpCiAgICAgLCBtX2tleShrZXkpCiAg
ICAgLCBtX3dvcmtlck9wdGlvbnMod29ya2VyT3B0aW9ucykKIHsKQEAgLTUwLDYgKzUzLDExIEBA
IFdlYlNoYXJlZFdvcmtlcjo6V2ViU2hhcmVkV29ya2VyKGNvbnN0IFdlYkNvcmU6OlNoYXJlZFdv
cmtlcktleSYga2V5LCBjb25zdCBXZWJDCiAKIFdlYlNoYXJlZFdvcmtlcjo6fldlYlNoYXJlZFdv
cmtlcigpCiB7CisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbigp
KSB7CisgICAgICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IG1f
c2hhcmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpCisgICAgICAgICAgICBjb25uZWN0aW9uLT5yZW1v
dmVTaGFyZWRXb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAg
fQorCiAgICAgQVNTRVJUKGFsbFdvcmtlcnMoKS5nZXQobV9pZGVudGlmaWVyKSA9PSB0aGlzKTsK
ICAgICBhbGxXb3JrZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CiB9CkBAIC02NCw0ICs3Miwz
NSBAQCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBXZWJTaGFyZWRXb3JrZXI6OnJlZ2lzdHJh
YmxlRG9tYWluKCkgY29uc3QKICAgICByZXR1cm4gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
eyB1cmwoKSB9OwogfQogCit2b2lkIFdlYlNoYXJlZFdvcmtlcjo6ZGlkQ3JlYXRlQ29udGV4dENv
bm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4
dENvbm5lY3Rpb24pCit7CisgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyIDogbV9zaGFyZWRXb3JrZXJPYmplY3RzLmtleXMoKSkKKyAgICAgICAgY29udGV4dENvbm5l
Y3Rpb24uYWRkU2hhcmVkV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIp
OworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlcjo6YWRkU2hhcmVkV29ya2VyT2JqZWN0KFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgcG9ydCkKK3sKKyAg
ICBtX3NoYXJlZFdvcmtlck9iamVjdHMuYWRkKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIs
IHBvcnQpOworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb24oKSkK
KyAgICAgICAgY29ubmVjdGlvbi0+YWRkU2hhcmVkV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIpOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlcjo6cmVtb3ZlU2hhcmVk
V29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBtX3NoYXJlZFdvcmtlck9iamVjdHMucmVt
b3ZlKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIGlmIChhdXRvKiBjb25uZWN0
aW9uID0gY29udGV4dENvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlvbi0+cmVtb3ZlU2hh
cmVkV29ya2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworfQorCit2b2lk
IFdlYlNoYXJlZFdvcmtlcjo6Zm9yRWFjaFNoYXJlZFdvcmtlck9iamVjdChjb25zdCBGdW5jdGlv
bjx2b2lkKFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmKT4mIGFwcGx5KSBjb25zdAoreworICAgIGZvciAo
YXV0byYgW3NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBvcnRdIDogbV9zaGFyZWRXb3Jr
ZXJPYmplY3RzKQorICAgICAgICBhcHBseShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBw
b3J0KTsKK30KKworV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogV2Vi
U2hhcmVkV29ya2VyOjpjb250ZXh0Q29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
c2VydmVyLmNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4ocmVnaXN0cmFibGVE
b21haW4oKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIu
aAppbmRleCAzNGI3YTRhODQzY2VmOWExN2ViYzBiM2E1ZmE0Y2NkNGQwNjE2YjM0Li45M2JiNTY2
ODJkYTE5MmNmMzQ3N2FlMDUxOTgyNDQ2YzQwMDNjYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXIu
aApAQCAtMzksMTAgKzM5LDEzIEBAIGNsYXNzIFJlZ2lzdHJhYmxlRG9tYWluOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViU2hhcmVkV29ya2VyU2VydmVyOworY2xhc3MgV2ViU2hh
cmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKKwogY2xhc3MgV2ViU2hhcmVkV29y
a2VyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlNoYXJlZFdvcmtlcj4gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdlYlNoYXJlZFdvcmtlcihjb25zdCBX
ZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJik7
CisgICAgV2ViU2hhcmVkV29ya2VyKFdlYlNoYXJlZFdvcmtlclNlcnZlciYsIGNvbnN0IFdlYkNv
cmU6OlNoYXJlZFdvcmtlcktleSYsIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmKTsKICAg
ICB+V2ViU2hhcmVkV29ya2VyKCk7CiAKICAgICBzdGF0aWMgV2ViU2hhcmVkV29ya2VyKiBmcm9t
SWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyKTsKQEAgLTUzLDcgKzU2
LDE0IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fa2V5Lm9yaWdpbjsgfQogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29u
c3QgeyByZXR1cm4gbV9rZXkudXJsOyB9CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVnaXN0cmFibGVEb21haW4oKSBjb25zdDsKLSAgICBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQ+JiBz
aGFyZWRXb3JrZXJPYmplY3RzKCkgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJPYmplY3RzOyB9Cisg
ICAgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiogY29udGV4dENvbm5l
Y3Rpb24oKSBjb25zdDsKKworICAgIHZvaWQgYWRkU2hhcmVkV29ya2VyT2JqZWN0KFdlYkNvcmU6
OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVycmVk
TWVzc2FnZVBvcnQmKTsKKyAgICB2b2lkIHJlbW92ZVNoYXJlZFdvcmtlck9iamVjdChXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICB1bnNpZ25lZCBzaGFyZWRXb3Jr
ZXJPYmplY3RzQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFdvcmtlck9iamVjdHMuc2l6
ZSgpOyB9CisgICAgdm9pZCBmb3JFYWNoU2hhcmVkV29ya2VyT2JqZWN0KGNvbnN0IEZ1bmN0aW9u
PHZvaWQoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYpPiYpIGNvbnN0OworCisgICAgdm9pZCBkaWRDcmVh
dGVDb250ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uJik7CiAKICAgICBib29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNSdW5uaW5n
OyB9CiAgICAgdm9pZCBtYXJrQXNSdW5uaW5nKCkgeyBtX2lzUnVubmluZyA9IHRydWU7IH0KQEAg
LTY4LDYgKzc4LDcgQEAgcHJpdmF0ZToKICAgICBXZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViU2hh
cmVkV29ya2VyJikgPSBkZWxldGU7CiAgICAgV2ViU2hhcmVkV29ya2VyJiBvcGVyYXRvcj0oY29u
c3QgV2ViU2hhcmVkV29ya2VyJikgPSBkZWxldGU7CiAKKyAgICBXZWJTaGFyZWRXb3JrZXJTZXJ2
ZXImIG1fc2VydmVyOwogICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOwogICAgIFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSBtX2tleTsKICAgICBXZWJDb3Jl
OjpXb3JrZXJPcHRpb25zIG1fd29ya2VyT3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3Jr
ZXJTZXJ2ZXIuY3BwCmluZGV4IDBjNTIzNTg0MGE1ZWNkYmU0MzM1OWYxMjhmNDBmMDBmYjM1ZmVk
ZGUuLjI0NmU4Mzk3YTQ3MmZhNzU4NTg2MDMzODI1ZTQwMGMwZGYwYmZmN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNwcApAQCAtNTMsNyArNTMsNyBAQCBQQUw6OlNlc3Np
b25JRCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNlc3Npb25JRCgpCiB2b2lkIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkm
JiBzaGFyZWRXb3JrZXJLZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdl
UG9ydCYmIHBvcnQsIFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmJiB3b3JrZXJPcHRpb25zKQogewog
ICAgIGF1dG8mIHNoYXJlZFdvcmtlciA9IG1fc2hhcmVkV29ya2Vycy5lbnN1cmUoc2hhcmVkV29y
a2VyS2V5LCBbJl0gewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTaGFyZWRXb3JrZXI+
KHNoYXJlZFdvcmtlcktleSwgd29ya2VyT3B0aW9ucyk7CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlPFdlYlNoYXJlZFdvcmtlcj4oKnRoaXMsIHNoYXJlZFdvcmtlcktleSwgd29ya2VyT3B0aW9u
cyk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdvcmtl
ciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcjogc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcj0le3ByaXZhdGV9cywgc2hhcmVkV29ya2VySWRlbnRpZmllcj0l
IiBQUkl1NjQsIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBzaGFyZWRXb3JrZXItPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIApAQCAtNjQs
MTYgKzY0LDE2IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29y
a2VyKFdlYkNvcmU6OlNoYXJlZFdvcmtlcktleSYmIHNoYXJlCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5hZGQoc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllciwgcG9ydCk7CisgICAgc2hhcmVkV29ya2VyLT5hZGRTaGFy
ZWRXb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgcG9ydCk7CiAKLSAg
ICBpZiAoc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuc2l6ZSgpID4gMSkgewot
ICAgICAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OnJlcXVlc3RTaGFyZWRXb3JrZXI6IEEgc2hhcmVkIHdvcmtlciB3aXRoIHRoaXMgVVJMIGFscmVh
ZHkgZXhpc3RzIChub3cgc2hhcmVkIGJ5ICV1IHNoYXJlZCB3b3JrZXIgb2JqZWN0cykiLCBzaGFy
ZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5zaXplKCkpOworICAgIGlmIChzaGFyZWRX
b3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHNDb3VudCgpID4gMSkgeworICAgICAgICBSRUxFQVNF
X0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRX
b3JrZXI6IEEgc2hhcmVkIHdvcmtlciB3aXRoIHRoaXMgVVJMIGFscmVhZHkgZXhpc3RzIChub3cg
c2hhcmVkIGJ5ICV1IHNoYXJlZCB3b3JrZXIgb2JqZWN0cykiLCBzaGFyZWRXb3JrZXItPnNoYXJl
ZFdvcmtlck9iamVjdHNDb3VudCgpKTsKICAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+ZGlkRmlu
aXNoRmV0Y2hpbmcoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24g
PSBtX2Nvbm5lY3Rpb25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJ
ZGVudGlmaWVyKCkpKQogICAgICAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPm5vdGlmeVdv
cmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
eyB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5pc1J1bm5pbmcoKSkg
ewotICAgICAgICAgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSBtX2NvbnRleHRDb25uZWN0
aW9ucy5nZXQoc2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICAgICAgICAg
IGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gc2hhcmVkV29ya2VyLT5jb250ZXh0Q29ubmVjdGlv
bigpOwogICAgICAgICAgICAgQVNTRVJUKGNvbnRleHRDb25uZWN0aW9uKTsKICAgICAgICAgICAg
IGlmIChjb250ZXh0Q29ubmVjdGlvbikKICAgICAgICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlv
bi0+cG9zdENvbm5lY3RFdmVudCgqc2hhcmVkV29ya2VyLCBwb3J0KTsKQEAgLTk2LDEwICs5Niwx
MCBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRX
b3JrZXJTY3JpcHQoV2ViU2hhcmVkV29ya2VyJgogewogICAgIFJFTEVBU0VfTE9HKFNoYXJlZFdv
cmtlciwgIldlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hpbmdTaGFyZWRXb3Jr
ZXJTY3JpcHQgc2hhcmVkV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgc2hhcmVkV29ya2Vy
PSVwLCBzdWNjZXNzPSVkIiwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAm
c2hhcmVkV29ya2VyLCBmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSk7CiAKLSAgICBmb3IgKGF1
dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlci5zaGFyZWRXb3Jr
ZXJPYmplY3RzKCkua2V5cygpKSB7CisgICAgc2hhcmVkV29ya2VyLmZvckVhY2hTaGFyZWRXb3Jr
ZXJPYmplY3QoWyZdKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgYXV0byYpIHsK
ICAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpKQogICAgICAg
ICAgICAgc2VydmVyQ29ubmVjdGlvbi0+bm90aWZ5V29ya2VyT2JqZWN0T2ZMb2FkQ29tcGxldGlv
bihzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBmZXRjaFJlc3VsdC5lcnJvcik7Ci0gICAg
fQorICAgIH0pOwogCiAgICAgaWYgKCFmZXRjaFJlc3VsdC5lcnJvci5pc051bGwoKSkgewogICAg
ICAgICBtX3NoYXJlZFdvcmtlcnMucmVtb3ZlKHNoYXJlZFdvcmtlci5rZXkoKSk7CkBAIC0xMDgs
MTQgKzEwOCwxMSBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6ZGlkRmluaXNoRmV0Y2hp
bmdTaGFyZWRXb3JrZXJTY3JpcHQoV2ViU2hhcmVkV29ya2VyJgogCiAgICAgc2hhcmVkV29ya2Vy
LnNldEZldGNoUmVzdWx0KFdURk1vdmUoZmV0Y2hSZXN1bHQpKTsKIAotICAgIGF1dG8gcmVnaXN0
cmFibGVEb21haW4gPSBzaGFyZWRXb3JrZXIucmVnaXN0cmFibGVEb21haW4oKTsKLSAgICBhdXRv
KiBjb250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21h
aW4ocmVnaXN0cmFibGVEb21haW4pOwotICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pIHsKLSAg
ICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOworICAgIGlm
IChhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHNoYXJlZFdvcmtlci5jb250ZXh0Q29ubmVjdGlv
bigpKSB7CisgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5sYXVuY2hTaGFyZWRXb3JrZXIoc2hh
cmVkV29ya2VyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIGNvbnRleHRDb25uZWN0
aW9uLT5sYXVuY2hTaGFyZWRXb3JrZXIoc2hhcmVkV29ya2VyKTsKKyAgICBjcmVhdGVDb250ZXh0
Q29ubmVjdGlvbihzaGFyZWRXb3JrZXIucmVnaXN0cmFibGVEb21haW4oKSk7CiB9CiAKIGJvb2wg
V2ViU2hhcmVkV29ya2VyU2VydmVyOjpuZWVkc0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFi
bGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluKSBjb25zdApAQCAtMTQ0LDcgKzE0MSw2IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvCiAK
ICAgICAgICAgQVNTRVJUKG1fcGVuZGluZ0NvbnRleHRDb25uZWN0aW9uRG9tYWlucy5jb250YWlu
cyhyZWdpc3RyYWJsZURvbWFpbikpOwogICAgICAgICBtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlv
bkRvbWFpbnMucmVtb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKLQogICAgICAgICBpZiAobV9jb250
ZXh0Q29ubmVjdGlvbnMuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pKQogICAgICAgICAgICAg
cmV0dXJuOwogCkBAIC0xNzQsNyArMTcwLDcgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OnJlbW92ZUNvbnRleHRDb25uZWN0aW9uKFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGUKIAog
ICAgIG1fY29udGV4dENvbm5lY3Rpb25zLnJlbW92ZShyZWdpc3RyYWJsZURvbWFpbik7CiAKLSAg
ICBpZiAobmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJh
YmxlRG9tYWluKSkKKyAgICBpZiAoY29udGV4dENvbm5lY3Rpb24uaGFzU2hhcmVkV29ya2VyT2Jq
ZWN0cygpKQogICAgICAgICBjcmVhdGVDb250ZXh0Q29ubmVjdGlvbihyZWdpc3RyYWJsZURvbWFp
bik7CiB9CiAKQEAgLTE4Myw3ICsxNzksMTEgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnQKICAg
ICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRl
eHRDb25uZWN0aW9uQ3JlYXRlZCglcCkgd2ViUHJvY2Vzc0lkZW50aWZpZXI9JSIgUFJJdTY0LCAm
Y29udGV4dENvbm5lY3Rpb24sIGNvbnRleHRDb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CiAgICAgYXV0byYgcmVnaXN0cmFibGVEb21haW4gPSBjb250ZXh0Q29u
bmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigpOwogICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2Vy
IDogbV9zaGFyZWRXb3JrZXJzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzaGFyZWRXb3JrZXIt
PmRpZEZpbmlzaEZldGNoaW5nKCkgJiYgcmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRX
b3JrZXItPnVybCgpKSkKKyAgICAgICAgaWYgKCFyZWdpc3RyYWJsZURvbWFpbi5tYXRjaGVzKHNo
YXJlZFdvcmtlci0+dXJsKCkpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgc2hh
cmVkV29ya2VyLT5kaWRDcmVhdGVDb250ZXh0Q29ubmVjdGlvbihjb250ZXh0Q29ubmVjdGlvbik7
CisgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmRpZEZpbmlzaEZldGNoaW5nKCkpCiAgICAgICAg
ICAgICBjb250ZXh0Q29ubmVjdGlvbi5sYXVuY2hTaGFyZWRXb3JrZXIoKnNoYXJlZFdvcmtlcik7
CiAgICAgfQogfQpAQCAtMTk1LDggKzE5NSw4IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVy
OjpzaGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShjb25zdCBXZWJDb3JlOjpTaGFyZWRXCiAg
ICAgaWYgKCFzaGFyZWRXb3JrZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNoYXJlZFdvcmtl
ci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLnJlbW92ZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKTsKLSAgICBpZiAoIXNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLmlzRW1w
dHkoKSkKKyAgICBzaGFyZWRXb3JrZXItPnJlbW92ZVNoYXJlZFdvcmtlck9iamVjdChzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBpZiAoc2hhcmVkV29ya2VyLT5zaGFyZWRXb3Jr
ZXJPYmplY3RzQ291bnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2h1dERvd25TaGFyZWRX
b3JrZXIoc2hhcmVkV29ya2VyS2V5KTsKQEAgLTIwOSwxMyArMjA5LDEzIEBAIHZvaWQgV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpzaHV0RG93blNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJLZXkmCiAgICAgaWYgKCFzaGFyZWRXb3JrZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbihzaGFyZWRXb3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGF1dG8q
IGNvbnRleHRDb25uZWN0aW9uID0gc2hhcmVkV29ya2VyLT5jb250ZXh0Q29ubmVjdGlvbigpOwog
ICAgIGlmICghY29udGV4dENvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnRl
eHRDb25uZWN0aW9uLT50ZXJtaW5hdGVTaGFyZWRXb3JrZXIoKnNoYXJlZFdvcmtlcik7CiAKLSAg
ICBpZiAoIW5lZWRzQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihzaGFyZWRX
b3JrZXItPnJlZ2lzdHJhYmxlRG9tYWluKCkpKQorICAgIGlmICghY29udGV4dENvbm5lY3Rpb24t
Pmhhc1NoYXJlZFdvcmtlck9iamVjdHMoKSkKICAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmNv
bm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CiB9CiAKQEAgLTIzNSwxMCArMjM1LDEwIEBAIHZv
aWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyIHByb2Nlc3NJCiAKICAgICBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OlNo
YXJlZFdvcmtlcktleSwgV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcj4+IHNo
YXJlZFdvcmtlck9iamVjdHNHb2luZ0F3YXk7CiAgICAgZm9yIChhdXRvJiBzaGFyZWRXb3JrZXIg
OiBtX3NoYXJlZFdvcmtlcnMudmFsdWVzKCkpIHsKLSAgICAgICAgZm9yIChhdXRvJiBzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3Rz
KCkua2V5cygpKSB7CisgICAgICAgIHNoYXJlZFdvcmtlci0+Zm9yRWFjaFNoYXJlZFdvcmtlck9i
amVjdChbJl0oYXV0byBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBhdXRvJikgewogICAg
ICAgICAgICAgaWYgKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZp
ZXIoKSA9PSBwcm9jZXNzSWRlbnRpZmllcikKICAgICAgICAgICAgICAgICBzaGFyZWRXb3JrZXJP
YmplY3RzR29pbmdBd2F5LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzaGFyZWRXb3JrZXItPmtleSgp
LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKSk7Ci0gICAgICAgIH0KKyAgICAgICAgfSk7
CiAgICAgfQogICAgIGZvciAoYXV0byYgW3NoYXJlZFdvcmtlcktleSwgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcl0gOiBzaGFyZWRXb3JrZXJPYmplY3RzR29pbmdBd2F5KQogICAgICAgICBz
aGFyZWRXb3JrZXJPYmplY3RJc0dvaW5nQXdheShzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIpOwpAQCAtMjU2LDEwICsyNTYsMTAgQEAgdm9pZCBXZWJTaGFyZWRX
b3JrZXJTZXJ2ZXI6OnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJJZGUKICAgICBpZiAoIXNoYXJlZFdvcmtlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Zm9yIChhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiBzaGFyZWRXb3JrZXItPnNo
YXJlZFdvcmtlck9iamVjdHMoKS5rZXlzKCkpIHsKKyAgICBzaGFyZWRXb3JrZXItPmZvckVhY2hT
aGFyZWRXb3JrZXJPYmplY3QoWyZdKGF1dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwg
YXV0byYpIHsKICAgICAgICAgaWYgKGF1dG8qIHNlcnZlckNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rp
b25zLmdldChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkp
KQogICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGVycm9yTWVzc2FnZSwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkwpOwotICAgIH0KKyAgICB9KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGJkNTRlZTk5YzE2Mjc4ZTU1
NWNkNjdiYmI2NzczNzVjY2Q5YjViNTguLjdmODZjMTJkOTlhZTI2NTlhNjBmOTBjNjY3OWZkNzYx
NzJiMGNhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVk
V29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtl
clNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0yOCw2ICsyOCw5IEBACiAKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNz
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlclR5cGUuaCIKICNpbmNsdWRl
ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXIuaCIK
ICNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb25NZXNzYWdl
cy5oIgpAQCAtOTEsOCArOTQsOSBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmxhdW5jaFNoYXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZQogICAgIENPTlRF
WFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRygibGF1bmNoU2hhcmVkV29ya2VyOiBzaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyPSUiIFBSSXU2NCwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKICAgICBzaGFyZWRXb3JrZXIubWFya0FzUnVubmluZygpOwogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6TGF1bmNoU2hhcmVk
V29ya2VyIHsgc2hhcmVkV29ya2VyLm9yaWdpbigpLCBzaGFyZWRXb3JrZXIuaWRlbnRpZmllcigp
LCBzaGFyZWRXb3JrZXIudXJsKCksIHNoYXJlZFdvcmtlci53b3JrZXJPcHRpb25zKCksIHNoYXJl
ZFdvcmtlci5mZXRjaFJlc3VsdCgpIH0pOwotICAgIGZvciAoYXV0byYgcG9ydCA6IHNoYXJlZFdv
cmtlci5zaGFyZWRXb3JrZXJPYmplY3RzKCkudmFsdWVzKCkpCisgICAgc2hhcmVkV29ya2VyLmZv
ckVhY2hTaGFyZWRXb3JrZXJPYmplY3QoWyZdKGF1dG8sIGF1dG8mIHBvcnQpIHsKICAgICAgICAg
cG9zdENvbm5lY3RFdmVudChzaGFyZWRXb3JrZXIsIHBvcnQpOworICAgIH0pOwogfQogCiB2b2lk
IFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RDb25uZWN0RXZl
bnQoY29uc3QgV2ViU2hhcmVkV29ya2VyJiBzaGFyZWRXb3JrZXIsIGNvbnN0IFdlYkNvcmU6OlRy
YW5zZmVycmVkTWVzc2FnZVBvcnQmIHBvcnQpCkBAIC0xMDcsNiArMTExLDI5IEBAIHZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlU2hhcmVkV29y
a2VyKGNvbnN0IFdlYlNoCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU2hhcmVkV29ya2VyQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVTaGFyZWRXb3JrZXIgeyBzaGFyZWRXb3JrZXIu
aWRlbnRpZmllcigpIH0pOwogfQogCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmFkZFNoYXJlZFdvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7CisgICAgYXV0
byYgc2hhcmVkV29ya2VyT2JqZWN0cyA9IG1fc2hhcmVkV29ya2VyT2JqZWN0cy5lbnN1cmUoc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpLCBbXSB7IHJldHVy
biBIYXNoU2V0PFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI+IHsgfTsgfSku
aXRlcmF0b3ItPnZhbHVlOworICAgIHNoYXJlZFdvcmtlck9iamVjdHMuYWRkKHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIpOworCisgICAgaWYgKHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgIT0g
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpICYmIHNoYXJl
ZFdvcmtlck9iamVjdHMuc2l6ZSgpID09IDEpCisgICAgICAgIG1fY29ubmVjdGlvbi5uZXR3b3Jr
UHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlZ2lzdGVyUmVt
b3RlV29ya2VyQ2xpZW50UHJvY2VzcyB7IFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwg
c2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQcm9j
ZXNzSWRlbnRpZmllcigpIH0sIDApOworfQorCit2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OnJlbW92ZVNoYXJlZFdvcmtlck9iamVjdChXZWJDb3JlOjpTaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpCit7
CisgICAgYXV0byBpdCA9IG1fc2hhcmVkV29ya2VyT2JqZWN0cy5maW5kKHNoYXJlZFdvcmtlck9i
amVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSk7CisgICAgaWYgKGl0ID09IG1fc2hh
cmVkV29ya2VyT2JqZWN0cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGl0LT52YWx1ZS5y
ZW1vdmUoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgaWYgKCFpdC0+dmFsdWUu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NoYXJlZFdvcmtlck9iamVjdHMu
cmVtb3ZlKGl0KTsKKyAgICBpZiAod2ViUHJvY2Vzc0lkZW50aWZpZXIoKSAhPSBzaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkpCisgICAgICAgIG1fY29ubmVj
dGlvbi5uZXR3b3JrUHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OlVucmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzIHsgUmVtb3RlV29ya2VyVHlwZTo6
U2hhcmVkV29ya2VyLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlm
aWVyKCksIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7Cit9CisKICN1bmRlZiBDT05URVhU
X0NPTk5FQ1RJT05fUkVMRUFTRV9MT0cKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRX
b3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKaW5kZXggZDZhZWEzMTlhYTNlODBlNjcwZGVkYmMwYzhhYmQwZjJmNmI1Y2EyNC4uODQ5
MDc3ODRlZDljMzRmOGY2OGQxZmU0MDZjMjliZTViNmIxNDU2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
aGFyZWRXb3JrZXJJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRXb3JrZXJP
YmplY3RJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYxLDkgKzYyLDEzIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHRlcm1pbmF0ZVNoYXJlZFdvcmtlcihjb25zdCBXZWJTaGFyZWRXb3JrZXImKTsK
IAogICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKTsKKyAgICBib29sIGhhc1No
YXJlZFdvcmtlck9iamVjdHMoKSBjb25zdCB7IHJldHVybiAhbV9zaGFyZWRXb3JrZXJPYmplY3Rz
LmlzRW1wdHkoKTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAorICAgIHZvaWQgYWRkU2hhcmVkV29ya2VyT2Jq
ZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIHZvaWQgcmVt
b3ZlU2hhcmVkV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXIpOworCiBwcml2YXRlOgogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKQEAgLTc1LDYgKzgwLDcgQEAgcHJpdmF0ZToKICAg
ICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uOwogICAgIFdlYWtQ
dHI8V2ViU2hhcmVkV29ya2VyU2VydmVyPiBtX3NlcnZlcjsKICAgICBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIsIEhhc2hTZXQ8V2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRp
Zmllcj4+IG1fc2hhcmVkV29ya2VyT2JqZWN0czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlV29ya2VyVHlwZS5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlV29ya2VyVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyODE2
ZDk0MWY4MmZlYzQ3ZWY4ZjU0NjRkZmQ2ODllYjYwYjdjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmgKQEAgLTAsMCArMSw0NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBj
bGFzcyBSZW1vdGVXb3JrZXJUeXBlIDogdWludDMyX3QgeworICAgIFNlcnZpY2VXb3JrZXIgPSAx
IDw8IDAsCisgICAgU2hhcmVkV29ya2VyID0gMSA8PCAxCit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworbmFtZXNwYWNlIFdURiB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YktpdDo6UmVtb3RlV29ya2VyVHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8
CisgICAgICAgIFdlYktpdDo6UmVtb3RlV29ya2VyVHlwZSwKKyAgICAgICAgV2ViS2l0OjpSZW1v
dGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLAorICAgICAgICBXZWJLaXQ6OlJlbW90ZVdvcmtl
clR5cGU6OlNoYXJlZFdvcmtlcgorICAgID47Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYWU3
NzgxOGRmMmUxM2FhODhlM2Q4ZjhjMTI5ODQxMmRjZjdjMzE0Mi4uZjcxMzlmMTAwZGFjNTRhNDA5
YmI0OTM4ODYxZjQ1MTc5ZTM1NDA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01MjksNyArNTI5LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVXZWJQcm9jZXNzKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2MKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVy
bWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJDb3JlOjpQcm9jZXNz
SWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKIHsKICAgICBpZiAoUmVmUHRyIHByb2Nlc3Mg
PSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHByb2Nlc3NJZGVudGlmaWVy
KSkgewotICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6Oldv
cmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOworICAgICAgICBwcm9jZXNzLT5kaXNhYmxlUmVtb3Rl
V29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICAgICAgICAgcHJvY2Vz
cy0+cmVxdWVzdFRlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6RXhjZWVkZWRD
UFVMaW1pdCk7CiAgICAgfQogfQpAQCAtMTQyMCwzNiArMTQyMCwzNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcwogICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURvbWFpbiks
IHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi0jaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2
aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lzdHJhYmxlRG9t
YWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50
UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBz
aGFyZWRXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKIHsKLSAgICBXZWJQcm9jZXNzUG9vbDo6ZXN0
YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZN
b3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBzZXNz
aW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KKyAgICBhdXRvKiB3ZWJQcm9j
ZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcih3ZWJQcm9jZXNzSWRl
bnRpZmllcik7CisgICAgYXV0byogc2hhcmVkV29ya2VyUHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94
eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoc2hhcmVkV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwor
ICAgIGlmICghd2ViUHJvY2VzcyB8fCAhc2hhcmVkV29ya2VyUHJvY2VzcykKKyAgICAgICAgcmV0
dXJuOwogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlcnZpY2VXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCi17Ci0gICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NG
b3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQotICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2Vy
cyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOworICAgIHNoYXJl
ZFdvcmtlclByb2Nlc3MtPnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyh3b3JrZXJU
eXBlLCAqd2ViUHJvY2Vzcyk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3
ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdv
cmtlclByb2Nlc3NJZGVudGlmaWVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lz
dGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUs
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBzaGFyZWRXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKIHsKICAg
ICBhdXRvKiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmll
cih3ZWJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgYXV0byogc2VydmljZVdvcmtlclByb2Nlc3Mg
PSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJQcm9j
ZXNzSWRlbnRpZmllcik7Ci0gICAgaWYgKCF3ZWJQcm9jZXNzIHx8ICFzZXJ2aWNlV29ya2VyUHJv
Y2VzcykKKyAgICBhdXRvKiBzaGFyZWRXb3JrZXJQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpw
cm9jZXNzRm9ySWRlbnRpZmllcihzaGFyZWRXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CisgICAg
aWYgKCF3ZWJQcm9jZXNzIHx8ICFzaGFyZWRXb3JrZXJQcm9jZXNzKQogICAgICAgICByZXR1cm47
CiAKLSAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
UHJvY2Vzcygqd2ViUHJvY2Vzcyk7CisgICAgc2hhcmVkV29ya2VyUHJvY2Vzcy0+dW5yZWdpc3Rl
clJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3Mod29ya2VyVHlwZSwgKndlYlByb2Nlc3MpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVy
KQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlv
bk5vTG9uZ2VyTmVlZGVkKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvKiB3ZWJQcm9jZXNzID0gV2Vi
UHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcih3ZWJQcm9jZXNzSWRlbnRpZmllcik7
Ci0gICAgYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nl
c3NGb3JJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBpZiAoIXdlYlByb2Nl
c3MgfHwgIXNlcnZpY2VXb3JrZXJQcm9jZXNzKQotICAgICAgICByZXR1cm47CisgICAgaWYgKGF1
dG8qIHByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50
aWZpZXIpKQorICAgICAgICBwcm9jZXNzLT5kaXNhYmxlUmVtb3RlV29ya2Vycyh3b3JrZXJUeXBl
KTsKK30KIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT51bnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudFByb2Nlc3MoKndlYlByb2Nlc3MpOworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHJlZ2lzdHJhYmxl
RG9tYWluLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBz
ZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdlYlBy
b2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9j
ZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRl
bnRpZmllcikKQEAgLTE0NjUsMTIgKzE0NjUsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmVuZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSQog
fQogI2VuZGlmCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVkV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVu
dGlmaWVyKQotewotICAgIGlmIChhdXRvKiBwcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9j
ZXNzRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKSkKLSAgICAgICAgcHJvY2Vzcy0+ZGlzYWJsZVdv
cmtlcnMoV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpOwotfQotCiB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlU3BhY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbiwgdWludDY0
X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1
aXJlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBxdW90
YSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coU3RvcmFnZSwgIiVw
IC0gTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VTcGFjZSIsIHRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAppbmRleCBjNDMxOTg0OTM4OWQxMjI5MTVlMDc3ZjgzMGQzNWM5MDZlZjRkYjQxLi45MzJm
MmY4YTg1NjIyNzJmNWMwYTllMmZlMzc1NjRlNWNlMDgwZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtODYs
NiArODYsNyBAQCBjbGFzcyBXZWJDb29raWVNYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJv
eHk7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTsKIAorZW51bSBjbGFzcyBS
ZW1vdGVXb3JrZXJUeXBlIDogdWludDMyX3Q7CiBlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVy
U3RhdGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1aW50
OF90OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uIDogdWludDhfdDsKQEAgLTMy
OSwxNCArMzMwLDEzIEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgdm9pZCBzZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlm
aWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50
aWZpZXIpOwotICAgIHZvaWQgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogICAgIHZv
aWQgc3RhcnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKICAgICB2b2lkIGVu
ZFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogI2VuZGlmCi0gICAgdm9pZCBz
aGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9M
b25nZXJOZWVkZWQoUmVtb3RlV29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIp
OwogICAgIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgcmVnaXN0ZXJSZW1vdGVXb3Jr
ZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzaGFy
ZWRXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgdm9pZCB1bnJlZ2lzdGVyUmVtb3RlV29y
a2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2hh
cmVkV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogCiAgICAgdm9pZCB0ZXJtaW5hdGVXZWJQcm9j
ZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDhmYTBhMjE0NzhmNzI4MGMwYjgzYjAzODJkNGFkYjVkODIyYThmZDUuLmMy
MDk3YWNmYzE3NWY5MzYwN2RkMjcwODVkMTk4NTI1M2QwODg3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTU0LDE0ICs1NCwxMyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJv
Y2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ICAgICBFc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5
bmMKLSAgICBTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIFJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lk
ZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNz
SWRlbnRpZmllcikKLSAgICBVbnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICAgICBTdGFy
dFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgRW5kU2VydmljZVdvcmtl
ckJhY2tncm91bmRQcm9jZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJQcm9jZXNzSWRlbnRpZmllcikKICNlbmRpZgogICAgIEVzdGFibGlzaFNoYXJlZFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiByZWdpc3RyYWJsZURvbWFpbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBB
c3luYwotICAgIFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBSZW1vdGVXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKGVudW06dWludDMyX3QgV2ViS2l0OjpSZW1vdGVX
b3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCisgICAgUmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKGVudW06dWludDMyX3Qg
V2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBy
ZW1vdGVXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgVW5yZWdpc3RlclJlbW90ZVdvcmtl
ckNsaWVudFByb2Nlc3MoZW51bTp1aW50MzJfdCBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGUgd29y
a2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIs
IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHJlbW90ZVdvcmtlclByb2Nlc3NJZGVudGlmaWVy
KTsKIAogICAgIFNldFdlYlByb2Nlc3NIYXNVcGxvYWRzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHByb2Nlc3NJRCwgYm9vbCBoYXNVcGxvYWQpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDMwNWUyYjlhYmRmMzVkYjBlYjg2ZGFkZjNhOTEzMzQwNzI2
MjJlYTYuLjA4MDcyMzAwNjEyMzZjYmZmMzllOTJhMGE4ZjdmNzFhZGI5MjBiMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzY5Niw3ICszNjk2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpCiAKICAg
ICAvLyBXZSB1cGRhdGUgdGhlIHNlcnZpY2Ugd29ya2VyIHRoZXJlIGF0IHRoZSBtb21lbnQgdG8g
YmUgc3VyZSB3ZSB1c2UgdmFsdWVzIHVzZWQgYnkgYWN0dWFsIHdlYiBwYWdlcy4KICAgICAvLyBG
SVhNRTogUmVmYWN0b3IgdGhpcyB3aGVuIHdlIGhhdmUgYSBiZXR0ZXIgVXNlci1BZ2VudCBzdG9y
eS4KLSAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS51cGRhdGVXb3JrZXJVc2VyQWdlbnQobV91
c2VyQWdlbnQpOworICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnVwZGF0ZVJlbW90ZVdvcmtl
clVzZXJBZ2VudChtX3VzZXJBZ2VudCk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCBmMTE2ZmUyOWM4YjIxNjVmMTFjZjYwYTZmMWY2NmM1ZjEzZGEwNjBjLi42ZDg4
MjhmMmU0ZDFiODkxMTAyNzEzNTcyNmU3NWFlMzBiODU0MDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC01NDYsNyArNTQ2LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhSZWcKICAgICBpZiAoc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKSB7CiAg
ICAgICAgIC8vIFRoaXMgaXMgYSBzZXJ2aWNlIHdvcmtlciBmb3IgYSBzZXJ2aWNlIHdvcmtlciBw
YWdlIHNvIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVzZSB1c2UgdGhlIHBhZ2UncyBXZWJQcm9j
ZXNzIGZvciB0aGUgc2VydmljZSB3b3JrZXIuCiAgICAgICAgIGlmICgoc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLT5wcm9jZXNzSWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAg
ICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vzc1By
b3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNl
cnZpY2VXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
Rm9yUmVtb3RlV29ya2VycygpKTsKICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5pc0luUHJvY2Vzc0NhY2hlKCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9v
bC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eSwgV2ViUHJvY2Vzc0NhY2hlOjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoIXNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNz
Q2FjaGUoKSk7CkBAIC01NjQsNyArNTY0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhSZWcKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSA9IHByb2Nlc3MucHRyKCk7Ci0gICAgICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JX
b3JrZXJzKCkpOworICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZW5hYmxl
UmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9v
bC0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclJlbW90ZVdvcmtlcnMoKSk7CiAK
ICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vzc0Nh
Y2hlKCkpIHsKICAgICAgICAgICAgICAgICBwcm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCku
cmVtb3ZlUHJvY2Vzcygqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSwgV2ViUHJvY2Vzc0NhY2hl
OjpTaG91bGRTaHV0RG93blByb2Nlc3M6Ok5vKTsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKFJlZwogICAgIH0KIAogICAgIGlmICghc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6
Y3JlYXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3Jr
ZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4g
fSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpT
ZXJ2aWNlV29ya2VyLCAqcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluICB7IHJlZ2lzdHJh
YmxlRG9tYWluIH0sICp3ZWJzaXRlRGF0YVN0b3JlKTsKICAgICAgICAgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKIAogICAgICAgICBXRUJQUk9DRVNT
UE9PTF9SRUxFQVNFX0xPR19TVEFUSUMoU2VydmljZVdvcmtlciwgImVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgY3JlYXRpbmcgYSBuZXcgc2Vy
dmljZSB3b3JrZXIgcHJvY2VzcyAocHJvY2VzPSVwLCBQSUQ9JWQpIiwgc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eSwgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIo
KSk7CkBAIC01ODYsMTggKzU4NiwxOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hT
ZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZwogICAgICAg
ICBwcm9jZXNzUG9vbC0+bV9wcm9jZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3UHJvY2Vzc1Byb3h5
KSk7CiAgICAgfQogCi0gICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5KTsKKyAgICByZW1vdGVXb3JrZXJQcm9jZXNzZXMoKS5hZGQoKnNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkpOwogCi0gICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJs
aXNoU2VydmljZVdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1fd29ya2VyUHJlZmVyZW5jZXMg
PyBwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wt
Pm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURv
bWFpbiwgc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkp
Ci0gICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnNldFdvcmtlclVzZXJBZ2VudChw
cm9jZXNzUG9vbC0+bV93b3JrZXJVc2VyQWdlbnQpOworICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHktPmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KHByb2Nlc3NQb29sLT5tX3JlbW90
ZVdvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyUHJlZmVyZW5j
ZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAtPnByZWZlcmVuY2Vz
KCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmll
ciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGlmICghcHJvY2Vzc1Bvb2wtPm1f
cmVtb3RlV29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LT5zZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fcmVtb3Rl
V29ya2VyVXNlckFnZW50KTsKIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpyZW1v
dmVGcm9tV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21SZW1vdGVXb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzKQogewotICAgIEFTU0VSVCh3b3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhw
cm9jZXNzKSk7Ci0gICAgd29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOworICAgIEFT
U0VSVChyZW1vdGVXb3JrZXJQcm9jZXNzZXMoKS5jb250YWlucyhwcm9jZXNzKSk7CisgICAgcmVt
b3RlV29ya2VyUHJvY2Vzc2VzKCkucmVtb3ZlKHByb2Nlc3MpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC02MjMsNyArNjIzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZXN0
YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdlYkMK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eSA9IHByb2Nlc3MucHRyKCk7Ci0gICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZW5h
YmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwgcHJv
Y2Vzc1Bvb2wtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOwor
ICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVJlbW90ZVdvcmtlcnMoUmVt
b3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllckZvclJlbW90ZVdvcmtlcnMoKSk7CiAKICAgICAgICAgaWYgKHNoYXJl
ZFdvcmtlclByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKSB7CiAgICAgICAgICAgICBw
cm9jZXNzUG9vbC0+d2ViUHJvY2Vzc0NhY2hlKCkucmVtb3ZlUHJvY2Vzcygqc2hhcmVkV29ya2Vy
UHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8p
OwpAQCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNoYXJl
ZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDCiAgICAgfQogCiAg
ICAgaWYgKCFzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkpIHsKLSAgICAgICAgYXV0byBuZXdQcm9j
ZXNzUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZUZvcldvcmtlcnMoV2ViUHJvY2Vzc1By
b3h5OjpXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVE
b21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUpOworICAgICAg
ICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yUmVtb3Rl
V29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVn
aXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUp
OwogICAgICAgICBzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkgPSBuZXdQcm9jZXNzUHJveHkucHRy
KCk7CiAKICAgICAgICAgV0VCUFJPQ0VTU1BPT0xfUkVMRUFTRV9MT0dfU1RBVElDKFNoYXJlZFdv
cmtlciwgImVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXNzPSVwLCBQ
SUQ9JWQpIiwgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHktPnByb2Nlc3NJZGVudGlmaWVyKCkpOwpAQCAtNjQ0LDExICs2NDQsMTEgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFdlYkMKICAgICAgICAgcHJvY2Vzc1Bvb2wtPm1fcHJvY2Vzc2VzLmFwcGVuZChX
VEZNb3ZlKG5ld1Byb2Nlc3NQcm94eSkpOwogICAgIH0KIAotICAgIHdvcmtlclByb2Nlc3Nlcygp
LmFkZCgqc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5KTsKKyAgICByZW1vdGVXb3JrZXJQcm9jZXNz
ZXMoKS5hZGQoKnNoYXJlZFdvcmtlclByb2Nlc3NQcm94eSk7CiAKLSAgICBzaGFyZWRXb3JrZXJQ
cm9jZXNzUHJveHktPmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHQocHJvY2Vzc1Bvb2wtPm1f
d29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcy52YWx1
ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVmYXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9y
ZSgpLCByZWdpc3RyYWJsZURvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAg
IGlmICghcHJvY2Vzc1Bvb2wtPm1fd29ya2VyVXNlckFnZW50LmlzTnVsbCgpKQotICAgICAgICBz
aGFyZWRXb3JrZXJQcm9jZXNzUHJveHktPnNldFdvcmtlclVzZXJBZ2VudChwcm9jZXNzUG9vbC0+
bV93b3JrZXJVc2VyQWdlbnQpOworICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJs
aXNoU2hhcmVkV29ya2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJQcmVmZXJl
bmNlcyA/IHByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBw
cm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJl
Z2lzdHJhYmxlRG9tYWluLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgaWYgKCFw
cm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkpCisgICAgICAgIHNo
YXJlZFdvcmtlclByb2Nlc3NQcm94eS0+c2V0UmVtb3RlV29ya2VyVXNlckFnZW50KHByb2Nlc3NQ
b29sLT5tX3JlbW90ZVdvcmtlclVzZXJBZ2VudCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OndpbmRvd1NlcnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKQpAQCAtMTA1NCw3ICsxMDU0LDcg
QEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzKQogICAgIG1fYmFja0ZvcndhcmRDYWNoZS0+cmVtb3ZlRW50cmllc0ZvclByb2Nl
c3MocHJvY2Vzcyk7CiAKICAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdXb3JrZXJzKCkpCi0gICAg
ICAgIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CisgICAgICAgIHJlbW92ZUZy
b21SZW1vdGVXb3JrZXJQcm9jZXNzZXMocHJvY2Vzcyk7CiAKICAgICBzdGF0aWNfY2FzdDxXZWJD
b250ZXh0U3VwcGxlbWVudCo+KHN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+
KCkpLT5wcm9jZXNzRGlkQ2xvc2UoJnByb2Nlc3MpOwogCkBAIC0xMTE0LDEyICsxMTE0LDEyIEBA
IFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQb29sOjpwcm9jZXNzRm9yUmVnaXN0cmFi
bGVEb21haW4oV2Vic2l0ZURhdGFTdG9yCiAgICAgcmV0dXJuIGNyZWF0ZU5ld1dlYlByb2Nlc3Mo
JndlYnNpdGVEYXRhU3RvcmUsIGNhcHRpdmVQb3J0YWxNb2RlKTsKIH0KIAotVXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllciBXZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllckZvcldvcmtlcnMoKQorVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBX
ZWJQcm9jZXNzUG9vbDo6dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllckZvclJlbW90ZVdv
cmtlcnMoKQogewotICAgIGlmICghbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JXb3JrZXJzKQot
ICAgICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMgPSBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6Y3JlYXRlKCk7CisgICAgaWYgKCFtX3VzZXJDb250ZW50Q29udHJv
bGxlckZvclJlbW90ZVdvcmtlcnMpCisgICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9y
UmVtb3RlV29ya2VycyA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsK
IAotICAgIHJldHVybiBtX3VzZXJDb250ZW50Q29udHJvbGxlckZvcldvcmtlcnMtPmlkZW50aWZp
ZXIoKTsKKyAgICByZXR1cm4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JSZW1vdGVXb3JrZXJz
LT5pZGVudGlmaWVyKCk7CiB9CiAKIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6OlBhZ2VDb25maWd1
cmF0aW9uPiYmIHBhZ2VDb25maWd1cmF0aW9uKQpAQCAtMTE2NSwxMyArMTE2NSwxMyBAQCBSZWY8
V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBSZWY8QVBJOgogCiAgICAgYXV0byBwYWdlID0gcHJvY2Vzcy0+Y3JlYXRlV2Vi
UGFnZShwYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKLSAgICBpZiAo
IW1fd29ya2VyUHJlZmVyZW5jZXMpIHsKLSAgICAgICAgbV93b3JrZXJQcmVmZXJlbmNlcyA9IHBh
Z2UtPnByZWZlcmVuY2VzU3RvcmUoKTsKLSAgICAgICAgZm9yIChhdXRvJiB3b3JrZXJQcm9jZXNz
IDogd29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVdv
cmtlclByZWZlcmVuY2VzU3RvcmUoKm1fd29ya2VyUHJlZmVyZW5jZXMpOworICAgIGlmICghbV9y
ZW1vdGVXb3JrZXJQcmVmZXJlbmNlcykgeworICAgICAgICBtX3JlbW90ZVdvcmtlclByZWZlcmVu
Y2VzID0gcGFnZS0+cHJlZmVyZW5jZXNTdG9yZSgpOworICAgICAgICBmb3IgKGF1dG8mIHdvcmtl
clByb2Nlc3MgOiByZW1vdGVXb3JrZXJQcm9jZXNzZXMoKSkKKyAgICAgICAgICAgIHdvcmtlclBy
b2Nlc3MudXBkYXRlUmVtb3RlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSgqbV9yZW1vdGVXb3JrZXJQ
cmVmZXJlbmNlcyk7CiAgICAgfQogICAgIGlmICh1c2VyQ29udGVudENvbnRyb2xsZXIpCi0gICAg
ICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VycyA9IHVzZXJDb250ZW50Q29udHJv
bGxlcjsKKyAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JSZW1vdGVXb3JrZXJzID0g
dXNlckNvbnRlbnRDb250cm9sbGVyOwogCiAgICAgYm9vbCBlbmFibGVQcm9jZXNzU3dhcE9uQ3Jv
c3NTaXRlTmF2aWdhdGlvbiA9IHBhZ2UtPnByZWZlcmVuY2VzKCkucHJvY2Vzc1N3YXBPbkNyb3Nz
U2l0ZU5hdmlnYXRpb25FbmFibGVkKCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTEx
OTQsMTMgKzExOTQsMTMgQEAgUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0
ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSToKICAgICByZXR1cm4gcGFn
ZTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0
IFN0cmluZyYgdXNlckFnZW50KQordm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUmVtb3RlV29y
a2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewotICAgIGlmIChtX3dvcmtl
clVzZXJBZ2VudCA9PSB1c2VyQWdlbnQpCisgICAgaWYgKG1fcmVtb3RlV29ya2VyVXNlckFnZW50
ID09IHVzZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwotICAgIG1fd29ya2VyVXNlckFnZW50ID0g
dXNlckFnZW50OwotICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHdvcmtlclByb2Nlc3Nl
cygpKQotICAgICAgICB3b3JrZXJQcm9jZXNzLnNldFdvcmtlclVzZXJBZ2VudChtX3dvcmtlclVz
ZXJBZ2VudCk7CisgICAgbV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdlbnQ7CisgICAg
Zm9yIChhdXRvJiB3b3JrZXJQcm9jZXNzIDogcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkpCisgICAg
ICAgIHdvcmtlclByb2Nlc3Muc2V0UmVtb3RlV29ya2VyVXNlckFnZW50KG1fcmVtb3RlV29ya2Vy
VXNlckFnZW50KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJz
aXRlRGF0YVN0b3JlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0
b3JlJiBkYXRhU3RvcmUpCkBAIC0xNTgxLDEyICsxNTgxLDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnRlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzKCkKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogICAgIFZlY3RvcjxSZWY8V2ViUHJv
Y2Vzc1Byb3h5Pj4gc2VydmljZVdvcmtlclByb2Nlc3NlczsKLSAgICB3b3JrZXJQcm9jZXNzZXMo
KS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmVtb3RlV29ya2VyUHJvY2Vzc2Vz
KCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICBpZiAocHJvY2Vzcy5pc1J1
bm5pbmdTZXJ2aWNlV29ya2VycygpKQogICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3Nl
cy5hcHBlbmQocHJvY2Vzcyk7CiAgICAgfSk7CiAgICAgZm9yIChhdXRvJiBzZXJ2aWNlV29ya2Vy
UHJvY2VzcyA6IHNlcnZpY2VXb3JrZXJQcm9jZXNzZXMpCi0gICAgICAgIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIpOworICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzcy0+ZGlzYWJsZVJlbW90ZVdv
cmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiAjZW5kaWYKIH0KIApAQCAt
MTgxNCw3ICsxODE0LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVwb3J0V2ViQ29udGVudENQ
VVRpbWUoU2Vjb25kcyBjcHVUaW1lLCB1aW50NjRfdCBhY3Rpdml0eVMKICNlbmRpZgogfQogCi1X
ZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiBXZWJQcm9jZXNzUG9vbDo6d29ya2VyUHJvY2Vz
c2VzKCkKK1dlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdlYlByb2Nlc3NQb29sOjpyZW1v
dGVXb3JrZXJQcm9jZXNzZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWFrSGFz
aFNldDxXZWJQcm9jZXNzUHJveHk+PiBwcm9jZXNzZXM7CiAgICAgcmV0dXJuIHByb2Nlc3NlczsK
QEAgLTE4MzMsMTMgKzE4MzMsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vz
c0Fzc2VydGlvbnMoKQogCiAgICAgLy8gQ2hlY2sgb24gbmV4dCBydW4gbG9vcCBzaW5jZSB0aGUg
d2ViIHByb2Nlc3MgcHJveHkgdG9rZW5zIGFyZSBwcm9iYWJseSBiZWluZyB1cGRhdGVkLgogICAg
IGNhbGxPbk1haW5SdW5Mb29wKFtdIHsKLSAgICAgICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFj
aChbXShhdXRvJiB3b3JrZXJQcm9jZXNzKSB7CisgICAgICAgIHJlbW90ZVdvcmtlclByb2Nlc3Nl
cygpLmZvckVhY2goW10oYXV0byYgd29ya2VyUHJvY2VzcykgewogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICAgICAgICAgIGlmICh3b3JrZXJQcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VX
b3JrZXJzKCkpCi0gICAgICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9j
ZXNzQXNzZXJ0aW9uKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7
CisgICAgICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNz
QXNzZXJ0aW9uKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogI2VuZGlmCiAgICAg
ICAgICAgICBpZiAod29ya2VyUHJvY2Vzcy5pc1J1bm5pbmdTaGFyZWRXb3JrZXJzKCkpCi0gICAg
ICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdl
YlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKKyAgICAgICAgICAgICAg
ICB3b3JrZXJQcm9jZXNzLnVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oUmVtb3Rl
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC0x
ODQ4LDcgKzE4NDgsNyBAQCBib29sIFdlYlByb2Nlc3NQb29sOjppc1NlcnZpY2VXb3JrZXJQYWdl
SUQoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LgotICAgIHJl
dHVybiBXVEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbcGFnZUlEXShhdXRvJiBwcm9jZXNz
KSB7CisgICAgcmV0dXJuIFdURjo6YW55T2YocmVtb3RlV29ya2VyUHJvY2Vzc2VzKCksIFtwYWdl
SURdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdv
cmtlclBhZ2VQcm94eShwYWdlSUQpOwogICAgIH0pOwogI2VuZGlmCkBAIC0yMTc3LDcgKzIxNzcs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzKGJvb2wgdXNlU2VwYXJhdGVTZXJ2aWNlVwogc2l6ZV90IFdlYlByb2Nlc3NQb29sOjpzZXJ2
aWNlV29ya2VyUHJveGllc0NvdW50KCkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7
Ci0gICAgd29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbJl0oYXV0byYgcHJvY2VzcykgeworICAg
IHJlbW90ZVdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAg
ICAgICAgaWYgKHByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKICAgICAgICAgICAg
ICsrY291bnQ7CiAgICAgfSk7CkBAIC0yMTg2LDE0ICsyMTg2LDE0IEBAIHNpemVfdCBXZWJQcm9j
ZXNzUG9vbDo6c2VydmljZVdvcmtlclByb3hpZXNDb3VudCgpIGNvbnN0CiAKIGJvb2wgV2ViUHJv
Y2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMoKSwgW10oYXV0
byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFueU9mKHJlbW90ZVdvcmtlclByb2Nlc3Nl
cygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNzLmhhc1NlcnZp
Y2VXb3JrZXJGb3JlZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCk7CiAgICAgfSk7CiB9CiAKIGJv
b2wgV2ViUHJvY2Vzc1Bvb2w6Omhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JU
ZXN0aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjphbnlPZih3b3JrZXJQcm9jZXNzZXMo
KSwgW10oYXV0byYgcHJvY2VzcykgeworICAgIHJldHVybiBXVEY6OmFueU9mKHJlbW90ZVdvcmtl
clByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CiAgICAgICAgIHJldHVybiBwcm9jZXNz
Lmhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nKCk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBjYjM4OTZk
ZWJlM2E0YzQ1MDk5ZmY1MzE0NDJhYjJlYTA4NmUyYzZlLi5lMjUzYTVlNzNhNDg2OWFiODlkNDIw
NzA4MDY2ZjEwNWVlODEwODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKQEAgLTM3NCw3ICszNzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vz
c0RpZFRlcm1pbmF0ZShOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgTmV0d29ya1Byb2Nlc3NQcm94eTo6
VGVybWluYXRpb25SZWFzb24pOwogCiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQYWdlSUQoV2Vi
UGFnZVByb3h5SWRlbnRpZmllcikgY29uc3Q7Ci0gICAgdm9pZCByZW1vdmVGcm9tV29ya2VyUHJv
Y2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOworICAgIHZvaWQgcmVtb3ZlRnJvbVJlbW90ZVdvcmtl
clByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VX
b3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CkBAIC0zODQsOCArMzg0LDggQEAgcHVibGljOgogI2VuZGlmCiAgICAgdm9pZCBz
ZXJ2aWNlV29ya2VyUHJvY2Vzc0NyYXNoZWQoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKLSAgICB2b2lk
IHVwZGF0ZVdvcmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCk7Ci0gICAgVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yV29ya2VycygpOworICAgIHZvaWQgdXBkYXRlUmVtb3RlV29ya2VyVXNlckFnZW50KGNv
bnN0IFN0cmluZyYgdXNlckFnZW50KTsKKyAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JSZW1vdGVXb3JrZXJzKCk7CiAg
ICAgc3RhdGljIHZvaWQgZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBA
IC02MjEsMTEgKzYyMSwxMSBAQCBwcml2YXRlOgogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25J
RCwgV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+PiBtX2R1bW15UHJvY2Vzc1Byb3hpZXM7IC8vIExp
Z2h0d2VpZ2h0IFdlYlByb2Nlc3NQcm94eSBvYmplY3RzIHdpdGhvdXQgYmFja2luZyBwcm9jZXNz
LgogCi0gICAgc3RhdGljIFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIHdvcmtlclByb2Nl
c3NlcygpOworICAgIHN0YXRpYyBXZWFrSGFzaFNldDxXZWJQcm9jZXNzUHJveHk+JiByZW1vdGVX
b3JrZXJQcm9jZXNzZXMoKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHJlZmVyZW5jZXNTdG9y
ZT4gbV93b3JrZXJQcmVmZXJlbmNlczsKLSAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk+IG1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yV29ya2VyczsKLSAgICBTdHJpbmcg
bV93b3JrZXJVc2VyQWdlbnQ7CisgICAgc3RkOjpvcHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3Jl
PiBtX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzOworICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JSZW1vdGVXb3JrZXJzOwor
ICAgIFN0cmluZyBtX3JlbW90ZVdvcmtlclVzZXJBZ2VudDsKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKICAgICBSZWZQdHI8R1BVUHJvY2Vzc1Byb3h5PiBtX2dwdVByb2Nlc3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBmNDY2OTI0OWEzMzFh
ZGJjYWY3OTJlZTNkNWE2NDI3NGE0NzM5ZTYyLi4yYzBhODAzMDAzMTQ5N2M1MDk1NTVmNTM0MmRm
ODVlYzM5OTBmMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTE4MiwxMSArMTgyLDExIEBAIFJlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nl
c3NQcm94eTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0CiAgICAg
cmV0dXJuIHByb3h5OwogfQogCi1SZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYg
cHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIFdlYnNp
dGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCitSZWY8V2ViUHJvY2Vzc1Byb3h5PiBXZWJQ
cm9jZXNzUHJveHk6OmNyZWF0ZUZvclJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSB3b3Jr
ZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFJlZ2lzdHJhYmxlRG9tYWluJiYg
cmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUpCiB7
CiAgICAgYXV0byBwcm94eSA9IGFkb3B0UmVmKCpuZXcgV2ViUHJvY2Vzc1Byb3h5KHByb2Nlc3NQ
b29sLCAmd2Vic2l0ZURhdGFTdG9yZSwgSXNQcmV3YXJtZWQ6Ok5vLCBDcm9zc09yaWdpbk1vZGU6
OlNoYXJlZCwgQ2FwdGl2ZVBvcnRhbE1vZGU6OkRpc2FibGVkKSk7CiAgICAgcHJveHktPm1fcmVn
aXN0cmFibGVEb21haW4gPSBXVEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKTsKLSAgICBwcm94eS0+
ZW5hYmxlV29ya2Vycyh3b3JrZXJUeXBlLCBwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyRm9yV29ya2VycygpKTsKKyAgICBwcm94eS0+ZW5hYmxlUmVtb3RlV29ya2Vy
cyh3b3JrZXJUeXBlLCBwcm9jZXNzUG9vbC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVy
Rm9yUmVtb3RlV29ya2VycygpKTsKICAgICBwcm94eS0+Y29ubmVjdCgpOwogICAgIHJldHVybiBw
cm94eTsKIH0KQEAgLTk5Nyw3ICs5OTcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQmVj
b21lVW5yZXNwb25zaXZlKCkKICAgICAvLyBJZiB0aGUgd2ViIHByb2Nlc3MgYmVjb21lcyB1bnJl
c3BvbnNpdmUgYW5kIG9ubHkgcnVucyBzZXJ2aWNlL3NoYXJlZCB3b3JrZXJzLCBraWxsIGl0IG91
cnNlbHZlcyBzaW5jZSB0aGVyZSBhcmUgbm8gbmF0aXZlIGNsaWVudHMgdG8gZG8gaXQuCiAgICAg
aWYgKGlzUnVubmluZ1dvcmtlcnMoKSAmJiBtX3BhZ2VNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAg
IFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPR19FUlJPUihQZXJmb3JtYW5jZUxvZ2dpbmcsICJk
aWRCZWNvbWVVbnJlc3BvbnNpdmU6IFRlcm1pbmF0aW5nIHdvcmtlci1vbmx5IHdlYiBwcm9jZXNz
IGJlY2F1c2UgaXQgaXMgdW5yZXNwb25zaXZlIik7Ci0gICAgICAgIGRpc2FibGVXb3JrZXJzKHsg
V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyIH0pOwor
ICAgICAgICBkaXNhYmxlUmVtb3RlV29ya2Vycyh7IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VX
b3JrZXIsIFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciB9KTsKICAgICAgICAgdGVybWlu
YXRlKCk7CiAgICAgfQogfQpAQCAtMTY5Myw3ICsxNjkzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQog
ICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7
IHVybCB9OwogICAgIGlmIChtX3JlZ2lzdHJhYmxlRG9tYWluICYmICptX3JlZ2lzdHJhYmxlRG9t
YWluICE9IHJlZ2lzdHJhYmxlRG9tYWluKSB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgICAgICBkaXNhYmxlV29ya2VycyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICAg
ICAgZGlzYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7
CiAjZW5kaWYKIAogICAgICAgICAvLyBOdWxsIG91dCByZWdpc3RyYWJsZSBkb21haW4gc2luY2Ug
dGhpcyBwcm9jZXNzIGhhcyBub3cgYmVlbiB1c2VkIGZvciBzZXZlcmFsIGRvbWFpbnMuCkBAIC0x
ODc0LDcgKzE4NzQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdv
cmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgcwogfQogI2VuZGlmCiAKLXZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0UmVtb3RlV29ya2VyVXNlckFnZW50KGNv
bnN0IFN0cmluZyYgdXNlckFnZW50KQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCkBAIC0xODg0LDcgKzE4ODQsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50KQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OlNldFVzZXJBZ2VudCB7IHVzZXJBZ2VudCB9LCAwKTsKIH0KIAotdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlUmVt
b3RlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9y
ZSkKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKG1fc2VydmljZVdvcmtl
ckluZm9ybWF0aW9uKQpAQCAtMTg5NCwyMSArMTg5NCwxNCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6dXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
JiBzdAogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2Vy
VHlwZSB3b3JrZXJUeXBlKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlbW90ZVdvcmtl
clByb2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlKQogewotICAgIGF1
dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRX
b3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3Jt
YXRpb247CisgICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJUeXBlID09IFJlbW90
ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRpb24gOiBt
X3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKICAgICBBU1NFUlQod29ya2VySW5mb3JtYXRpb24p
OwogICAgIGlmICghd29ya2VySW5mb3JtYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFdF
QlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgInVwZGF0ZVdvcmtl
clByb2Nlc3NBc3NlcnRpb246IHdvcmtlclR5cGU9JXtwdWJsaWN9cyIsIHdvcmtlclR5cGUgPT0g
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gInNoYXJlZCIgOiAic2VydmljZSIpOwotCi0gICAg
Ly8gRklYTUU6IENsaWVudHMgZG8gbm90IHByb3Blcmx5IGdldCBwb3B1bGF0ZWQgaW4gbV9zaGFy
ZWRXb3JrZXJJbmZvcm1hdGlvbiBzbyB3ZSBjdXJyZW50bHkgdGFrZSBhbiBhc3NlcnRpb24gbm8g
bWF0dGVyIHdoYXQuCi0gICAgaWYgKHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29y
a2VyKSB7Ci0gICAgICAgIGlmICghUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxpZEZvcmVncm91bmRB
Y3Rpdml0eSh3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkpKQotICAgICAgICAgICAgd29ya2Vy
SW5mb3JtYXRpb24tPmFjdGl2aXR5ID0gbV90aHJvdHRsZXIuZm9yZWdyb3VuZEFjdGl2aXR5KCJX
b3JrZXIgZm9yIGZvcmVncm91bmQgdmlldyhzKSJfcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAidXBk
YXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjogd29ya2VyVHlwZT0le3B1YmxpY31zIiwg
d29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyAic2hhcmVkIiA6
ICJzZXJ2aWNlIik7CiAKICAgICBib29sIHNob3VsZFRha2VGb3JlZ3JvdW5kQWN0aXZpdHkgPSBX
VEY6OmFueU9mKHdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNzZXMsIFsmXShhdXRvJiBw
cm9jZXNzKSB7CiAgICAgICAgIHJldHVybiAmcHJvY2VzcyAhPSB0aGlzICYmICEhcHJvY2Vzcy5t
X2ZvcmVncm91bmRUb2tlbjsKQEAgLTE5MjgsNyArMTkyMSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5Ojp1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtlclR5cGUgd29ya2VyVHlwZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh3b3JrZXJUeXBlID09IFdvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIgJiYgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3Np
bmcpIHsKKyAgICBpZiAod29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyICYmIG1faGFzU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKSB7CiAgICAgICAg
IFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIlNlcnZpY2Ug
V29ya2VyIGZvciBiYWNrZ3JvdW5kIHByb2Nlc3NpbmciKTsKICAgICAgICAgaWYgKCFQcm9jZXNz
VGhyb3R0bGVyOjppc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5h
Y3Rpdml0eSkpCiAgICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Ro
cm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIlNlcnZpY2UgV29ya2VyIGZvciBiYWNrZ3JvdW5k
IHByb2Nlc3NpbmciX3MpOwpAQCAtMTk0OSwyOCArMTk0MiwzMCBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiBzdAogICAgIH0sIDApOwogfQogCi0jaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotCi12
b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhX
ZWJQcm9jZXNzUHJveHkmIHByb3h5KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyUmVt
b3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYlBy
b2Nlc3NQcm94eSYgcHJveHkpCiB7Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bikKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gUmVtb3RlV29y
a2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIGlmICghd29ya2VySW5mb3JtYXRpb24pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNlV29y
a2VyLCAicmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzczogY2xpZW50UHJvY2Vzcz0l
cCwgY2xpZW50UElEPSVkIiwgJnByb3h5LCBwcm94eS5wcm9jZXNzSWRlbnRpZmllcigpKTsKLSAg
ICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+Y2xpZW50UHJvY2Vzc2VzLmFkZChwcm94eSk7
Ci0gICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlOjpTZXJ2aWNlV29y
a2VyKTsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coV29ya2VyLCAicmVnaXN0ZXJX
b3JrZXJDbGllbnRQcm9jZXNzOiB3b3JrZXJUeXBlPSV7cHVibGljfXMsIGNsaWVudFByb2Nlc3M9
JXAsIGNsaWVudFBJRD0lZCIsIHdvcmtlclR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVk
V29ya2VyID8gInNoYXJlZCIgOiAic2VydmljZSIsICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50
aWZpZXIoKSk7CisgICAgd29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcy5hZGQocHJv
eHkpOworICAgIHVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7
CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1
bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtl
clR5cGUsIFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCiB7Ci0gICAgaWYgKCFtX3NlcnZpY2VXb3Jr
ZXJJbmZvcm1hdGlvbikKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUg
PT0gUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1h
dGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOworICAgIGlmICghd29ya2VySW5mb3Jt
YXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xP
RyhTZXJ2aWNlV29ya2VyLCAidW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzOiBj
bGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5LnByb2Nlc3NJZGVu
dGlmaWVyKCkpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5jbGllbnRQcm9jZXNz
ZXMucmVtb3ZlKHByb3h5KTsKLSAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpOworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhX
b3JrZXIsICJ1bnJlZ2lzdGVyV29ya2VyQ2xpZW50UHJvY2Vzczogd29ya2VyVHlwZT0le3B1Ymxp
Y31zLCBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCB3b3JrZXJUeXBlID09IFJlbW90
ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/ICJzaGFyZWQiIDogInNlcnZpY2UiLCAmcHJveHks
IHByb3h5LnByb2Nlc3NJZGVudGlmaWVyKCkpOworICAgIHdvcmtlckluZm9ybWF0aW9uLT5jbGll
bnRQcm9jZXNzZXMucmVtb3ZlKHByb3h5KTsKKyAgICB1cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNz
QXNzZXJ0aW9uKHdvcmtlclR5cGUpOwogfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
CiBib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0
eUZvclRlc3RpbmcoKSBjb25zdAogewogICAgIHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1h
dGlvbiA/IFByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkobV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSA6IGZhbHNlOwpAQCAtMTk4OCw3ICsxOTgz
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQ
cm9jZXNzaW5nKCkKIAogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3Vz
cGVuc2lvbiwgInN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIik7CiAgICAg
bV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcgPSB0cnVlOwotICAgIHVwZGF0
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CisgICAg
dXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2
aWNlV29ya2VyKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kUHJvY2Vzc2luZygpCkBAIC0xOTk4LDM4ICsxOTkzLDM4IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAg
V0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiZW5kU2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nIik7CiAgICAgbV9oYXNTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZFByb2Nlc3NpbmcgPSBmYWxzZTsKLSAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOworICAgIHVwZGF0ZVJlbW90ZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlz
YWJsZVdvcmtlcnMoT3B0aW9uU2V0PFdvcmtlclR5cGU+IHdvcmtlclR5cGUpCit2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZGlzYWJsZVJlbW90ZVdvcmtlcnMoT3B0aW9uU2V0PFJlbW90ZVdvcmtlclR5
cGU+IHdvcmtlclR5cGUpCiB7CiAgICAgQVNTRVJUKCF3b3JrZXJUeXBlLmlzRW1wdHkoKSk7CiAK
ICAgICBib29sIGRpZENoYW5nZSA9IGZhbHNlOwotICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5z
KFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpICYmIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
KSB7CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoUmVtb3RlV29ya2VyVHlwZTo6U2Vydmlj
ZVdvcmtlcikgJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pIHsKICAgICAgICAgbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb24gPSB7IH07CiAgICAgICAgIGRpZENoYW5nZSA9IHRydWU7CiAg
ICAgfQotICAgIGlmICh3b3JrZXJUeXBlLmNvbnRhaW5zKFdvcmtlclR5cGU6OlNoYXJlZFdvcmtl
cikgJiYgbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbikgeworICAgIGlmICh3b3JrZXJUeXBlLmNv
bnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikgJiYgbV9zaGFyZWRXb3JrZXJJ
bmZvcm1hdGlvbikgewogICAgICAgICBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uID0geyB9Owog
ICAgICAgICBkaWRDaGFuZ2UgPSB0cnVlOwogICAgIH0KICAgICBpZiAoIWRpZENoYW5nZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3Ms
ICJkaXNhYmxlV29ya2VyczogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNl
cnZpY2VXb3JrZXJzPSVkKSIsIHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2hhcmVk
V29ya2VyKSwgd29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7
CisgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJkaXNhYmxlV29ya2Vy
czogRGlzYWJsaW5nIHdvcmtlcnMgKFNoYXJlZFdvcmtlcnM9JWQsIFNlcnZpY2VXb3JrZXJzPSVk
KSIsIHdvcmtlclR5cGUuY29udGFpbnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSwg
d29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSk7CiAK
ICAgICB1cGRhdGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCiAgICAgaWYgKCFp
c1J1bm5pbmdXb3JrZXJzKCkpCi0gICAgICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVdvcmtl
clByb2Nlc3NlcygqdGhpcyk7CisgICAgICAgIHByb2Nlc3NQb29sKCkucmVtb3ZlRnJvbVJlbW90
ZVdvcmtlclByb2Nlc3NlcygqdGhpcyk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikpCisg
ICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtl
cikpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpDbG9zZSB7IH0sIDApOwogI2VuZGlmCi0gICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29y
a2VyVHlwZTo6U2hhcmVkV29ya2VyKSkKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhSZW1v
dGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
aGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CiAKICAg
ICBtYXliZVNodXREb3duKCk7CkBAIC0yMDUxLDEwICsyMDQ2LDEwIEBAIHN0YXRpYyBWZWN0b3I8
c3RkOjpwYWlyPFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YSwgVVJMPj4gY29udGVudFJ1
bGVMaXN0c0ZyCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtl
cnMoV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBjb25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQordm9pZCBXZWJQcm9jZXNz
UHJveHk6OmVuYWJsZVJlbW90ZVdvcmtlcnMoUmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBj
b25zdCBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyJiB1c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyKQogewogICAgIFdFQlBST0NFU1NQUk9YWV9SRUxFQVNFX0xPRyhTZXJ2aWNl
V29ya2VyLCAiZW5hYmxlV29ya2Vyczogd29ya2VyVHlwZT0ldSIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPih3b3JrZXJUeXBlKSk7Ci0gICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJU
eXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRp
b24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1h
dGlvbiA9IHdvcmtlclR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9z
aGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOwogICAg
IEFTU0VSVCghd29ya2VySW5mb3JtYXRpb24pOwogCiAgICAgd29ya2VySW5mb3JtYXRpb24gPSBS
ZW1vdGVXb3JrZXJJbmZvcm1hdGlvbiB7CkBAIC0yMDcxLDcgKzIwNjYsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlIHdvcmtlclR5cGUsIGNvbnN0IFVz
ZXJDb250ZW50Q29udAogICAgIH07CiAgICAgdXBkYXRlQmFja2dyb3VuZFJlc3BvbnNpdmVuZXNz
VGltZXIoKTsKIAotICAgIHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7
CisgICAgdXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbih3b3JrZXJUeXBlKTsKIH0K
IAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENyZWF0ZVNsZWVwRGlzYWJsZXIoU2xlZXBEaXNh
YmxlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiByZWFzb24sIGJvb2wgZGlz
cGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggNzBl
ODkwNTFjY2JiYzdlOTA0NmJjMWM5OThiOTBhMGI2OGVmNjU5OS4uMmUxNmYwOTI5MjcwOWQzMzU4
M2YyYTgxN2EzZmUxNjExM2IzMTU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVy
LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIgogI2luY2x1ZGUgIlJlbW90
ZVdvcmtlckluaXRpYWxpemF0aW9uRGF0YS5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlclR5cGUu
aCIKICNpbmNsdWRlICJSZXNwb25zaXZlbmVzc1RpbWVyLmgiCiAjaW5jbHVkZSAiU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyLmgiCkBAIC0xMzYsMTMgKzEzNyw5IEBAIHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgU2hv
dWxkTGF1bmNoUHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgZW51bSBjbGFzcyBDYXB0
aXZlUG9ydGFsTW9kZSA6IGJvb2wgeyBEaXNhYmxlZCwgRW5hYmxlZCB9OwotICAgIGVudW0gY2xh
c3MgV29ya2VyVHlwZSA6IHVpbnQzMl90IHsKLSAgICAgICAgU2VydmljZVdvcmtlciA9IDEgPDwg
MCwKLSAgICAgICAgU2hhcmVkV29ya2VyID0gMSA8PCAxCi0gICAgfTsKIAogICAgIHN0YXRpYyBS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0
b3JlKiwgQ2FwdGl2ZVBvcnRhbE1vZGUsIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdp
bk1vZGUgPSBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGU6OlNoYXJlZCwgU2hvdWxkTGF1bmNoUHJv
Y2VzcyA9IFNob3VsZExhdW5jaFByb2Nlc3M6Olllcyk7Ci0gICAgc3RhdGljIFJlZjxXZWJQcm9j
ZXNzUHJveHk+IGNyZWF0ZUZvcldvcmtlcnMoV29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgc3Rh
dGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZUZvclJlbW90ZVdvcmtlcnMoUmVtb3RlV29y
a2VyVHlwZSwgV2ViUHJvY2Vzc1Bvb2wmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBX
ZWJzaXRlRGF0YVN0b3JlJik7CiAKICAgICB+V2ViUHJvY2Vzc1Byb3h5KCk7CiAKQEAgLTE2NSw4
ICsxNjIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0luUHJvY2Vzc0NhY2hlKGJvb2wsIFdp
bGxTaHV0RG93biA9IFdpbGxTaHV0RG93bjo6Tm8pOwogICAgIGJvb2wgaXNJblByb2Nlc3NDYWNo
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNJblByb2Nlc3NDYWNoZTsgfQogCi0gICAgdm9pZCBlbmFi
bGVXb3JrZXJzKFdvcmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXImKTsKLSAgICB2b2lkIGRpc2FibGVXb3JrZXJzKE9wdGlvblNldDxXb3JrZXJUeXBlPik7Cisg
ICAgdm9pZCBlbmFibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGUsIGNvbnN0IFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXImKTsKKyAgICB2b2lkIGRpc2FibGVSZW1vdGVXb3Jr
ZXJzKE9wdGlvblNldDxSZW1vdGVXb3JrZXJUeXBlPik7CiAKICAgICBXZWJzaXRlRGF0YVN0b3Jl
JiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29uc3QgeyBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlKTsg
cmV0dXJuICptX3dlYnNpdGVEYXRhU3RvcmU7IH0KICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3Rv
cmUoV2Vic2l0ZURhdGFTdG9yZSYpOwpAQCAtMzY2LDE1ICszNjMsMTUgQEAgcHVibGljOgogCiAg
ICAgdm9pZCB1cGRhdGVBdWRpYmxlTWVkaWFBc3NlcnRpb25zKCk7CiAKLSAgICB2b2lkIHNldFdv
cmtlclVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHVwZGF0ZVdvcmtlclByZWZl
cmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIHZvaWQgc2V0UmVt
b3RlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgdXBkYXRlUmVtb3Rl
V29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAgICAg
dm9pZCBlc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFdvcmtl
clR5cGUpOworICAgIHZvaWQgcmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90
ZVdvcmtlclR5cGUsIFdlYlByb2Nlc3NQcm94eSYpOworICAgIHZvaWQgdW5yZWdpc3RlclJlbW90
ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Byb3h5Jik7
CisgICAgdm9pZCB1cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9uKFJlbW90ZVdvcmtl
clR5cGUpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNl
cnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJQYWdl
UHJveHkoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHJveHlJRCkgeyByZXR1cm4gbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb24gJiYgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnJlbW90
ZVdvcmtlclBhZ2VQcm94eUlEID09IHBhZ2VQcm94eUlEOyB9Ci0gICAgdm9pZCByZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwotICAgIHZvaWQgdW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogICAg
IGJvb2wgaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25z
dDsKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5n
KCkgY29uc3Q7CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2lu
ZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggM2ZjYzFmMWJmNzkxMTRkYzViMDlhNGI4MmUzNDFlYTNkMGMzOTMxZS4uODNmYjhhNDk2
NzQyMmM2YTU0YjI4ZGIxMzZmOWJlYzZjNGMxYmZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OTMsNiArODkzLDcgQEAKIAkJNDY3
MUZGMUYyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcxRkYxRDIzMjE3RUZG
MDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJNDY3RTQzRTgy
MjQzRkY3RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdFNDNFNzIyNDNGRjZE
MDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJNDY4
MDlBN0MyM0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAg
LyogV2ViQ29va2llQ2FjaGUuaCAqLzsgfTsKKwkJNDY5MUNCOUIyN0IyREQyRDAwQjI5QUFGIC8q
IFJlbW90ZVdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2OTFDQjlBMjdCMkREMTgwMEIyOUFBRiAvKiBSZW1vdGVXb3JrZXJUeXBlLmgg
Ki87IH07CiAJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJNDZCMDUyNDcyMjY2OEQ4NTAwMjY1Qjk3IC8q
IFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCMDUyNDQyMjY2OEQyMzAw
MjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5o
ICovOyB9OwogCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkQ1MjJGQjlC
RDYwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwpAQCAtNDI3Niw2ICs0Mjc3LDcgQEAK
IAkJNDY4Mzg2NjgyNzYzRkFCMTAwQ0Y5MTgyIC8qIFdlYlNoYXJlZFdvcmtlclNlcnZlckNvbm5l
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTBGMjc1NkQxNDMw
MDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
V2ViTG9ja1JlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODlCOTEw
Mjc1NkQxNDMwMDA3QzY1MSAvKiBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVtb3RlV2ViTG9ja1JlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDY5MUNCOUEyN0IyREQxODAwQjI5QUFGIC8qIFJlbW90ZVdvcmtlclR5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3RlV29ya2VyVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0Njk0M0RDQjI3NjNGODM0MDA0QjYxMEUgLyogV2ViU2hhcmVkV29ya2VyT2JqZWN0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjlERTgwMjI3
M0VDQzVEMDA5MzAyNzYgLyogUHJvY2Vzc0xhdW5jaGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm9jZXNzTGF1bmNoZXJDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tn
cm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzI3NSw2ICs3Mjc3LDcgQEAKIAkJCQk5
QjEyMjlEMDIzRkYyQTVFMDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZp
ZXIuaCAqLywKIAkJCQk1QzgwQjNERDIzNjkwRjEwMDA4NkU2REUgLyogUmVtb3RlV29ya2VySW5p
dGlhbGl6YXRpb25EYXRhLmNwcCAqLywKIAkJCQk1QzgwQjNEQjIzNjkwRDhEMDA4NkU2REUgLyog
UmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmggKi8sCisJCQkJNDY5MUNCOUEyN0IyREQx
ODAwQjI5QUFGIC8qIFJlbW90ZVdvcmtlclR5cGUuaCAqLywKIAkJCQk3MjAzNDQ5QjI2QTZDNDc2
MDAwQTVGNTQgLyogUmVuZGVyaW5nVXBkYXRlSUQuaCAqLywKIAkJCQk1Q0I3QUZFNjIzQzY4MUIw
MDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5oICovLAogCQkJCTVDMDA5OTNCMjQxN0ZCN0Uw
MEQ1M0MyNSAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5oICovLApAQCAtMTMz
ODksNiArMTMzOTIsNyBAQAogCQkJCUE1NUJBODI1MUJBMjVDRkIwMDdDRDMzRCAvKiBSZW1vdGVX
ZWJJbnNwZWN0b3JVSVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2QzVCN0NF
MjdBQURERDMwMDBDNUI0NyAvKiBSZW1vdGVXb3JrZXJGcmFtZUxvYWRlckNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDZDNUI3Q0YyN0FBRERENjAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtlckxp
YldlYlJUQ1Byb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjkxQ0I5QjI3QjJERDJEMDBC
MjlBQUYgLyogUmVtb3RlV29ya2VyVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCN0FGRTcy
M0M2ODIwNzAwRTQ5Q0YzIC8qIFJlc291cmNlTG9hZEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTZCRTk2OUNEMUU1NEUwNTQwMDhCNzQ4MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3Np
Zmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkJFOTY5Q0IxRTU0RDRDRjAwOEI3NDgzIC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451406</attachid>
            <date>2022-02-09 10:51:33 -0800</date>
            <delta_ts>2022-02-09 16:47:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236271-20220209105132.patch</filename>
            <type>text/plain</type>
            <size>78340</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE4OWU1N2Q0YTMyOWRkYTBl
NjczNjZlZDMxNDU0MDViNThjODYxMmQuLmNkNjI3NWJiNDJiZmY5NWFjNjc4NWI0ZjlhOGM3MGVh
MzUxMWE4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIwMjItMDItMDggIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBUYWtlIGFkZXF1YXRlIHBy
b2Nlc3MgYXNzZXJ0aW9uIGZvciB0aGUgU2hhcmVkV29ya2VyIHByb2Nlc3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjI3MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgdHJhY2sgb2YgY2xpZW50
IHByb2Nlc3NlcyB0aGF0IHJlbHkgb24gYSBwYXJ0aWN1bGFyIFNoYXJlZFdvcmtlciBwcm9jZXNz
IGFuZCB0YWtlIHRoZSBhZGVxdWF0ZQorICAgICAgICBwcm9jZXNzIGFzc2VydGlvbiB0byBrZWVw
IHRoZSBwcm9jZXNzIHJ1bm5pbmcgb24gaU9TIHdoZW4gbmVjZXNzYXJ5LiBUaGlzIGFsbG93cyB1
cyB0byBnZXQgcmlkIG9mCisgICAgICAgIHRoZSBoYWNrIEkgbGFuZGVkIHByZXZpb3VzbHkgdG8g
YWx3YXlzIHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiBvbiBiZWhhbGYgb2YgdGhlIHNoYXJlZCB3
b3JrZXIKKyAgICAgICAgcHJvY2VzcyAoZXZlbiBpZiBhbGwgaXRzIGNsaWVudHMgYXJlIHN1c3Bl
bmRlZCkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSXNOb0xvbmdlck5lZWRl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2
aWNlV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9u
Ojp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyQ29ubmVjdGlvbjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpXZWJTaGFyZWRXb3JrZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXI6OmRpZENyZWF0ZUNvbnRleHRDb25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjphZGRTaGFyZWRXb3JrZXJPYmplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXI6OnJlbW92ZVNoYXJlZFdvcmtlck9iamVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6Zm9yRWFjaFNoYXJlZFdvcmtlck9i
amVjdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlcjo6Y29udGV4dENv
bm5lY3Rpb24gY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9X
ZWJTaGFyZWRXb3JrZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyOjpzaGFy
ZWRXb3JrZXJPYmplY3RzQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OnNoYXJlZFdvcmtlck9iamVjdHMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hh
cmVkV29ya2VyU2NyaXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
OjpjcmVhdGVDb250ZXh0Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdv
cmtlclNlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29ya2VyT2JqZWN0SXNHb2lu
Z0F3YXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OnNodXREb3du
U2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyOjpy
ZW1vdmVDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVy
Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6bGF1bmNoU2hhcmVkV29ya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29y
a2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6YWRkU2hhcmVkV29ya2VyT2JqZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
cmVtb3ZlU2hhcmVkV29ya2VyT2JqZWN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVXb3JrZXJUeXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAuCisgICAg
ICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZp
Y2VXb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJlbW90ZVdvcmtlckNvbnRl
eHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2Vydmlj
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2hhcmVkV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ob0xvbmdlck5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpl
c3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjp1cGRhdGVSZW1vdGVXb3JrZXJVc2VyQWdlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlUHJvY2Vzc0Fzc2VydGlv
bnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dXBkYXRlV29ya2VyVXNlckFn
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JSZW1vdGVXb3JrZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRSZW1vdGVXb3JrZXJVc2Vy
QWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVJlbW90ZVdv
cmtlclByZWZlcmVuY2VzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVu
dFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnN0YXJ0U2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjplbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRpc2FibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVSZW1vdGVXb3JrZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJVc2VyQWdlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByZWZl
cmVuY2VzU3RvcmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2Vzcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6ZGlzYWJsZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmVuYWJsZVdvcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpoYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wMi0wOSAgRWxpb3QgSHN1ICA8ZWxpb3RfaHN1QGFw
cGxlLmNvbT4KIAogICAgICAgICBNb3ZlIFNhZmUgQnJvd3Npbmcga25vd2xlZGdlIGludG8gU2Fm
YXJpU2FmZUJyb3dzaW5nIGZyYW1ld29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRl
eCAyODdjMWJmNzQ4YzgzYzZjMWU2YzcyYmExMjhjNGQwYTFjNjYxMjM4Li40MGE3ZTJhZWE0YTFi
Y2Y5ZmRmN2ViMzJiMzMyNjZiMGJkNmE1NTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgIlBpbmdMb2FkLmgiCiAjaW5jbHVkZSAiUHJl
Y29ubmVjdFRhc2suaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94
eS5oIgorI2luY2x1ZGUgIlJlbW90ZVdvcmtlclR5cGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKQEAgLTEyNTQsNyArMTI1NSw3IEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVucmVnaXN0ZXJTaGFyZWRXb3JrZXJDb25uZWN0
aW9uKCkKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCkKIHsKICAgICBDT05ORUNU
SU9OX1JFTEVBU0VfTE9HKFNoYXJlZFdvcmtlciwgInNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4
dENvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVkOiIpOwotICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OlNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQgeyB3ZWJQcm9j
ZXNzSWRlbnRpZmllcigpIH0sIDApOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlbW90
ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQgeyBSZW1vdGVXb3JrZXJUeXBl
OjpTaGFyZWRXb3JrZXIsIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiAKICAgICBtX3No
YXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIH0KQEAgLTEzMDUsNyArMTMw
Niw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsb3NlU1dDb250ZXh0
Q29ubmVjdGlvbigpCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXJ2aWNl
V29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKCkKIHsKICAgICBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJzZXJ2aWNlV29ya2VyU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkOiBXZWJQcm9jZXNzIG5vIGxvbmdlciB1
c2VmdWwgZm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIik7Ci0gICAgbV9uZXR3b3JrUHJvY2Vz
cy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6U2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQgeyB3
ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOworICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OlJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQgeyBSZW1vdGVXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOwogCiAg
ICAgbV9zd0NvbnRleHRDb25uZWN0aW9uID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggYjM5MGNhZmE2MDQxZjNlODAxZmQyZDNhOGMyNDNi
NTU0NzUxMjI5NC4uMzI2YzliNzdhNWQzNjJhNGE3OGJmZTUxMDNhNTZiZjg1MWJhOWI1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorI2luY2x1
ZGUgIlJlbW90ZVdvcmtlclR5cGUuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCkBAIC0zNzgsNyArMzc5LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudChTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3AKIAogICAgIGlm
IChjb250ZXh0Q29ubmVjdGlvbikgewogICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gc3RhdGlj
X2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNvbnRleHRDb25uZWN0aW9u
KTsKLSAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50UHJvY2VzcyB7IGlkZW50aWZpZXIoKSwgY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRp
ZmllcigpIH0sIDApOworICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWdpc3RlclJl
bW90ZVdvcmtlckNsaWVudFByb2Nlc3MgeyBSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2Vy
LCBpZGVudGlmaWVyKCksIGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsK
ICAgICB9CiB9CiAKQEAgLTQwMyw3ICs0MDQsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlv
bjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2NyaXB0RXhlY3V0aW9uQwog
ICAgIGlmIChpc0RlbGV0ZWRPcmlnaW4pIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHRDb25u
ZWN0aW9uID0gc2VydmVyKCkuY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihS
ZWdpc3RyYWJsZURvbWFpbiB7IGNsaWVudE9yaWdpbi5jbGllbnRPcmlnaW4gfSkpIHsKICAgICAg
ICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pOwotICAgICAgICAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6VW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzIHsgaWRl
bnRpZmllcigpLCBjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CisgICAg
ICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpVbnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xp
ZW50UHJvY2VzcyB7IFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsIGlkZW50aWZpZXIo
KSwgY29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOwogICAgICAgICB9CiAg
ICAgfQogfQpAQCAtNTQ0LDcgKzU0NSw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpj
b250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uCiAgICAg
Y29ubmVjdGlvbi5zZXRUaHJvdHRsZVN0YXRlKGNvbXB1dGVUaHJvdHRsZVN0YXRlKGNvbm5lY3Rp
b24ucmVnaXN0cmFibGVEb21haW4oKSkpOwogCiAgICAgaWYgKGhhc01hdGNoaW5nQ2xpZW50KGNv
bm5lY3Rpb24ucmVnaXN0cmFibGVEb21haW4oKSkpCi0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OlJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MgeyBpZGVudGlmaWVyKCks
IGNvbm5lY3Rpb24ud2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9LCAwKTsKKyAgICAgICAgbV9uZXR3
b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6UmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzIHsgUmVt
b3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgaWRlbnRpZmllcigpLCBjb25uZWN0aW9uLndl
YlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOjp0ZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJh
Y2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFy
ZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmNwcAppbmRleCA4MDA5MTM5NTI4MGM4ZDc2MGVmMWEx
ZDEyMWMyMTQ3NWY0OTVlYmI4Li40OTUwMTViZjMwYmZjODMyMGZhZWQ4YzgyNjA4ZTIyZjUwMDVk
MGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtl
ci9XZWJTaGFyZWRXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5jcHAKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXIuaCIKIAorI2luY2x1ZGUg
IldlYlNoYXJlZFdvcmtlclNlcnZlci5oIgorI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlclNlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC0z
OSw4ICs0MSw5IEBAIHN0YXRpYyBIYXNoTWFwPFdlYkNvcmU6OlNoYXJlZFdvcmtlcklkZW50aWZp
ZXIsIFdlYlNoYXJlZFdvcmtlcio+JiBhbGxXb3JrZXJzKCkKICAgICByZXR1cm4gYWxsV29ya2Vy
czsKIH0KIAotV2ViU2hhcmVkV29ya2VyOjpXZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6
U2hhcmVkV29ya2VyS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6Oldvcmtlck9wdGlvbnMmIHdvcmtl
ck9wdGlvbnMpCi0gICAgOiBtX2lkZW50aWZpZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSkKK1dlYlNoYXJlZFdvcmtlcjo6V2ViU2hhcmVkV29ya2VyKFdlYlNo
YXJlZFdvcmtlclNlcnZlciYgc2VydmVyLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkm
IGtleSwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYgd29ya2VyT3B0aW9ucykKKyAgICA6
IG1fc2VydmVyKHNlcnZlcikKKyAgICAsIG1faWRlbnRpZmllcihXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogICAgICwgbV9rZXkoa2V5KQogICAgICwgbV93b3Jr
ZXJPcHRpb25zKHdvcmtlck9wdGlvbnMpCiB7CkBAIC01MCw2ICs1MywxMSBAQCBXZWJTaGFyZWRX
b3JrZXI6OldlYlNoYXJlZFdvcmtlcihjb25zdCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkmIGtl
eSwgY29uc3QgV2ViQwogCiBXZWJTaGFyZWRXb3JrZXI6On5XZWJTaGFyZWRXb3JrZXIoKQogewor
ICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gY29udGV4dENvbm5lY3Rpb24oKSkgeworICAgICAg
ICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgOiBtX3NoYXJlZFdvcmtl
ck9iamVjdHMua2V5cygpKQorICAgICAgICAgICAgY29ubmVjdGlvbi0+cmVtb3ZlU2hhcmVkV29y
a2VyT2JqZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIpOworICAgIH0KKwogICAgIEFT
U0VSVChhbGxXb3JrZXJzKCkuZ2V0KG1faWRlbnRpZmllcikgPT0gdGhpcyk7CiAgICAgYWxsV29y
a2VycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwogfQpAQCAtNjQsNCArNzIsMzUgQEAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gV2ViU2hhcmVkV29ya2VyOjpyZWdpc3RyYWJsZURvbWFpbigp
IGNvbnN0CiAgICAgcmV0dXJuIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsKCkgfTsK
IH0KIAordm9pZCBXZWJTaGFyZWRXb3JrZXI6OmRpZENyZWF0ZUNvbnRleHRDb25uZWN0aW9uKFdl
YlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbnRleHRDb25uZWN0aW9u
KQoreworICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciA6IG1fc2hh
cmVkV29ya2VyT2JqZWN0cy5rZXlzKCkpCisgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLmFkZFNo
YXJlZFdvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBXZWJTaGFyZWRXb3JrZXI6OmFkZFNoYXJlZFdvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmIHBvcnQpCit7CisgICAgbV9zaGFyZWRX
b3JrZXJPYmplY3RzLmFkZChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0KTsKKyAg
ICBpZiAoYXV0byogY29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uKCkpCisgICAgICAgIGNv
bm5lY3Rpb24tPmFkZFNoYXJlZFdvcmtlck9iamVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKTsKK30KKwordm9pZCBXZWJTaGFyZWRXb3JrZXI6OnJlbW92ZVNoYXJlZFdvcmtlck9iamVj
dChXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIpCit7CisgICAgbV9zaGFyZWRXb3JrZXJPYmplY3RzLnJlbW92ZShzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyKTsKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IGNvbnRl
eHRDb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb24tPnJlbW92ZVNoYXJlZFdvcmtlck9i
amVjdChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyKTsKK30KKwordm9pZCBXZWJTaGFyZWRX
b3JrZXI6OmZvckVhY2hTaGFyZWRXb3JrZXJPYmplY3QoY29uc3QgRnVuY3Rpb248dm9pZChXZWJD
b3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0Jik+JiBhcHBseSkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIFtzaGFy
ZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLCBwb3J0XSA6IG1fc2hhcmVkV29ya2VyT2JqZWN0cykK
KyAgICAgICAgYXBwbHkoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgcG9ydCk7Cit9CisK
K1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIFdlYlNoYXJlZFdvcmtl
cjo6Y29udGV4dENvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX3NlcnZlci5jb250
ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJhYmxlRG9tYWluKCkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlci5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmgKaW5kZXggMzRi
N2E0YTg0M2NlZjlhMTdlYmMwYjNhNWZhNGNjZDRkMDYxNmIzNC4uOTNiYjU2NjgyZGExOTJjZjM0
NzdhZTA1MTk4MjQ0NmM0MDAzY2MzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyLmgKQEAgLTM5LDEw
ICszOSwxMyBAQCBjbGFzcyBSZWdpc3RyYWJsZURvbWFpbjsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNlcnZlcjsKK2NsYXNzIFdlYlNoYXJlZFdvcmtlclNl
cnZlclRvQ29udGV4dENvbm5lY3Rpb247CisKIGNsYXNzIFdlYlNoYXJlZFdvcmtlciA6IHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXZWJTaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hh
cmVkV29ya2VyS2V5JiwgY29uc3QgV2ViQ29yZTo6V29ya2VyT3B0aW9ucyYpOworICAgIFdlYlNo
YXJlZFdvcmtlcihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXImLCBjb25zdCBXZWJDb3JlOjpTaGFyZWRX
b3JrZXJLZXkmLCBjb25zdCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJik7CiAgICAgfldlYlNoYXJl
ZFdvcmtlcigpOwogCiAgICAgc3RhdGljIFdlYlNoYXJlZFdvcmtlciogZnJvbUlkZW50aWZpZXIo
V2ViQ29yZTo6U2hhcmVkV29ya2VySWRlbnRpZmllcik7CkBAIC01Myw3ICs1NiwxNCBAQCBwdWJs
aWM6CiAgICAgY29uc3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdCB7IHJl
dHVybiBtX2tleS5vcmlnaW47IH0KICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJu
IG1fa2V5LnVybDsgfQogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxl
RG9tYWluKCkgY29uc3Q7Ci0gICAgSGFzaE1hcDxXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0PiYgc2hhcmVkV29ya2Vy
T2JqZWN0cygpIHsgcmV0dXJuIG1fc2hhcmVkV29ya2VyT2JqZWN0czsgfQorICAgIFdlYlNoYXJl
ZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24qIGNvbnRleHRDb25uZWN0aW9uKCkgY29u
c3Q7CisKKyAgICB2b2lkIGFkZFNoYXJlZFdvcmtlck9iamVjdChXZWJDb3JlOjpTaGFyZWRXb3Jr
ZXJPYmplY3RJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0
Jik7CisgICAgdm9pZCByZW1vdmVTaGFyZWRXb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcik7CisgICAgdW5zaWduZWQgc2hhcmVkV29ya2VyT2JqZWN0c0Nv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRXb3JrZXJPYmplY3RzLnNpemUoKTsgfQorICAg
IHZvaWQgZm9yRWFjaFNoYXJlZFdvcmtlck9iamVjdChjb25zdCBGdW5jdGlvbjx2b2lkKFdlYkNv
cmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZmVy
cmVkTWVzc2FnZVBvcnQmKT4mKSBjb25zdDsKKworICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dENv
bm5lY3Rpb24oV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOwogCiAg
ICAgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUnVubmluZzsgfQogICAgIHZv
aWQgbWFya0FzUnVubmluZygpIHsgbV9pc1J1bm5pbmcgPSB0cnVlOyB9CkBAIC02OCw2ICs3OCw3
IEBAIHByaXZhdGU6CiAgICAgV2ViU2hhcmVkV29ya2VyKGNvbnN0IFdlYlNoYXJlZFdvcmtlciYp
ID0gZGVsZXRlOwogICAgIFdlYlNoYXJlZFdvcmtlciYgb3BlcmF0b3I9KGNvbnN0IFdlYlNoYXJl
ZFdvcmtlciYpID0gZGVsZXRlOwogCisgICAgV2ViU2hhcmVkV29ya2VyU2VydmVyJiBtX3NlcnZl
cjsKICAgICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAg
ICBXZWJDb3JlOjpTaGFyZWRXb3JrZXJLZXkgbV9rZXk7CiAgICAgV2ViQ29yZTo6V29ya2VyT3B0
aW9ucyBtX3dvcmtlck9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyLmNw
cAppbmRleCAwYzUyMzU4NDBhNWVjZGJlNDMzNTlmMTI4ZjQwZjAwZmIzNWZlZGRlLi4yNDZlODM5
N2E0NzJmYTc1ODU4NjAzMzgyNWU0MDBjMGRmMGJmZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJl
ZFdvcmtlclNlcnZlci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUEFMOjpTZXNzaW9uSUQgV2ViU2hh
cmVkV29ya2VyU2VydmVyOjpzZXNzaW9uSUQoKQogdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6
OnJlcXVlc3RTaGFyZWRXb3JrZXIoV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5JiYgc2hhcmVkV29y
a2VyS2V5LCBXZWJDb3JlOjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIHNoYXJlZFdvcmtl
ck9iamVjdElkZW50aWZpZXIsIFdlYkNvcmU6OlRyYW5zZmVycmVkTWVzc2FnZVBvcnQmJiBwb3J0
LCBXZWJDb3JlOjpXb3JrZXJPcHRpb25zJiYgd29ya2VyT3B0aW9ucykKIHsKICAgICBhdXRvJiBz
aGFyZWRXb3JrZXIgPSBtX3NoYXJlZFdvcmtlcnMuZW5zdXJlKHNoYXJlZFdvcmtlcktleSwgWyZd
IHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8V2ViU2hhcmVkV29ya2VyPihzaGFyZWRXb3Jr
ZXJLZXksIHdvcmtlck9wdGlvbnMpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxXZWJTaGFy
ZWRXb3JrZXI+KCp0aGlzLCBzaGFyZWRXb3JrZXJLZXksIHdvcmtlck9wdGlvbnMpOwogICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKICAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJTaGFy
ZWRXb3JrZXJTZXJ2ZXI6OnJlcXVlc3RTaGFyZWRXb3JrZXI6IHNoYXJlZFdvcmtlck9iamVjdElk
ZW50aWZpZXI9JXtwcml2YXRlfXMsIHNoYXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0LCBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgc2hh
cmVkV29ya2VyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKQEAgLTY0LDE2ICs2NCwxNiBA
QCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6cmVxdWVzdFNoYXJlZFdvcmtlcihXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJLZXkmJiBzaGFyZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
c2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmplY3RzKCkuYWRkKHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIsIHBvcnQpOworICAgIHNoYXJlZFdvcmtlci0+YWRkU2hhcmVkV29ya2VyT2Jq
ZWN0KHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHBvcnQpOwogCi0gICAgaWYgKHNoYXJl
ZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLnNpemUoKSA+IDEpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hh
cmVkV29ya2VyOiBBIHNoYXJlZCB3b3JrZXIgd2l0aCB0aGlzIFVSTCBhbHJlYWR5IGV4aXN0cyAo
bm93IHNoYXJlZCBieSAldSBzaGFyZWQgd29ya2VyIG9iamVjdHMpIiwgc2hhcmVkV29ya2VyLT5z
aGFyZWRXb3JrZXJPYmplY3RzKCkuc2l6ZSgpKTsKKyAgICBpZiAoc2hhcmVkV29ya2VyLT5zaGFy
ZWRXb3JrZXJPYmplY3RzQ291bnQoKSA+IDEpIHsKKyAgICAgICAgUkVMRUFTRV9MT0coU2hhcmVk
V29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZXF1ZXN0U2hhcmVkV29ya2VyOiBBIHNo
YXJlZCB3b3JrZXIgd2l0aCB0aGlzIFVSTCBhbHJlYWR5IGV4aXN0cyAobm93IHNoYXJlZCBieSAl
dSBzaGFyZWQgd29ya2VyIG9iamVjdHMpIiwgc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJPYmpl
Y3RzQ291bnQoKSk7CiAgICAgICAgIGlmIChzaGFyZWRXb3JrZXItPmRpZEZpbmlzaEZldGNoaW5n
KCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0
aW9ucy5nZXQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigp
KSkKICAgICAgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT5ub3RpZnlXb3JrZXJPYmplY3RP
ZkxvYWRDb21wbGV0aW9uKHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIHsgfSk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHNoYXJlZFdvcmtlci0+aXNSdW5uaW5nKCkpIHsKLSAgICAgICAg
ICAgIGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gbV9jb250ZXh0Q29ubmVjdGlvbnMuZ2V0KHNo
YXJlZFdvcmtlci0+cmVnaXN0cmFibGVEb21haW4oKSk7CisgICAgICAgICAgICBhdXRvKiBjb250
ZXh0Q29ubmVjdGlvbiA9IHNoYXJlZFdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKTsKICAgICAg
ICAgICAgIEFTU0VSVChjb250ZXh0Q29ubmVjdGlvbik7CiAgICAgICAgICAgICBpZiAoY29udGV4
dENvbm5lY3Rpb24pCiAgICAgICAgICAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPnBvc3RDb25u
ZWN0RXZlbnQoKnNoYXJlZFdvcmtlciwgcG9ydCk7CkBAIC05NiwxMCArOTYsMTAgQEAgdm9pZCBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0
KFdlYlNoYXJlZFdvcmtlciYKIHsKICAgICBSRUxFQVNFX0xPRyhTaGFyZWRXb3JrZXIsICJXZWJT
aGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29ya2VyU2NyaXB0IHNo
YXJlZFdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHNoYXJlZFdvcmtlcj0lcCwgc3VjY2Vz
cz0lZCIsIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgJnNoYXJlZFdvcmtl
ciwgZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpOwogCi0gICAgZm9yIChhdXRvIHNoYXJlZFdv
cmtlck9iamVjdElkZW50aWZpZXIgOiBzaGFyZWRXb3JrZXIuc2hhcmVkV29ya2VyT2JqZWN0cygp
LmtleXMoKSkgeworICAgIHNoYXJlZFdvcmtlci5mb3JFYWNoU2hhcmVkV29ya2VyT2JqZWN0KFsm
XShhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGF1dG8mKSB7CiAgICAgICAgIGlm
IChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKICAgICAgICAgICAgIHNlcnZl
ckNvbm5lY3Rpb24tPm5vdGlmeVdvcmtlck9iamVjdE9mTG9hZENvbXBsZXRpb24oc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllciwgZmV0Y2hSZXN1bHQuZXJyb3IpOwotICAgIH0KKyAgICB9KTsK
IAogICAgIGlmICghZmV0Y2hSZXN1bHQuZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAgbV9zaGFy
ZWRXb3JrZXJzLnJlbW92ZShzaGFyZWRXb3JrZXIua2V5KCkpOwpAQCAtMTA4LDE0ICsxMDgsMTEg
QEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI6OmRpZEZpbmlzaEZldGNoaW5nU2hhcmVkV29y
a2VyU2NyaXB0KFdlYlNoYXJlZFdvcmtlciYKIAogICAgIHNoYXJlZFdvcmtlci5zZXRGZXRjaFJl
c3VsdChXVEZNb3ZlKGZldGNoUmVzdWx0KSk7CiAKLSAgICBhdXRvIHJlZ2lzdHJhYmxlRG9tYWlu
ID0gc2hhcmVkV29ya2VyLnJlZ2lzdHJhYmxlRG9tYWluKCk7Ci0gICAgYXV0byogY29udGV4dENv
bm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKHJlZ2lzdHJh
YmxlRG9tYWluKTsKLSAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uKSB7Ci0gICAgICAgIGNyZWF0
ZUNvbnRleHRDb25uZWN0aW9uKHJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBpZiAoYXV0byogY29u
dGV4dENvbm5lY3Rpb24gPSBzaGFyZWRXb3JrZXIuY29udGV4dENvbm5lY3Rpb24oKSkgeworICAg
ICAgICBjb250ZXh0Q29ubmVjdGlvbi0+bGF1bmNoU2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBjb250ZXh0Q29ubmVjdGlvbi0+bGF1bmNo
U2hhcmVkV29ya2VyKHNoYXJlZFdvcmtlcik7CisgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24o
c2hhcmVkV29ya2VyLnJlZ2lzdHJhYmxlRG9tYWluKCkpOwogfQogCiBib29sIFdlYlNoYXJlZFdv
cmtlclNlcnZlcjo6bmVlZHNDb250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QK
QEAgLTE0NCw3ICsxNDEsNiBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6Y3JlYXRlQ29u
dGV4dENvbm5lY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEbwogCiAgICAgICAgIEFT
U0VSVChtX3BlbmRpbmdDb250ZXh0Q29ubmVjdGlvbkRvbWFpbnMuY29udGFpbnMocmVnaXN0cmFi
bGVEb21haW4pKTsKICAgICAgICAgbV9wZW5kaW5nQ29udGV4dENvbm5lY3Rpb25Eb21haW5zLnJl
bW92ZShyZWdpc3RyYWJsZURvbWFpbik7Ci0KICAgICAgICAgaWYgKG1fY29udGV4dENvbm5lY3Rp
b25zLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKSkKICAgICAgICAgICAgIHJldHVybjsKIApA
QCAtMTc0LDcgKzE3MCw3IEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpyZW1vdmVDb250
ZXh0Q29ubmVjdGlvbihXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRlCiAKICAgICBtX2NvbnRl
eHRDb25uZWN0aW9ucy5yZW1vdmUocmVnaXN0cmFibGVEb21haW4pOwogCi0gICAgaWYgKG5lZWRz
Q29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihyZWdpc3RyYWJsZURvbWFpbikp
CisgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uLmhhc1NoYXJlZFdvcmtlck9iamVjdHMoKSkKICAg
ICAgICAgY3JlYXRlQ29udGV4dENvbm5lY3Rpb24ocmVnaXN0cmFibGVEb21haW4pOwogfQogCkBA
IC0xODMsNyArMTc5LDExIEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29u
bmVjdGlvbkNyZWF0ZWQoV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250CiAgICAgUkVMRUFTRV9M
T0coU2hhcmVkV29ya2VyLCAiV2ViU2hhcmVkV29ya2VyU2VydmVyOjpjb250ZXh0Q29ubmVjdGlv
bkNyZWF0ZWQoJXApIHdlYlByb2Nlc3NJZGVudGlmaWVyPSUiIFBSSXU2NCwgJmNvbnRleHRDb25u
ZWN0aW9uLCBjb250ZXh0Q29ubmVjdGlvbi53ZWJQcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0
KCkpOwogICAgIGF1dG8mIHJlZ2lzdHJhYmxlRG9tYWluID0gY29udGV4dENvbm5lY3Rpb24ucmVn
aXN0cmFibGVEb21haW4oKTsKICAgICBmb3IgKGF1dG8mIHNoYXJlZFdvcmtlciA6IG1fc2hhcmVk
V29ya2Vycy52YWx1ZXMoKSkgewotICAgICAgICBpZiAoc2hhcmVkV29ya2VyLT5kaWRGaW5pc2hG
ZXRjaGluZygpICYmIHJlZ2lzdHJhYmxlRG9tYWluLm1hdGNoZXMoc2hhcmVkV29ya2VyLT51cmwo
KSkpCisgICAgICAgIGlmICghcmVnaXN0cmFibGVEb21haW4ubWF0Y2hlcyhzaGFyZWRXb3JrZXIt
PnVybCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHNoYXJlZFdvcmtlci0+
ZGlkQ3JlYXRlQ29udGV4dENvbm5lY3Rpb24oY29udGV4dENvbm5lY3Rpb24pOworICAgICAgICBp
ZiAoc2hhcmVkV29ya2VyLT5kaWRGaW5pc2hGZXRjaGluZygpKQogICAgICAgICAgICAgY29udGV4
dENvbm5lY3Rpb24ubGF1bmNoU2hhcmVkV29ya2VyKCpzaGFyZWRXb3JrZXIpOwogICAgIH0KIH0K
QEAgLTE5NSw4ICsxOTUsOCBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNlcnZlcjo6c2hhcmVkV29y
a2VyT2JqZWN0SXNHb2luZ0F3YXkoY29uc3QgV2ViQ29yZTo6U2hhcmVkVwogICAgIGlmICghc2hh
cmVkV29ya2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBzaGFyZWRXb3JrZXItPnNoYXJlZFdv
cmtlck9iamVjdHMoKS5yZW1vdmUoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7Ci0gICAg
aWYgKCFzaGFyZWRXb3JrZXItPnNoYXJlZFdvcmtlck9iamVjdHMoKS5pc0VtcHR5KCkpCisgICAg
c2hhcmVkV29ya2VyLT5yZW1vdmVTaGFyZWRXb3JrZXJPYmplY3Qoc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcik7CisgICAgaWYgKHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0c0Nv
dW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNodXREb3duU2hhcmVkV29ya2VyKHNoYXJl
ZFdvcmtlcktleSk7CkBAIC0yMDksMTMgKzIwOSwxMyBAQCB2b2lkIFdlYlNoYXJlZFdvcmtlclNl
cnZlcjo6c2h1dERvd25TaGFyZWRXb3JrZXIoY29uc3QgV2ViQ29yZTo6U2hhcmVkV29ya2VyS2V5
JgogICAgIGlmICghc2hhcmVkV29ya2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiBj
b250ZXh0Q29ubmVjdGlvbiA9IGNvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4o
c2hhcmVkV29ya2VyLT5yZWdpc3RyYWJsZURvbWFpbigpKTsKKyAgICBhdXRvKiBjb250ZXh0Q29u
bmVjdGlvbiA9IHNoYXJlZFdvcmtlci0+Y29udGV4dENvbm5lY3Rpb24oKTsKICAgICBpZiAoIWNv
bnRleHRDb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKICAgICBjb250ZXh0Q29ubmVjdGlv
bi0+dGVybWluYXRlU2hhcmVkV29ya2VyKCpzaGFyZWRXb3JrZXIpOwogCi0gICAgaWYgKCFuZWVk
c0NvbnRleHRDb25uZWN0aW9uRm9yUmVnaXN0cmFibGVEb21haW4oc2hhcmVkV29ya2VyLT5yZWdp
c3RyYWJsZURvbWFpbigpKSkKKyAgICBpZiAoIWNvbnRleHRDb25uZWN0aW9uLT5oYXNTaGFyZWRX
b3JrZXJPYmplY3RzKCkpCiAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5jb25uZWN0aW9uSXNO
b0xvbmdlck5lZWRlZCgpOwogfQogCkBAIC0yMzUsMTAgKzIzNSwxMCBAQCB2b2lkIFdlYlNoYXJl
ZFdvcmtlclNlcnZlcjo6cmVtb3ZlQ29ubmVjdGlvbihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBwcm9jZXNzSQogCiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpTaGFyZWRXb3JrZXJL
ZXksIFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXI+PiBzaGFyZWRXb3JrZXJP
YmplY3RzR29pbmdBd2F5OwogICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyIDogbV9zaGFyZWRX
b3JrZXJzLnZhbHVlcygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgc2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllciA6IHNoYXJlZFdvcmtlci0+c2hhcmVkV29ya2VyT2JqZWN0cygpLmtleXMoKSkg
eworICAgICAgICBzaGFyZWRXb3JrZXItPmZvckVhY2hTaGFyZWRXb3JrZXJPYmplY3QoWyZdKGF1
dG8gc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllciwgYXV0byYpIHsKICAgICAgICAgICAgIGlm
IChzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKCkgPT0gcHJv
Y2Vzc0lkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAgc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5n
QXdheS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc2hhcmVkV29ya2VyLT5rZXkoKSwgc2hhcmVkV29y
a2VyT2JqZWN0SWRlbnRpZmllcikpOwotICAgICAgICB9CisgICAgICAgIH0pOwogICAgIH0KICAg
ICBmb3IgKGF1dG8mIFtzaGFyZWRXb3JrZXJLZXksIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZp
ZXJdIDogc2hhcmVkV29ya2VyT2JqZWN0c0dvaW5nQXdheSkKICAgICAgICAgc2hhcmVkV29ya2Vy
T2JqZWN0SXNHb2luZ0F3YXkoc2hhcmVkV29ya2VyS2V5LCBzaGFyZWRXb3JrZXJPYmplY3RJZGVu
dGlmaWVyKTsKQEAgLTI1NiwxMCArMjU2LDEwIEBAIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVy
Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VySWRlCiAg
ICAgaWYgKCFzaGFyZWRXb3JrZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byBz
aGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyIDogc2hhcmVkV29ya2VyLT5zaGFyZWRXb3JrZXJP
YmplY3RzKCkua2V5cygpKSB7CisgICAgc2hhcmVkV29ya2VyLT5mb3JFYWNoU2hhcmVkV29ya2Vy
T2JqZWN0KFsmXShhdXRvIHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIsIGF1dG8mKSB7CiAg
ICAgICAgIGlmIChhdXRvKiBzZXJ2ZXJDb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoc2hh
cmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcigpKSkKICAgICAgICAg
ICAgIHNlcnZlckNvbm5lY3Rpb24tPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChzaGFyZWRX
b3JrZXJPYmplY3RJZGVudGlmaWVyLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgc291cmNlVVJMKTsKLSAgICB9CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3Jr
ZXIvV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBiMjc3ZTY1NzJmODE5MDEyM2VmYjY0ZTg5MWNi
MzY3YTBiNDg5ZjEwLi44OTNiODY4OTgyYjMxOTY5ZmMxMWFjYjU3YjA0NTU1NzFlMjg5NmM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJT
aGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdvcmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcApAQCAtMjgsNiArMjgsOSBAQAogCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJSZW1vdGVXb3JrZXJUeXBlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyLmgiCiAjaW5jbHVkZSAi
V2ViU2hhcmVkV29ya2VyQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uTWVzc2FnZXMuaCIKQEAgLTkx
LDggKzk0LDkgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpsYXVuY2hTaGFyZWRXb3JrZXIoV2ViU2hhcmVkV29ya2UKICAgICBDT05URVhUX0NPTk5FQ1RJ
T05fUkVMRUFTRV9MT0coImxhdW5jaFNoYXJlZFdvcmtlcjogc2hhcmVkV29ya2VySWRlbnRpZmll
cj0lIiBQUkl1NjQsIHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAgICAg
c2hhcmVkV29ya2VyLm1hcmtBc1J1bm5pbmcoKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTaGFy
ZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkxhdW5jaFNoYXJlZFdvcmtlciB7IHNo
YXJlZFdvcmtlci5vcmlnaW4oKSwgc2hhcmVkV29ya2VyLmlkZW50aWZpZXIoKSwgc2hhcmVkV29y
a2VyLndvcmtlck9wdGlvbnMoKSwgc2hhcmVkV29ya2VyLmZldGNoUmVzdWx0KCkgfSk7Ci0gICAg
Zm9yIChhdXRvJiBwb3J0IDogc2hhcmVkV29ya2VyLnNoYXJlZFdvcmtlck9iamVjdHMoKS52YWx1
ZXMoKSkKKyAgICBzaGFyZWRXb3JrZXIuZm9yRWFjaFNoYXJlZFdvcmtlck9iamVjdChbJl0oYXV0
bywgYXV0byYgcG9ydCkgewogICAgICAgICBwb3N0Q29ubmVjdEV2ZW50KHNoYXJlZFdvcmtlciwg
cG9ydCk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6cG9zdENvbm5lY3RFdmVudChjb25zdCBXZWJTaGFyZWRXb3JrZXImIHNoYXJl
ZFdvcmtlciwgY29uc3QgV2ViQ29yZTo6VHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYgcG9ydCkKQEAg
LTEwNyw2ICsxMTEsMjkgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjp0ZXJtaW5hdGVTaGFyZWRXb3JrZXIoY29uc3QgV2ViU2gKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTaGFyZWRXb3JrZXJDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVNo
YXJlZFdvcmtlciB7IHNoYXJlZFdvcmtlci5pZGVudGlmaWVyKCkgfSk7CiB9CiAKK3ZvaWQgV2Vi
U2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6YWRkU2hhcmVkV29ya2VyT2Jq
ZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVkV29ya2VyT2Jq
ZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRvJiBzaGFyZWRXb3JrZXJPYmplY3RzID0gbV9zaGFy
ZWRXb3JrZXJPYmplY3RzLmVuc3VyZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKCksIFtdIHsgcmV0dXJuIEhhc2hTZXQ8V2ViQ29yZTo6U2hhcmVkV29ya2Vy
T2JqZWN0SWRlbnRpZmllcj4geyB9OyB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgc2hhcmVkV29y
a2VyT2JqZWN0cy5hZGQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKKyAgICBpZiAo
d2ViUHJvY2Vzc0lkZW50aWZpZXIoKSAhPSBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnBy
b2Nlc3NJZGVudGlmaWVyKCkgJiYgc2hhcmVkV29ya2VyT2JqZWN0cy5zaXplKCkgPT0gMSkKKyAg
ICAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6UmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzIHsgUmVtb3Rl
V29ya2VyVHlwZTo6U2hhcmVkV29ya2VyLCBzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyLnBy
b2Nlc3NJZGVudGlmaWVyKCksIHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7Cit9CisKK3Zv
aWQgV2ViU2hhcmVkV29ya2VyU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cmVtb3ZlU2hhcmVk
V29ya2VyT2JqZWN0KFdlYkNvcmU6OlNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIgc2hhcmVk
V29ya2VyT2JqZWN0SWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ID0gbV9zaGFyZWRXb3JrZXJP
YmplY3RzLmZpbmQoc2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmll
cigpKTsKKyAgICBpZiAoaXQgPT0gbV9zaGFyZWRXb3JrZXJPYmplY3RzLmVuZCgpKQorICAgICAg
ICByZXR1cm47CisgICAgaXQtPnZhbHVlLnJlbW92ZShzaGFyZWRXb3JrZXJPYmplY3RJZGVudGlm
aWVyKTsKKyAgICBpZiAoIWl0LT52YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fc2hhcmVkV29ya2VyT2JqZWN0cy5yZW1vdmUoaXQpOworICAgIGlmICh3ZWJQcm9jZXNz
SWRlbnRpZmllcigpICE9IHNoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIucHJvY2Vzc0lkZW50
aWZpZXIoKSkKKyAgICAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VW5yZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFBy
b2Nlc3MgeyBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHNoYXJlZFdvcmtlck9iamVj
dElkZW50aWZpZXIucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vzc0lkZW50aWZpZXIoKSB9
LCAwKTsKK30KKwogI3VuZGVmIENPTlRFWFRfQ09OTkVDVElPTl9SRUxFQVNFX0xPRwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdvcmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2hhcmVkV29ya2VyL1dlYlNoYXJlZFdv
cmtlclNlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBkNmFlYTMxOWFhM2U4MGU2NzBk
ZWRiYzBjOGFiZDBmMmY2YjVjYTI0Li44NDkwNzc4NGVkOWMzNGY4ZjY4ZDFmZTQwNmMyOWJlNWI2
YjE0NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NoYXJlZFdv
cmtlci9XZWJTaGFyZWRXb3JrZXJTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TaGFyZWRXb3JrZXIvV2ViU2hhcmVkV29ya2VyU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlcklkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1NoYXJlZFdvcmtlck9iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1RyYW5zZmVycmVkTWVzc2FnZVBvcnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNjEsOSArNjIsMTMgQEAgcHVibGljOgogICAgIHZvaWQgdGVybWluYXRlU2hhcmVkV29ya2Vy
KGNvbnN0IFdlYlNoYXJlZFdvcmtlciYpOwogCiAgICAgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdl
ck5lZWRlZCgpOworICAgIGJvb2wgaGFzU2hhcmVkV29ya2VyT2JqZWN0cygpIGNvbnN0IHsgcmV0
dXJuICFtX3NoYXJlZFdvcmtlck9iamVjdHMuaXNFbXB0eSgpOyB9CiAKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCisg
ICAgdm9pZCBhZGRTaGFyZWRXb3JrZXJPYmplY3QoV2ViQ29yZTo6U2hhcmVkV29ya2VyT2JqZWN0
SWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdmVTaGFyZWRXb3JrZXJPYmplY3QoV2ViQ29yZTo6
U2hhcmVkV29ya2VyT2JqZWN0SWRlbnRpZmllcik7CisKIHByaXZhdGU6CiAgICAgLy8gSVBDIG1l
c3NhZ2VzLgogICAgIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KFdlYkNvcmU6OlNo
YXJlZFdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwpAQCAt
NzUsNiArODAsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBtX2Nvbm5lY3Rpb247CiAgICAgV2Vha1B0cjxXZWJTaGFyZWRXb3JrZXJTZXJ2ZXI+IG1fc2Vy
dmVyOwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgSGFzaFNldDxXZWJDb3Jl
OjpTaGFyZWRXb3JrZXJPYmplY3RJZGVudGlmaWVyPj4gbV9zaGFyZWRXb3JrZXJPYmplY3RzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVXb3JrZXJUeXBlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVXb3Jr
ZXJUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI4MTZkOTQxZjgyZmVjNDdlZjhmNTQ2NGRmZDY4OWViNjBi
N2NmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZVdvcmtl
clR5cGUuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitlbnVtIGNsYXNzIFJlbW90ZVdvcmtlclR5cGUgOiB1aW50MzJf
dCB7CisgICAgU2VydmljZVdvcmtlciA9IDEgPDwgMCwKKyAgICBTaGFyZWRXb3JrZXIgPSAxIDw8
IDEKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCituYW1lc3BhY2UgV1RGIHsKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpSZW1vdGVXb3JrZXJUeXBlPiB7CisgICAg
dXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpSZW1vdGVXb3JrZXJU
eXBlLAorICAgICAgICBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsCisg
ICAgICAgIFdlYktpdDo6UmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyCisgICAgPjsKK307
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhZTc3ODE4ZGYyZTEzYWE4OGUzZDhmOGMxMjk4NDEyZGNm
N2MzMTQyLi5mNzEzOWYxMDBkYWM1NGE0MDliYjQ5Mzg4NjFmNDUxNzllMzU0MDdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRl
cm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvYwogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2Vy
UHJvY2Vzc2VzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQog
ewogICAgIGlmIChSZWZQdHIgcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0Zvcklk
ZW50aWZpZXIocHJvY2Vzc0lkZW50aWZpZXIpKSB7Ci0gICAgICAgIHByb2Nlc3MtPmRpc2FibGVX
b3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CisgICAg
ICAgIHByb2Nlc3MtPmRpc2FibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZp
Y2VXb3JrZXIpOwogICAgICAgICBwcm9jZXNzLT5yZXF1ZXN0VGVybWluYXRpb24oUHJvY2Vzc1Rl
cm1pbmF0aW9uUmVhc29uOjpFeGNlZWRlZENQVUxpbWl0KTsKICAgICB9CiB9CkBAIC0xNDIwLDM2
ICsxNDIwLDM2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzCiAgICAgV2ViUHJvY2Vzc1Bvb2w6
OmVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhX
VEZNb3ZlKHJlZ2lzdHJhYmxlRG9tYWluKSwgc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgc3RkOjpv
cHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
cmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5cGUgd29ya2Vy
VHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNoYXJlZFdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQog
ewotICAgIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUocmVnaXN0cmFibGVEb21haW4pLCBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIsIHNlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotfQorICAgIGF1dG8qIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NG
b3JJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBhdXRvKiBzaGFyZWRXb3Jr
ZXJQcm9jZXNzID0gV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihzaGFyZWRX
b3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CisgICAgaWYgKCF3ZWJQcm9jZXNzIHx8ICFzaGFyZWRX
b3JrZXJQcm9jZXNzKQorICAgICAgICByZXR1cm47CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6c2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBpZiAoYXV0byogcHJvY2VzcyA9
IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCi0gICAg
ICAgIHByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29ya2VyVHlwZTo6
U2VydmljZVdvcmtlcik7CisgICAgc2hhcmVkV29ya2VyUHJvY2Vzcy0+cmVnaXN0ZXJSZW1vdGVX
b3JrZXJDbGllbnRQcm9jZXNzKHdvcmtlclR5cGUsICp3ZWJQcm9jZXNzKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJl
bW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2Vi
UHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNoYXJlZFdvcmtl
clByb2Nlc3NJZGVudGlmaWVyKQogewogICAgIGF1dG8qIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNz
UHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBh
dXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0Zvcklk
ZW50aWZpZXIoc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBpZiAoIXdlYlBy
b2Nlc3MgfHwgIXNlcnZpY2VXb3JrZXJQcm9jZXNzKQorICAgIGF1dG8qIHNoYXJlZFdvcmtlclBy
b2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHNoYXJlZFdvcmtl
clByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdlYlByb2Nlc3MgfHwgIXNoYXJlZFdvcmtl
clByb2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzLT5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKCp3ZWJQcm9jZXNzKTsKKyAgICBzaGFy
ZWRXb3JrZXJQcm9jZXNzLT51bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2Vzcyh3b3Jr
ZXJUeXBlLCAqd2ViUHJvY2Vzcyk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2
aWNlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
bW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoUmVtb3RlV29ya2VyVHlw
ZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlmaWVyKQogewot
ICAgIGF1dG8qIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlm
aWVyKHdlYlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vz
cyA9IFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIod2ViUHJvY2Vzc0lkZW50
aWZpZXIpOwotICAgIGlmICghd2ViUHJvY2VzcyB8fCAhc2VydmljZVdvcmtlclByb2Nlc3MpCi0g
ICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0byogcHJvY2VzcyA9IFdlYlByb2Nlc3NQcm94eTo6
cHJvY2Vzc0ZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHByb2Nlc3MtPmRpc2Fi
bGVSZW1vdGVXb3JrZXJzKHdvcmtlclR5cGUpOworfQogCi0gICAgc2VydmljZVdvcmtlclByb2Nl
c3MtPnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2Vzcygqd2ViUHJvY2Vzcyk7Cisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojplc3Rh
Ymxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZ2lz
dHJhYmxlRG9tYWluJiYgcmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShyZWdpc3RyYWJsZURv
bWFpbiksIHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgc2Vzc2lvbklELCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3RhcnRT
ZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZp
ZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQpAQCAtMTQ2NSwxMiArMTQ2NSw2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9j
ZXNzaW5nKFdlYkNvcmU6OlByb2Nlc3NJCiB9CiAjZW5kaWYKIAotdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgaWYgKGF1dG8qIHByb2Nl
c3MgPSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQot
ICAgICAgICBwcm9jZXNzLT5kaXNhYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5
cGU6OlNoYXJlZFdvcmtlcik7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVz
dFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJl
bnRTaXplLCB1aW50NjRfdCBzcGFjZVJlcXVpcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHF1b3RhKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBSRUxFQVNFX0xPRyhTdG9yYWdlLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0
U3RvcmFnZVNwYWNlIiwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGM0MzE5ODQ5Mzg5ZDEyMjkxNWUw
NzdmODMwZDM1YzkwNmVmNGRiNDEuLjkzMmYyZjhhODU2MjI3MmY1YzBhOWUyZmUzNzU2NGU1Y2Uw
ODBkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCkBAIC04Niw2ICs4Niw3IEBAIGNsYXNzIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OwogCitlbnVtIGNsYXNzIFJlbW90ZVdvcmtlclR5cGUgOiB1aW50MzJfdDsKIGVu
dW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKIGVudW0gY2xhc3Mg
U3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb24gOiB1aW50OF90OwpAQCAtMzI5LDE0ICszMzAsMTMgQEAgcHJpdmF0ZToKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
Zmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNlcnZpY2VXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICB2
b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJv
Y2Vzc0lkZW50aWZpZXIsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCBzdGFydFNlcnZpY2VXb3JrZXJCYWNrZ3JvdW5k
UHJvY2Vzc2luZyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBzZXJ2aWNlV29ya2VyUHJvY2Vz
c0lkZW50aWZpZXIpOwogICAgIHZvaWQgZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNz
aW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRp
Zmllcik7CiAjZW5kaWYKLSAgICB2b2lkIHNoYXJlZFdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9M
b25nZXJOZWVkZWQoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3Rl
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ob0xvbmdlck5lZWRlZChSZW1vdGVXb3JrZXJUeXBlLCBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAgICAgdm9pZCBlc3RhYmxpc2hTaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCByZWdpc3RlclJlbW90ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlw
ZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyIHNoYXJlZFdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIHVucmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdvcmtlclR5
cGUsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHdlYlByb2Nlc3NJZGVudGlmaWVyLCBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBzaGFyZWRXb3JrZXJQcm9jZXNzSWRlbnRpZmllcik7CiAK
ICAgICB2b2lkIHRlcm1pbmF0ZVdlYlByb2Nlc3MoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOGZhMGEyMTQ3OGY3MjgwYzBi
ODNiMDM4MmQ0YWRiNWQ4MjJhOGZkNS4uYzIwOTdhY2ZjMTc1ZjkzNjA3ZGQyNzA4NWQxOTg1MjUz
ZDA4ODdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTQsMTQgKzU0LDEz
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIEVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVnaXN0cmFibGVEb21haW4sIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllciwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0Q29u
bmVjdGlvbk5vTG9uZ2VyTmVlZGVkKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCi0gICAgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9j
ZXNzSWRlbnRpZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50
aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQotICAgIFVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9j
ZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclBy
b2Nlc3NJZGVudGlmaWVyKQogICAgIFN0YXJ0U2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNz
aW5nKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJQcm9jZXNzSWRlbnRp
ZmllcikKICAgICBFbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgc2VydmljZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKQogI2VuZGlm
CiAgICAgRXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0gICAgU2hhcmVkV29ya2VyQ29udGV4dENv
bm5lY3Rpb25Ob0xvbmdlck5lZWRlZChXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBpZGVudGlm
aWVyKQorICAgIFJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uTm9Mb25nZXJOZWVkZWQoZW51
bTp1aW50MzJfdCBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBSZWdpc3RlclJlbW90ZVdvcmtlckNs
aWVudFByb2Nlc3MoZW51bTp1aW50MzJfdCBXZWJLaXQ6OlJlbW90ZVdvcmtlclR5cGUgd29ya2Vy
VHlwZSwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgd2ViUHJvY2Vzc0lkZW50aWZpZXIsIFdl
YkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHJlbW90ZVdvcmtlclByb2Nlc3NJZGVudGlmaWVyKTsK
KyAgICBVbnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhlbnVtOnVpbnQzMl90IFdl
YktpdDo6UmVtb3RlV29ya2VyVHlwZSB3b3JrZXJUeXBlLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllciB3ZWJQcm9jZXNzSWRlbnRpZmllciwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcmVt
b3RlV29ya2VyUHJvY2Vzc0lkZW50aWZpZXIpOwogCiAgICAgU2V0V2ViUHJvY2Vzc0hhc1VwbG9h
ZHMoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lELCBib29sIGhhc1VwbG9hZCkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMzA1ZTJiOWFi
ZGYzNWRiMGViODZkYWRmM2E5MTMzNDA3MjYyMmVhNi4uMDgwNzIzMDA2MTIzNmNiZmYzOWU5MmEw
YThmN2Y3MWFkYjkyMGIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0zNjk2LDcgKzM2OTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50
KFN0cmluZyYmIHVzZXJBZ2VudCkKIAogICAgIC8vIFdlIHVwZGF0ZSB0aGUgc2VydmljZSB3b3Jr
ZXIgdGhlcmUgYXQgdGhlIG1vbWVudCB0byBiZSBzdXJlIHdlIHVzZSB2YWx1ZXMgdXNlZCBieSBh
Y3R1YWwgd2ViIHBhZ2VzLgogICAgIC8vIEZJWE1FOiBSZWZhY3RvciB0aGlzIHdoZW4gd2UgaGF2
ZSBhIGJldHRlciBVc2VyLUFnZW50IHN0b3J5LgotICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgp
LnVwZGF0ZVdvcmtlclVzZXJBZ2VudChtX3VzZXJBZ2VudCk7CisgICAgcHJvY2VzcygpLnByb2Nl
c3NQb29sKCkudXBkYXRlUmVtb3RlV29ya2VyVXNlckFnZW50KG1fdXNlckFnZW50KTsKIAogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGYxMTZmZTI5YzhiMjE2NWYxMWNm
NjBhNmYxZjY2YzVmMTNkYTA2MGMuLjZkODgyOGYyZTRkMWI4OTExMDI3MTM1NzI2ZTc1YWUzMGI4
NTQwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAg
LTU0Niw3ICs1NDYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFJlZwogICAgIGlmIChzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIpIHsKICAgICAgICAgLy8gVGhpcyBpcyBhIHNlcnZpY2Ugd29y
a2VyIGZvciBhIHNlcnZpY2Ugd29ya2VyIHBhZ2Ugc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2Ug
dXNlIHVzZSB0aGUgcGFnZSdzIFdlYlByb2Nlc3MgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlci4KICAg
ICAgICAgaWYgKChzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojpw
cm9jZXNzRm9ySWRlbnRpZmllcihzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXItPnByb2Nlc3NJ
ZGVudGlmaWVyKCkpKSkgewotICAgICAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+
ZW5hYmxlV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIs
IHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2Vycygp
KTsKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVJlbW90ZVdv
cmtlcnMoUmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgcHJvY2Vzc1Bvb2wtPnVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JSZW1vdGVXb3JrZXJzKCkpOwogICAgICAgICAg
ICAgaWYgKHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgewog
ICAgICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9j
ZXNzKCpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNo
dXREb3duUHJvY2Vzczo6Tm8pOwogICAgICAgICAgICAgICAgIEFTU0VSVCghc2VydmljZVdvcmtl
clByb2Nlc3NQcm94eS0+aXNJblByb2Nlc3NDYWNoZSgpKTsKQEAgLTU2NCw3ICs1NjQsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKFJlZwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gcHJvY2Vzcy5wdHIoKTsKLSAgICAg
ICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPmVuYWJsZVdvcmtlcnMoV2ViUHJvY2Vz
c1Byb3h5OjpXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRl
bnRDb250cm9sbGVySWRlbnRpZmllckZvcldvcmtlcnMoKSk7CisgICAgICAgICAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6
OlNlcnZpY2VXb3JrZXIsIHByb2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyRm9yUmVtb3RlV29ya2VycygpKTsKIAogICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHktPmlzSW5Qcm9jZXNzQ2FjaGUoKSkgewogICAgICAgICAgICAgICAgIHByb2Nl
c3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5yZW1vdmVQcm9jZXNzKCpzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LCBXZWJQcm9jZXNzQ2FjaGU6OlNob3VsZFNodXREb3duUHJvY2Vzczo6Tm8pOwpA
QCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoUmVnCiAgICAgfQogCiAgICAg
aWYgKCFzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KSB7Ci0gICAgICAgIGF1dG8gbmV3UHJvY2Vz
c1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JXb3JrZXJzKFdlYlByb2Nlc3NQcm94
eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURv
bWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAg
IGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVGb3JSZW1vdGVX
b3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIsICpwcm9jZXNzUG9vbCwgUmVn
aXN0cmFibGVEb21haW4gIHsgcmVnaXN0cmFibGVEb21haW4gfSwgKndlYnNpdGVEYXRhU3RvcmUp
OwogICAgICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbmV3UHJvY2Vzc1Byb3h5LnB0
cigpOwogCiAgICAgICAgIFdFQlBST0NFU1NQT09MX1JFTEVBU0VfTE9HX1NUQVRJQyhTZXJ2aWNl
V29ya2VyLCAiZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyBjcmVhdGluZyBhIG5ldyBzZXJ2aWNlIHdvcmtlciBwcm9jZXNzIChwcm9jZXM9JXAs
IFBJRD0lZCkiLCBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LCBzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5LT5wcm9jZXNzSWRlbnRpZmllcigpKTsKQEAgLTU4NiwxOCArNTg2LDE4IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MoUmVnCiAgICAgICAgIHByb2Nlc3NQb29sLT5tX3Byb2Nlc3Nlcy5hcHBl
bmQoV1RGTW92ZShuZXdQcm9jZXNzUHJveHkpKTsKICAgICB9CiAKLSAgICB3b3JrZXJQcm9jZXNz
ZXMoKS5hZGQoKnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkpOworICAgIHJlbW90ZVdvcmtlclBy
b2Nlc3NlcygpLmFkZCgqc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSk7CiAKLSAgICBzZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChwcm9jZXNz
UG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29sLT5tX3dvcmtlclByZWZlcmVu
Y2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFnZUdyb3VwLT5wcmVmZXJlbmNl
cygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBpZiAoIXByb2Nlc3NQb29sLT5t
X3dvcmtlclVzZXJBZ2VudC5pc051bGwoKSkKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eS0+c2V0V29ya2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudCk7
CisgICAgc2VydmljZVdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2VydmljZVdvcmtlckNv
bnRleHQocHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXMgPyBwcm9jZXNzUG9v
bC0+bV9yZW1vdGVXb3JrZXJQcmVmZXJlbmNlcy52YWx1ZSgpIDogcHJvY2Vzc1Bvb2wtPm1fZGVm
YXVsdFBhZ2VHcm91cC0+cHJlZmVyZW5jZXMoKS5zdG9yZSgpLCByZWdpc3RyYWJsZURvbWFpbiwg
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgaWYgKCFwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQuaXNOdWxsKCkp
CisgICAgICAgIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHktPnNldFJlbW90ZVdvcmtlclVzZXJB
Z2VudChwcm9jZXNzUG9vbC0+bV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQpOwogfQogI2VuZGlmCiAK
LXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlRnJvbVJlbW90ZVdv
cmtlclByb2Nlc3NlcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiB7Ci0gICAgQVNTRVJUKHdv
cmtlclByb2Nlc3NlcygpLmNvbnRhaW5zKHByb2Nlc3MpKTsKLSAgICB3b3JrZXJQcm9jZXNzZXMo
KS5yZW1vdmUocHJvY2Vzcyk7CisgICAgQVNTRVJUKHJlbW90ZVdvcmtlclByb2Nlc3NlcygpLmNv
bnRhaW5zKHByb2Nlc3MpKTsKKyAgICByZW1vdGVXb3JrZXJQcm9jZXNzZXMoKS5yZW1vdmUocHJv
Y2Vzcyk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmVzdGFibGlzaFNoYXJlZFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmIHJlZ2lzdHJhYmxlRG9tYWluLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTYyMyw3ICs2MjMsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQwogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5ID0gcHJvY2Vzcy5wdHIoKTsKLSAgICAgICAgc2hh
cmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5lbmFibGVXb3JrZXJzKFdlYlByb2Nlc3NQcm94eTo6V29y
a2VyVHlwZTo6U2hhcmVkV29ya2VyLCBwcm9jZXNzUG9vbC0+dXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllckZvcldvcmtlcnMoKSk7CisgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eS0+ZW5hYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIsIHBy
b2Nlc3NQb29sLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yUmVtb3RlV29ya2Vy
cygpKTsKIAogICAgICAgICBpZiAoc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5pc0luUHJvY2Vz
c0NhY2hlKCkpIHsKICAgICAgICAgICAgIHByb2Nlc3NQb29sLT53ZWJQcm9jZXNzQ2FjaGUoKS5y
ZW1vdmVQcm9jZXNzKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHksIFdlYlByb2Nlc3NDYWNoZTo6
U2hvdWxkU2h1dERvd25Qcm9jZXNzOjpObyk7CkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6ZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFdlYkMKICAgICB9CiAKICAgICBpZiAoIXNoYXJlZFdvcmtlclByb2Nlc3NQcm94
eSkgewotICAgICAgICBhdXRvIG5ld1Byb2Nlc3NQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6Y3Jl
YXRlRm9yV29ya2VycyhXZWJQcm9jZXNzUHJveHk6OldvcmtlclR5cGU6OlNoYXJlZFdvcmtlciwg
KnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURvbWFpbiB9LCAq
d2Vic2l0ZURhdGFTdG9yZSk7CisgICAgICAgIGF1dG8gbmV3UHJvY2Vzc1Byb3h5ID0gV2ViUHJv
Y2Vzc1Byb3h5OjpjcmVhdGVGb3JSZW1vdGVXb3JrZXJzKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJl
ZFdvcmtlciwgKnByb2Nlc3NQb29sLCBSZWdpc3RyYWJsZURvbWFpbiAgeyByZWdpc3RyYWJsZURv
bWFpbiB9LCAqd2Vic2l0ZURhdGFTdG9yZSk7CiAgICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQ
cm94eSA9IG5ld1Byb2Nlc3NQcm94eS5wdHIoKTsKIAogICAgICAgICBXRUJQUk9DRVNTUE9PTF9S
RUxFQVNFX0xPR19TVEFUSUMoU2hhcmVkV29ya2VyLCAiZXN0YWJsaXNoU2hhcmVkV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIGNyZWF0aW5nIGEgbmV3IHNlcnZpY2Ugd29y
a2VyIHByb2Nlc3MgKHByb2Nlc3M9JXAsIFBJRD0lZCkiLCBzaGFyZWRXb3JrZXJQcm9jZXNzUHJv
eHksIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CkBAIC02
NDQsMTEgKzY0NCwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjplc3RhYmxpc2hTaGFyZWRXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQwogICAgICAgICBwcm9jZXNz
UG9vbC0+bV9wcm9jZXNzZXMuYXBwZW5kKFdURk1vdmUobmV3UHJvY2Vzc1Byb3h5KSk7CiAgICAg
fQogCi0gICAgd29ya2VyUHJvY2Vzc2VzKCkuYWRkKCpzaGFyZWRXb3JrZXJQcm9jZXNzUHJveHkp
OworICAgIHJlbW90ZVdvcmtlclByb2Nlc3NlcygpLmFkZCgqc2hhcmVkV29ya2VyUHJvY2Vzc1By
b3h5KTsKIAotICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+ZXN0YWJsaXNoU2hhcmVkV29y
a2VyQ29udGV4dChwcm9jZXNzUG9vbC0+bV93b3JrZXJQcmVmZXJlbmNlcyA/IHByb2Nlc3NQb29s
LT5tX3dvcmtlclByZWZlcmVuY2VzLnZhbHVlKCkgOiBwcm9jZXNzUG9vbC0+bV9kZWZhdWx0UGFn
ZUdyb3VwLT5wcmVmZXJlbmNlcygpLnN0b3JlKCksIHJlZ2lzdHJhYmxlRG9tYWluLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgaWYgKCFwcm9jZXNzUG9vbC0+bV93b3JrZXJVc2Vy
QWdlbnQuaXNOdWxsKCkpCi0gICAgICAgIHNoYXJlZFdvcmtlclByb2Nlc3NQcm94eS0+c2V0V29y
a2VyVXNlckFnZW50KHByb2Nlc3NQb29sLT5tX3dvcmtlclVzZXJBZ2VudCk7CisgICAgc2hhcmVk
V29ya2VyUHJvY2Vzc1Byb3h5LT5lc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250ZXh0KHByb2Nlc3NQ
b29sLT5tX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzID8gcHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29y
a2VyUHJlZmVyZW5jZXMudmFsdWUoKSA6IHByb2Nlc3NQb29sLT5tX2RlZmF1bHRQYWdlR3JvdXAt
PnByZWZlcmVuY2VzKCkuc3RvcmUoKSwgcmVnaXN0cmFibGVEb21haW4sIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBpZiAoIXByb2Nlc3NQb29sLT5tX3JlbW90ZVdvcmtlclVzZXJB
Z2VudC5pc051bGwoKSkKKyAgICAgICAgc2hhcmVkV29ya2VyUHJvY2Vzc1Byb3h5LT5zZXRSZW1v
dGVXb3JrZXJVc2VyQWdlbnQocHJvY2Vzc1Bvb2wtPm1fcmVtb3RlV29ya2VyVXNlckFnZW50KTsK
IH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6d2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hh
bmdlZCgpCkBAIC0xMDU0LDcgKzEwNTQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpkaXNjb25u
ZWN0UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAgICAgbV9iYWNrRm9yd2FyZENh
Y2hlLT5yZW1vdmVFbnRyaWVzRm9yUHJvY2Vzcyhwcm9jZXNzKTsKIAogICAgIGlmIChwcm9jZXNz
LmlzUnVubmluZ1dvcmtlcnMoKSkKLSAgICAgICAgcmVtb3ZlRnJvbVdvcmtlclByb2Nlc3Nlcyhw
cm9jZXNzKTsKKyAgICAgICAgcmVtb3ZlRnJvbVJlbW90ZVdvcmtlclByb2Nlc3Nlcyhwcm9jZXNz
KTsKIAogICAgIHN0YXRpY19jYXN0PFdlYkNvbnRleHRTdXBwbGVtZW50Kj4oc3VwcGxlbWVudDxX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eT4oKSktPnByb2Nlc3NEaWRDbG9zZSgmcHJvY2Vzcyk7
CiAKQEAgLTExMTQsMTIgKzExMTQsMTIgQEAgUmVmPFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vz
c1Bvb2w6OnByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbihXZWJzaXRlRGF0YVN0b3IKICAgICBy
ZXR1cm4gY3JlYXRlTmV3V2ViUHJvY2Vzcygmd2Vic2l0ZURhdGFTdG9yZSwgY2FwdGl2ZVBvcnRh
bE1vZGUpOwogfQogCi1Vc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQ
b29sOjp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyRm9yV29ya2VycygpCitVc2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyIFdlYlByb2Nlc3NQb29sOjp1c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyRm9yUmVtb3RlV29ya2VycygpCiB7Ci0gICAgaWYgKCFtX3VzZXJDb250
ZW50Q29udHJvbGxlckZvcldvcmtlcnMpCi0gICAgICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
Rm9yV29ya2VycyA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpjcmVhdGUoKTsKKyAg
ICBpZiAoIW1fdXNlckNvbnRlbnRDb250cm9sbGVyRm9yUmVtb3RlV29ya2VycykKKyAgICAgICAg
bV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JSZW1vdGVXb3JrZXJzID0gV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OmNyZWF0ZSgpOwogCi0gICAgcmV0dXJuIG1fdXNlckNvbnRlbnRDb250
cm9sbGVyRm9yV29ya2Vycy0+aWRlbnRpZmllcigpOworICAgIHJldHVybiBtX3VzZXJDb250ZW50
Q29udHJvbGxlckZvclJlbW90ZVdvcmtlcnMtPmlkZW50aWZpZXIoKTsKIH0KIAogUmVmPFdlYlBh
Z2VQcm94eT4gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNs
aWVudCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRpb24pCkBA
IC0xMTY1LDEzICsxMTY1LDEzIEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAKICAgICBhdXRv
IHBhZ2UgPSBwcm9jZXNzLT5jcmVhdGVXZWJQYWdlKHBhZ2VDbGllbnQsIFdURk1vdmUocGFnZUNv
bmZpZ3VyYXRpb24pKTsKIAotICAgIGlmICghbV93b3JrZXJQcmVmZXJlbmNlcykgewotICAgICAg
ICBtX3dvcmtlclByZWZlcmVuY2VzID0gcGFnZS0+cHJlZmVyZW5jZXNTdG9yZSgpOwotICAgICAg
ICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiB3b3JrZXJQcm9jZXNzZXMoKSkKLSAgICAgICAg
ICAgIHdvcmtlclByb2Nlc3MudXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZSgqbV93b3JrZXJQ
cmVmZXJlbmNlcyk7CisgICAgaWYgKCFtX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzKSB7CisgICAg
ICAgIG1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXMgPSBwYWdlLT5wcmVmZXJlbmNlc1N0b3JlKCk7
CisgICAgICAgIGZvciAoYXV0byYgd29ya2VyUHJvY2VzcyA6IHJlbW90ZVdvcmtlclByb2Nlc3Nl
cygpKQorICAgICAgICAgICAgd29ya2VyUHJvY2Vzcy51cGRhdGVSZW1vdGVXb3JrZXJQcmVmZXJl
bmNlc1N0b3JlKCptX3JlbW90ZVdvcmtlclByZWZlcmVuY2VzKTsKICAgICB9CiAgICAgaWYgKHVz
ZXJDb250ZW50Q29udHJvbGxlcikKLSAgICAgICAgbV91c2VyQ29udGVudENvbnRyb2xsZXJGb3JX
b3JrZXJzID0gdXNlckNvbnRlbnRDb250cm9sbGVyOworICAgICAgICBtX3VzZXJDb250ZW50Q29u
dHJvbGxlckZvclJlbW90ZVdvcmtlcnMgPSB1c2VyQ29udGVudENvbnRyb2xsZXI7CiAKICAgICBi
b29sIGVuYWJsZVByb2Nlc3NTd2FwT25Dcm9zc1NpdGVOYXZpZ2F0aW9uID0gcGFnZS0+cHJlZmVy
ZW5jZXMoKS5wcm9jZXNzU3dhcE9uQ3Jvc3NTaXRlTmF2aWdhdGlvbkVuYWJsZWQoKTsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTE5NCwxMyArMTE5NCwxMyBAQCBSZWY8V2ViUGFnZVBy
b3h5PiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50
LCBSZWY8QVBJOgogICAgIHJldHVybiBwYWdlOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjp1
cGRhdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit2b2lkIFdlYlBy
b2Nlc3NQb29sOjp1cGRhdGVSZW1vdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQpCiB7Ci0gICAgaWYgKG1fd29ya2VyVXNlckFnZW50ID09IHVzZXJBZ2VudCkKKyAgICBp
ZiAobV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQgPT0gdXNlckFnZW50KQogICAgICAgICByZXR1cm47
Ci0gICAgbV93b3JrZXJVc2VyQWdlbnQgPSB1c2VyQWdlbnQ7Ci0gICAgZm9yIChhdXRvJiB3b3Jr
ZXJQcm9jZXNzIDogd29ya2VyUHJvY2Vzc2VzKCkpCi0gICAgICAgIHdvcmtlclByb2Nlc3Muc2V0
V29ya2VyVXNlckFnZW50KG1fd29ya2VyVXNlckFnZW50KTsKKyAgICBtX3JlbW90ZVdvcmtlclVz
ZXJBZ2VudCA9IHVzZXJBZ2VudDsKKyAgICBmb3IgKGF1dG8mIHdvcmtlclByb2Nlc3MgOiByZW1v
dGVXb3JrZXJQcm9jZXNzZXMoKSkKKyAgICAgICAgd29ya2VyUHJvY2Vzcy5zZXRSZW1vdGVXb3Jr
ZXJVc2VyQWdlbnQobV9yZW1vdGVXb3JrZXJVc2VyQWdlbnQpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKQEAgLTE1ODEsMTIgKzE1
ODEsMTIgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dGVybWluYXRlU2VydmljZVdvcmtlcnMoKQog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBSZWYgcHJvdGVjdGVkVGhpcyB7ICp0aGlz
IH07CiAgICAgVmVjdG9yPFJlZjxXZWJQcm9jZXNzUHJveHk+PiBzZXJ2aWNlV29ya2VyUHJvY2Vz
c2VzOwotICAgIHdvcmtlclByb2Nlc3NlcygpLmZvckVhY2goWyZdKGF1dG8mIHByb2Nlc3MpIHsK
KyAgICByZW1vdGVXb3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFsmXShhdXRvJiBwcm9jZXNzKSB7
CiAgICAgICAgIGlmIChwcm9jZXNzLmlzUnVubmluZ1NlcnZpY2VXb3JrZXJzKCkpCiAgICAgICAg
ICAgICBzZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLmFwcGVuZChwcm9jZXNzKTsKICAgICB9KTsKICAg
ICBmb3IgKGF1dG8mIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogc2VydmljZVdvcmtlclByb2Nlc3Nl
cykKLSAgICAgICAgc2VydmljZVdvcmtlclByb2Nlc3MtPmRpc2FibGVXb3JrZXJzKFdlYlByb2Nl
c3NQcm94eTo6V29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CisgICAgICAgIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzLT5kaXNhYmxlUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNl
V29ya2VyKTsKICNlbmRpZgogfQogCkBAIC0xODE0LDcgKzE4MTQsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpyZXBvcnRXZWJDb250ZW50Q1BVVGltZShTZWNvbmRzIGNwdVRpbWUsIHVpbnQ2NF90
IGFjdGl2aXR5UwogI2VuZGlmCiB9CiAKLVdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4mIFdl
YlByb2Nlc3NQb29sOjp3b3JrZXJQcm9jZXNzZXMoKQorV2Vha0hhc2hTZXQ8V2ViUHJvY2Vzc1By
b3h5PiYgV2ViUHJvY2Vzc1Bvb2w6OnJlbW90ZVdvcmtlclByb2Nlc3NlcygpCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFdlYWtIYXNoU2V0PFdlYlByb2Nlc3NQcm94eT4+IHByb2Nlc3Nl
czsKICAgICByZXR1cm4gcHJvY2Vzc2VzOwpAQCAtMTgzMywxMyArMTgzMywxMyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjp1cGRhdGVQcm9jZXNzQXNzZXJ0aW9ucygpCiAKICAgICAvLyBDaGVjayBv
biBuZXh0IHJ1biBsb29wIHNpbmNlIHRoZSB3ZWIgcHJvY2VzcyBwcm94eSB0b2tlbnMgYXJlIHBy
b2JhYmx5IGJlaW5nIHVwZGF0ZWQuCiAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW10gewotICAgICAg
ICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNoKFtdKGF1dG8mIHdvcmtlclByb2Nlc3MpIHsKKyAg
ICAgICAgcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFjaChbXShhdXRvJiB3b3JrZXJQcm9j
ZXNzKSB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICAgICAgaWYgKHdvcmtl
clByb2Nlc3MuaXNSdW5uaW5nU2VydmljZVdvcmtlcnMoKSkKLSAgICAgICAgICAgICAgICB3b3Jr
ZXJQcm9jZXNzLnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV2ViUHJvY2Vzc1Byb3h5OjpX
b3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICAgICAgICAgICAgICB3b3JrZXJQcm9jZXNz
LnVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2VyVHlwZTo6U2Vy
dmljZVdvcmtlcik7CiAjZW5kaWYKICAgICAgICAgICAgIGlmICh3b3JrZXJQcm9jZXNzLmlzUnVu
bmluZ1NoYXJlZFdvcmtlcnMoKSkKLSAgICAgICAgICAgICAgICB3b3JrZXJQcm9jZXNzLnVwZGF0
ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV2ViUHJvY2Vzc1Byb3h5OjpXb3JrZXJUeXBlOjpTaGFy
ZWRXb3JrZXIpOworICAgICAgICAgICAgICAgIHdvcmtlclByb2Nlc3MudXBkYXRlUmVtb3RlV29y
a2VyUHJvY2Vzc0Fzc2VydGlvbihSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpOwogICAg
ICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTE4NDgsNyArMTg0OCw3IEBAIGJvb2wgV2ViUHJvY2Vz
c1Bvb2w6OmlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCkgY29uc3QKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgLy8gRklYTUU6IFRo
aXMgaXMgaW5lZmZpY2llbnQuCi0gICAgcmV0dXJuIFdURjo6YW55T2Yod29ya2VyUHJvY2Vzc2Vz
KCksIFtwYWdlSURdKGF1dG8mIHByb2Nlc3MpIHsKKyAgICByZXR1cm4gV1RGOjphbnlPZihyZW1v
dGVXb3JrZXJQcm9jZXNzZXMoKSwgW3BhZ2VJRF0oYXV0byYgcHJvY2VzcykgewogICAgICAgICBy
ZXR1cm4gcHJvY2Vzcy5oYXNTZXJ2aWNlV29ya2VyUGFnZVByb3h5KHBhZ2VJRCk7CiAgICAgfSk7
CiAjZW5kaWYKQEAgLTIxNzcsNyArMjE3Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFVz
ZVNlcGFyYXRlU2VydmljZVdvcmtlclByb2Nlc3MoYm9vbCB1c2VTZXBhcmF0ZVNlcnZpY2VXCiBz
aXplX3QgV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm94aWVzQ291bnQoKSBjb25zdAog
ewogICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgICB3b3JrZXJQcm9jZXNzZXMoKS5mb3JFYWNo
KFsmXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmVtb3RlV29ya2VyUHJvY2Vzc2VzKCkuZm9yRWFj
aChbJl0oYXV0byYgcHJvY2VzcykgewogICAgICAgICBpZiAocHJvY2Vzcy5pc1J1bm5pbmdTZXJ2
aWNlV29ya2VycygpKQogICAgICAgICAgICAgKytjb3VudDsKICAgICB9KTsKQEAgLTIxODYsMTQg
KzIxODYsMTQgQEAgc2l6ZV90IFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJveGllc0Nv
dW50KCkgY29uc3QKIAogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdvcmtlckZvcmVn
cm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBXVEY6OmFueU9m
KHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0dXJuIFdURjo6
YW55T2YocmVtb3RlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAg
ICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlckZvcmVncm91bmRBY3Rpdml0eUZvclRl
c3RpbmcoKTsKICAgICB9KTsKIH0KIAogYm9vbCBXZWJQcm9jZXNzUG9vbDo6aGFzU2VydmljZVdv
cmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBX
VEY6OmFueU9mKHdvcmtlclByb2Nlc3NlcygpLCBbXShhdXRvJiBwcm9jZXNzKSB7CisgICAgcmV0
dXJuIFdURjo6YW55T2YocmVtb3RlV29ya2VyUHJvY2Vzc2VzKCksIFtdKGF1dG8mIHByb2Nlc3Mp
IHsKICAgICAgICAgcmV0dXJuIHByb2Nlc3MuaGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rp
dml0eUZvclRlc3RpbmcoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCmluZGV4IGNiMzg5NmRlYmUzYTRjNDUwOTlmZjUzMTQ0MmFiMmVhMDg2ZTJj
NmUuLmUyNTNhNWU3M2E0ODY5YWI4OWQ0MjA3MDgwNjZmMTA1ZWU4MTA4OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzc0LDcgKzM3NCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIG5ldHdvcmtQcm9jZXNzRGlkVGVybWluYXRlKE5ldHdvcmtQcm9jZXNzUHJv
eHkmLCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXJtaW5hdGlvblJlYXNvbik7CiAKICAgICBib29s
IGlzU2VydmljZVdvcmtlclBhZ2VJRChXZWJQYWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKLSAg
ICB2b2lkIHJlbW92ZUZyb21Xb3JrZXJQcm9jZXNzZXMoV2ViUHJvY2Vzc1Byb3h5Jik7CisgICAg
dm9pZCByZW1vdmVGcm9tUmVtb3RlV29ya2VyUHJvY2Vzc2VzKFdlYlByb2Nlc3NQcm94eSYpOwog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHN0YXRpYyB2b2lkIGVzdGFibGlzaFNl
cnZpY2VXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTM4NCw4ICszODQsOCBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJQcm9jZXNzQ3Jhc2hlZChXZWJQ
cm9jZXNzUHJveHkmKTsKIAotICAgIHZvaWQgdXBkYXRlV29ya2VyVXNlckFnZW50KGNvbnN0IFN0
cmluZyYgdXNlckFnZW50KTsKLSAgICBVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCk7CisgICAgdm9pZCB1cGRh
dGVSZW1vdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpOworICAgIFVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllckZvclJlbW90ZVdvcmtlcnMoKTsKICAgICBzdGF0aWMgdm9pZCBlc3RhYmxpc2hTaGFyZWRX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTYyMSwxMSArNjIxLDExIEBAIHByaXZhdGU6CiAK
ICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4+IG1f
ZHVtbXlQcm9jZXNzUHJveGllczsgLy8gTGlnaHR3ZWlnaHQgV2ViUHJvY2Vzc1Byb3h5IG9iamVj
dHMgd2l0aG91dCBiYWNraW5nIHByb2Nlc3MuCiAKLSAgICBzdGF0aWMgV2Vha0hhc2hTZXQ8V2Vi
UHJvY2Vzc1Byb3h5PiYgd29ya2VyUHJvY2Vzc2VzKCk7CisgICAgc3RhdGljIFdlYWtIYXNoU2V0
PFdlYlByb2Nlc3NQcm94eT4mIHJlbW90ZVdvcmtlclByb2Nlc3NlcygpOwogCi0gICAgc3RkOjpv
cHRpb25hbDxXZWJQcmVmZXJlbmNlc1N0b3JlPiBtX3dvcmtlclByZWZlcmVuY2VzOwotICAgIFJl
ZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eT4gbV91c2VyQ29udGVudENvbnRyb2xs
ZXJGb3JXb3JrZXJzOwotICAgIFN0cmluZyBtX3dvcmtlclVzZXJBZ2VudDsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdlYlByZWZlcmVuY2VzU3RvcmU+IG1fcmVtb3RlV29ya2VyUHJlZmVyZW5jZXM7Cisg
ICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5PiBtX3VzZXJDb250ZW50Q29u
dHJvbGxlckZvclJlbW90ZVdvcmtlcnM7CisgICAgU3RyaW5nIG1fcmVtb3RlV29ya2VyVXNlckFn
ZW50OwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgIFJlZlB0cjxHUFVQcm9jZXNzUHJv
eHk+IG1fZ3B1UHJvY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IGY0NjY5MjQ5YTMzMWFkYmNhZjc5MmVlM2Q1YTY0Mjc0YTQ3MzllNjIuLjJj
MGE4MDMwMDMxNDk3YzUwOTU1NWY1MzQyZGY4NWVjMzk5MGYwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTgyLDExICsxODIsMTEgQEAgUmVm
PFdlYlByb2Nlc3NQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sLCBXZWJzaXQKICAgICByZXR1cm4gcHJveHk7CiB9CiAKLVJlZjxXZWJQcm9j
ZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yV29ya2VycyhXb3JrZXJUeXBlIHdv
cmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgUmVnaXN0cmFibGVEb21haW4m
JiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkK
K1JlZjxXZWJQcm9jZXNzUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlRm9yUmVtb3RlV29y
a2VycyhSZW1vdGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNz
UG9vbCwgUmVnaXN0cmFibGVEb21haW4mJiByZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFT
dG9yZSYgd2Vic2l0ZURhdGFTdG9yZSkKIHsKICAgICBhdXRvIHByb3h5ID0gYWRvcHRSZWYoKm5l
dyBXZWJQcm9jZXNzUHJveHkocHJvY2Vzc1Bvb2wsICZ3ZWJzaXRlRGF0YVN0b3JlLCBJc1ByZXdh
cm1lZDo6Tm8sIENyb3NzT3JpZ2luTW9kZTo6U2hhcmVkLCBDYXB0aXZlUG9ydGFsTW9kZTo6RGlz
YWJsZWQpKTsKICAgICBwcm94eS0+bV9yZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUocmVnaXN0
cmFibGVEb21haW4pOwotICAgIHByb3h5LT5lbmFibGVXb3JrZXJzKHdvcmtlclR5cGUsIHByb2Nl
c3NQb29sLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JXb3JrZXJzKCkpOworICAg
IHByb3h5LT5lbmFibGVSZW1vdGVXb3JrZXJzKHdvcmtlclR5cGUsIHByb2Nlc3NQb29sLnVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXJGb3JSZW1vdGVXb3JrZXJzKCkpOwogICAgIHByb3h5
LT5jb25uZWN0KCk7CiAgICAgcmV0dXJuIHByb3h5OwogfQpAQCAtOTk3LDcgKzk5Nyw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogICAgIC8vIElmIHRo
ZSB3ZWIgcHJvY2VzcyBiZWNvbWVzIHVucmVzcG9uc2l2ZSBhbmQgb25seSBydW5zIHNlcnZpY2Uv
c2hhcmVkIHdvcmtlcnMsIGtpbGwgaXQgb3Vyc2VsdmVzIHNpbmNlIHRoZXJlIGFyZSBubyBuYXRp
dmUgY2xpZW50cyB0byBkbyBpdC4KICAgICBpZiAoaXNSdW5uaW5nV29ya2VycygpICYmIG1fcGFn
ZU1hcC5pc0VtcHR5KCkpIHsKICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HX0VS
Uk9SKFBlcmZvcm1hbmNlTG9nZ2luZywgImRpZEJlY29tZVVucmVzcG9uc2l2ZTogVGVybWluYXRp
bmcgd29ya2VyLW9ubHkgd2ViIHByb2Nlc3MgYmVjYXVzZSBpdCBpcyB1bnJlc3BvbnNpdmUiKTsK
LSAgICAgICAgZGlzYWJsZVdvcmtlcnMoeyBXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyLCBXb3Jr
ZXJUeXBlOjpTaGFyZWRXb3JrZXIgfSk7CisgICAgICAgIGRpc2FibGVSZW1vdGVXb3JrZXJzKHsg
UmVtb3RlV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciwgUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVk
V29ya2VyIH0pOwogICAgICAgICB0ZXJtaW5hdGUoKTsKICAgICB9CiB9CkBAIC0xNjkzLDcgKzE2
OTMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JN
YWluRnJhbWUoY29uc3QgVVJMJiB1cmwpCiAgICAgYXV0byByZWdpc3RyYWJsZURvbWFpbiA9IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH07CiAgICAgaWYgKG1fcmVnaXN0cmFibGVE
b21haW4gJiYgKm1fcmVnaXN0cmFibGVEb21haW4gIT0gcmVnaXN0cmFibGVEb21haW4pIHsKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgICAgIGRpc2FibGVXb3JrZXJzKFdvcmtlclR5
cGU6OlNlcnZpY2VXb3JrZXIpOworICAgICAgICBkaXNhYmxlUmVtb3RlV29ya2VycyhSZW1vdGVX
b3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKTsKICNlbmRpZgogCiAgICAgICAgIC8vIE51bGwgb3V0
IHJlZ2lzdHJhYmxlIGRvbWFpbiBzaW5jZSB0aGlzIHByb2Nlc3MgaGFzIG5vdyBiZWVuIHVzZWQg
Zm9yIHNldmVyYWwgZG9tYWlucy4KQEAgLTE4NzQsNyArMTg3NCw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiBzCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFdvcmtlclVz
ZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpz
ZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bikKQEAgLTE4ODQsNyArMTg4NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRXb3JrZXJV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U2V0VXNlckFnZW50IHsg
dXNlckFnZW50IH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29ya2Vy
UHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVSZW1vdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICBpZiAobV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pCkBAIC0xODk0LDIxICsxODk0
LDE0IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1cGRhdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3Jl
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNT
dG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dXBkYXRlV29y
a2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJUeXBlIHdvcmtlclR5cGUpCit2b2lkIFdlYlByb2Nl
c3NQcm94eTo6dXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihSZW1vdGVXb3JrZXJU
eXBlIHdvcmtlclR5cGUpCiB7Ci0gICAgYXV0byYgd29ya2VySW5mb3JtYXRpb24gPSB3b3JrZXJU
eXBlID09IFdvcmtlclR5cGU6OlNoYXJlZFdvcmtlciA/IG1fc2hhcmVkV29ya2VySW5mb3JtYXRp
b24gOiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbjsKKyAgICBhdXRvJiB3b3JrZXJJbmZvcm1h
dGlvbiA9IHdvcmtlclR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gbV9z
aGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uOwogICAg
IEFTU0VSVCh3b3JrZXJJbmZvcm1hdGlvbik7CiAgICAgaWYgKCF3b3JrZXJJbmZvcm1hdGlvbikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAidXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbjogd29ya2VyVHlwZT0l
e3B1YmxpY31zIiwgd29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyAic2hh
cmVkIiA6ICJzZXJ2aWNlIik7Ci0KLSAgICAvLyBGSVhNRTogQ2xpZW50cyBkbyBub3QgcHJvcGVy
bHkgZ2V0IHBvcHVsYXRlZCBpbiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIHNvIHdlIGN1cnJl
bnRseSB0YWtlIGFuIGFzc2VydGlvbiBubyBtYXR0ZXIgd2hhdC4KLSAgICBpZiAod29ya2VyVHlw
ZSA9PSBXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpIHsKLSAgICAgICAgaWYgKCFQcm9jZXNzVGhy
b3R0bGVyOjppc1ZhbGlkRm9yZWdyb3VuZEFjdGl2aXR5KHdvcmtlckluZm9ybWF0aW9uLT5hY3Rp
dml0eSkpCi0gICAgICAgICAgICB3b3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkgPSBtX3Rocm90
dGxlci5mb3JlZ3JvdW5kQWN0aXZpdHkoIldvcmtlciBmb3IgZm9yZWdyb3VuZCB2aWV3KHMpIl9z
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2Vzc1N1c3BlbnNpb24sICJ1cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0aW9u
OiB3b3JrZXJUeXBlPSV7cHVibGljfXMiLCB3b3JrZXJUeXBlID09IFJlbW90ZVdvcmtlclR5cGU6
OlNoYXJlZFdvcmtlciA/ICJzaGFyZWQiIDogInNlcnZpY2UiKTsKIAogICAgIGJvb2wgc2hvdWxk
VGFrZUZvcmVncm91bmRBY3Rpdml0eSA9IFdURjo6YW55T2Yod29ya2VySW5mb3JtYXRpb24tPmNs
aWVudFByb2Nlc3NlcywgWyZdKGF1dG8mIHByb2Nlc3MpIHsKICAgICAgICAgcmV0dXJuICZwcm9j
ZXNzICE9IHRoaXMgJiYgISFwcm9jZXNzLm1fZm9yZWdyb3VuZFRva2VuOwpAQCAtMTkyOCw3ICsx
OTIxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRp
b24oV29ya2VyVHlwZSB3b3JrZXJUeXBlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2VydmljZVdvcmtlciAmJiBtX2hhc1NlcnZp
Y2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZykgeworICAgIGlmICh3b3JrZXJUeXBlID09IFJl
bW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIgJiYgbV9oYXNTZXJ2aWNlV29ya2VyQmFja2dy
b3VuZFByb2Nlc3NpbmcpIHsKICAgICAgICAgV0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAiU2VydmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2lu
ZyIpOwogICAgICAgICBpZiAoIVByb2Nlc3NUaHJvdHRsZXI6OmlzVmFsaWRCYWNrZ3JvdW5kQWN0
aXZpdHkod29ya2VySW5mb3JtYXRpb24tPmFjdGl2aXR5KSkKICAgICAgICAgICAgIHdvcmtlcklu
Zm9ybWF0aW9uLT5hY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiU2Vy
dmljZSBXb3JrZXIgZm9yIGJhY2tncm91bmQgcHJvY2Vzc2luZyJfcyk7CkBAIC0xOTQ5LDI4ICsx
OTQyLDMwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTaGFyZWRXb3JrZXJDb250
ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0CiAgICAgfSwgMCk7CiB9CiAKLSNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCi0KLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRQcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgcHJveHkpCit2b2lkIFdl
YlByb2Nlc3NQcm94eTo6cmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9jZXNzKFJlbW90ZVdv
cmtlclR5cGUgd29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKIHsKLSAgICBpZiAo
IW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9u
ID0gd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJl
ZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb247CisgICAgaWYg
KCF3b3JrZXJJbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnRQcm9jZXNzOiBjbGllbnRQcm9jZXNzPSVwLCBjbGllbnRQSUQ9JWQiLCAmcHJveHksIHByb3h5
LnByb2Nlc3NJZGVudGlmaWVyKCkpOwotICAgIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5j
bGllbnRQcm9jZXNzZXMuYWRkKHByb3h5KTsKLSAgICB1cGRhdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKFdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOworICAgIFdFQlBST0NFU1NQUk9YWV9SRUxF
QVNFX0xPRyhXb3JrZXIsICJyZWdpc3RlcldvcmtlckNsaWVudFByb2Nlc3M6IHdvcmtlclR5cGU9
JXtwdWJsaWN9cywgY2xpZW50UHJvY2Vzcz0lcCwgY2xpZW50UElEPSVkIiwgd29ya2VyVHlwZSA9
PSBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyAic2hhcmVkIiA6ICJzZXJ2aWNlIiwg
JnByb3h5LCBwcm94eS5wcm9jZXNzSWRlbnRpZmllcigpKTsKKyAgICB3b3JrZXJJbmZvcm1hdGlv
bi0+Y2xpZW50UHJvY2Vzc2VzLmFkZChwcm94eSk7CisgICAgdXBkYXRlUmVtb3RlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbih3b3JrZXJUeXBlKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnVu
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb3h5
KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnVucmVnaXN0ZXJSZW1vdGVXb3JrZXJDbGllbnRQcm9j
ZXNzKFJlbW90ZVdvcmtlclR5cGUgd29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkK
IHsKLSAgICBpZiAoIW1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uKQorICAgIGF1dG8mIHdvcmtl
ckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBSZW1vdGVXb3JrZXJUeXBlOjpTaGFyZWRXb3Jr
ZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRp
b247CisgICAgaWYgKCF3b3JrZXJJbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
V0VCUFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJ1bnJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFByb2Nlc3M6IGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJRD0lZCIs
ICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7Ci0gICAgbV9zZXJ2aWNlV29ya2Vy
SW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcy5yZW1vdmUocHJveHkpOwotICAgIHVwZGF0ZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7CisgICAgV0VC
UFJPQ0VTU1BST1hZX1JFTEVBU0VfTE9HKFdvcmtlciwgInVucmVnaXN0ZXJXb3JrZXJDbGllbnRQ
cm9jZXNzOiB3b3JrZXJUeXBlPSV7cHVibGljfXMsIGNsaWVudFByb2Nlc3M9JXAsIGNsaWVudFBJ
RD0lZCIsIHdvcmtlclR5cGUgPT0gUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyID8gInNo
YXJlZCIgOiAic2VydmljZSIsICZwcm94eSwgcHJveHkucHJvY2Vzc0lkZW50aWZpZXIoKSk7Cisg
ICAgd29ya2VySW5mb3JtYXRpb24tPmNsaWVudFByb2Nlc3Nlcy5yZW1vdmUocHJveHkpOworICAg
IHVwZGF0ZVJlbW90ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24od29ya2VyVHlwZSk7CiB9CiAKKyNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNTZXJ2
aWNlV29ya2VyRm9yZWdyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uID8gUHJvY2Vzc1Rocm90dGxlcjo6aXNWYWxp
ZEZvcmVncm91bmRBY3Rpdml0eShtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+YWN0aXZpdHkp
IDogZmFsc2U7CkBAIC0xOTg4LDcgKzE5ODMsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3Rh
cnRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmcoKQogCiAgICAgV0VCUFJPQ0VTU1BS
T1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAic3RhcnRTZXJ2aWNlV29ya2VyQmFj
a2dyb3VuZFByb2Nlc3NpbmciKTsKICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJv
Y2Vzc2luZyA9IHRydWU7Ci0gICAgdXBkYXRlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihXb3JrZXJU
eXBlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICB1cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNzQXNzZXJ0
aW9uKFJlbW90ZVdvcmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6ZW5kU2VydmljZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCkKQEAgLTE5OTgs
MzggKzE5OTMsMzggQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZFNlcnZpY2VXb3JrZXJCYWNr
Z3JvdW5kUHJvY2Vzc2luZygpCiAKICAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICJlbmRTZXJ2aWNlV29ya2VyQmFja2dyb3VuZFByb2Nlc3NpbmciKTsK
ICAgICBtX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kUHJvY2Vzc2luZyA9IGZhbHNlOwotICAg
IHVwZGF0ZVdvcmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcik7
CisgICAgdXBkYXRlUmVtb3RlV29ya2VyUHJvY2Vzc0Fzc2VydGlvbihSZW1vdGVXb3JrZXJUeXBl
OjpTZXJ2aWNlV29ya2VyKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAK
LXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlV29ya2VycyhPcHRpb25TZXQ8V29ya2VyVHlw
ZT4gd29ya2VyVHlwZSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaXNhYmxlUmVtb3RlV29ya2Vy
cyhPcHRpb25TZXQ8UmVtb3RlV29ya2VyVHlwZT4gd29ya2VyVHlwZSkKIHsKICAgICBBU1NFUlQo
IXdvcmtlclR5cGUuaXNFbXB0eSgpKTsKIAogICAgIGJvb2wgZGlkQ2hhbmdlID0gZmFsc2U7Ci0g
ICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoV29ya2VyVHlwZTo6U2VydmljZVdvcmtlcikgJiYg
bV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24pIHsKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlu
cyhSZW1vdGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSAmJiBtX3NlcnZpY2VXb3JrZXJJbmZv
cm1hdGlvbikgewogICAgICAgICBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiA9IHsgfTsKICAg
ICAgICAgZGlkQ2hhbmdlID0gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKHdvcmtlclR5cGUuY29udGFp
bnMoV29ya2VyVHlwZTo6U2hhcmVkV29ya2VyKSAmJiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9u
KSB7CisgICAgaWYgKHdvcmtlclR5cGUuY29udGFpbnMoUmVtb3RlV29ya2VyVHlwZTo6U2hhcmVk
V29ya2VyKSAmJiBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uKSB7CiAgICAgICAgIG1fc2hhcmVk
V29ya2VySW5mb3JtYXRpb24gPSB7IH07CiAgICAgICAgIGRpZENoYW5nZSA9IHRydWU7CiAgICAg
fQogICAgIGlmICghZGlkQ2hhbmdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXRUJQUk9DRVNT
UFJPWFlfUkVMRUFTRV9MT0coUHJvY2VzcywgImRpc2FibGVXb3JrZXJzOiBEaXNhYmxpbmcgd29y
a2VycyAoU2hhcmVkV29ya2Vycz0lZCwgU2VydmljZVdvcmtlcnM9JWQpIiwgd29ya2VyVHlwZS5j
b250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFdv
cmtlclR5cGU6OlNlcnZpY2VXb3JrZXIpKTsKKyAgICBXRUJQUk9DRVNTUFJPWFlfUkVMRUFTRV9M
T0coUHJvY2VzcywgImRpc2FibGVXb3JrZXJzOiBEaXNhYmxpbmcgd29ya2VycyAoU2hhcmVkV29y
a2Vycz0lZCwgU2VydmljZVdvcmtlcnM9JWQpIiwgd29ya2VyVHlwZS5jb250YWlucyhSZW1vdGVX
b3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpLCB3b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtl
clR5cGU6OlNlcnZpY2VXb3JrZXIpKTsKIAogICAgIHVwZGF0ZUJhY2tncm91bmRSZXNwb25zaXZl
bmVzc1RpbWVyKCk7CiAKICAgICBpZiAoIWlzUnVubmluZ1dvcmtlcnMoKSkKLSAgICAgICAgcHJv
Y2Vzc1Bvb2woKS5yZW1vdmVGcm9tV29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKKyAgICAgICAgcHJv
Y2Vzc1Bvb2woKS5yZW1vdmVGcm9tUmVtb3RlV29ya2VyUHJvY2Vzc2VzKCp0aGlzKTsKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhXb3Jr
ZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSkKKyAgICBpZiAod29ya2VyVHlwZS5jb250YWlucyhSZW1v
dGVXb3JrZXJUeXBlOjpTZXJ2aWNlV29ya2VyKSkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNsb3NlIHsgfSwgMCk7CiAjZW5kaWYKLSAgICBp
ZiAod29ya2VyVHlwZS5jb250YWlucyhXb3JrZXJUeXBlOjpTaGFyZWRXb3JrZXIpKQorICAgIGlm
ICh3b3JrZXJUeXBlLmNvbnRhaW5zKFJlbW90ZVdvcmtlclR5cGU6OlNoYXJlZFdvcmtlcikpCiAg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNoYXJlZFdvcmtlckNvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6Q2xvc2UgeyB9LCAwKTsKIAogICAgIG1heWJlU2h1dERvd24oKTsKQEAgLTIwNTEsMTAg
KzIwNDYsMTAgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8V2ViQ29tcGlsZWRDb250ZW50UnVs
ZUxpc3REYXRhLCBVUkw+PiBjb250ZW50UnVsZUxpc3RzRnIKIH0KICNlbmRpZgogCi12b2lkIFdl
YlByb2Nlc3NQcm94eTo6ZW5hYmxlV29ya2VycyhXb3JrZXJUeXBlIHdvcmtlclR5cGUsIGNvbnN0
IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlUmVtb3RlV29ya2VycyhSZW1v
dGVXb3JrZXJUeXBlIHdvcmtlclR5cGUsIGNvbnN0IFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXImIHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiB7CiAgICAgV0VCUFJPQ0VT
U1BST1hZX1JFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJlbmFibGVXb3JrZXJzOiB3b3JrZXJU
eXBlPSV1Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdvcmtlclR5cGUpKTsKLSAgICBhdXRvJiB3
b3JrZXJJbmZvcm1hdGlvbiA9IHdvcmtlclR5cGUgPT0gV29ya2VyVHlwZTo6U2hhcmVkV29ya2Vy
ID8gbV9zaGFyZWRXb3JrZXJJbmZvcm1hdGlvbiA6IG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
OworICAgIGF1dG8mIHdvcmtlckluZm9ybWF0aW9uID0gd29ya2VyVHlwZSA9PSBSZW1vdGVXb3Jr
ZXJUeXBlOjpTaGFyZWRXb3JrZXIgPyBtX3NoYXJlZFdvcmtlckluZm9ybWF0aW9uIDogbV9zZXJ2
aWNlV29ya2VySW5mb3JtYXRpb247CiAgICAgQVNTRVJUKCF3b3JrZXJJbmZvcm1hdGlvbik7CiAK
ICAgICB3b3JrZXJJbmZvcm1hdGlvbiA9IFJlbW90ZVdvcmtlckluZm9ybWF0aW9uIHsKQEAgLTIw
NzEsNyArMjA2Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVXb3JrZXJzKFdvcmtl
clR5cGUgd29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250CiAgICAgfTsKICAgICB1cGRh
dGVCYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigpOwogCi0gICAgdXBkYXRlV29ya2VyUHJv
Y2Vzc0Fzc2VydGlvbih3b3JrZXJUeXBlKTsKKyAgICB1cGRhdGVSZW1vdGVXb3JrZXJQcm9jZXNz
QXNzZXJ0aW9uKHdvcmtlclR5cGUpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ3Jl
YXRlU2xlZXBEaXNhYmxlcihTbGVlcERpc2FibGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHJlYXNvbiwgYm9vbCBkaXNwbGF5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAppbmRleCA3MGU4OTA1MWNjYmJjN2U5MDQ2YmMxYzk5OGI5MGEwYjY4
ZWY2NTk5Li4yZTE2ZjA5MjkyNzA5ZDMzNTgzZjJhODE3YTNmZTE2MTEzYjMxNTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiUmVtb3RlV29ya2VySW5pdGlhbGl6YXRpb25EYXRhLmgiCisj
aW5jbHVkZSAiUmVtb3RlV29ya2VyVHlwZS5oIgogI2luY2x1ZGUgIlJlc3BvbnNpdmVuZXNzVGlt
ZXIuaCIKICNpbmNsdWRlICJTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIgogI2luY2x1ZGUgIlVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKQEAgLTEzNiwxMyArMTM3LDkgQEAgcHVi
bGljOgogCiAgICAgZW51bSBjbGFzcyBTaG91bGRMYXVuY2hQcm9jZXNzIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKICAgICBlbnVtIGNsYXNzIENhcHRpdmVQb3J0YWxNb2RlIDogYm9vbCB7IERpc2FibGVk
LCBFbmFibGVkIH07Ci0gICAgZW51bSBjbGFzcyBXb3JrZXJUeXBlIDogdWludDMyX3QgewotICAg
ICAgICBTZXJ2aWNlV29ya2VyID0gMSA8PCAwLAotICAgICAgICBTaGFyZWRXb3JrZXIgPSAxIDw8
IDEKLSAgICB9OwogCiAgICAgc3RhdGljIFJlZjxXZWJQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQ
cm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBDYXB0aXZlUG9ydGFsTW9kZSwgSXNQcmV3
YXJtZWQsIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSA9IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9k
ZTo6U2hhcmVkLCBTaG91bGRMYXVuY2hQcm9jZXNzID0gU2hvdWxkTGF1bmNoUHJvY2Vzczo6WWVz
KTsKLSAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRlRm9yV29ya2VycyhXb3Jr
ZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdl
YnNpdGVEYXRhU3RvcmUmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlByb2Nlc3NQcm94eT4gY3JlYXRl
Rm9yUmVtb3RlV29ya2VycyhSZW1vdGVXb3JrZXJUeXBlLCBXZWJQcm9jZXNzUG9vbCYsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIH5XZWJQ
cm9jZXNzUHJveHkoKTsKIApAQCAtMTY1LDggKzE2Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCwgV2lsbFNodXREb3duID0gV2lsbFNodXREb3duOjpObyk7
CiAgICAgYm9vbCBpc0luUHJvY2Vzc0NhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9pc0luUHJvY2Vz
c0NhY2hlOyB9CiAKLSAgICB2b2lkIGVuYWJsZVdvcmtlcnMoV29ya2VyVHlwZSwgY29uc3QgVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOwotICAgIHZvaWQgZGlzYWJsZVdvcmtlcnMo
T3B0aW9uU2V0PFdvcmtlclR5cGU+KTsKKyAgICB2b2lkIGVuYWJsZVJlbW90ZVdvcmtlcnMoUmVt
b3RlV29ya2VyVHlwZSwgY29uc3QgVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciYpOwor
ICAgIHZvaWQgZGlzYWJsZVJlbW90ZVdvcmtlcnMoT3B0aW9uU2V0PFJlbW90ZVdvcmtlclR5cGU+
KTsKIAogICAgIFdlYnNpdGVEYXRhU3RvcmUmIHdlYnNpdGVEYXRhU3RvcmUoKSBjb25zdCB7IEFT
U0VSVChtX3dlYnNpdGVEYXRhU3RvcmUpOyByZXR1cm4gKm1fd2Vic2l0ZURhdGFTdG9yZTsgfQog
ICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJik7CkBAIC0zNjYs
MTUgKzM2MywxNSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUF1ZGlibGVNZWRpYUFzc2Vy
dGlvbnMoKTsKIAotICAgIHZvaWQgc2V0V29ya2VyVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgdXBkYXRlV29ya2VyUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJik7CisgICAgdm9pZCBzZXRSZW1vdGVXb3JrZXJVc2VyQWdlbnQoY29uc3QgU3RyaW5n
Jik7CisgICAgdm9pZCB1cGRhdGVSZW1vdGVXb3JrZXJQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB2b2lkIGVzdGFibGlzaFNoYXJlZFdvcmtlckNvbnRl
eHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHVwZGF0ZVdv
cmtlclByb2Nlc3NBc3NlcnRpb24oV29ya2VyVHlwZSk7CisgICAgdm9pZCByZWdpc3RlclJlbW90
ZVdvcmtlckNsaWVudFByb2Nlc3MoUmVtb3RlV29ya2VyVHlwZSwgV2ViUHJvY2Vzc1Byb3h5Jik7
CisgICAgdm9pZCB1bnJlZ2lzdGVyUmVtb3RlV29ya2VyQ2xpZW50UHJvY2VzcyhSZW1vdGVXb3Jr
ZXJUeXBlLCBXZWJQcm9jZXNzUHJveHkmKTsKKyAgICB2b2lkIHVwZGF0ZVJlbW90ZVdvcmtlclBy
b2Nlc3NBc3NlcnRpb24oUmVtb3RlV29ya2VyVHlwZSk7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIHZvaWQgZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IGJvb2wgaGFzU2VydmljZVdvcmtlclBhZ2VQcm94eShXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBh
Z2VQcm94eUlEKSB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbiAmJiBtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbi0+cmVtb3RlV29ya2VyUGFnZVByb3h5SUQgPT0gcGFnZVByb3h5
SUQ7IH0KLSAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5Jik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFByb2Nl
c3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAgICAgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRm9yZWdyb3Vu
ZEFjdGl2aXR5Rm9yVGVzdGluZygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VydmljZVdvcmtlckJh
Y2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKSBjb25zdDsKICAgICB2b2lkIHN0YXJ0U2Vydmlj
ZVdvcmtlckJhY2tncm91bmRQcm9jZXNzaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzZmNjMWYxYmY3OTExNGRjNWIwOWE0Yjgy
ZTM0MWVhM2QwYzM5MzFlLi44M2ZiOGE0OTY3NDIyYzZhNTRiMjhkYjEzNmY5YmVjNmM0YzFiZmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTg5Myw2ICs4OTMsNyBAQAogCQk0NjcxRkYxRjIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2NzFGRjFEMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlci5oICovOyB9OwogCQk0NjdFNDNFODIyNDNGRjdEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVycy5oICovOyB9OwogCQk0NjgwOUE3QzIzRDkyMjVFMDBDMjk3RDAgLyogV2ViQ29v
a2llQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oICovOyB9OworCQk0
NjkxQ0I5QjI3QjJERDJEMDBCMjlBQUYgLyogUmVtb3RlV29ya2VyVHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5MUNCOUEyN0IyREQxODAwQjI5
QUFGIC8qIFJlbW90ZVdvcmtlclR5cGUuaCAqLzsgfTsKIAkJNDZBMkI2MDkxRTU2NzZBNjAwQzNE
RURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBMkI2MDcxRTU2NzVBMjAwQzNE
RURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovOyB9OwogCQk0
NkIwNTI0NzIyNjY4RDg1MDAyNjVCOTcgLyogV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25B
Y2Nlc3NDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkIwNTI0NDIyNjY4RDIzMDAyNjVCOTcgLyogV2ViRGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmggKi87IH07CiAJCTQ2QkVCNkQ3MjJGQjlCRDcwMDI2
OTg2NyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZCRUI2RDUyMkZCOUJENjAwMjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggKi87
IH07CkBAIC00Mjc2LDYgKzQyNzcsNyBAQAogCQk0NjgzODY2ODI3NjNGQUIxMDBDRjkxODIgLyog
V2ViU2hhcmVkV29ya2VyU2VydmVyQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJTaGFyZWRXb3JrZXJTZXJ2ZXJDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY4OUI5MEYyNzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxvY2tSZWdpc3Ry
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY4OUI5MTAyNzU2RDE0MzAwMDdDNjUxIC8qIFJlbW90ZVdlYkxv
Y2tSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVXZWJMb2NrUmVnaXN0cnku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjkxQ0I5QTI3QjJERDE4MDBCMjlB
QUYgLyogUmVtb3RlV29ya2VyVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVXb3JrZXJUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2OTQzRENCMjc2M0Y4MzQwMDRCNjEw
RSAvKiBXZWJTaGFyZWRXb3JrZXJPYmplY3RDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YlNoYXJlZFdvcmtlck9iamVjdENvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2OURFODAyMjczRUNDNUQwMDkzMDI3NiAvKiBQcm9jZXNzTGF1bmNo
ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb2Nl
c3NMYXVuY2hlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYw
NjFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tncm91bmRQcm9j
ZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC03Mjc1LDYgKzcyNzcsNyBAQAogCQkJCTlCMTIyOUQwMjNGRjJBNUUwMDhDQTc1MSAvKiBSZW1v
dGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oICovLAogCQkJCTVDODBCM0REMjM2OTBGMTAw
MDg2RTZERSAvKiBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEuY3BwICovLAogCQkJCTVD
ODBCM0RCMjM2OTBEOEQwMDg2RTZERSAvKiBSZW1vdGVXb3JrZXJJbml0aWFsaXphdGlvbkRhdGEu
aCAqLywKKwkJCQk0NjkxQ0I5QTI3QjJERDE4MDBCMjlBQUYgLyogUmVtb3RlV29ya2VyVHlwZS5o
ICovLAogCQkJCTcyMDM0NDlCMjZBNkM0NzYwMDBBNUY1NCAvKiBSZW5kZXJpbmdVcGRhdGVJRC5o
ICovLAogCQkJCTVDQjdBRkU2MjNDNjgxQjAwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmgg
Ki8sCiAJCQkJNUMwMDk5M0IyNDE3RkI3RTAwRDUzQzI1IC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLmggKi8sCkBAIC0xMzM4OSw2ICsxMzM5Miw3IEBACiAJCQkJQTU1QkE4MjUx
QkEyNUNGQjAwN0NEMzNEIC8qIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHlNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDZDNUI3Q0UyN0FBREREMzAwMEM1QjQ3IC8qIFJlbW90ZVdvcmtl
ckZyYW1lTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkM1QjdDRjI3QUFEREQ2
MDAwQzVCNDcgLyogUmVtb3RlV29ya2VyTGliV2ViUlRDUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTQ2OTFDQjlCMjdCMkREMkQwMEIyOUFBRiAvKiBSZW1vdGVXb3JrZXJUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0I3QUZFNzIzQzY4MjA3MDBFNDlDRjMgLyogUmVzb3VyY2VMb2Fk
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkJFOTY5Q0QxRTU0RTA1NDAwOEI3NDgzIC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2QkU5
NjlDQjFFNTRENENGMDA4Qjc0ODMgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJD
b2NvYS5oIGluIEhlYWRlcnMgKi8sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>