<?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>239657</bug_id>
          
          <creation_ts>2022-04-22 09:41:13 -0700</creation_ts>
          <short_desc>service worker update should refresh imported scripts in addition to the main script</short_desc>
          <delta_ts>2022-08-01 10:27:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=243410</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1863689</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-22 09:41:13 -0700</bug_when>
    <thetext>service worker update should refresh imported scripts in addition to the main script</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863693</commentid>
    <comment_count>1</comment_count>
      <attachid>458156</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-22 10:09:36 -0700</bug_when>
    <thetext>Created attachment 458156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864067</commentid>
    <comment_count>2</comment_count>
      <attachid>458260</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-25 05:12:56 -0700</bug_when>
    <thetext>Created attachment 458260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864070</commentid>
    <comment_count>3</comment_count>
      <attachid>458263</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-25 05:38:17 -0700</bug_when>
    <thetext>Created attachment 458263
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864448</commentid>
    <comment_count>4</comment_count>
      <attachid>458263</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-26 08:01:17 -0700</bug_when>
    <thetext>Comment on attachment 458263
Patch

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

r=me

&gt; Source/WebCore/workers/service/server/SWServer.cpp:567
&gt; +            m_scripts.append(std::make_pair(url, WTFMove(result.script)));

Can probably just:
m_scripts.append({ url, WTFMove(result.script) });

&gt; Source/WebCore/workers/service/server/SWServerJobQueue.cpp:114
&gt; +        RELEASE_LOG(ServiceWorker, &quot;%p - SWServerJobQueue::scriptFetchFinished, script, certificate and imported scripts are matching for registrationID=%llu&quot;, this, registration-&gt;identifier().toUInt64());

%llu -&gt; PRIu64

&gt; Source/WebCore/workers/service/server/SWServerJobQueue.cpp:135
&gt; +        RELEASE_LOG(ServiceWorker, &quot;%p - SWServerJobQueue::importedScriptsFetchFinished, script, certificate and imported scripts are matching for registrationID=%llu&quot;, this, registration-&gt;identifier().toUInt64());

PRIu64</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864745</commentid>
    <comment_count>5</comment_count>
      <attachid>458426</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-27 00:45:15 -0700</bug_when>
    <thetext>Created attachment 458426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864781</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-27 06:13:37 -0700</bug_when>
    <thetext>Committed r293506 (250037@main): &lt;https://commits.webkit.org/250037@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458426.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864782</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-27 06:14:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/92393337&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458156</attachid>
            <date>2022-04-22 10:09:36 -0700</date>
            <delta_ts>2022-04-25 05:12:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239657-20220422190934.patch</filename>
            <type>text/plain</type>
            <size>27143</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjU1MmQxYTY4Mzk2NGEy
NWE1MjI5ZDBhZGViMDQ5OTllMjQ0ZTJjMy4uYzI1OWZjNjBlODNiZGU5ZGIzNzU5YTk4ZmU3YjM3
NTAwNWY5NGQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTA0LTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBzZXJ2aWNlIHdvcmtlciB1
cGRhdGUgc2hvdWxkIHJlZnJlc2ggaW1wb3J0ZWQgc2NyaXB0cyBpbiBhZGRpdGlvbiB0byB0aGUg
bWFpbiBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzOTY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFmdGVyIGNoZWNraW5nIG1haW4gc2NyaXB0LCBpZiBtYXRjaGluZywgd2UgcmVmcmVhY2gg
ZWFjaCBpZGVudGlmaWVkIGltcG9ydGVkIHNjcmlwdC4KKyAgICAgICAgSWYgbWF0Y2hpbmcsIHdl
IHJldXNlIHRoZSBzYW1lIHdvcmtlciwgb3RoZXJ3aXNlIHdlIGluc3RhbGwgYSBuZXcgb25lLgor
ICAgICAgICBGb3Igbm93LCB3ZSByZXVzZSBzb2Z0IHVwZGF0ZSBsb2FkZXIgdG8gZmV0Y2ggc2Ny
aXB0cy4KKworICAgICAgICBDb3ZlcmVkIGJ5IHJlYmFzZWQgdGVzdHMuCisKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVySm9iUXVldWUuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmg6CisKIDIwMjItMDQtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFNoYXJlZCB3b3JrZXJzIHNob3VsZCBtYXRjaCBzZXJ2aWNlIHdvcmtl
ciByZWdpc3RyYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA3YmVkY2NlMmY2ZWRjZmJkMTcyZjFjNGY4NmMz
OTAyMmI4OWNkZjUuLjk1MDcyMzcxYzZkODJkY2E4NzEyZDQxMTE3OWQ0NzY5ODQxMDVkYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDQtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIHNlcnZpY2Ugd29ya2VyIHVwZGF0ZSBzaG91bGQgcmVm
cmVzaCBpbXBvcnRlZCBzY3JpcHRzIGluIGFkZGl0aW9uIHRvIHRoZSBtYWluIHNjcmlwdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NjU3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6CisKIDIw
MjItMDQtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNo
YXJlZCB3b3JrZXJzIHNob3VsZCBtYXRjaCBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5jcHAKaW5kZXggOTRmMTU0OTUwNDU4Y2U2YzViMjgxZTViNDBhNzAzYmFkNGM4
MjdmZi4uZjkwNDRmY2IzNmY3MjhjYjE2NTFjNzZlZjcyZmE2YzQ1YmFkODY2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmNwcApAQCAtNDMyLDcgKzQzMiw2IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwKICAg
ICAgICAgICAgICAgICBtX29uZ29pbmdTZXR0bGVkUmVnaXN0cmF0aW9ucy5yZW1vdmUoaXRlcmF0
b3IpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLQogICAgICAgICBwcm9taXNlLT5yZXNv
bHZlPElETEludGVyZmFjZTxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPj4oV1RGTW92ZShyZWdp
c3RyYXRpb24pKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZGM2MTEwZjE0YmU4ZWYzOTEyZjUxYWIx
MjFlM2QzMjE4NWFlZjUwNS4uNDVhMDgyMWYxNzRhM2ZiNDUwNWRkMzkwMGQ2MzFiNzM1NjNlZDY1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKQEAgLTM0NSw5ICszNDUsOSBAQCB2b2lkIFNXU2VydmVyOjpjbGVhcihjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcgogICAg
ICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlLT5mbHVzaENoYW5nZXMoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCi12b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGlu
Z1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9i
RGF0YUlkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lz
dHJhdGlvbktleSwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3ZvaWQgU1dTZXJ2
ZXI6OkNvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBXb3JrZXJGZXRjaFJlc3Vs
dCYmIHJlc3VsdCkKIHsKLSAgICBtX3NlcnZlci5zY3JpcHRGZXRjaEZpbmlzaGVkKGpvYkRhdGFJ
ZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXksIHJlc3VsdCk7CisgICAgbV9zZXJ2ZXIuc2NyaXB0
RmV0Y2hGaW5pc2hlZChqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCBXVEZNb3Zl
KHJlc3VsdCkpOwogfQogCiB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVn
aXN0cmF0aW9uUHJvbWlzZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkp
CkBAIC01MDcsNiArNTA3LDI3IEBAIFVSTCBzdGF0aWMgaW5saW5lIG9yaWdpblVSTChjb25zdCBT
ZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogICAgIHJldHVybiB1cmw7CiB9CiAKK1Jlc291cmNlUmVx
dWVzdCBTV1NlcnZlcjo6Y3JlYXRlU2NyaXB0UmVxdWVzdChjb25zdCBVUkwmIHVybCwgY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdp
c3RyYXRpb24pCit7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgeyB1cmwgfTsKKworICAg
IGF1dG8gdG9wT3JpZ2luID0gam9iRGF0YS50b3BPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKTsKKyAg
ICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRVUkwp
OworCisgICAgcmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihqb2JEYXRhLmRvbWFp
bkZvckNhY2hlUGFydGl0aW9uKTsKKyAgICByZXF1ZXN0LnNldEFsbG93Q29va2llcyh0cnVlKTsK
KyAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKG9yaWdpblVSTCh0b3BPcmlnaW4p
KTsKKworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpPcmln
aW4sIG9yaWdpbi0+dG9TdHJpbmcoKSk7CisgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlNlcnZpY2VXb3JrZXIsICJzY3JpcHQiX3MpOworICAgIHJlcXVlc3Qu
c2V0SFRUUFJlZmVycmVyKG9yaWdpblVSTChvcmlnaW4pLnN0cmluZygpKTsKKyAgICByZXF1ZXN0
LnNldEhUVFBVc2VyQWdlbnQoc2VydmljZVdvcmtlckNsaWVudFVzZXJBZ2VudChDbGllbnRPcmln
aW4geyBqb2JEYXRhLnRvcE9yaWdpbiwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShqb2JEYXRhLnNj
cmlwdFVSTCktPmRhdGEoKSB9KSk7CisgICAgcmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxv
YWRQcmlvcml0eTo6TG93KTsKKyAgICByZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKHJlZ2lzdHJh
dGlvbi5pc0FwcEluaXRpYXRlZCgpKTsKKworICAgIHJldHVybiByZXF1ZXN0OworfQorCiB2b2lk
IFNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBq
b2JEYXRhLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQogewogICAgIExPRyhT
ZXJ2aWNlV29ya2VyLCAiU2VydmVyIGlzc3Vpbmcgc3RhcnRTY3JpcHRGZXRjaCBmb3IgY3VycmVu
dCBqb2IgJXMgaW4gY2xpZW50Iiwgam9iRGF0YS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwpAQCAtNTI2LDMyICs1NDcsNDIgQEAgdm9pZCBTV1NlcnZlcjo6c3Rh
cnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgU1dTZXJ2
ZXJSZWcKICAgICBpZiAoam9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigpID09IFByb2Nlc3M6
OmlkZW50aWZpZXIoKSkgewogICAgICAgICBBU1NFUlQoam9iRGF0YS50eXBlID09IFNlcnZpY2VX
b3JrZXJKb2JUeXBlOjpVcGRhdGUpOwogICAgICAgICAvLyBUaGlzIGlzIGEgc29mdC11cGRhdGUg
am9iLCBjcmVhdGUgZGlyZWN0bHkgYSBuZXR3b3JrIGxvYWQgdG8gZmV0Y2ggdGhlIHNjcmlwdC4K
LSAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgeyBqb2JEYXRhLnNjcmlwdFVSTCB9Owot
Ci0gICAgICAgIGF1dG8gdG9wT3JpZ2luID0gam9iRGF0YS50b3BPcmlnaW4uc2VjdXJpdHlPcmln
aW4oKTsKLSAgICAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRh
dGEuc2NyaXB0VVJMKTsKLQotICAgICAgICByZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0
aW9uKGpvYkRhdGEuZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwotICAgICAgICByZXF1ZXN0LnNl
dEFsbG93Q29va2llcyh0cnVlKTsKLSAgICAgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29v
a2llcyhvcmlnaW5VUkwodG9wT3JpZ2luKSk7Ci0KLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6Ok9yaWdpbiwgb3JpZ2luLT50b1N0cmluZygpKTsKLSAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlNlcnZpY2VX
b3JrZXIsICJzY3JpcHQiX3MpOwotICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihvcmln
aW5VUkwob3JpZ2luKS5zdHJpbmcoKSk7Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2Vu
dChzZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KENsaWVudE9yaWdpbiB7IGpvYkRhdGEudG9w
T3JpZ2luLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRhdGEuc2NyaXB0VVJMKS0+ZGF0YSgp
IH0pKTsKLSAgICAgICAgcmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eTo6
TG93KTsKLSAgICAgICAgcmVxdWVzdC5zZXRJc0FwcEluaXRpYXRlZChyZWdpc3RyYXRpb24uaXNB
cHBJbml0aWF0ZWQoKSk7Ci0KLSAgICAgICAgbV9zb2Z0VXBkYXRlQ2FsbGJhY2soU2VydmljZVdv
cmtlckpvYkRhdGEgeyBqb2JEYXRhIH0sIHNob3VsZFJlZnJlc2hDYWNoZSwgV1RGTW92ZShyZXF1
ZXN0KSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGpvYkRhdGFJZGVudGlmaWVyID0g
am9iRGF0YS5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktleSA9IGpvYkRhdGEucmVnaXN0cmF0
aW9uS2V5KCldKGF1dG8mIHJlc3VsdCkgeworICAgICAgICBtX3NvZnRVcGRhdGVDYWxsYmFjayhT
ZXJ2aWNlV29ya2VySm9iRGF0YSB7IGpvYkRhdGEgfSwgc2hvdWxkUmVmcmVzaENhY2hlLCBjcmVh
dGVTY3JpcHRSZXF1ZXN0KGpvYkRhdGEuc2NyaXB0VVJMLCBqb2JEYXRhLCByZWdpc3RyYXRpb24p
LCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgam9iRGF0YUlkZW50aWZpZXIgPSBqb2JE
YXRhLmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9uS2V5ID0gam9iRGF0YS5yZWdpc3RyYXRpb25L
ZXkoKV0oYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAg
ICAgICAgICAgIHdlYWtUaGlzLT5zY3JpcHRGZXRjaEZpbmlzaGVkKGpvYkRhdGFJZGVudGlmaWVy
LCByZWdpc3RyYXRpb25LZXksIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnNj
cmlwdEZldGNoRmluaXNoZWQoam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleSwgV1RG
TW92ZShyZXN1bHQpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShjb25uZWN0aW9uLCAiSWYgdGhlIGNvbm5lY3Rpb24gd2FzIGxv
c3QsIHRoaXMgam9iIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsbGVkIik7CiB9CiAKLXZvaWQgU1dT
ZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQor
Y2xhc3MgUmVmcmVzaEltcG9ydGVkU2NyaXB0c0hhbmRsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxS
ZWZyZXNoSW1wb3J0ZWRTY3JpcHRzSGFuZGxlcj4geworcHVibGljOgorICAgIHVzaW5nIENhbGxi
YWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8c3RkOjpwYWlyPFVSTCwgU2NyaXB0
QnVmZmVyPj4mJik+OworICAgIHN0YXRpYyBSZWY8UmVmcmVzaEltcG9ydGVkU2NyaXB0c0hhbmRs
ZXI+IGNyZWF0ZShzaXplX3QgZXhwZWN0ZWRJdGVtcywgQ2FsbGJhY2smJiBjYWxsYmFjaykgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWZyZXNoSW1wb3J0ZWRTY3JpcHRzSGFuZGxlcihleHBlY3Rl
ZEl0ZW1zLCBXVEZNb3ZlKGNhbGxiYWNrKSkpOyB9CisKKyAgICB2b2lkIGFkZChjb25zdCBVUkwm
IHVybCwgV29ya2VyRmV0Y2hSZXN1bHQmJiByZXN1bHQpCisgICAgeworICAgICAgICBpZiAocmVz
dWx0LmVycm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgbV9zY3JpcHRzLmFwcGVuZChzdGQ6Om1h
a2VfcGFpcih1cmwsIFdURk1vdmUocmVzdWx0LnNjcmlwdCkpKTsKKworICAgICAgICBpZiAoIS0t
bV9yZW1haW5pbmdJdGVtcykKKyAgICAgICAgICAgIG1fY2FsbGJhY2soc3RkOjpleGNoYW5nZSht
X3NjcmlwdHMsIHsgfSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZyZXNoSW1wb3J0ZWRT
Y3JpcHRzSGFuZGxlcihzaXplX3QgZXhwZWN0ZWRJdGVtcywgQ2FsbGJhY2smJiBjYWxsYmFjaykK
KyAgICAgICAgOiBtX3JlbWFpbmluZ0l0ZW1zKGV4cGVjdGVkSXRlbXMpCisgICAgICAgICwgbV9j
YWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKKyAgICB7CisgICAgfQorCisgICAgc2l6ZV90IG1f
cmVtYWluaW5nSXRlbXM7CisgICAgQ2FsbGJhY2sgbV9jYWxsYmFjazsKKyAgICBWZWN0b3I8c3Rk
OjpwYWlyPFVSTCwgU2NyaXB0QnVmZmVyPj4gbV9zY3JpcHRzOworfTsKKwordm9pZCBTV1NlcnZl
cjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpc3RyYXRpb25LZXksIFdvcmtlckZldGNoUmVzdWx0JiYgcmVzdWx0KQogewogICAgIExP
RyhTZXJ2aWNlV29ya2VyLCAiU2VydmVyIGhhbmRsaW5nIHNjcmlwdEZldGNoRmluaXNoZWQgZm9y
IGN1cnJlbnQgam9iICVzIGluIGNsaWVudCIsIGpvYkRhdGFJZGVudGlmaWVyLmxvZ2dpbmdTdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIApAQCAtNTYxLDcgKzU5MiwzMSBAQCB2b2lkIFNXU2VydmVy
OjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmll
ciYgam9iRGF0YQogICAgIGlmICgham9iUXVldWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGpv
YlF1ZXVlLT5zY3JpcHRGZXRjaEZpbmlzaGVkKGpvYkRhdGFJZGVudGlmaWVyLCByZXN1bHQpOwor
ICAgIGpvYlF1ZXVlLT5zY3JpcHRGZXRjaEZpbmlzaGVkKGpvYkRhdGFJZGVudGlmaWVyLCBXVEZN
b3ZlKHJlc3VsdCkpOworfQorCit2b2lkIFNXU2VydmVyOjpyZWZyZXNoSW1wb3J0ZWRTY3JpcHRz
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYgcmVnaXN0cmF0aW9uLCBjb25zdCBWZWN0b3I8VVJMPiYgdXJscykKK3sKKyAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkIHN1cHBvcnQgZm9yIGZldGNoaW5nIGluIGpvYiBjbGllbnQgaWYgcG9zc2li
bGUsIGluIGNhc2Ugd2UgYXJlIG5vdCBzb2Z0IHVwZGF0aW5nLgorICAgIGF1dG8gaGFuZGxlciA9
IFJlZnJlc2hJbXBvcnRlZFNjcmlwdHNIYW5kbGVyOjpjcmVhdGUodXJscy5zaXplKCksIFt3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBqb2JEYXRhSWRlbnRpZmllciA9IGpvYkRhdGEuaWRl
bnRpZmllcigpLCByZWdpc3RyYXRpb25LZXkgPSBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpXShh
dXRvJiYgc2NyaXB0cykgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFr
VGhpcy0+cmVmcmVzaEltcG9ydGVkU2NyaXB0c0ZpbmlzaGVkKGpvYkRhdGFJZGVudGlmaWVyLCBy
ZWdpc3RyYXRpb25LZXksIHNjcmlwdHMpOworICAgIH0pOworICAgIGJvb2wgc2hvdWxkUmVmcmVz
aENhY2hlID0gcmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hlKCkgIT0gU2VydmljZVdvcmtlclVw
ZGF0ZVZpYUNhY2hlOjpBbGwgfHwgKHJlZ2lzdHJhdGlvbi5nZXROZXdlc3RXb3JrZXIoKSAmJiBy
ZWdpc3RyYXRpb24uaXNTdGFsZSgpKTsKKyAgICBmb3IgKGF1dG8mIHVybCA6IHVybHMpIHsKKyAg
ICAgICAgbV9zb2Z0VXBkYXRlQ2FsbGJhY2soU2VydmljZVdvcmtlckpvYkRhdGEgeyBqb2JEYXRh
IH0sIHNob3VsZFJlZnJlc2hDYWNoZSwgY3JlYXRlU2NyaXB0UmVxdWVzdCh1cmwsIGpvYkRhdGEs
IHJlZ2lzdHJhdGlvbiksIFtoYW5kbGVyLCB1cmwsIHNpemUgPSB1cmxzLnNpemUoKV0oYXV0byYm
IHJlc3VsdCkgeworICAgICAgICAgICAgaGFuZGxlci0+YWRkKHVybCwgV1RGTW92ZShyZXN1bHQp
KTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFNXU2VydmVyOjpyZWZyZXNoSW1wb3J0
ZWRTY3JpcHRzRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBq
b2JEYXRhSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVn
aXN0cmF0aW9uS2V5LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFVSTCwgU2NyaXB0QnVmZmVyPj4m
IHNjcmlwdHMpCit7CisgICAgYXV0byBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3Ry
YXRpb25LZXkpOworICAgIGlmICgham9iUXVldWUpCisgICAgICAgIHJldHVybjsKKworICAgIGpv
YlF1ZXVlLT5pbXBvcnRlZFNjcmlwdHNGZXRjaEZpbmlzaGVkKGpvYkRhdGFJZGVudGlmaWVyLCBz
Y3JpcHRzKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JE
YXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oCmluZGV4IDJhM2Q2ZTA2MWNkNTgwOTA4ZDc2NmZhMzNkOWQxNzQ0ZDJlNDU4NWYuLmY0ZTE5
ZTllYThlMDQwYmU1ZWNkNjljMDk3MWU1MmZiMTg3ZmY5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTEwNSw3ICsxMDUsNyBA
QCBwdWJsaWM6CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0
aW9uKFNXU2VydmVyJiwgSWRlbnRpZmllcik7CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllciYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBX
b3JrZXJGZXRjaFJlc3VsdCYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmlzaEZl
dGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
JiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdvcmtlckZldGNoUmVzdWx0
JiYpOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklu
U2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKICAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCB3aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPiYm
KTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxSZWdpc3RyYXRp
b25SZWFkeVJlcXVlc3Q+IG1fcmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0czsKICAgICB9OwogCi0g
ICAgdXNpbmcgU29mdFVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYmIGpvYkRhdGEsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBSZXNvdXJjZVJlcXVl
c3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpPiYm
KT47CisgICAgdXNpbmcgU29mdFVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChTZXJ2aWNl
V29ya2VySm9iRGF0YSYmIGpvYkRhdGEsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBSZXNvdXJj
ZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXb3JrZXJGZXRjaFJlc3VsdCYmKT4m
Jik+OwogICAgIHVzaW5nIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgc3RkOjpvcHRpb25hbDxQ
cm9jZXNzSWRlbnRpZmllcj4gcmVxdWVzdGluZ1Byb2Nlc3NJZGVudGlmaWVyLCBzdGQ6Om9wdGlv
bmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKT47CiAgICAgdXNpbmcgQXBwQm91bmREb21haW5zQ2FsbGJhY2sgPSBGdW5jdGlv
bjx2b2lkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbj4mJik+JiYpPjsKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcihVbmlxdWVSZWY8
U1dPcmlnaW5TdG9yZT4mJiwgYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0
cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Npb25JRCwgYm9v
bCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcsIGJvb2wgaGFz
U2VydmljZVdvcmtlckVudGl0bGVtZW50LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBvdmVycmlk
ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25Db3VudFRlc3RpbmdWYWx1ZSwgU29mdFVwZGF0ZUNh
bGxiYWNrJiYsIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2smJiwgQXBwQm91bmREb21h
aW5zQ2FsbGJhY2smJik7CkBAIC0xNTYsNiArMTU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVz
b2x2ZVJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKTsK
ICAgICB2b2lkIHJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YSYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBib29sIHVucmVnaXN0
cmF0aW9uUmVzdWx0KTsKICAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOworICAgIHZvaWQgcmVmcmVzaElt
cG9ydGVkU2NyaXB0cyhjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIFNXU2VydmVyUmVnaXN0
cmF0aW9uJiwgY29uc3QgVmVjdG9yPFVSTD4mKTsKIAogICAgIHZvaWQgdXBkYXRlV29ya2VyKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyUmVnaXN0cmF0aW9u
JiwgY29uc3QgVVJMJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZv
JiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgQ3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeSYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdv
cmtlclR5cGUsIE1lbW9yeUNvbXBhY3RSb2Jpbkhvb2RIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiwgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKTsKICAg
ICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU1dTZXJ2ZXJXb3JrZXImKTsKQEAgLTE3OCw2ICsxNzks
NyBAQCBwdWJsaWM6CiAKICAgICBTV09yaWdpblN0b3JlJiBvcmlnaW5TdG9yZSgpIHsgcmV0dXJu
IG1fb3JpZ2luU3RvcmU7IH0KIAorICAgIHZvaWQgcmVmcmVzaEltcG9ydGVkU2NyaXB0c0Zpbmlz
aGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFVSTCwgU2NyaXB0
QnVmZmVyPj4mKTsKICAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNXU2VydmVyV29y
a2VyJiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFy
dGVkKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYs
IFNXU2VydmVyV29ya2VyJik7CiAgICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiYsIFNXU2VydmVyV29ya2Vy
JiwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKQEAgLTI1OSw3ICsyNjEsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgYWxsb3dMb29wYmFja0lQQWRkcmVzcyhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHZh
bGlkYXRlUmVnaXN0cmF0aW9uRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2
aWNlV29ya2VySm9iVHlwZSwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAKLSAgICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0
IFdvcmtlckZldGNoUmVzdWx0Jik7CisgICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmLCBXb3JrZXJGZXRjaFJlc3VsdCYmKTsKIAogICAgIHZvaWQgZGlkUmVzb2x2
ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29ubmVjdGlvbiosIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmKTsKIApAQCAtMjgzLDYgKzI4NSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1
cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZUZvcldvcmtlcnMoY29uc3QgQ2xpZW50T3JpZ2luJiwgTGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwogICAgIHZvaWQgd2hlbkltcG9ydElzQ29tcGxl
dGVkSWZOZWVkZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAorICAgIFJlc291cmNl
UmVxdWVzdCBjcmVhdGVTY3JpcHRSZXF1ZXN0KGNvbnN0IFVSTCYsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKKwogICAgIEhhc2hNYXA8U1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+PiBtX2Nv
bm5lY3Rpb25zOwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgV2Vh
a1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcDsKICAg
ICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1
ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3JlZ2lzdHJhdGlvbnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmNwcAppbmRleCBkOTIzOTRkMTAyMjg4NDJlZDNjNmJkYjA2ZThlODMyYzNmYzQwODFkLi5l
ZTllYmJkOTUzN2UwMTFiYzNkY2EyNjBkZTYxZWRjYThkYzE2OThkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIGJvb2wgZG9DZXJ0aWZpY2F0ZXNNYXRjaChj
b25zdCBDZXJ0aWZpY2F0ZUluZm8mIGZpcnN0LCBjb25zdCBDZXJ0aWZpY2F0ZUkKICNlbmRpZgog
fQogCi12b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgV29y
a2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0
Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJ
ZGVudGlmaWVyLCBXb3JrZXJGZXRjaFJlc3VsdCYmIHJlc3VsdCkKIHsKICAgICBpZiAoIWlzQ3Vy
cmVudGx5UHJvY2Vzc2luZ0pvYihqb2JEYXRhSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsK
QEAgLTEwMSwyMCArMTAxLDUyIEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hG
aW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImCiAgICAgLy8gZmxh
ZyBzZXQsIGFuZCBzY3JpcHQncyBzb3VyY2UgdGV4dCBpcyBhIGJ5dGUtZm9yLWJ5dGUgbWF0Y2gg
d2l0aCBuZXdlc3RXb3JrZXIncyBzY3JpcHQgcmVzb3VyY2UncyBzb3VyY2UKICAgICAvLyB0ZXh0
LCB0aGVuOgogICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcihuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpLCBqb2Iuc2NyaXB0VVJMKSAmJiBuZXdl
c3RXb3JrZXItPnR5cGUoKSA9PSBqb2Iud29ya2VyVHlwZSAmJiByZXN1bHQuc2NyaXB0ID09IG5l
d2VzdFdvcmtlci0+c2NyaXB0KCkgJiYgZG9DZXJ0aWZpY2F0ZXNNYXRjaChyZXN1bHQuY2VydGlm
aWNhdGVJbmZvLCBuZXdlc3RXb3JrZXItPmNlcnRpZmljYXRlSW5mbygpKSkgewotICAgICAgICBS
RUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRG
ZXRjaEZpbmlzaGVkLCBzY3JpcHQgYW5kIGNlcnRpZmljYXRlIGFyZSBtYXRjaGluZyBmb3IgcmVn
aXN0cmF0aW9uSUQ9JWxsdSIsIHRoaXMsIHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOworCisgICAgICAgIGF1dG8gc2NyaXB0VVJMcyA9IG5ld2VzdFdvcmtlci0+aW1wb3J0
ZWRTY3JpcHRVUkxzKCk7CisgICAgICAgIGlmICghc2NyaXB0VVJMcy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIG1fd29ya2VyRmV0Y2hSZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCk7CisgICAgICAg
ICAgICBtX3NlcnZlci5yZWZyZXNoSW1wb3J0ZWRTY3JpcHRzKGpvYiwgKnJlZ2lzdHJhdGlvbiwg
c2NyaXB0VVJMcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICAv
LyBGSVhNRTogZm9yIG5vbiBjbGFzc2ljIHNjcmlwdHMsIGNoZWNrIHRoZSBzY3JpcHTigJlzIG1v
ZHVsZSByZWNvcmQncyBbW0VDTUFTY3JpcHRDb2RlXV0uCiAKLSAgICAgICAgLy8gSW52b2tlIFJl
c29sdmUgSm9iIFByb21pc2Ugd2l0aCBqb2IgYW5kIHJlZ2lzdHJhdGlvbi4KLSAgICAgICAgbV9z
ZXJ2ZXIucmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYihqb2IsIHJlZ2lzdHJhdGlvbi0+ZGF0YSgpLCBT
aG91bGROb3RpZnlXaGVuUmVzb2x2ZWQ6Ok5vKTsKKyAgICAgICAgUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZCwgc2Ny
aXB0LCBjZXJ0aWZpY2F0ZSBhbmQgaW1wb3J0ZWQgc2NyaXB0cyBhcmUgbWF0Y2hpbmcgZm9yIHJl
Z2lzdHJhdGlvbklEPSVsbHUiLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpKTsKKyAgICAgICAgc2NyaXB0QW5kSW1wb3J0ZWRTY3JpcHRzRmV0Y2hGaW5pc2hlZChq
b2IsICpyZWdpc3RyYXRpb24pOworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgICAgIC8v
IEludm9rZSBGaW5pc2ggSm9iIHdpdGggam9iIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAg
ICAgZmluaXNoQ3VycmVudEpvYigpOworICAgIG1fc2VydmVyLnVwZGF0ZVdvcmtlcihqb2IuaWRl
bnRpZmllcigpLCAqcmVnaXN0cmF0aW9uLCBqb2Iuc2NyaXB0VVJMLCByZXN1bHQuc2NyaXB0LCBy
ZXN1bHQuY2VydGlmaWNhdGVJbmZvLCByZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5LCByZXN1
bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgcmVzdWx0LnJlZmVycmVyUG9saWN5LCBqb2Iu
d29ya2VyVHlwZSwgeyB9LCBqb2Iuc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkpOworfQor
Cit2b2lkIFNXU2VydmVySm9iUXVldWU6OmltcG9ydGVkU2NyaXB0c0ZldGNoRmluaXNoZWQoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29u
c3QgVmVjdG9yPHN0ZDo6cGFpcjxVUkwsIFNjcmlwdEJ1ZmZlcj4+JiBpbXBvcnRlZFNjcmlwdHMp
Cit7CisgICAgaWYgKCFpc0N1cnJlbnRseVByb2Nlc3NpbmdKb2Ioam9iRGF0YUlkZW50aWZpZXIp
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBqb2IgPSBmaXJzdEpvYigpOworCisgICAg
YXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0
aW9uS2V5KTsKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byogbmV3ZXN0V29ya2VyID0gcmVnaXN0cmF0aW9uLT5nZXROZXdlc3RXb3JrZXIoKTsKKyAg
ICBpZiAobmV3ZXN0V29ya2VyICYmIG5ld2VzdFdvcmtlci0+bWF0Y2hpbmdJbXBvcnRlZFNjcmlw
dHMoaW1wb3J0ZWRTY3JpcHRzKSkgeworICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2Vy
LCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjppbXBvcnRlZFNjcmlwdHNGZXRjaEZpbmlzaGVkLCBz
Y3JpcHQsIGNlcnRpZmljYXRlIGFuZCBpbXBvcnRlZCBzY3JpcHRzIGFyZSBtYXRjaGluZyBmb3Ig
cmVnaXN0cmF0aW9uSUQ9JWxsdSIsIHRoaXMsIHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpLnRv
VUludDY0KCkpOworICAgICAgICBzY3JpcHRBbmRJbXBvcnRlZFNjcmlwdHNGZXRjaEZpbmlzaGVk
KGpvYiwgKnJlZ2lzdHJhdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBG
SVhNRTogVXBkYXRlIGFsbCB0aGUgaW1wb3J0ZWQgc2NyaXB0cyBhcyBwZXIgc3BlYy4gRm9yIG5v
dywgd2UganVzdCBkbyBhcyBpZiB0aGVyZSBpcyBub25lLgorICAgIG1fc2VydmVyLnVwZGF0ZVdv
cmtlcihqb2IuaWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9uLCBqb2Iuc2NyaXB0VVJMLCBtX3dv
cmtlckZldGNoUmVzdWx0LnNjcmlwdCwgbV93b3JrZXJGZXRjaFJlc3VsdC5jZXJ0aWZpY2F0ZUlu
Zm8sIG1fd29ya2VyRmV0Y2hSZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3dvcmtlckZl
dGNoUmVzdWx0LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksIG1fd29ya2VyRmV0Y2hSZXN1bHQu
cmVmZXJyZXJQb2xpY3ksIGpvYi53b3JrZXJUeXBlLCB7IH0sIGpvYi5zZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIoKSk7Cit9CiAKLSAgICBtX3NlcnZlci51cGRhdGVXb3JrZXIoam9iLmlkZW50
aWZpZXIoKSwgKnJlZ2lzdHJhdGlvbiwgam9iLnNjcmlwdFVSTCwgcmVzdWx0LnNjcmlwdCwgcmVz
dWx0LmNlcnRpZmljYXRlSW5mbywgcmVzdWx0LmNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVzdWx0
LmNyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksIHJlc3VsdC5yZWZlcnJlclBvbGljeSwgam9iLndv
cmtlclR5cGUsIHsgfSwgam9iLnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpKTsKK3ZvaWQg
U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0QW5kSW1wb3J0ZWRTY3JpcHRzRmV0Y2hGaW5pc2hlZChj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVn
aXN0cmF0aW9uKQoreworICAgIC8vIEludm9rZSBSZXNvbHZlIEpvYiBQcm9taXNlIHdpdGggam9i
IGFuZCByZWdpc3RyYXRpb24uCisgICAgbV9zZXJ2ZXIucmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYihq
b2IsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZDo6Tm8pOwor
CisgICAgLy8gSW52b2tlIEZpbmlzaCBKb2Igd2l0aCBqb2IgYW5kIGFib3J0IHRoZXNlIHN0ZXBz
LgorICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKIH0KIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L1NlcnZpY2VXb3JrZXIvI3VwZGF0ZS1hbGdvcml0aG0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKaW5kZXggM2Q5
NjgwNjc5ZTRmMzg2Yzg4YWNmMGU4NTVkM2FmODRkZWNiNDAxOS4uMmFkYmI4NTU1ODZjMTIwMDQw
MThkNTA3NTcxZDAxMGMyNDdhN2NiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKQEAgLTMwLDExICszMCwx
MyBAQAogI2luY2x1ZGUgIlNXU2VydmVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRh
dGEuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgIldvcmtlckZldGNoUmVzdWx0Lmgi
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
U1dTZXJ2ZXJXb3JrZXI7CitjbGFzcyBTZXJ2aWNlV29ya2VySm9iOwogc3RydWN0IFdvcmtlckZl
dGNoUmVzdWx0OwogCiBjbGFzcyBTV1NlcnZlckpvYlF1ZXVlIHsKQEAgLTUxLDcgKzUzLDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBydW5OZXh0Sm9iKCk7CiAKLSAgICB2b2lkIHNjcmlwdEZldGNo
RmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgV29y
a2VyRmV0Y2hSZXN1bHQmKTsKKyAgICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgV29ya2VyRmV0Y2hSZXN1bHQmJik7CisgICAg
dm9pZCBpbXBvcnRlZFNjcmlwdHNGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8VVJMLCBTY3JpcHRCdWZmZXI+
PiYpOwogICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSk7CiAgICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAg
ICAgdm9pZCBkaWRGaW5pc2hJbnN0YWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
ZmllciYsIFNXU2VydmVyV29ya2VyJiwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKQEAgLTc0LDEyICs3
NywxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5zdGFsbChTV1NlcnZlclJlZ2lzdHJhdGlvbiYs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVtb3ZlQWxsSm9ic01hdGNo
aW5nKGNvbnN0IEZ1bmN0aW9uPGJvb2woU2VydmljZVdvcmtlckpvYkRhdGEmKT4mKTsKKyAgICB2
b2lkIHNjcmlwdEFuZEltcG9ydGVkU2NyaXB0c0ZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOwogCiAgICAgRGVxdWU8U2Vydmlj
ZVdvcmtlckpvYkRhdGE+IG1fam9iUXVldWU7CiAKICAgICBUaW1lciBtX2pvYlRpbWVyOwogICAg
IFNXU2VydmVyJiBtX3NlcnZlcjsKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IG1f
cmVnaXN0cmF0aW9uS2V5OworICAgIFdvcmtlckZldGNoUmVzdWx0IG1fd29ya2VyRmV0Y2hSZXN1
bHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDVj
NmIyZGJkYWIzYjc0YmIzZmYzOTZiM2Q5OGRhZjhlZTUxYTJmMDMuLjkyY2QwNTI5OGE5MGEzYjdk
NzgzODRiZjg1ZTU2ZjYxZTZkMDEzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC00MjcsNiArNDI3
LDIxIEBAIGJvb2wgU1dTZXJ2ZXJXb3JrZXI6OmlzQ2xpZW50QWN0aXZlU2VydmljZVdvcmtlcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllCiAgICAgcmV0dXJuIHJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIgPT0gbV9kYXRhLnJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CiB9CiAKK1ZlY3RvcjxV
Ukw+IFNXU2VydmVyV29ya2VyOjppbXBvcnRlZFNjcmlwdFVSTHMoKSBjb25zdAoreworICAgIHJl
dHVybiBjb3B5VG9WZWN0b3IobV9zY3JpcHRSZXNvdXJjZU1hcC5rZXlzKCkpOworfQorCitib29s
IFNXU2VydmVyV29ya2VyOjptYXRjaGluZ0ltcG9ydGVkU2NyaXB0cyhjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFVSTCwgU2NyaXB0QnVmZmVyPj4mIHNjcmlwdHMpIGNvbnN0Cit7CisgICAgZm9yIChh
dXRvJiBzY3JpcHQgOiBzY3JpcHRzKSB7CisgICAgICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Njcmlw
dFJlc291cmNlTWFwLmZpbmQoc2NyaXB0LmZpcnN0KTsKKyAgICAgICAgaWYgKGl0ZXJhdG9yID09
IG1fc2NyaXB0UmVzb3VyY2VNYXAuZW5kKCkgfHwgaXRlcmF0b3ItPnZhbHVlLnNjcmlwdCAhPSBz
Y3JpcHQuc2Vjb25kKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDliZDU2N2MzY2I5NzExNTE4ODk3OTQ5
YzIxOTA4NTY1ODJmNzY1NDQuLmYyNGUyZWJmYTEwYzRlZjQwNGIxZjlhZmIyNjUyZjRhZWEwNjhh
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmgKQEAgLTE0NCw2ICsxNDQsMTAgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBpc0NsaWVudEFjdGl2ZVNlcnZpY2VXb3JrZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIpIGNvbnN0OwogCisgICAgVmVjdG9yPFVSTD4gaW1wb3J0ZWRT
Y3JpcHRVUkxzKCkgY29uc3Q7CisgICAgY29uc3QgTWVtb3J5Q29tcGFjdFJvYmluSG9vZEhhc2hN
YXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYgc2NyaXB0
UmVzb3VyY2VNYXAoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdFJlc291cmNlTWFwOyB9CisgICAg
Ym9vbCBtYXRjaGluZ0ltcG9ydGVkU2NyaXB0cyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFVSTCwg
U2NyaXB0QnVmZmVyPj4mKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihT
V1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU2NyaXB0
QnVmZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYsIFN0
cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgTWVtb3J5Q29tcGFjdFJvYmluSG9vZEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuaAppbmRleCAwODI2NzNiMzMxNTc5MThiZDBiMmU1N2M3Njky
MjVjNWQwODQ2YjkzLi4yYTdlODRjMjU1NmQxYmFkMjFhYWFjNzZkZjg2YjI3ZTk1Y2ViM2I0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApAQCAt
NTAsNyArNTAsNyBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNsYXNzIFNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyIGZpbmFsIDogcHVibGljIE5ldHdvcmtMb2FkQ2xpZW50LCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI+IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB1c2luZyBIYW5kbGVyID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpXb3JrZXJGZXRjaFJlc3VsdCYpPjsKKyAg
ICB1c2luZyBIYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpXb3JrZXJG
ZXRjaFJlc3VsdCYmKT47CiAgICAgc3RhdGljIHZvaWQgc3RhcnQoTmV0d29ya1Nlc3Npb24qLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYmLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEhhbmRsZXImJik7CiAKICAgICB+U2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4
IDUwMWQ5NzI3ZjY4ZGJiNjJjN2E2ZmEwMzRlYTdjODFkN2FlNDAzMjguLmE0N2UxMDU4ZGFmOWUz
OGM5Mjc0Y2VhYmI1NGExMzJjNjRhY2M1ODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDIyLTA0LTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KKworICAgICAgICBzZXJ2aWNlIHdvcmtlciB1cGRhdGUgc2hvdWxkIHJlZnJlc2gg
aW1wb3J0ZWQgc2NyaXB0cyBpbiBhZGRpdGlvbiB0byB0aGUgbWFpbiBzY3JpcHQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTY1NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jcmVkZW50aWFscy5odHRwcy1leHBl
Y3RlZC50eHQ6CisKIDIwMjItMDQtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIFNoYXJlZCB3b3JrZXJzIHNob3VsZCBtYXRjaCBzZXJ2aWNlIHdvcmtlciBy
ZWdpc3RyYXRpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jcmVkZW50aWFscy5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jcmVkZW50aWFscy5odHRwcy1l
eHBlY3RlZC50eHQKaW5kZXggOWQzZTRjYzNkYWZkOGYzYmJlNGM1M2EwZDNjNzJlN2E3NTcyZDIw
ZS4uZTliNGE1MzFhYzhlNWY2ODJiMDVjYjc5YmE0NDk0M2NiNjc5ZmE4YSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvY3JlZGVudGlhbHMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyL2NyZWRlbnRpYWxzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw3ICsx
LDcgQEAKIAogUEFTUyBTZXQgY29va2llcyBhcyBpbml0aWFsaXphdGlvbgogUEFTUyBNYWluIHNj
cmlwdCBzaG91bGQgaGF2ZSBjcmVkZW50aWFscwotRkFJTCBJbXBvcnRlZCBzY3JpcHQgc2hvdWxk
IGhhdmUgY3JlZGVudGlhbHMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ3dvcmtlci5wb3N0TWVzc2FnZScpIgotRkFJTCBNb2R1bGUgd2l0aCBhbiBpbXBvcnRlZCBz
dGF0ZW1lbnQgc2hvdWxkIG5vdCBoYXZlIGNyZWRlbnRpYWxzIHByb21pc2VfdGVzdDogVW5oYW5k
bGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogbnVsbCBpcyBub3Qg
YW4gb2JqZWN0IChldmFsdWF0aW5nICd3b3JrZXIucG9zdE1lc3NhZ2UnKSIKK1BBU1MgSW1wb3J0
ZWQgc2NyaXB0IHNob3VsZCBoYXZlIGNyZWRlbnRpYWxzCitQQVNTIE1vZHVsZSB3aXRoIGFuIGlt
cG9ydGVkIHN0YXRlbWVudCBzaG91bGQgbm90IGhhdmUgY3JlZGVudGlhbHMKIEZBSUwgU2NyaXB0
IHdpdGggc2VydmljZSB3b3JrZXIgc2VydmVkIGFzIG1vZHVsZXMgc2hvdWxkIG5vdCBoYXZlIGNy
ZWRlbnRpYWxzIGFzc2VydF9lcXVhbHM6IG5ldyBtb2R1bGUgd29ya2VyIHNob3VsZCBub3QgaGF2
ZSBjcmVkZW50aWFscyBleHBlY3RlZCAodW5kZWZpbmVkKSB1bmRlZmluZWQgYnV0IGdvdCAoc3Ry
aW5nKSAiMSIKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458260</attachid>
            <date>2022-04-25 05:12:56 -0700</date>
            <delta_ts>2022-04-25 05:38:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239657-20220425141254.patch</filename>
            <type>text/plain</type>
            <size>45361</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjU1MmQxYTY4Mzk2NGEy
NWE1MjI5ZDBhZGViMDQ5OTllMjQ0ZTJjMy4uNDE1ZTFjNjA1ZTY4NDAzY2M0MjFhODBhYTRlYWU5
YjI5YjMwNjg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTA0LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBzZXJ2aWNlIHdvcmtlciB1
cGRhdGUgc2hvdWxkIHJlZnJlc2ggaW1wb3J0ZWQgc2NyaXB0cyBpbiBhZGRpdGlvbiB0byB0aGUg
bWFpbiBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzOTY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFmdGVyIGNoZWNraW5nIG1haW4gc2NyaXB0LCBpZiBtYXRjaGluZywgd2UgcmVmcmVhY2gg
ZWFjaCBpZGVudGlmaWVkIGltcG9ydGVkIHNjcmlwdC4KKyAgICAgICAgSWYgbWF0Y2hpbmcsIHdl
IHJldXNlIHRoZSBzYW1lIHdvcmtlciwgb3RoZXJ3aXNlIHdlIGluc3RhbGwgYSBuZXcgb25lLgor
ICAgICAgICBXZSByZXVzZSB0aGUgc29mdCB1cGRhdGUgbG9hZGVyIHRvIGZldGNoIHNjcmlwdHMg
aW4gY2FzZSBvZiBzb2Z0IHVwZGF0ZS4KKyAgICAgICAgT3RoZXJ3aXNlLCB3ZSBsb2FkIHNjcmlw
dHMgdGhyb3VnaCB0aGUgam9iJ3MgY2xpZW50LgorCisgICAgICAgIENvdmVyZWQgYnkgcmViYXNl
ZCB0ZXN0LgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5j
cHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VySm9iQ2xpZW50Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmg6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDIy
LTA0LTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBTaGFy
ZWQgd29ya2VycyBzaG91bGQgbWF0Y2ggc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9ucwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAwN2JlZGNjZTJmNmVkY2ZiZDE3MmYxYzRmODZjMzkwMjJiODljZGY1Li4yMWVmM2Vk
NjBhNTlmYTZjZjVlYWNkODQ0NmZiODVlYjM5YzViMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDIyLTA0LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBzZXJ2aWNlIHdvcmtlciB1cGRhdGUgc2hvdWxkIHJlZnJlc2ggaW1wb3J0ZWQgc2NyaXB0
cyBpbiBhZGRpdGlvbiB0byB0aGUgbWFpbiBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW46
CisKIDIwMjItMDQtMjIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFNoYXJlZCB3b3JrZXJzIHNob3VsZCBtYXRjaCBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRp
b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENv
bm5lY3Rpb24uY3BwCmluZGV4IGNkNzE3NDIwZjMyNjRlYWJjYmFkN2NmZjAwNjgzOWVlYjg0Mjhi
YzguLjMzZGVlOTMwMjJiZGRhZDk2YjY1Zjk4YmYyMmUwM2RkOGQ5N2E0ZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3Bw
CkBAIC0xMTUsNiArMTE1LDQ2IEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNjcmlw
dEZldGNoRm9yU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyIGpvCiAgICAgICAgIGZp
bmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoeyBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigp
LCBqb2JJZGVudGlmaWVyIH0sIFdURk1vdmUocmVnaXN0cmF0aW9uS2V5KSwgd29ya2VyRmV0Y2hF
cnJvcihSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCBt
YWtlU3RyaW5nKCJGYWlsZWQgdG8gZmV0Y2ggc2NyaXB0IGZvciBzZXJ2aWNlIHdvcmtlciB3aXRo
IHNjb3BlICIsIHJlZ2lzdHJhdGlvbktleS5zY29wZSgpLnN0cmluZygpKSB9KSk7CiB9CiAKK2Ns
YXNzIFJlZnJlc2hJbXBvcnRlZFNjcmlwdHNDYWxsYmFja0hhbmRsZXIgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFJlZnJlc2hJbXBvcnRlZFNj
cmlwdHNDYWxsYmFja0hhbmRsZXIoU2VydmljZVdvcmtlckpvYjo6UmVmcmVzaEltcG9ydGVkU2Ny
aXB0c0NhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgICAgIDogbV9jYWxsYmFjayhXVEZNb3ZlKGNh
bGxiYWNrKSkKKyAgICB7CisgICAgfQorCisgICAgflJlZnJlc2hJbXBvcnRlZFNjcmlwdHNDYWxs
YmFja0hhbmRsZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2NhbGxiYWNrKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NhbGxiYWNrID0gV1RGTW92
ZShtX2NhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFjayh7IH0pOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICB2b2lkIGNhbGwoVmVjdG9yPHN0ZDo6cGFpcjxVUkws
IFNjcmlwdEJ1ZmZlcj4+JiYgc2NyaXB0cykKKyAgICB7CisgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW2NhbGxiYWNrID0gV1RGTW92ZShtX2NhbGxiYWNrKSwgc2NyaXB0cyA9IGNyb3NzVGhyZWFk
Q29weShXVEZNb3ZlKHNjcmlwdHMpKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjYWxsYmFj
ayhXVEZNb3ZlKHNjcmlwdHMpKTsKKyAgICAgICAgfSk7CisgICAgfQorCitwcml2YXRlOgorICAg
IFNlcnZpY2VXb3JrZXJKb2I6OlJlZnJlc2hJbXBvcnRlZFNjcmlwdHNDYWxsYmFjayBtX2NhbGxi
YWNrOworfTsKKwordm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnJlZnJlc2hJbXBvcnRlZFNjcmlw
dHMoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIgam9iSWRlbnRpZmllciwgRmV0Y2hPcHRpb25z
OjpDYWNoZSBjYWNoZVBvbGljeSwgVmVjdG9yPFVSTD4mJiB1cmxzLCBTZXJ2aWNlV29ya2VySm9i
OjpSZWZyZXNoSW1wb3J0ZWRTY3JpcHRzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8gaGFuZGxlciA9IG1ha2VVbmlxdWU8UmVmcmVz
aEltcG9ydGVkU2NyaXB0c0NhbGxiYWNrSGFuZGxlcj4oV1RGTW92ZShjYWxsYmFjaykpOworICAg
IHBvc3RUYXNrRm9ySm9iKGpvYklkZW50aWZpZXIsIElzSm9iQ29tcGxldGU6Ok5vLCBbY2FjaGVQ
b2xpY3ksIHVybHMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh1cmxzKSksIGhhbmRsZXIgPSBX
VEZNb3ZlKGhhbmRsZXIpXSAoYXV0byYgam9iKSBtdXRhYmxlIHsKKyAgICAgICAgam9iLnJlZnJl
c2hJbXBvcnRlZFNjcmlwdHModXJscywgY2FjaGVQb2xpY3ksIFtoYW5kbGVyID0gV1RGTW92ZSho
YW5kbGVyKV0gKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgICAgIGhhbmRsZXItPmNhbGwoV1RG
TW92ZShyZXN1bHQpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIHN0YXRpYyB2b2lkIHBv
c3RNZXNzYWdlVG9Db250YWluZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHNvdXJj
ZURhdGEsIFN0cmluZyYmIHNvdXJjZU9yaWdpbikKIHsKICAgICBpZiAoYXV0byogY29udGFpbmVy
ID0gY29udGV4dC5lbnN1cmVTZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggYTFm
ZGJlZTUwN2Q5MzhjNmE5NjdlODEwZTM3NjE3M2ExZTAwNzliMi4uMjNlMDZjNjFmMmU3ZjUyNThk
YjM0Zjg3ZDA0MDVhYjZlMzUyOTM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaApAQCAtMTI0LDYgKzEyNCw3IEBAIHByb3Rl
Y3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGpvYlJlamVjdGVkSW5TZXJ2ZXIoU2Vydmlj
ZVdvcmtlckpvYklkZW50aWZpZXIsIEV4Y2VwdGlvbkRhdGEmJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JJ
ZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmLCBTaG91bGROb3RpZnlX
aGVuUmVzb2x2ZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZv
clNlcnZlcihTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYmLCBGZXRjaE9wdGlvbnM6OkNhY2hlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlZnJlc2hJbXBvcnRlZFNjcmlwdHMoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIEZldGNo
T3B0aW9uczo6Q2FjaGUsIFZlY3RvcjxVUkw+JiYsIFNlcnZpY2VXb3JrZXJKb2I6OlJlZnJlc2hJ
bXBvcnRlZFNjcmlwdHNDYWxsYmFjayYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlm
aWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYgc291cmNlLCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0
ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHVwZGF0ZVdvcmtlclN0YXRlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VyU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5kZXggNmJhM2QxY2QyM2I0YTJlN2Fh
ODMxOWMwNDQ5ODJkZjRjMjk3ZGQ0NS4uYjRjMmVhMzM2ZTc3N2ZmZjE5N2MxOWI4N2U5MzFmMGNk
ODYwZTI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC0xMjksNiArMTI5LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHdpbGxTZXR0bGVSZWdpc3RyYXRpb25Qcm9taXNlKGJvb2wgc3VjY2Vzcyk7CiAKICAg
ICBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyKCkgZmlu
YWw7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCgpIGZpbmFsIHsgcmV0dXJu
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgU1dDbGllbnRDb25uZWN0aW9uJiBl
bnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCmluZGV4IGZlYzVmMzk2MGRlNDlhOWIw
MjhiMWYwMTQzOWMzMGRhZjdlY2FjZTUuLjZiY2M1ZWU0MDMyY2VkZjA3MWFkOWMwMjE1YTc1OTc4
ZDZjYWI2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VySm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckpvYi5jcHAKQEAgLTk1LDI3ICs5NSw5OCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJK
b2I6OnN0YXJ0U2NyaXB0RmV0Y2goRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKICAg
ICBtX2NsaWVudC5zdGFydFNjcmlwdEZldGNoRm9ySm9iKCp0aGlzLCBjYWNoZVBvbGljeSk7CiB9
CiAKLXZvaWQgU2VydmljZVdvcmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4dChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5
KQorc3RhdGljIFJlc291cmNlUmVxdWVzdCBzY3JpcHRSZXNvdXJjZVJlcXVlc3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgQVNTRVJUKG1f
Y3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSAgICBBU1NFUlQo
IW1fY29tcGxldGVkKTsKLQotICAgIC8vIEZJWE1FOiBXb3JrZXJTY3JpcHRMb2FkZXIgaXMgdGhl
IHdyb25nIGxvYWRlciBjbGFzcyB0byB1c2UgaGVyZSwgYnV0IHRoZXJlJ3Mgbm90aGluZyBlbHNl
IGJldHRlciByaWdodCBub3cuCi0gICAgbV9zY3JpcHRMb2FkZXIgPSBXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmNyZWF0ZSgpOwotCi0gICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgeyBtX2pvYkRhdGEu
c2NyaXB0VVJMIH07CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgeyB1cmwgfTsKICAgICBy
ZXF1ZXN0LnNldEluaXRpYXRvcklkZW50aWZpZXIoY29udGV4dC5yZXNvdXJjZVJlcXVlc3RJZGVu
dGlmaWVyKCkpOwogICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpTZXJ2aWNlV29ya2VyLCAic2NyaXB0Il9zKTsKKyAgICByZXR1cm4gcmVxdWVzdDsKK30KIAor
c3RhdGljIEZldGNoT3B0aW9ucyBzY3JpcHRGZXRjaE9wdGlvbnMoRmV0Y2hPcHRpb25zOjpDYWNo
ZSBjYWNoZVBvbGljeSwgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKK3sK
ICAgICBGZXRjaE9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlv
bnM6Ok1vZGU6OlNhbWVPcmlnaW47CiAgICAgb3B0aW9ucy5jYWNoZSA9IGNhY2hlUG9saWN5Owog
ICAgIG9wdGlvbnMucmVkaXJlY3QgPSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpFcnJvcjsKLSAg
ICBvcHRpb25zLmRlc3RpbmF0aW9uID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2Vydmlj
ZXdvcmtlcjsKKyAgICBvcHRpb25zLmRlc3RpbmF0aW9uID0gZGVzdGluYXRpb247CiAgICAgb3B0
aW9ucy5jcmVkZW50aWFscyA9IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OlNhbWVPcmlnaW47
CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK1NlcnZpY2VXb3JrZXJKb2I6OkltcG9ydGVkU2Ny
aXB0c0xvYWRlcjo6SW1wb3J0ZWRTY3JpcHRzTG9hZGVyKFJlZnJlc2hJbXBvcnRlZFNjcmlwdHND
YWxsYmFjayYmIGNhbGxiYWNrKQorICAgIDogbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkK
K3sKK30KKworU2VydmljZVdvcmtlckpvYjo6SW1wb3J0ZWRTY3JpcHRzTG9hZGVyOjp+SW1wb3J0
ZWRTY3JpcHRzTG9hZGVyKCkKK3sKKyAgICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgbV9jYWxs
YmFjayh7IH0pOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OkltcG9ydGVkU2NyaXB0c0xv
YWRlcjo6bG9hZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8
VVJMPiYgdXJscywgRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKK3sKKyAgICBtX2xv
YWRlcnMucmVzZXJ2ZUNhcGFjaXR5KHVybHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHVybCA6
IHVybHMpIHsKKyAgICAgICAgYXV0byBzY3JpcHRMb2FkZXIgPSBXb3JrZXJTY3JpcHRMb2FkZXI6
OmNyZWF0ZSgpOworICAgICAgICBzY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShjb250
ZXh0LCBzY3JpcHRSZXNvdXJjZVJlcXVlc3QoY29udGV4dCwgdXJsKSwgV29ya2VyU2NyaXB0TG9h
ZGVyOjpTb3VyY2U6OkNsYXNzaWNXb3JrZXJTY3JpcHQsIHNjcmlwdEZldGNoT3B0aW9ucyhjYWNo
ZVBvbGljeSwgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2NyaXB0KSwgQ29udGVudFNlY3Vy
aXR5UG9saWN5RW5mb3JjZW1lbnQ6OkRvTm90RW5mb3JjZSwgU2VydmljZVdvcmtlcnNNb2RlOjpO
b25lLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgICAgIGlmIChz
Y3JpcHRMb2FkZXItPmZhaWxlZCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIG1f
bG9hZGVycy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShzY3JpcHRMb2FkZXIpKTsKKyAgICB9Cisg
ICAgbV9yZW1haW5pbmdMb2FkcyA9IG1fbG9hZGVycy5zaXplKCk7Cit9CisKK3ZvaWQgU2Vydmlj
ZVdvcmtlckpvYjo6SW1wb3J0ZWRTY3JpcHRzTG9hZGVyOjpjYW5jZWwoKQoreworICAgIGF1dG8g
bG9hZGVycyA9IFdURk1vdmUobV9sb2FkZXJzKTsKKyAgICBmb3IgKGF1dG8gbG9hZGVyIDogbG9h
ZGVycykKKyAgICAgICAgbG9hZGVyLT5jYW5jZWwoKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2Vy
Sm9iOjpJbXBvcnRlZFNjcmlwdHNMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKK3sKKyAgICBpZiAo
LS1tX3JlbWFpbmluZ0xvYWRzKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8c3RkOjpw
YWlyPFVSTCwgU2NyaXB0QnVmZmVyPj4gcmVzdWx0czsKKyAgICByZXN1bHRzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobV9sb2FkZXJzLnNpemUoKSk7CisKKyAgICBhdXRvIGxvYWRlcnMgPSBXVEZN
b3ZlKG1fbG9hZGVycyk7CisgICAgZm9yIChhdXRvIGxvYWRlciA6IGxvYWRlcnMpIHsKKyAgICAg
ICAgaWYgKCFsb2FkZXItPmZhaWxlZCgpKQorICAgICAgICAgICAgcmVzdWx0cy51bmNoZWNrZWRB
cHBlbmQoc3RkOjptYWtlX3BhaXIobG9hZGVyLT51cmwoKSwgbG9hZGVyLT5zY3JpcHQoKSkpOwor
ICAgIH0KKworICAgIG1fY2FsbGJhY2soV1RGTW92ZShyZXN1bHRzKSk7Cit9CisKKwordm9pZCBT
ZXJ2aWNlV29ya2VySm9iOjpyZWZyZXNoSW1wb3J0ZWRTY3JpcHRzKGNvbnN0IFZlY3RvcjxVUkw+
JiB1cmxzLCBGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5LCBSZWZyZXNoSW1wb3J0ZWRT
Y3JpcHRzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVh
ZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworICAgIEFTU0VSVCghbV9jb21wbGV0ZWQp
OworCisgICAgYXV0byogY29udGV4dCA9IG1fY2xpZW50LmNvbnRleHQoKTsKKyAgICBpZiAoIWNv
bnRleHQpIHsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1faW1wb3J0ZWRTY3JpcHRzTG9hZGVyID0gbWFrZVVuaXF1ZTxJbXBvcnRlZFNjcmlw
dHNMb2FkZXI+KFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX2ltcG9ydGVkU2NyaXB0c0xvYWRl
ci0+bG9hZCgqY29udGV4dCwgdXJscywgY2FjaGVQb2xpY3kpOworfQorCit2b2lkIFNlcnZpY2VX
b3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0aENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKK3sKKyAgICBBU1NFUlQo
bV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworICAgIEFTU0VS
VCghbV9jb21wbGV0ZWQpOwogCiAgICAgYXV0byBzb3VyY2UgPSBtX2pvYkRhdGEud29ya2VyVHlw
ZSA9PSBXb3JrZXJUeXBlOjpNb2R1bGUgPyBXb3JrZXJTY3JpcHRMb2FkZXI6OlNvdXJjZTo6TW9k
dWxlU2NyaXB0IDogV29ya2VyU2NyaXB0TG9hZGVyOjpTb3VyY2U6OkNsYXNzaWNXb3JrZXJTY3Jp
cHQ7Ci0gICAgbV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShjb250ZXh0LCBXVEZN
b3ZlKHJlcXVlc3QpLCBzb3VyY2UsIFdURk1vdmUob3B0aW9ucyksIENvbnRlbnRTZWN1cml0eVBv
bGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2UsIFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSwg
KnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworCisgICAgbV9zY3JpcHRMb2Fk
ZXIgPSBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZSgpOworICAgIG1fc2NyaXB0TG9hZGVyLT5s
b2FkQXN5bmNocm9ub3VzbHkoY29udGV4dCwgc2NyaXB0UmVzb3VyY2VSZXF1ZXN0KGNvbnRleHQs
IG1fam9iRGF0YS5zY3JpcHRVUkwpLCBzb3VyY2UsIHNjcmlwdEZldGNoT3B0aW9ucyhjYWNoZVBv
bGljeSwgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2VydmljZXdvcmtlciksIENvbnRlbnRT
ZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2UsIFNlcnZpY2VXb3JrZXJzTW9k
ZTo6Tm9uZSwgKnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQogCiBSZXNv
dXJjZUVycm9yIFNlcnZpY2VXb3JrZXJKb2I6OnZhbGlkYXRlU2VydmljZVdvcmtlclJlc3BvbnNl
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKQEAgLTE4MCwxMiArMjUxLDE0IEBAIHZvaWQgU2VydmljZVdvcmtlckpv
Yjo6bm90aWZ5RmluaXNoZWQoKQogCiBib29sIFNlcnZpY2VXb3JrZXJKb2I6OmNhbmNlbFBlbmRp
bmdMb2FkKCkKIHsKLSAgICBpZiAoIW1fc2NyaXB0TG9hZGVyKQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKGF1dG8gaW1wb3J0ZWRTY3JpcHRzTG9hZGVyID0gV1RGTW92ZShtX2ltcG9y
dGVkU2NyaXB0c0xvYWRlcikpCisgICAgICAgIGltcG9ydGVkU2NyaXB0c0xvYWRlci0+Y2FuY2Vs
KCk7CiAKLSAgICBtX3NjcmlwdExvYWRlci0+Y2FuY2VsKCk7Ci0gICAgbV9zY3JpcHRMb2FkZXIg
PSBudWxscHRyOwotICAgIHJldHVybiB0cnVlOworICAgIGlmIChhdXRvIGxvYWRlciA9IFdURk1v
dmUobV9zY3JpcHRMb2FkZXIpKSB7CisgICAgICAgIG1fc2NyaXB0TG9hZGVyLT5jYW5jZWwoKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iLmgKaW5kZXggM2ZlYjIwYThkOGE4OTI4M2Q1YzZhMjJmZTg5ZTdk
YzU5M2QyNmE0Zi4uZjM1NjY3MzQxMGE2OTcyZWVmMDY4NmNhYzRiZTIzMGJiOTMxYjhjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5o
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCiAjaW5j
bHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVy
Q2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC01OCw2ICs1OSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KGJvb2wpOwogICAgIHZvaWQgc3RhcnRT
Y3JpcHRGZXRjaChGZXRjaE9wdGlvbnM6OkNhY2hlKTsKIAorICAgIHVzaW5nIFJlZnJlc2hJbXBv
cnRlZFNjcmlwdHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHN0ZDo6
cGFpcjxVUkwsIFNjcmlwdEJ1ZmZlcj4+JiYpPjsKKyAgICB2b2lkIHJlZnJlc2hJbXBvcnRlZFNj
cmlwdHMoY29uc3QgVmVjdG9yPFVSTD4mLCBGZXRjaE9wdGlvbnM6OkNhY2hlLCBSZWZyZXNoSW1w
b3J0ZWRTY3JpcHRzQ2FsbGJhY2smJik7CisKICAgICB1c2luZyBJZGVudGlmaWVyID0gU2Vydmlj
ZVdvcmtlckpvYklkZW50aWZpZXI7CiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9qb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyOyB9CiAKQEAgLTg0
LDggKzg4LDI2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fY29tcGxldGVkIHsgZmFsc2UgfTsK
IAorICAgIGNsYXNzIEltcG9ydGVkU2NyaXB0c0xvYWRlciA6IHB1YmxpYyBXb3JrZXJTY3JpcHRM
b2FkZXJDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJs
aWM6CisgICAgICAgIGV4cGxpY2l0IEltcG9ydGVkU2NyaXB0c0xvYWRlcihSZWZyZXNoSW1wb3J0
ZWRTY3JpcHRzQ2FsbGJhY2smJik7CisgICAgICAgIH5JbXBvcnRlZFNjcmlwdHNMb2FkZXIoKTsK
KyAgICAgICAgdm9pZCBsb2FkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBWZWN0b3I8
VVJMPiYsIEZldGNoT3B0aW9uczo6Q2FjaGUpOworICAgICAgICB2b2lkIGNhbmNlbCgpOworCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2Fk
ZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyB9CisgICAgICAg
IHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5hbDsKKworICAgICAgICBSZWZyZXNoSW1wb3J0ZWRT
Y3JpcHRzQ2FsbGJhY2sgbV9jYWxsYmFjazsKKyAgICAgICAgVmVjdG9yPFJlZjxXb3JrZXJTY3Jp
cHRMb2FkZXI+PiBtX2xvYWRlcnM7CisgICAgICAgIHNpemVfdCBtX3JlbWFpbmluZ0xvYWRzIHsg
MCB9OworICAgIH07CisKICAgICBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyIG1fY29u
dGV4dElkZW50aWZpZXI7CiAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExvYWRlcj4gbV9zY3JpcHRM
b2FkZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltcG9ydGVkU2NyaXB0c0xvYWRlcj4gbV9pbXBv
cnRlZFNjcmlwdHNMb2FkZXI7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFJlZjxUaHJlYWQ+
IG1fY3JlYXRpb25UaHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKaW5k
ZXggMjMxNDk0MTg4MTlhNWUxMjlmMDRiODZiYTg0MzNmNzQzYzdkOWQ2ZC4uNmE0OGE5ZjAwMWFk
NmVjZjI3N2JlMmY5OGE5YjYxNmI5NzdlYmRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oCkBAIC0zNiw2ICsz
Niw3IEBAIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKIGNsYXNz
IEV4Y2VwdGlvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBTY3JpcHRCdWZmZXI7Citj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VydmljZVdvcmtlckpvYjsKIHN0
cnVjdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Owogc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EYXRhOwpAQCAtNDUsNiArNDYsNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VySm9iQ2xp
ZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TZXJ2aWNlV29ya2VySm9iQ2xpZW50KCkgPSBk
ZWZhdWx0OwogCisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KCkg
PSAwOwogICAgIHZpcnR1YWwgU2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciBjb250ZXh0
SWRlbnRpZmllcigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBqb2JGYWlsZWRXaXRoRXhjZXB0
aW9uKFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBFeGNlcHRpb24mKSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGRj
NjExMGYxNGJlOGVmMzkxMmY1MWFiMTIxZTNkMzIxODVhZWY1MDUuLjFjN2EwYTI0YmMwOGY5MTNl
NjU5ZTMxY2RlMTZiMGY1ZGNkMmRmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0zNDUsOSArMzQ1LDkgQEAgdm9pZCBT
V1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwg
Q29tcGxldGlvbkhhbmRsZXIKICAgICAgICAgbV9yZWdpc3RyYXRpb25TdG9yZS0+Zmx1c2hDaGFu
Z2VzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6Q29u
bmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0
JiByZXN1bHQpCit2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1Njcmlw
dEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlk
ZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlv
bktleSwgV29ya2VyRmV0Y2hSZXN1bHQmJiByZXN1bHQpCiB7Ci0gICAgbV9zZXJ2ZXIuc2NyaXB0
RmV0Y2hGaW5pc2hlZChqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCByZXN1bHQp
OworICAgIG1fc2VydmVyLnNjcmlwdEZldGNoRmluaXNoZWQoam9iRGF0YUlkZW50aWZpZXIsIHJl
Z2lzdHJhdGlvbktleSwgV1RGTW92ZShyZXN1bHQpKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6Q29u
bmVjdGlvbjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3QgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYga2V5KQpAQCAtNTA3LDYgKzUwNywyNyBAQCBVUkwgc3RhdGljIGlu
bGluZSBvcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKICAgICByZXR1cm4g
dXJsOwogfQogCitSZXNvdXJjZVJlcXVlc3QgU1dTZXJ2ZXI6OmNyZWF0ZVNjcmlwdFJlcXVlc3Qo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQoreworICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0IHsgdXJsIH07CisKKyAgICBhdXRvIHRvcE9yaWdpbiA9IGpvYkRhdGEudG9wT3JpZ2lu
LnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKGpvYkRhdGEuc2NyaXB0VVJMKTsKKworICAgIHJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQ
YXJ0aXRpb24oam9iRGF0YS5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAgcmVxdWVzdC5z
ZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CisgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2ll
cyhvcmlnaW5VUkwodG9wT3JpZ2luKSk7CisKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6T3JpZ2luLCBvcmlnaW4tPnRvU3RyaW5nKCkpOworICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZXJ2aWNlV29ya2VyLCAic2Ny
aXB0Il9zKTsKKyAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihvcmlnaW5VUkwob3JpZ2luKS5z
dHJpbmcoKSk7CisgICAgcmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KHNlcnZpY2VXb3JrZXJDbGll
bnRVc2VyQWdlbnQoQ2xpZW50T3JpZ2luIHsgam9iRGF0YS50b3BPcmlnaW4sIFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRVUkwpLT5kYXRhKCkgfSkpOworICAgIHJlcXVlc3Qu
c2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7CisgICAgcmVxdWVzdC5zZXRJ
c0FwcEluaXRpYXRlZChyZWdpc3RyYXRpb24uaXNBcHBJbml0aWF0ZWQoKSk7CisKKyAgICByZXR1
cm4gcmVxdWVzdDsKK30KKwogdm9pZCBTV1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRjaChjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lz
dHJhdGlvbikKIHsKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZlciBpc3N1aW5nIHN0YXJ0
U2NyaXB0RmV0Y2ggZm9yIGN1cnJlbnQgam9iICVzIGluIGNsaWVudCIsIGpvYkRhdGEuaWRlbnRp
ZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTUyNiwzMiArNTQ3LDQy
IEBAIHZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGEmIGpvYkRhdGEsIFNXU2VydmVyUmVnCiAgICAgaWYgKGpvYkRhdGEuY29ubmVjdGlvbklk
ZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpIHsKICAgICAgICAgQVNTRVJUKGpv
YkRhdGEudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlKTsKICAgICAgICAgLy8g
VGhpcyBpcyBhIHNvZnQtdXBkYXRlIGpvYiwgY3JlYXRlIGRpcmVjdGx5IGEgbmV0d29yayBsb2Fk
IHRvIGZldGNoIHRoZSBzY3JpcHQuCi0gICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0IHsg
am9iRGF0YS5zY3JpcHRVUkwgfTsKLQotICAgICAgICBhdXRvIHRvcE9yaWdpbiA9IGpvYkRhdGEu
dG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShqb2JEYXRhLnNjcmlwdFVSTCk7Ci0KLSAgICAgICAgcmVxdWVzdC5z
ZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihqb2JEYXRhLmRvbWFpbkZvckNhY2hlUGFydGl0aW9u
KTsKLSAgICAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7Ci0gICAgICAgIHJlcXVl
c3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMob3JpZ2luVVJMKHRvcE9yaWdpbikpOwotCi0gICAg
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpPcmlnaW4sIG9y
aWdpbi0+dG9TdHJpbmcoKSk7Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpTZXJ2aWNlV29ya2VyLCAic2NyaXB0Il9zKTsKLSAgICAgICAgcmVxdWVz
dC5zZXRIVFRQUmVmZXJyZXIob3JpZ2luVVJMKG9yaWdpbikuc3RyaW5nKCkpOwotICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoc2VydmljZVdvcmtlckNsaWVudFVzZXJBZ2VudChDbGll
bnRPcmlnaW4geyBqb2JEYXRhLnRvcE9yaWdpbiwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShqb2JE
YXRhLnNjcmlwdFVSTCktPmRhdGEoKSB9KSk7Ci0gICAgICAgIHJlcXVlc3Quc2V0UHJpb3JpdHko
UmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7Ci0gICAgICAgIHJlcXVlc3Quc2V0SXNBcHBJbml0
aWF0ZWQocmVnaXN0cmF0aW9uLmlzQXBwSW5pdGlhdGVkKCkpOwotCi0gICAgICAgIG1fc29mdFVw
ZGF0ZUNhbGxiYWNrKFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsgam9iRGF0YSB9LCBzaG91bGRSZWZy
ZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCksIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCBqb2JEYXRhSWRlbnRpZmllciA9IGpvYkRhdGEuaWRlbnRpZmllcigpLCByZWdpc3RyYXRpb25L
ZXkgPSBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpXShhdXRvJiByZXN1bHQpIHsKKyAgICAgICAg
bV9zb2Z0VXBkYXRlQ2FsbGJhY2soU2VydmljZVdvcmtlckpvYkRhdGEgeyBqb2JEYXRhIH0sIHNo
b3VsZFJlZnJlc2hDYWNoZSwgY3JlYXRlU2NyaXB0UmVxdWVzdChqb2JEYXRhLnNjcmlwdFVSTCwg
am9iRGF0YSwgcmVnaXN0cmF0aW9uKSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGpv
YkRhdGFJZGVudGlmaWVyID0gam9iRGF0YS5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktleSA9
IGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCldKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAg
IGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+c2NyaXB0RmV0Y2hGaW5p
c2hlZChqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCByZXN1bHQpOworICAgICAg
ICAgICAgICAgIHdlYWtUaGlzLT5zY3JpcHRGZXRjaEZpbmlzaGVkKGpvYkRhdGFJZGVudGlmaWVy
LCByZWdpc3RyYXRpb25LZXksIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoY29ubmVjdGlvbiwgIklm
IHRoZSBjb25uZWN0aW9uIHdhcyBsb3N0LCB0aGlzIGpvYiBzaG91bGQgaGF2ZSBiZWVuIGNhbmNl
bGxlZCIpOwogfQogCi12b2lkIFNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgV29ya2Vy
RmV0Y2hSZXN1bHQmIHJlc3VsdCkKK2NsYXNzIFJlZnJlc2hJbXBvcnRlZFNjcmlwdHNIYW5kbGVy
IDogcHVibGljIFJlZkNvdW50ZWQ8UmVmcmVzaEltcG9ydGVkU2NyaXB0c0hhbmRsZXI+IHsKK3B1
YmxpYzoKKyAgICB1c2luZyBDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PHN0ZDo6cGFpcjxVUkwsIFNjcmlwdEJ1ZmZlcj4+JiYpPjsKKyAgICBzdGF0aWMgUmVmPFJlZnJl
c2hJbXBvcnRlZFNjcmlwdHNIYW5kbGVyPiBjcmVhdGUoc2l6ZV90IGV4cGVjdGVkSXRlbXMsIENh
bGxiYWNrJiYgY2FsbGJhY2spIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVmcmVzaEltcG9ydGVk
U2NyaXB0c0hhbmRsZXIoZXhwZWN0ZWRJdGVtcywgV1RGTW92ZShjYWxsYmFjaykpKTsgfQorCisg
ICAgdm9pZCBhZGQoY29uc3QgVVJMJiB1cmwsIFdvcmtlckZldGNoUmVzdWx0JiYgcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgaWYgKHJlc3VsdC5lcnJvci5pc051bGwoKSkKKyAgICAgICAgICAgIG1f
c2NyaXB0cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIodXJsLCBXVEZNb3ZlKHJlc3VsdC5zY3JpcHQp
KSk7CisKKyAgICAgICAgaWYgKCEtLW1fcmVtYWluaW5nSXRlbXMpCisgICAgICAgICAgICBtX2Nh
bGxiYWNrKHN0ZDo6ZXhjaGFuZ2UobV9zY3JpcHRzLCB7IH0pKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgUmVmcmVzaEltcG9ydGVkU2NyaXB0c0hhbmRsZXIoc2l6ZV90IGV4cGVjdGVkSXRlbXMs
IENhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgICAgIDogbV9yZW1haW5pbmdJdGVtcyhleHBlY3Rl
ZEl0ZW1zKQorICAgICAgICAsIG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCisgICAgewor
ICAgIH0KKworICAgIHNpemVfdCBtX3JlbWFpbmluZ0l0ZW1zOworICAgIENhbGxiYWNrIG1fY2Fs
bGJhY2s7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxVUkwsIFNjcmlwdEJ1ZmZlcj4+IG1fc2NyaXB0
czsKK307CisKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBXb3JrZXJGZXRjaFJlc3Vs
dCYmIHJlc3VsdCkKIHsKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZlciBoYW5kbGluZyBz
Y3JpcHRGZXRjaEZpbmlzaGVkIGZvciBjdXJyZW50IGpvYiAlcyBpbiBjbGllbnQiLCBqb2JEYXRh
SWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTU2MSw3ICs1
OTIsMzkgQEAgdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGEKICAgICBpZiAoIWpvYlF1ZXVlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBqb2JRdWV1ZS0+c2NyaXB0RmV0Y2hGaW5pc2hlZChqb2JEYXRh
SWRlbnRpZmllciwgcmVzdWx0KTsKKyAgICBqb2JRdWV1ZS0+c2NyaXB0RmV0Y2hGaW5pc2hlZChq
b2JEYXRhSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKK30KKwordm9pZCBTV1NlcnZlcjo6
cmVmcmVzaEltcG9ydGVkU2NyaXB0cyhjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0
YSwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVmVjdG9yPFVSTD4m
IHVybHMpCit7CisgICAgUmVmcmVzaEltcG9ydGVkU2NyaXB0c0hhbmRsZXI6OkNhbGxiYWNrIGNh
bGxiYWNrID0gW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGpvYkRhdGFJZGVudGlmaWVy
ID0gam9iRGF0YS5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktleSA9IGpvYkRhdGEucmVnaXN0
cmF0aW9uS2V5KCldKGF1dG8mJiBzY3JpcHRzKSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAg
ICAgICAgICAgIHdlYWtUaGlzLT5yZWZyZXNoSW1wb3J0ZWRTY3JpcHRzRmluaXNoZWQoam9iRGF0
YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleSwgc2NyaXB0cyk7CisgICAgfTsKKyAgICBib29s
IHNob3VsZFJlZnJlc2hDYWNoZSA9IHJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSgpID09IFNl
cnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6Tm9uZSB8fCAocmVnaXN0cmF0aW9uLmdldE5ld2Vz
dFdvcmtlcigpICYmIHJlZ2lzdHJhdGlvbi5pc1N0YWxlKCkpOworCisgICAgYXV0byogY29ubmVj
dGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7
CisgICAgaWYgKGNvbm5lY3Rpb24pIHsKKyAgICAgICAgY29ubmVjdGlvbi0+cmVmcmVzaEltcG9y
dGVkU2NyaXB0cyhqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLCBzaG91bGRSZWZy
ZXNoQ2FjaGUgPyBGZXRjaE9wdGlvbnM6OkNhY2hlOjpOb0NhY2hlIDogRmV0Y2hPcHRpb25zOjpD
YWNoZTo6RGVmYXVsdCwgdXJscywgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQVNTRVJUKGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSA9PSBQ
cm9jZXNzOjppZGVudGlmaWVyKCkpOworICAgIGF1dG8gaGFuZGxlciA9IFJlZnJlc2hJbXBvcnRl
ZFNjcmlwdHNIYW5kbGVyOjpjcmVhdGUodXJscy5zaXplKCksIFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICBmb3IgKGF1dG8mIHVybCA6IHVybHMpIHsKKyAgICAgICAgbV9zb2Z0VXBkYXRlQ2FsbGJh
Y2soU2VydmljZVdvcmtlckpvYkRhdGEgeyBqb2JEYXRhIH0sIHNob3VsZFJlZnJlc2hDYWNoZSwg
Y3JlYXRlU2NyaXB0UmVxdWVzdCh1cmwsIGpvYkRhdGEsIHJlZ2lzdHJhdGlvbiksIFtoYW5kbGVy
LCB1cmwsIHNpemUgPSB1cmxzLnNpemUoKV0oYXV0byYmIHJlc3VsdCkgeworICAgICAgICAgICAg
aGFuZGxlci0+YWRkKHVybCwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgfSk7CisgICAgfQor
fQorCit2b2lkIFNXU2VydmVyOjpyZWZyZXNoSW1wb3J0ZWRTY3JpcHRzRmluaXNoZWQoY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBWZWN0
b3I8c3RkOjpwYWlyPFVSTCwgU2NyaXB0QnVmZmVyPj4mIHNjcmlwdHMpCit7CisgICAgYXV0byBq
b2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRpb25LZXkpOworICAgIGlmICgham9i
UXVldWUpCisgICAgICAgIHJldHVybjsKKworICAgIGpvYlF1ZXVlLT5pbXBvcnRlZFNjcmlwdHNG
ZXRjaEZpbmlzaGVkKGpvYkRhdGFJZGVudGlmaWVyLCBzY3JpcHRzKTsKIH0KIAogdm9pZCBTV1Nl
cnZlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJX
b3JrZXImIHdvcmtlciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDJhM2Q2ZTA2MWNkNTgw
OTA4ZDc2NmZhMzNkOWQxNzQ0ZDJlNDU4NWYuLmFkYWFjMzA1MWQ0MGU1YjZlMGRjNDQzNTRmYmJj
ZjdjOGFjOWFjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgcHJvdGVjdGVk
OgogICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKFNXU2VydmVyJiwgSWRlbnRpZmll
cik7CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdElu
U2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpOworICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYsIFdvcmtlckZldGNoUmVzdWx0JiYpOwogICAgICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyKTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aGVuUmVn
aXN0cmF0aW9uUmVhZHkoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0
IFVSTCYgY2xpZW50VVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPiYmKTsKQEAgLTExOCw2ICsxMTgsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uSm9iSW5DbGll
bnQoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2JJbkNsaWVudChTZXJ2aWNlV29ya2VySm9i
SWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgcmVn
aXN0cmF0aW9uUmVzdWx0KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFNjcmlwdEZl
dGNoSW5DbGllbnQoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmLCBGZXRjaE9wdGlvbnM6OkNhY2hlKSA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCByZWZyZXNoSW1wb3J0ZWRTY3JpcHRzKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlm
aWVyLCBGZXRjaE9wdGlvbnM6OkNhY2hlLCBjb25zdCBWZWN0b3I8VVJMPiYsIFNlcnZpY2VXb3Jr
ZXJKb2I6OlJlZnJlc2hJbXBvcnRlZFNjcmlwdHNDYWxsYmFjayYmKSA9IDA7CiAKICAgICAgICAg
c3RydWN0IFJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdCB7CiAgICAgICAgICAgICBTZWN1cml0eU9y
aWdpbkRhdGEgdG9wT3JpZ2luOwpAQCAtMTMwLDcgKzEzMSw3IEBAIHB1YmxpYzoKICAgICAgICAg
VmVjdG9yPFJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdD4gbV9yZWdpc3RyYXRpb25SZWFkeVJlcXVl
c3RzOwogICAgIH07CiAKLSAgICB1c2luZyBTb2Z0VXBkYXRlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2Fj
aGUsIFJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtl
ckZldGNoUmVzdWx0Jik+JiYpPjsKKyAgICB1c2luZyBTb2Z0VXBkYXRlQ2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZy
ZXNoQ2FjaGUsIFJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdvcmtl
ckZldGNoUmVzdWx0JiYpPiYmKT47CiAgICAgdXNpbmcgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25D
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
LCBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50
aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpPjsKICAgICB1c2luZyBBcHBCb3VuZERvbWFpbnND
YWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik+OwogICAgIFdFQkNPUkVfRVhQT1JUIFNX
U2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmLCBib29sIHByb2Nlc3NUZXJtaW5hdGlv
bkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBB
TDo6U2Vzc2lvbklELCBib29sIHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9y
VGVzdGluZywgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQsIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IG92ZXJyaWRlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkNvdW50VGVzdGluZ1Zh
bHVlLCBTb2Z0VXBkYXRlQ2FsbGJhY2smJiwgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFj
ayYmLCBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayYmKTsKQEAgLTE1Niw2ICsxNTcsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJK
b2JEYXRhJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmLCBTaG91bGROb3Rp
ZnlXaGVuUmVzb2x2ZWQpOwogICAgIHZvaWQgcmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iKGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwogICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRj
aChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJik7Cisg
ICAgdm9pZCByZWZyZXNoSW1wb3J0ZWRTY3JpcHRzKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
JiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBWZWN0b3I8VVJMPiYpOwogCiAgICAgdm9p
ZCB1cGRhdGVXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25z
dCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMmLCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgTWVtb3J5Q29tcGFjdFJvYmluSG9vZEhhc2hNYXA8
VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmLCBzdGQ6Om9w
dGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFn
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChTV1NlcnZlcldvcmtlciYp
OwpAQCAtMTc4LDYgKzE4MCw3IEBAIHB1YmxpYzoKIAogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdp
blN0b3JlKCkgeyByZXR1cm4gbV9vcmlnaW5TdG9yZTsgfQogCisgICAgdm9pZCByZWZyZXNoSW1w
b3J0ZWRTY3JpcHRzRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
JiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8VVJMLCBTY3JpcHRCdWZmZXI+PiYpOwogICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxl
ZFRvU3RhcnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXI+JiwgU1dTZXJ2ZXJXb3JrZXImLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQg
c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXI+JiwgU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIGRpZEZpbmlzaElu
c3RhbGwoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+
JiwgU1dTZXJ2ZXJXb3JrZXImLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwpAQCAtMjU5LDcgKzI2Miw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhbGxvd0xvb3BiYWNrSVBBZGRyZXNzKGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJKb2JUeXBlLCBib29sLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKIAotICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKTsKKyAgICB2b2lkIHNjcmlwdEZl
dGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdvcmtlckZldGNoUmVzdWx0JiYpOwogCiAg
ICAgdm9pZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9uKiwgY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpOwogCkBAIC0yODMsNiArMjg2LDggQEAgcHJp
dmF0ZToKICAgICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhjb25zdCBD
bGllbnRPcmlnaW4mLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAgICAgdm9pZCB3
aGVuSW1wb3J0SXNDb21wbGV0ZWRJZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogCisgICAgUmVzb3VyY2VSZXF1ZXN0IGNyZWF0ZVNjcmlwdFJlcXVlc3QoY29uc3QgVVJMJiwg
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOworCiAg
ICAgSGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8
Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5LCBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9zY29wZVRvUmVn
aXN0cmF0aW9uTWFwOwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fcmVnaXN0cmF0
aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IGQ5MjM5NGQxMDIyODg0MmVkM2M2YmRiMDZl
OGU4MzJjM2ZjNDA4MWQuLmVlOWViYmQ5NTM3ZTAxMWJjM2RjYTI2MGRlNjFlZGNhOGRjMTY5OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgYm9vbCBkb0Nl
cnRpZmljYXRlc01hdGNoKGNvbnN0IENlcnRpZmljYXRlSW5mbyYgZmlyc3QsIGNvbnN0IENlcnRp
ZmljYXRlSQogI2VuZGlmCiB9CiAKLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hG
aW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVu
dGlmaWVyLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQordm9pZCBTV1NlcnZlckpv
YlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRl
bnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFdvcmtlckZldGNoUmVzdWx0JiYgcmVzdWx0KQog
ewogICAgIGlmICghaXNDdXJyZW50bHlQcm9jZXNzaW5nSm9iKGpvYkRhdGFJZGVudGlmaWVyKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTAxLDIwICsxMDEsNTIgQEAgdm9pZCBTV1NlcnZlckpvYlF1
ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
ZmllciYKICAgICAvLyBmbGFnIHNldCwgYW5kIHNjcmlwdCdzIHNvdXJjZSB0ZXh0IGlzIGEgYnl0
ZS1mb3ItYnl0ZSBtYXRjaCB3aXRoIG5ld2VzdFdvcmtlcidzIHNjcmlwdCByZXNvdXJjZSdzIHNv
dXJjZQogICAgIC8vIHRleHQsIHRoZW46CiAgICAgaWYgKG5ld2VzdFdvcmtlciAmJiBlcXVhbEln
bm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCksIGpvYi5z
Y3JpcHRVUkwpICYmIG5ld2VzdFdvcmtlci0+dHlwZSgpID09IGpvYi53b3JrZXJUeXBlICYmIHJl
c3VsdC5zY3JpcHQgPT0gbmV3ZXN0V29ya2VyLT5zY3JpcHQoKSAmJiBkb0NlcnRpZmljYXRlc01h
dGNoKHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlmaWNhdGVJbmZv
KCkpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVy
Sm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQsIHNjcmlwdCBhbmQgY2VydGlmaWNhdGUgYXJl
IG1hdGNoaW5nIGZvciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0cmF0aW9uLT5p
ZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICAgICAgYXV0byBzY3JpcHRVUkxzID0gbmV3
ZXN0V29ya2VyLT5pbXBvcnRlZFNjcmlwdFVSTHMoKTsKKyAgICAgICAgaWYgKCFzY3JpcHRVUkxz
LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbV93b3JrZXJGZXRjaFJlc3VsdCA9IFdURk1vdmUo
cmVzdWx0KTsKKyAgICAgICAgICAgIG1fc2VydmVyLnJlZnJlc2hJbXBvcnRlZFNjcmlwdHMoam9i
LCAqcmVnaXN0cmF0aW9uLCBzY3JpcHRVUkxzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCiAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm9uIGNsYXNzaWMgc2NyaXB0cywgY2hlY2sg
dGhlIHNjcmlwdOKAmXMgbW9kdWxlIHJlY29yZCdzIFtbRUNNQVNjcmlwdENvZGVdXS4KIAotICAg
ICAgICAvLyBJbnZva2UgUmVzb2x2ZSBKb2IgUHJvbWlzZSB3aXRoIGpvYiBhbmQgcmVnaXN0cmF0
aW9uLgotICAgICAgICBtX3NlcnZlci5yZXNvbHZlUmVnaXN0cmF0aW9uSm9iKGpvYiwgcmVnaXN0
cmF0aW9uLT5kYXRhKCksIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZDo6Tm8pOworICAgICAgICBS
RUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRG
ZXRjaEZpbmlzaGVkLCBzY3JpcHQsIGNlcnRpZmljYXRlIGFuZCBpbXBvcnRlZCBzY3JpcHRzIGFy
ZSBtYXRjaGluZyBmb3IgcmVnaXN0cmF0aW9uSUQ9JWxsdSIsIHRoaXMsIHJlZ2lzdHJhdGlvbi0+
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBzY3JpcHRBbmRJbXBvcnRlZFNjcmlw
dHNGZXRjaEZpbmlzaGVkKGpvYiwgKnJlZ2lzdHJhdGlvbik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKLSAgICAgICAgLy8gSW52b2tlIEZpbmlzaCBKb2Igd2l0aCBqb2IgYW5kIGFib3J0IHRo
ZXNlIHN0ZXBzLgotICAgICAgICBmaW5pc2hDdXJyZW50Sm9iKCk7CisgICAgbV9zZXJ2ZXIudXBk
YXRlV29ya2VyKGpvYi5pZGVudGlmaWVyKCksICpyZWdpc3RyYXRpb24sIGpvYi5zY3JpcHRVUkws
IHJlc3VsdC5zY3JpcHQsIHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIHJlc3VsdC5jb250ZW50U2Vj
dXJpdHlQb2xpY3ksIHJlc3VsdC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCByZXN1bHQucmVm
ZXJyZXJQb2xpY3ksIGpvYi53b3JrZXJUeXBlLCB7IH0sIGpvYi5zZXJ2aWNlV29ya2VyUGFnZUlk
ZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6aW1wb3J0ZWRTY3JpcHRz
RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRh
dGFJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFVSTCwgU2NyaXB0QnVmZmVyPj4m
IGltcG9ydGVkU2NyaXB0cykKK3sKKyAgICBpZiAoIWlzQ3VycmVudGx5UHJvY2Vzc2luZ0pvYihq
b2JEYXRhSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIGpvYiA9IGZp
cnN0Sm9iKCk7CisKKyAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5nZXRSZWdpc3Ry
YXRpb24obV9yZWdpc3RyYXRpb25LZXkpOworICAgIGlmICghcmVnaXN0cmF0aW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvKiBuZXdlc3RXb3JrZXIgPSByZWdpc3RyYXRpb24tPmdldE5l
d2VzdFdvcmtlcigpOworICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgbmV3ZXN0V29ya2VyLT5tYXRj
aGluZ0ltcG9ydGVkU2NyaXB0cyhpbXBvcnRlZFNjcmlwdHMpKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVldWU6OmltcG9ydGVkU2NyaXB0
c0ZldGNoRmluaXNoZWQsIHNjcmlwdCwgY2VydGlmaWNhdGUgYW5kIGltcG9ydGVkIHNjcmlwdHMg
YXJlIG1hdGNoaW5nIGZvciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0cmF0aW9u
LT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHNjcmlwdEFuZEltcG9ydGVkU2Ny
aXB0c0ZldGNoRmluaXNoZWQoam9iLCAqcmVnaXN0cmF0aW9uKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIC8vIEZJWE1FOiBVcGRhdGUgYWxsIHRoZSBpbXBvcnRlZCBzY3JpcHRzIGFz
IHBlciBzcGVjLiBGb3Igbm93LCB3ZSBqdXN0IGRvIGFzIGlmIHRoZXJlIGlzIG5vbmUuCisgICAg
bV9zZXJ2ZXIudXBkYXRlV29ya2VyKGpvYi5pZGVudGlmaWVyKCksICpyZWdpc3RyYXRpb24sIGpv
Yi5zY3JpcHRVUkwsIG1fd29ya2VyRmV0Y2hSZXN1bHQuc2NyaXB0LCBtX3dvcmtlckZldGNoUmVz
dWx0LmNlcnRpZmljYXRlSW5mbywgbV93b3JrZXJGZXRjaFJlc3VsdC5jb250ZW50U2VjdXJpdHlQ
b2xpY3ksIG1fd29ya2VyRmV0Y2hSZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgbV93
b3JrZXJGZXRjaFJlc3VsdC5yZWZlcnJlclBvbGljeSwgam9iLndvcmtlclR5cGUsIHsgfSwgam9i
LnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpKTsKK30KIAotICAgIG1fc2VydmVyLnVwZGF0
ZVdvcmtlcihqb2IuaWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9uLCBqb2Iuc2NyaXB0VVJMLCBy
ZXN1bHQuc2NyaXB0LCByZXN1bHQuY2VydGlmaWNhdGVJbmZvLCByZXN1bHQuY29udGVudFNlY3Vy
aXR5UG9saWN5LCByZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgcmVzdWx0LnJlZmVy
cmVyUG9saWN5LCBqb2Iud29ya2VyVHlwZSwgeyB9LCBqb2Iuc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyKCkpOwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRBbmRJbXBvcnRlZFNjcmlw
dHNGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IsIFNXU2VydmVy
UmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCit7CisgICAgLy8gSW52b2tlIFJlc29sdmUgSm9i
IFByb21pc2Ugd2l0aCBqb2IgYW5kIHJlZ2lzdHJhdGlvbi4KKyAgICBtX3NlcnZlci5yZXNvbHZl
UmVnaXN0cmF0aW9uSm9iKGpvYiwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2hvdWxkTm90aWZ5V2hl
blJlc29sdmVkOjpObyk7CisKKyAgICAvLyBJbnZva2UgRmluaXNoIEpvYiB3aXRoIGpvYiBhbmQg
YWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgZmluaXNoQ3VycmVudEpvYigpOwogfQogCiAvLyBodHRw
czovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jdXBkYXRlLWFsZ29yaXRobQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9i
UXVldWUuaAppbmRleCAzZDk2ODA2NzllNGYzODZjODhhY2YwZTg1NWQzYWY4NGRlY2I0MDE5Li4y
YWRiYjg1NTU4NmMxMjAwNDAxOGQ1MDc1NzFkMDEwYzI0N2E3Y2JlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
aApAQCAtMzAsMTEgKzMwLDEzIEBACiAjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiV29y
a2VyRmV0Y2hSZXN1bHQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBTV1NlcnZlcldvcmtlcjsKK2NsYXNzIFNlcnZpY2VXb3JrZXJKb2I7
CiBzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CiAKIGNsYXNzIFNXU2VydmVySm9iUXVldWUgewpA
QCAtNTEsNyArNTMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJ1bk5leHRKb2IoKTsKIAotICAg
IHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpOworICAgIHZvaWQgc2NyaXB0RmV0Y2hG
aW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBXb3JrZXJGZXRj
aFJlc3VsdCYmKTsKKyAgICB2b2lkIGltcG9ydGVkU2NyaXB0c0ZldGNoRmluaXNoZWQoY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxV
UkwsIFNjcmlwdEJ1ZmZlcj4+Jik7CiAgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFy
dChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIHNjcmlwdENvbnRleHRT
dGFydGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU1dTZXJ2ZXJXb3JrZXImLCBib29sIHdhc1N1Y2Nlc3Nm
dWwpOwpAQCAtNzQsMTIgKzc3LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnN0YWxsKFNXU2Vy
dmVyUmVnaXN0cmF0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgdm9pZCBy
ZW1vdmVBbGxKb2JzTWF0Y2hpbmcoY29uc3QgRnVuY3Rpb248Ym9vbChTZXJ2aWNlV29ya2VySm9i
RGF0YSYpPiYpOworICAgIHZvaWQgc2NyaXB0QW5kSW1wb3J0ZWRTY3JpcHRzRmV0Y2hGaW5pc2hl
ZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CiAK
ICAgICBEZXF1ZTxTZXJ2aWNlV29ya2VySm9iRGF0YT4gbV9qb2JRdWV1ZTsKIAogICAgIFRpbWVy
IG1fam9iVGltZXI7CiAgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAgIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CisgICAgV29ya2VyRmV0Y2hSZXN1bHQg
bV93b3JrZXJGZXRjaFJlc3VsdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5jcHAKaW5kZXggNWM2YjJkYmRhYjNiNzRiYjNmZjM5NmIzZDk4ZGFmOGVlNTFhMmYwMy4u
OTJjZDA1Mjk4YTkwYTNiN2Q3ODM4NGJmODVlNTZmNjFlNmQwMTNkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5j
cHAKQEAgLTQyNyw2ICs0MjcsMjEgQEAgYm9vbCBTV1NlcnZlcldvcmtlcjo6aXNDbGllbnRBY3Rp
dmVTZXJ2aWNlV29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWUKICAgICByZXR1
cm4gcmVnaXN0cmF0aW9uSWRlbnRpZmllciA9PSBtX2RhdGEucmVnaXN0cmF0aW9uSWRlbnRpZmll
cjsKIH0KIAorVmVjdG9yPFVSTD4gU1dTZXJ2ZXJXb3JrZXI6OmltcG9ydGVkU2NyaXB0VVJMcygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3NjcmlwdFJlc291cmNlTWFwLmtl
eXMoKSk7Cit9CisKK2Jvb2wgU1dTZXJ2ZXJXb3JrZXI6Om1hdGNoaW5nSW1wb3J0ZWRTY3JpcHRz
KGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8VVJMLCBTY3JpcHRCdWZmZXI+PiYgc2NyaXB0cykgY29u
c3QKK3sKKyAgICBmb3IgKGF1dG8mIHNjcmlwdCA6IHNjcmlwdHMpIHsKKyAgICAgICAgYXV0byBp
dGVyYXRvciA9IG1fc2NyaXB0UmVzb3VyY2VNYXAuZmluZChzY3JpcHQuZmlyc3QpOworICAgICAg
ICBpZiAoaXRlcmF0b3IgPT0gbV9zY3JpcHRSZXNvdXJjZU1hcC5lbmQoKSB8fCBpdGVyYXRvci0+
dmFsdWUuc2NyaXB0ICE9IHNjcmlwdC5zZWNvbmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggOWJkNTY3
YzNjYjk3MTE1MTg4OTc5NDljMjE5MDg1NjU4MmY3NjU0NC4uZjI0ZTJlYmZhMTBjNGVmNDA0YjFm
OWFmYjI2NTJmNGFlYTA2OGE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMTQ0LDYgKzE0NCwxMCBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ2xpZW50QWN0aXZlU2VydmljZVdv
cmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgY29uc3Q7CiAKKyAgICBWZWN0
b3I8VVJMPiBpbXBvcnRlZFNjcmlwdFVSTHMoKSBjb25zdDsKKyAgICBjb25zdCBNZW1vcnlDb21w
YWN0Um9iaW5Ib29kSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0
ZWRTY3JpcHQ+JiBzY3JpcHRSZXNvdXJjZU1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0UmVz
b3VyY2VNYXA7IH0KKyAgICBib29sIG1hdGNoaW5nSW1wb3J0ZWRTY3JpcHRzKGNvbnN0IFZlY3Rv
cjxzdGQ6OnBhaXI8VVJMLCBTY3JpcHRCdWZmZXI+PiYpIGNvbnN0OworCiBwcml2YXRlOgogICAg
IFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBV
UkwmLCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBDcm9zc09yaWdpbkVt
YmVkZGVyUG9saWN5JiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBNZW1vcnlDb21wYWN0Um9iaW5Ib29kSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDA4MjY3M2IzMzE1
NzkxOGJkMGIyZTU3Yzc2OTIyNWM1ZDA4NDZiOTMuLjJhN2U4NGMyNTU2ZDFiYWQyMWFhYWM3NmRm
ODZiMjdlOTVjZWIzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlci5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogY2xh
c3MgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIgZmluYWwgOiBwdWJsaWMgTmV0d29ya0xv
YWRDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHVzaW5n
IEhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OldvcmtlckZl
dGNoUmVzdWx0Jik+OworICAgIHVzaW5nIEhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpPjsKICAgICBzdGF0aWMgdm9pZCBzdGFydChO
ZXR3b3JrU2Vzc2lvbiosIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJiYsIGJvb2wgc2hv
dWxkUmVmcmVzaENhY2hlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSGFuZGxlciYmKTsK
IAogICAgIH5TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBlYWVhYTNkOTMzNDE5ZDE1OTBkOTUzYjkzZTFm
M2VmNjBjODg1ZTA1Li40N2Q0MWYzZTU0OGJiZjk0NWQ0ODQ1NDkzODQ1OGJjODFkNDc4ZGYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTM0LDYgKzEzNCwx
MSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50
KFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGll
bnRDb25uZWN0aW9uOjpTdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGpvYklkZW50aWZpZXIsIHJl
Z2lzdHJhdGlvbktleSwgY2FjaGVQb2xpY3kpKTsKIH0KIAordm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnJlZnJlc2hJbXBvcnRlZFNjcmlwdHMoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIg
am9iSWRlbnRpZmllciwgRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSwgY29uc3QgVmVj
dG9yPFVSTD4mIHVybHMsIFNlcnZpY2VXb3JrZXJKb2I6OlJlZnJlc2hJbXBvcnRlZFNjcmlwdHND
YWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViU1dDbGllbnRDb25uZWN0aW9uOjpSZWZyZXNoSW1wb3J0ZWRTY3JpcHRzKGpvYklkZW50aWZp
ZXIsIGNhY2hlUG9saWN5LCB1cmxzKSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCiB2b2lkIFdl
YlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGVJbkNsaWVudChTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtl
ckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0Ns
aWVudENvbm5lY3Rpb246OlVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKGlkZW50aWZpZXIsIHN0YXRl
LCBzZXJ2aWNlV29ya2VyRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5o
CmluZGV4IDIxY2U1NjM0ZGM4OTQ1ODZmNTZhYzc2Mzg1NTk3NTk5NDYxMDAxNjYuLjlmODQ2NmE5
NWM5NTA0MDgxYmVjOWI3MmVlMGM4ZDdiOWQ2ZTlkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmgKQEAgLTk2LDYgKzk2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc29s
dmVSZWdpc3RyYXRpb25Kb2JJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmLCBXZWJD
b3JlOjpTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpIGZpbmFsOwogICAgIHZvaWQgcmVzb2x2ZVVu
cmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBib29sIHVu
cmVnaXN0cmF0aW9uUmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNs
aWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdlYkNvcmU6OkZldGNoT3B0aW9uczo6Q2Fj
aGUpIGZpbmFsOworICAgIHZvaWQgcmVmcmVzaEltcG9ydGVkU2NyaXB0cyhXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpDYWNoZSwgY29u
c3QgVmVjdG9yPFVSTD4mLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpSZWZyZXNoSW1wb3J0
ZWRTY3JpcHRzQ2FsbGJhY2smJik7CiAgICAgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZUlu
Q2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGE+JikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVXb3Jr
ZXJTdGF0ZUluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgZmlyZVVwZGF0ZUZvdW5kRXZl
bnQoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDkyNWE3YzViODYyNWIzZGIy
ZjAwZmE2MTExZmNmMzgzYjIxNjYzODUuLmI0Yzc2OTVkMmFjYTk1NGNiOGYxMTkzYzJiMWQxOWJj
MmFlZmFhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI3LDYg
KzI3LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dDbGllbnRDb25uZWN0aW9uIHsKICAgICBKb2JSZWpl
Y3RlZEluU2VydmVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyIGpvYkRhdGFJ
ZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pCiAgICAg
UmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9i
SWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhIHJlZ2lzdHJhdGlvbiwgZW51bTpib29sIFdlYkNvcmU6OlNob3Vs
ZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCiAgICAgU3RhcnRT
Y3JpcHRGZXRjaEZvclNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBq
b2JEYXRhSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBy
ZWdpc3RyYXRpb25LZXksIFdlYkNvcmU6OkZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kp
CisgICAgUmVmcmVzaEltcG9ydGVkU2NyaXB0cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRl
bnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpDYWNoZSBj
YWNoZVBvbGljeSwgVmVjdG9yPFVSTD4gdXJscykgLT4gKFZlY3RvcjxzdGQ6OnBhaXI8VVJMLCBX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI+PiByZXN1bHRzKTsKICAgICBVcGRhdGVSZWdpc3RyYXRpb25T
dGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRl
IHN0YXRlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhPiBzZXJ2aWNl
V29ya2VySWRlbnRpZmllcikKICAgICBVcGRhdGVXb3JrZXJTdGF0ZShXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZW51bTp1aW50OF90IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJTdGF0ZSBzdGF0ZSkKICAgICBGaXJlVXBkYXRlRm91bmRFdmVu
dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNTAxZDk3MjdmNjhkYmI2MmM3YTZm
YTAzNGVhN2M4MWQ3YWU0MDMyOC4uMWZmNWRlNTFjOWYzNDE1MTc5ZGEyOWNkZjM5MDk2YjdmZmRl
MjlhZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MjItMDQtMjUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIHNl
cnZpY2Ugd29ya2VyIHVwZGF0ZSBzaG91bGQgcmVmcmVzaCBpbXBvcnRlZCBzY3JpcHRzIGluIGFk
ZGl0aW9uIHRvIHRoZSBtYWluIHNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyL2NyZWRlbnRpYWxzLmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wNC0y
MiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU2hhcmVkIHdv
cmtlcnMgc2hvdWxkIG1hdGNoIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbnMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NyZWRlbnRpYWxzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyL2NyZWRlbnRpYWxzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA5ZDNl
NGNjM2RhZmQ4ZjNiYmU0YzUzYTBkM2M3MmU3YTc1NzJkMjBlLi5lOWI0YTUzMWFjOGU1ZjY4MmIw
NWNiNzliYTQ0OTQzY2I2NzlmYThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jcmVk
ZW50aWFscy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY3JlZGVu
dGlhbHMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAogCiBQQVNTIFNldCBjb29r
aWVzIGFzIGluaXRpYWxpemF0aW9uCiBQQVNTIE1haW4gc2NyaXB0IHNob3VsZCBoYXZlIGNyZWRl
bnRpYWxzCi1GQUlMIEltcG9ydGVkIHNjcmlwdCBzaG91bGQgaGF2ZSBjcmVkZW50aWFscyBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJy
b3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvc3RNZXNzYWdl
JykiCi1GQUlMIE1vZHVsZSB3aXRoIGFuIGltcG9ydGVkIHN0YXRlbWVudCBzaG91bGQgbm90IGhh
dmUgY3JlZGVudGlhbHMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFs
dWU6IG9iamVjdCAiVHlwZUVycm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcg
J3dvcmtlci5wb3N0TWVzc2FnZScpIgorUEFTUyBJbXBvcnRlZCBzY3JpcHQgc2hvdWxkIGhhdmUg
Y3JlZGVudGlhbHMKK1BBU1MgTW9kdWxlIHdpdGggYW4gaW1wb3J0ZWQgc3RhdGVtZW50IHNob3Vs
ZCBub3QgaGF2ZSBjcmVkZW50aWFscwogRkFJTCBTY3JpcHQgd2l0aCBzZXJ2aWNlIHdvcmtlciBz
ZXJ2ZWQgYXMgbW9kdWxlcyBzaG91bGQgbm90IGhhdmUgY3JlZGVudGlhbHMgYXNzZXJ0X2VxdWFs
czogbmV3IG1vZHVsZSB3b3JrZXIgc2hvdWxkIG5vdCBoYXZlIGNyZWRlbnRpYWxzIGV4cGVjdGVk
ICh1bmRlZmluZWQpIHVuZGVmaW5lZCBidXQgZ290IChzdHJpbmcpICIxIgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458263</attachid>
            <date>2022-04-25 05:38:17 -0700</date>
            <delta_ts>2022-04-27 00:45:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239657-20220425143815.patch</filename>
            <type>text/plain</type>
            <size>45340</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI5YThjODkxOGJhZTdi
NDc0NTJhNjRiYjY4NzQ1ZmQ1ZjVkN2I2Yy4uNjM0ZjEwZGU4ZjY5YmFjMDNhZTg3M2Y0MWFhNzkw
YWU4YWFiOWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTA0LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBzZXJ2aWNlIHdvcmtlciB1
cGRhdGUgc2hvdWxkIHJlZnJlc2ggaW1wb3J0ZWQgc2NyaXB0cyBpbiBhZGRpdGlvbiB0byB0aGUg
bWFpbiBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzOTY1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFmdGVyIGNoZWNraW5nIG1haW4gc2NyaXB0LCBpZiBtYXRjaGluZywgd2UgcmVmcmVhY2gg
ZWFjaCBpZGVudGlmaWVkIGltcG9ydGVkIHNjcmlwdC4KKyAgICAgICAgSWYgbWF0Y2hpbmcsIHdl
IHJldXNlIHRoZSBzYW1lIHdvcmtlciwgb3RoZXJ3aXNlIHdlIGluc3RhbGwgYSBuZXcgb25lLgor
ICAgICAgICBXZSByZXVzZSB0aGUgc29mdCB1cGRhdGUgbG9hZGVyIHRvIGZldGNoIHNjcmlwdHMg
aW4gY2FzZSBvZiBzb2Z0IHVwZGF0ZS4KKyAgICAgICAgT3RoZXJ3aXNlLCB3ZSBsb2FkIHNjcmlw
dHMgdGhyb3VnaCB0aGUgam9iJ3MgY2xpZW50LgorCisgICAgICAgIENvdmVyZWQgYnkgcmViYXNl
ZCB0ZXN0LgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5j
cHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VySm9iQ2xpZW50Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmg6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDIy
LTA0LTI0ICBQaGlsaXBwZSBOb3JtYW5kICA8cGhpbG5AaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1N0cmVhbWVyXSBEaXNhYmxlIG5ldyBkZW11eGVycyBiYXNlZCBvbiBhZGFwdGl2ZWRlbXV4Mgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA1MDA4NjhlYjE3YTEyMWZjMjI5NGE2ODc0M2ZhOTk4MzNkYjIxMzBjLi5mNTY0
NTE1MDEzYzRmZjBhY2I3ZWVhYWJmZGIzMzJmZjYyMDU0NTVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIyLTA0LTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBzZXJ2aWNlIHdvcmtlciB1cGRhdGUgc2hvdWxkIHJlZnJlc2ggaW1wb3J0ZWQgc2Ny
aXB0cyBpbiBhZGRpdGlvbiB0byB0aGUgbWFpbiBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTY1NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMu
aW46CisKIDIwMjItMDQtMjQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIE1ha2UgTmV0d29ya1Jlc291cmNlTG9hZGVyLm1fcGFyYW1ldGVycyBub24gY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5l
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVj
dGlvbi5jcHAKaW5kZXggODhiNGQ4NGM4OWU5OWMxYzRmMjVhMDgyMzFlNDExZGY1OTA3NGQ1MS4u
YzIwZTQzNDRlYWU2ODlkYzk0MjAyMDRjOWE1MmNhNGY1MjExNzI4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAg
LTExMyw2ICsxMTMsNDUgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0
Y2hGb3JTZXJ2ZXIoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIgam8KICAgICAgICAgZmluaXNo
RmV0Y2hpbmdTY3JpcHRJblNlcnZlcih7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGpv
YklkZW50aWZpZXIgfSwgV1RGTW92ZShyZWdpc3RyYXRpb25LZXkpLCB3b3JrZXJGZXRjaEVycm9y
KFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sIG1ha2VT
dHJpbmcoIkZhaWxlZCB0byBmZXRjaCBzY3JpcHQgZm9yIHNlcnZpY2Ugd29ya2VyIHdpdGggc2Nv
cGUgIiwgcmVnaXN0cmF0aW9uS2V5LnNjb3BlKCkuc3RyaW5nKCkpIH0pKTsKIH0KIAorY2xhc3Mg
UmVmcmVzaEltcG9ydGVkU2NyaXB0c0NhbGxiYWNrSGFuZGxlciB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgUmVmcmVzaEltcG9ydGVkU2NyaXB0
c0NhbGxiYWNrSGFuZGxlcihTZXJ2aWNlV29ya2VySm9iOjpSZWZyZXNoSW1wb3J0ZWRTY3JpcHRz
Q2FsbGJhY2smJiBjYWxsYmFjaykKKyAgICAgICAgOiBtX2NhbGxiYWNrKFdURk1vdmUoY2FsbGJh
Y2spKQorICAgIHsKKyAgICB9CisKKyAgICB+UmVmcmVzaEltcG9ydGVkU2NyaXB0c0NhbGxiYWNr
SGFuZGxlcigpCisgICAgeworICAgICAgICBpZiAoIW1fY2FsbGJhY2spCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2sgPSBXVEZNb3ZlKG1f
Y2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAg
ICAgIH0pOworICAgIH0KKworICAgIHZvaWQgY2FsbChWZWN0b3I8c3RkOjpwYWlyPFVSTCwgU2Ny
aXB0QnVmZmVyPj4mJiBzY3JpcHRzKQorICAgIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
Y2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spLCBzY3JpcHRzID0gY3Jvc3NUaHJlYWRDb3B5
KFdURk1vdmUoc2NyaXB0cykpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFdU
Rk1vdmUoc2NyaXB0cykpOworICAgICAgICB9KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU2Vy
dmljZVdvcmtlckpvYjo6UmVmcmVzaEltcG9ydGVkU2NyaXB0c0NhbGxiYWNrIG1fY2FsbGJhY2s7
Cit9OworCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cmVmcmVzaEltcG9ydGVkU2NyaXB0cyhT
ZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBqb2JJZGVudGlmaWVyLCBGZXRjaE9wdGlvbnM6OkNh
Y2hlIGNhY2hlUG9saWN5LCBWZWN0b3I8VVJMPiYmIHVybHMsIFNlcnZpY2VXb3JrZXJKb2I6OlJl
ZnJlc2hJbXBvcnRlZFNjcmlwdHNDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgYXV0byBoYW5kbGVyID0gbWFrZVVuaXF1ZTxSZWZyZXNoSW1w
b3J0ZWRTY3JpcHRzQ2FsbGJhY2tIYW5kbGVyPihXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgcG9z
dFRhc2tGb3JKb2Ioam9iSWRlbnRpZmllciwgSXNKb2JDb21wbGV0ZTo6Tm8sIFtjYWNoZVBvbGlj
eSwgdXJscyA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHVybHMpKSwgaGFuZGxlciA9IFdURk1v
dmUoaGFuZGxlcildIChhdXRvJiBqb2IpIG11dGFibGUgeworICAgICAgICBqb2IucmVmcmVzaElt
cG9ydGVkU2NyaXB0cyh1cmxzLCBjYWNoZVBvbGljeSwgW2hhbmRsZXIgPSBXVEZNb3ZlKGhhbmRs
ZXIpXSAoYXV0byYmIHJlc3VsdCkgeworICAgICAgICAgICAgaGFuZGxlci0+Y2FsbChXVEZNb3Zl
KHJlc3VsdCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KIAogdm9pZCBTV0NsaWVudENvbm5l
Y3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2VEYXRhLCBT
dHJpbmcmJiBzb3VyY2VPcmlnaW4pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggYTFmZGJlZTUwN2Q5MzhjNmE5Njdl
ODEwZTM3NjE3M2ExZTAwNzliMi4uMjNlMDZjNjFmMmU3ZjUyNThkYjM0Zjg3ZDA0MDVhYjZlMzUy
OTM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVu
dENvbm5lY3Rpb24uaApAQCAtMTI0LDYgKzEyNCw3IEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGpvYlJlamVjdGVkSW5TZXJ2ZXIoU2VydmljZVdvcmtlckpvYklkZW50aWZp
ZXIsIEV4Y2VwdGlvbkRhdGEmJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdpc3RyYXRp
b25Kb2JSZXNvbHZlZEluU2VydmVyKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihTZXJ2aWNlV29y
a2VySm9iSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYmLCBGZXRjaE9w
dGlvbnM6OkNhY2hlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZnJlc2hJbXBvcnRlZFNj
cmlwdHMoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIEZldGNoT3B0aW9uczo6Q2FjaGUsIFZl
Y3RvcjxVUkw+JiYsIFNlcnZpY2VXb3JrZXJKb2I6OlJlZnJlc2hJbXBvcnRlZFNjcmlwdHNDYWxs
YmFjayYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29u
dGV4dElkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFNlcnZpY2VXb3JrZXJE
YXRhJiYgc291cmNlLCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSwgY29uc3Qgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0
ZVdvcmtlclN0YXRlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyU3RhdGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmgKaW5kZXggNmJhM2QxY2QyM2I0YTJlN2FhODMxOWMwNDQ5ODJkZjRjMjk3
ZGQ0NS4uYjRjMmVhMzM2ZTc3N2ZmZjE5N2MxOWI4N2U5MzFmMGNkODYwZTI0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5oCkBAIC0xMjksNiArMTI5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZXR0bGVS
ZWdpc3RyYXRpb25Qcm9taXNlKGJvb2wgc3VjY2Vzcyk7CiAKICAgICBTZXJ2aWNlV29ya2VyT3JD
bGllbnRJZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyKCkgZmluYWw7CisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCgpIGZpbmFsIHsgcmV0dXJuIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsgfQogCiAgICAgU1dDbGllbnRDb25uZWN0aW9uJiBlbnN1cmVTV0NsaWVudENvbm5l
Y3Rpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJKb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJKb2IuY3BwCmluZGV4IGZlYzVmMzk2MGRlNDlhOWIwMjhiMWYwMTQzOWMzMGRhZjdl
Y2FjZTUuLjZiY2M1ZWU0MDMyY2VkZjA3MWFkOWMwMjE1YTc1OTc4ZDZjYWI2NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAK
QEAgLTk1LDI3ICs5NSw5OCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0
Y2goRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKICAgICBtX2NsaWVudC5zdGFydFNj
cmlwdEZldGNoRm9ySm9iKCp0aGlzLCBjYWNoZVBvbGljeSk7CiB9CiAKLXZvaWQgU2VydmljZVdv
cmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5KQorc3RhdGljIFJlc291cmNl
UmVxdWVzdCBzY3JpcHRSZXNvdXJjZVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRy
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsKLQot
ICAgIC8vIEZJWE1FOiBXb3JrZXJTY3JpcHRMb2FkZXIgaXMgdGhlIHdyb25nIGxvYWRlciBjbGFz
cyB0byB1c2UgaGVyZSwgYnV0IHRoZXJlJ3Mgbm90aGluZyBlbHNlIGJldHRlciByaWdodCBub3cu
Ci0gICAgbV9zY3JpcHRMb2FkZXIgPSBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZSgpOwotCi0g
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgeyBtX2pvYkRhdGEuc2NyaXB0VVJMIH07CisgICAg
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgeyB1cmwgfTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRv
cklkZW50aWZpZXIoY29udGV4dC5yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyKCkpOwogICAgIHJl
cXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZXJ2aWNlV29ya2VyLCAi
c2NyaXB0Il9zKTsKKyAgICByZXR1cm4gcmVxdWVzdDsKK30KIAorc3RhdGljIEZldGNoT3B0aW9u
cyBzY3JpcHRGZXRjaE9wdGlvbnMoRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSwgRmV0
Y2hPcHRpb25zOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKK3sKICAgICBGZXRjaE9wdGlvbnMg
b3B0aW9uczsKICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmln
aW47CiAgICAgb3B0aW9ucy5jYWNoZSA9IGNhY2hlUG9saWN5OwogICAgIG9wdGlvbnMucmVkaXJl
Y3QgPSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpFcnJvcjsKLSAgICBvcHRpb25zLmRlc3RpbmF0
aW9uID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2VydmljZXdvcmtlcjsKKyAgICBvcHRp
b25zLmRlc3RpbmF0aW9uID0gZGVzdGluYXRpb247CiAgICAgb3B0aW9ucy5jcmVkZW50aWFscyA9
IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OlNhbWVPcmlnaW47CisgICAgcmV0dXJuIG9wdGlv
bnM7Cit9CisKK1NlcnZpY2VXb3JrZXJKb2I6OkltcG9ydGVkU2NyaXB0c0xvYWRlcjo6SW1wb3J0
ZWRTY3JpcHRzTG9hZGVyKFJlZnJlc2hJbXBvcnRlZFNjcmlwdHNDYWxsYmFjayYmIGNhbGxiYWNr
KQorICAgIDogbV9jYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKK3sKK30KKworU2VydmljZVdv
cmtlckpvYjo6SW1wb3J0ZWRTY3JpcHRzTG9hZGVyOjp+SW1wb3J0ZWRTY3JpcHRzTG9hZGVyKCkK
K3sKKyAgICBpZiAobV9jYWxsYmFjaykKKyAgICAgICAgbV9jYWxsYmFjayh7IH0pOworfQorCit2
b2lkIFNlcnZpY2VXb3JrZXJKb2I6OkltcG9ydGVkU2NyaXB0c0xvYWRlcjo6bG9hZChTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8VVJMPiYgdXJscywgRmV0Y2hP
cHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKK3sKKyAgICBtX2xvYWRlcnMucmVzZXJ2ZUNhcGFj
aXR5KHVybHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHVybCA6IHVybHMpIHsKKyAgICAgICAg
YXV0byBzY3JpcHRMb2FkZXIgPSBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZSgpOworICAgICAg
ICBzY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShjb250ZXh0LCBzY3JpcHRSZXNvdXJj
ZVJlcXVlc3QoY29udGV4dCwgdXJsKSwgV29ya2VyU2NyaXB0TG9hZGVyOjpTb3VyY2U6OkNsYXNz
aWNXb3JrZXJTY3JpcHQsIHNjcmlwdEZldGNoT3B0aW9ucyhjYWNoZVBvbGljeSwgRmV0Y2hPcHRp
b25zOjpEZXN0aW5hdGlvbjo6U2NyaXB0KSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1l
bnQ6OkRvTm90RW5mb3JjZSwgU2VydmljZVdvcmtlcnNNb2RlOjpOb25lLCAqdGhpcywgV29ya2Vy
UnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgICAgIGlmIChzY3JpcHRMb2FkZXItPmZhaWxl
ZCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIG1fbG9hZGVycy51bmNoZWNrZWRB
cHBlbmQoV1RGTW92ZShzY3JpcHRMb2FkZXIpKTsKKyAgICB9CisgICAgbV9yZW1haW5pbmdMb2Fk
cyA9IG1fbG9hZGVycy5zaXplKCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckpvYjo6SW1wb3J0
ZWRTY3JpcHRzTG9hZGVyOjpjYW5jZWwoKQoreworICAgIGF1dG8gbG9hZGVycyA9IFdURk1vdmUo
bV9sb2FkZXJzKTsKKyAgICBmb3IgKGF1dG8gbG9hZGVyIDogbG9hZGVycykKKyAgICAgICAgbG9h
ZGVyLT5jYW5jZWwoKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VySm9iOjpJbXBvcnRlZFNjcmlw
dHNMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKK3sKKyAgICBpZiAoLS1tX3JlbWFpbmluZ0xvYWRz
KQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFVSTCwgU2NyaXB0QnVm
ZmVyPj4gcmVzdWx0czsKKyAgICByZXN1bHRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9sb2Fk
ZXJzLnNpemUoKSk7CisKKyAgICBhdXRvIGxvYWRlcnMgPSBXVEZNb3ZlKG1fbG9hZGVycyk7Cisg
ICAgZm9yIChhdXRvIGxvYWRlciA6IGxvYWRlcnMpIHsKKyAgICAgICAgaWYgKCFsb2FkZXItPmZh
aWxlZCgpKQorICAgICAgICAgICAgcmVzdWx0cy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3Bh
aXIobG9hZGVyLT51cmwoKSwgbG9hZGVyLT5zY3JpcHQoKSkpOworICAgIH0KKworICAgIG1fY2Fs
bGJhY2soV1RGTW92ZShyZXN1bHRzKSk7Cit9CisKKwordm9pZCBTZXJ2aWNlV29ya2VySm9iOjpy
ZWZyZXNoSW1wb3J0ZWRTY3JpcHRzKGNvbnN0IFZlY3RvcjxVUkw+JiB1cmxzLCBGZXRjaE9wdGlv
bnM6OkNhY2hlIGNhY2hlUG9saWN5LCBSZWZyZXNoSW1wb3J0ZWRTY3JpcHRzQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFk
OjpjdXJyZW50KCkpOworICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOworCisgICAgYXV0byogY29u
dGV4dCA9IG1fY2xpZW50LmNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAgICAg
Y2FsbGJhY2soeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faW1wb3J0ZWRT
Y3JpcHRzTG9hZGVyID0gbWFrZVVuaXF1ZTxJbXBvcnRlZFNjcmlwdHNMb2FkZXI+KFdURk1vdmUo
Y2FsbGJhY2spKTsKKyAgICBtX2ltcG9ydGVkU2NyaXB0c0xvYWRlci0+bG9hZCgqY29udGV4dCwg
dXJscywgY2FjaGVQb2xpY3kpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmZldGNoU2Ny
aXB0V2l0aENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRmV0Y2hPcHRp
b25zOjpDYWNoZSBjYWNoZVBvbGljeSkKK3sKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5w
dHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwog
CiAgICAgYXV0byBzb3VyY2UgPSBtX2pvYkRhdGEud29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpN
b2R1bGUgPyBXb3JrZXJTY3JpcHRMb2FkZXI6OlNvdXJjZTo6TW9kdWxlU2NyaXB0IDogV29ya2Vy
U2NyaXB0TG9hZGVyOjpTb3VyY2U6OkNsYXNzaWNXb3JrZXJTY3JpcHQ7Ci0gICAgbV9zY3JpcHRM
b2FkZXItPmxvYWRBc3luY2hyb25vdXNseShjb250ZXh0LCBXVEZNb3ZlKHJlcXVlc3QpLCBzb3Vy
Y2UsIFdURk1vdmUob3B0aW9ucyksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpE
b05vdEVuZm9yY2UsIFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSwgKnRoaXMsIFdvcmtlclJ1bkxv
b3A6OmRlZmF1bHRNb2RlKCkpOworCisgICAgbV9zY3JpcHRMb2FkZXIgPSBXb3JrZXJTY3JpcHRM
b2FkZXI6OmNyZWF0ZSgpOworICAgIG1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHko
Y29udGV4dCwgc2NyaXB0UmVzb3VyY2VSZXF1ZXN0KGNvbnRleHQsIG1fam9iRGF0YS5zY3JpcHRV
UkwpLCBzb3VyY2UsIHNjcmlwdEZldGNoT3B0aW9ucyhjYWNoZVBvbGljeSwgRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6U2VydmljZXdvcmtlciksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9y
Y2VtZW50OjpEb05vdEVuZm9yY2UsIFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSwgKnRoaXMsIFdv
cmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogfQogCiBSZXNvdXJjZUVycm9yIFNlcnZpY2VX
b3JrZXJKb2I6OnZhbGlkYXRlU2VydmljZVdvcmtlclJlc3BvbnNlKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiBqb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAg
LTE4MCwxMiArMjUxLDE0IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQo
KQogCiBib29sIFNlcnZpY2VXb3JrZXJKb2I6OmNhbmNlbFBlbmRpbmdMb2FkKCkKIHsKLSAgICBp
ZiAoIW1fc2NyaXB0TG9hZGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKGF1dG8g
aW1wb3J0ZWRTY3JpcHRzTG9hZGVyID0gV1RGTW92ZShtX2ltcG9ydGVkU2NyaXB0c0xvYWRlcikp
CisgICAgICAgIGltcG9ydGVkU2NyaXB0c0xvYWRlci0+Y2FuY2VsKCk7CiAKLSAgICBtX3Njcmlw
dExvYWRlci0+Y2FuY2VsKCk7Ci0gICAgbV9zY3JpcHRMb2FkZXIgPSBudWxscHRyOwotICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChhdXRvIGxvYWRlciA9IFdURk1vdmUobV9zY3JpcHRMb2FkZXIp
KSB7CisgICAgICAgIG1fc2NyaXB0TG9hZGVyLT5jYW5jZWwoKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2IuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
LmgKaW5kZXggM2ZlYjIwYThkOGE4OTI4M2Q1YzZhMjJmZTg5ZTdkYzU5M2QyNmE0Zi4uZjM1NjY3
MzQxMGE2OTcyZWVmMDY4NmNhYzRiZTIzMGJiOTMxYjhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0
TG9hZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgiCisjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CkBAIC01OCw2ICs1OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc29sdmVkV2l0aFVucmVn
aXN0cmF0aW9uUmVzdWx0KGJvb2wpOwogICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaChGZXRjaE9w
dGlvbnM6OkNhY2hlKTsKIAorICAgIHVzaW5nIFJlZnJlc2hJbXBvcnRlZFNjcmlwdHNDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHN0ZDo6cGFpcjxVUkwsIFNjcmlwdEJ1
ZmZlcj4+JiYpPjsKKyAgICB2b2lkIHJlZnJlc2hJbXBvcnRlZFNjcmlwdHMoY29uc3QgVmVjdG9y
PFVSTD4mLCBGZXRjaE9wdGlvbnM6OkNhY2hlLCBSZWZyZXNoSW1wb3J0ZWRTY3JpcHRzQ2FsbGJh
Y2smJik7CisKICAgICB1c2luZyBJZGVudGlmaWVyID0gU2VydmljZVdvcmtlckpvYklkZW50aWZp
ZXI7CiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9qb2JEYXRh
LmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyOyB9CiAKQEAgLTg0LDggKzg4LDI2IEBAIHByaXZh
dGU6CiAKICAgICBib29sIG1fY29tcGxldGVkIHsgZmFsc2UgfTsKIAorICAgIGNsYXNzIEltcG9y
dGVkU2NyaXB0c0xvYWRlciA6IHB1YmxpYyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgeworICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxp
Y2l0IEltcG9ydGVkU2NyaXB0c0xvYWRlcihSZWZyZXNoSW1wb3J0ZWRTY3JpcHRzQ2FsbGJhY2sm
Jik7CisgICAgICAgIH5JbXBvcnRlZFNjcmlwdHNMb2FkZXIoKTsKKyAgICAgICAgdm9pZCBsb2Fk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBWZWN0b3I8VVJMPiYsIEZldGNoT3B0aW9u
czo6Q2FjaGUpOworICAgICAgICB2b2lkIGNhbmNlbCgpOworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyB9CisgICAgICAgIHZvaWQgbm90aWZ5RmluaXNo
ZWQoKSBmaW5hbDsKKworICAgICAgICBSZWZyZXNoSW1wb3J0ZWRTY3JpcHRzQ2FsbGJhY2sgbV9j
YWxsYmFjazsKKyAgICAgICAgVmVjdG9yPFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+PiBtX2xvYWRl
cnM7CisgICAgICAgIHNpemVfdCBtX3JlbWFpbmluZ0xvYWRzIHsgMCB9OworICAgIH07CisKICAg
ICBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyIG1fY29udGV4dElkZW50aWZpZXI7CiAg
ICAgUmVmUHRyPFdvcmtlclNjcmlwdExvYWRlcj4gbV9zY3JpcHRMb2FkZXI7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEltcG9ydGVkU2NyaXB0c0xvYWRlcj4gbV9pbXBvcnRlZFNjcmlwdHNMb2FkZXI7
CiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFJlZjxUaHJlYWQ+IG1fY3JlYXRpb25UaHJlYWQg
eyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKaW5kZXggMjMxNDk0MTg4MTlhNWUx
MjlmMDRiODZiYTg0MzNmNzQzYzdkOWQ2ZC4uNmE0OGE5ZjAwMWFkNmVjZjI3N2JlMmY5OGE5YjYx
NmI5NzdlYmRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJKb2JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVyczsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNz
IFJlc291cmNlRXJyb3I7CiBjbGFzcyBTY3JpcHRCdWZmZXI7CitjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwogY2xhc3MgU2VydmljZVdvcmtlckpvYjsKIHN0cnVjdCBDcm9zc09yaWdpbkVt
YmVkZGVyUG9saWN5Owogc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhOwpAQCAt
NDUsNiArNDYsNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VySm9iQ2xpZW50IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5TZXJ2aWNlV29ya2VySm9iQ2xpZW50KCkgPSBkZWZhdWx0OwogCisgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KCkgPSAwOwogICAgIHZpcnR1YWwg
U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciBjb250ZXh0SWRlbnRpZmllcigpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJK
b2ImLCBjb25zdCBFeGNlcHRpb24mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDdkNGUzYWJhYTkzYzIwN2U5NmZk
ZTUyYWI5ZGFkODE4NmVhZDQzMzcuLmUxM2JlZDA3MTFkMDQ1MjZjMDU0OThmYTQ5YzNmMGRlY2I4
OTFiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuY3BwCkBAIC0zNDUsOSArMzQ1LDkgQEAgdm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXIK
ICAgICAgICAgbV9yZWdpc3RyYXRpb25TdG9yZS0+Zmx1c2hDaGFuZ2VzKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZmluaXNoRmV0
Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIm
IGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBy
ZWdpc3RyYXRpb25LZXksIGNvbnN0IFdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCit2b2lkIFNX
U2VydmVyOjpDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgV29ya2VyRmV0Y2hS
ZXN1bHQmJiByZXN1bHQpCiB7Ci0gICAgbV9zZXJ2ZXIuc2NyaXB0RmV0Y2hGaW5pc2hlZChqb2JE
YXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCByZXN1bHQpOworICAgIG1fc2VydmVyLnNj
cmlwdEZldGNoRmluaXNoZWQoam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleSwgV1RG
TW92ZShyZXN1bHQpKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZGlkUmVzb2x2
ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYg
a2V5KQpAQCAtNTA3LDYgKzUwNywyNyBAQCBVUkwgc3RhdGljIGlubGluZSBvcmlnaW5VUkwoY29u
c3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKICAgICByZXR1cm4gdXJsOwogfQogCitSZXNvdXJj
ZVJlcXVlc3QgU1dTZXJ2ZXI6OmNyZWF0ZVNjcmlwdFJlcXVlc3QoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYg
cmVnaXN0cmF0aW9uKQoreworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0IHsgdXJsIH07CisK
KyAgICBhdXRvIHRvcE9yaWdpbiA9IGpvYkRhdGEudG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7
CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRhdGEuc2NyaXB0
VVJMKTsKKworICAgIHJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oam9iRGF0YS5k
b21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1
ZSk7CisgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5VUkwodG9wT3Jp
Z2luKSk7CisKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
T3JpZ2luLCBvcmlnaW4tPnRvU3RyaW5nKCkpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpTZXJ2aWNlV29ya2VyLCAic2NyaXB0Il9zKTsKKyAgICByZXF1
ZXN0LnNldEhUVFBSZWZlcnJlcihvcmlnaW5VUkwob3JpZ2luKS5zdHJpbmcoKSk7CisgICAgcmVx
dWVzdC5zZXRIVFRQVXNlckFnZW50KHNlcnZpY2VXb3JrZXJDbGllbnRVc2VyQWdlbnQoQ2xpZW50
T3JpZ2luIHsgam9iRGF0YS50b3BPcmlnaW4sIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0
YS5zY3JpcHRVUkwpLT5kYXRhKCkgfSkpOworICAgIHJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3Vy
Y2VMb2FkUHJpb3JpdHk6Okxvdyk7CisgICAgcmVxdWVzdC5zZXRJc0FwcEluaXRpYXRlZChyZWdp
c3RyYXRpb24uaXNBcHBJbml0aWF0ZWQoKSk7CisKKyAgICByZXR1cm4gcmVxdWVzdDsKK30KKwog
dm9pZCBTV1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YSYgam9iRGF0YSwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKIHsKICAgICBM
T0coU2VydmljZVdvcmtlciwgIlNlcnZlciBpc3N1aW5nIHN0YXJ0U2NyaXB0RmV0Y2ggZm9yIGN1
cnJlbnQgam9iICVzIGluIGNsaWVudCIsIGpvYkRhdGEuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTUyNiwzMiArNTQ3LDQyIEBAIHZvaWQgU1dTZXJ2ZXI6
OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIFNX
U2VydmVyUmVnCiAgICAgaWYgKGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSA9PSBQcm9j
ZXNzOjppZGVudGlmaWVyKCkpIHsKICAgICAgICAgQVNTRVJUKGpvYkRhdGEudHlwZSA9PSBTZXJ2
aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlKTsKICAgICAgICAgLy8gVGhpcyBpcyBhIHNvZnQtdXBk
YXRlIGpvYiwgY3JlYXRlIGRpcmVjdGx5IGEgbmV0d29yayBsb2FkIHRvIGZldGNoIHRoZSBzY3Jp
cHQuCi0gICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0IHsgam9iRGF0YS5zY3JpcHRVUkwg
fTsKLQotICAgICAgICBhdXRvIHRvcE9yaWdpbiA9IGpvYkRhdGEudG9wT3JpZ2luLnNlY3VyaXR5
T3JpZ2luKCk7Ci0gICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShq
b2JEYXRhLnNjcmlwdFVSTCk7Ci0KLSAgICAgICAgcmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBh
cnRpdGlvbihqb2JEYXRhLmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKTsKLSAgICAgICAgcmVxdWVz
dC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7Ci0gICAgICAgIHJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZv
ckNvb2tpZXMob3JpZ2luVVJMKHRvcE9yaWdpbikpOwotCi0gICAgICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpPcmlnaW4sIG9yaWdpbi0+dG9TdHJpbmcoKSk7
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZXJ2
aWNlV29ya2VyLCAic2NyaXB0Il9zKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIo
b3JpZ2luVVJMKG9yaWdpbikuc3RyaW5nKCkpOwotICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2Vy
QWdlbnQoc2VydmljZVdvcmtlckNsaWVudFVzZXJBZ2VudChDbGllbnRPcmlnaW4geyBqb2JEYXRh
LnRvcE9yaWdpbiwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShqb2JEYXRhLnNjcmlwdFVSTCktPmRh
dGEoKSB9KSk7Ci0gICAgICAgIHJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3Jp
dHk6Okxvdyk7Ci0gICAgICAgIHJlcXVlc3Quc2V0SXNBcHBJbml0aWF0ZWQocmVnaXN0cmF0aW9u
LmlzQXBwSW5pdGlhdGVkKCkpOwotCi0gICAgICAgIG1fc29mdFVwZGF0ZUNhbGxiYWNrKFNlcnZp
Y2VXb3JrZXJKb2JEYXRhIHsgam9iRGF0YSB9LCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUo
cmVxdWVzdCksIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBqb2JEYXRhSWRlbnRpZmll
ciA9IGpvYkRhdGEuaWRlbnRpZmllcigpLCByZWdpc3RyYXRpb25LZXkgPSBqb2JEYXRhLnJlZ2lz
dHJhdGlvbktleSgpXShhdXRvJiByZXN1bHQpIHsKKyAgICAgICAgbV9zb2Z0VXBkYXRlQ2FsbGJh
Y2soU2VydmljZVdvcmtlckpvYkRhdGEgeyBqb2JEYXRhIH0sIHNob3VsZFJlZnJlc2hDYWNoZSwg
Y3JlYXRlU2NyaXB0UmVxdWVzdChqb2JEYXRhLnNjcmlwdFVSTCwgam9iRGF0YSwgcmVnaXN0cmF0
aW9uKSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGpvYkRhdGFJZGVudGlmaWVyID0g
am9iRGF0YS5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktleSA9IGpvYkRhdGEucmVnaXN0cmF0
aW9uS2V5KCldKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAg
ICAgICAgICAgICAgICB3ZWFrVGhpcy0+c2NyaXB0RmV0Y2hGaW5pc2hlZChqb2JEYXRhSWRlbnRp
ZmllciwgcmVnaXN0cmF0aW9uS2V5LCByZXN1bHQpOworICAgICAgICAgICAgICAgIHdlYWtUaGlz
LT5zY3JpcHRGZXRjaEZpbmlzaGVkKGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXks
IFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoY29ubmVjdGlvbiwgIklmIHRoZSBjb25uZWN0aW9uIHdh
cyBsb3N0LCB0aGlzIGpvYiBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGxlZCIpOwogfQogCi12b2lk
IFNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
SWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3Vs
dCkKK2NsYXNzIFJlZnJlc2hJbXBvcnRlZFNjcmlwdHNIYW5kbGVyIDogcHVibGljIFJlZkNvdW50
ZWQ8UmVmcmVzaEltcG9ydGVkU2NyaXB0c0hhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHN0ZDo6cGFpcjxVUkwsIFNj
cmlwdEJ1ZmZlcj4+JiYpPjsKKyAgICBzdGF0aWMgUmVmPFJlZnJlc2hJbXBvcnRlZFNjcmlwdHNI
YW5kbGVyPiBjcmVhdGUoc2l6ZV90IGV4cGVjdGVkSXRlbXMsIENhbGxiYWNrJiYgY2FsbGJhY2sp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVmcmVzaEltcG9ydGVkU2NyaXB0c0hhbmRsZXIoZXhw
ZWN0ZWRJdGVtcywgV1RGTW92ZShjYWxsYmFjaykpKTsgfQorCisgICAgdm9pZCBhZGQoY29uc3Qg
VVJMJiB1cmwsIFdvcmtlckZldGNoUmVzdWx0JiYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYg
KHJlc3VsdC5lcnJvci5pc051bGwoKSkKKyAgICAgICAgICAgIG1fc2NyaXB0cy5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIodXJsLCBXVEZNb3ZlKHJlc3VsdC5zY3JpcHQpKSk7CisKKyAgICAgICAgaWYg
KCEtLW1fcmVtYWluaW5nSXRlbXMpCisgICAgICAgICAgICBtX2NhbGxiYWNrKHN0ZDo6ZXhjaGFu
Z2UobV9zY3JpcHRzLCB7IH0pKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmcmVzaEltcG9y
dGVkU2NyaXB0c0hhbmRsZXIoc2l6ZV90IGV4cGVjdGVkSXRlbXMsIENhbGxiYWNrJiYgY2FsbGJh
Y2spCisgICAgICAgIDogbV9yZW1haW5pbmdJdGVtcyhleHBlY3RlZEl0ZW1zKQorICAgICAgICAs
IG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCisgICAgeworICAgIH0KKworICAgIHNpemVf
dCBtX3JlbWFpbmluZ0l0ZW1zOworICAgIENhbGxiYWNrIG1fY2FsbGJhY2s7CisgICAgVmVjdG9y
PHN0ZDo6cGFpcjxVUkwsIFNjcmlwdEJ1ZmZlcj4+IG1fc2NyaXB0czsKK307CisKK3ZvaWQgU1dT
ZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSYgcmVnaXN0cmF0aW9uS2V5LCBXb3JrZXJGZXRjaFJlc3VsdCYmIHJlc3VsdCkKIHsKICAg
ICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZlciBoYW5kbGluZyBzY3JpcHRGZXRjaEZpbmlzaGVk
IGZvciBjdXJyZW50IGpvYiAlcyBpbiBjbGllbnQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTU2MSw3ICs1OTIsMzkgQEAgdm9pZCBTV1Nl
cnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImIGpvYkRhdGEKICAgICBpZiAoIWpvYlF1ZXVlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBqb2JRdWV1ZS0+c2NyaXB0RmV0Y2hGaW5pc2hlZChqb2JEYXRhSWRlbnRpZmllciwgcmVzdWx0
KTsKKyAgICBqb2JRdWV1ZS0+c2NyaXB0RmV0Y2hGaW5pc2hlZChqb2JEYXRhSWRlbnRpZmllciwg
V1RGTW92ZShyZXN1bHQpKTsKK30KKwordm9pZCBTV1NlcnZlcjo6cmVmcmVzaEltcG9ydGVkU2Ny
aXB0cyhjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVmVjdG9yPFVSTD4mIHVybHMpCit7CisgICAgUmVm
cmVzaEltcG9ydGVkU2NyaXB0c0hhbmRsZXI6OkNhbGxiYWNrIGNhbGxiYWNrID0gW3dlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIGpvYkRhdGFJZGVudGlmaWVyID0gam9iRGF0YS5pZGVudGlm
aWVyKCksIHJlZ2lzdHJhdGlvbktleSA9IGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCldKGF1dG8m
JiBzY3JpcHRzKSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlz
LT5yZWZyZXNoSW1wb3J0ZWRTY3JpcHRzRmluaXNoZWQoam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lz
dHJhdGlvbktleSwgc2NyaXB0cyk7CisgICAgfTsKKyAgICBib29sIHNob3VsZFJlZnJlc2hDYWNo
ZSA9IHJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNoZSgpID09IFNlcnZpY2VXb3JrZXJVcGRhdGVW
aWFDYWNoZTo6Tm9uZSB8fCAocmVnaXN0cmF0aW9uLmdldE5ld2VzdFdvcmtlcigpICYmIHJlZ2lz
dHJhdGlvbi5pc1N0YWxlKCkpOworCisgICAgYXV0byogY29ubmVjdGlvbiA9IG1fY29ubmVjdGlv
bnMuZ2V0KGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7CisgICAgaWYgKGNvbm5lY3Rp
b24pIHsKKyAgICAgICAgY29ubmVjdGlvbi0+cmVmcmVzaEltcG9ydGVkU2NyaXB0cyhqb2JEYXRh
LmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLCBzaG91bGRSZWZyZXNoQ2FjaGUgPyBGZXRjaE9w
dGlvbnM6OkNhY2hlOjpOb0NhY2hlIDogRmV0Y2hPcHRpb25zOjpDYWNoZTo6RGVmYXVsdCwgdXJs
cywgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNT
RVJUKGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVy
KCkpOworICAgIGF1dG8gaGFuZGxlciA9IFJlZnJlc2hJbXBvcnRlZFNjcmlwdHNIYW5kbGVyOjpj
cmVhdGUodXJscy5zaXplKCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBmb3IgKGF1dG8mIHVy
bCA6IHVybHMpIHsKKyAgICAgICAgbV9zb2Z0VXBkYXRlQ2FsbGJhY2soU2VydmljZVdvcmtlckpv
YkRhdGEgeyBqb2JEYXRhIH0sIHNob3VsZFJlZnJlc2hDYWNoZSwgY3JlYXRlU2NyaXB0UmVxdWVz
dCh1cmwsIGpvYkRhdGEsIHJlZ2lzdHJhdGlvbiksIFtoYW5kbGVyLCB1cmwsIHNpemUgPSB1cmxz
LnNpemUoKV0oYXV0byYmIHJlc3VsdCkgeworICAgICAgICAgICAgaGFuZGxlci0+YWRkKHVybCwg
V1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFNXU2VydmVy
OjpyZWZyZXNoSW1wb3J0ZWRTY3JpcHRzRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFVSTCwg
U2NyaXB0QnVmZmVyPj4mIHNjcmlwdHMpCit7CisgICAgYXV0byBqb2JRdWV1ZSA9IG1fam9iUXVl
dWVzLmdldChyZWdpc3RyYXRpb25LZXkpOworICAgIGlmICgham9iUXVldWUpCisgICAgICAgIHJl
dHVybjsKKworICAgIGpvYlF1ZXVlLT5pbXBvcnRlZFNjcmlwdHNGZXRjaEZpbmlzaGVkKGpvYkRh
dGFJZGVudGlmaWVyLCBzY3JpcHRzKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4
dEZhaWxlZFRvU3RhcnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDdhYTg3MmM5NGNjOTM2MGZiOGI0NjMwNTEyZTM5YmY5
MDAwNDUyZGQuLmZhYWNjZGM1ZmZkY2JhZjZlYjZiMmI3YzlmMjA4YTAyZGRhNzNkY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAg
LTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXRUJDT1JF
X0VYUE9SVCBDb25uZWN0aW9uKFNXU2VydmVyJiwgSWRlbnRpZmllcik7CiAKLSAgICAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpOworICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdv
cmtlckZldGNoUmVzdWx0JiYpOwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcik7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGE+JiYpPiYmKTsKQEAgLTExOCw2ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgdm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoU2VydmljZVdvcmtlckpv
YklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiwgU2hvdWxk
Tm90aWZ5V2hlblJlc29sdmVkKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlVW5y
ZWdpc3RyYXRpb25Kb2JJbkNsaWVudChTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgcmVnaXN0cmF0aW9uUmVzdWx0KSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFydFNjcmlwdEZldGNoSW5DbGllbnQoU2Vydmlj
ZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
LCBGZXRjaE9wdGlvbnM6OkNhY2hlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCByZWZyZXNo
SW1wb3J0ZWRTY3JpcHRzKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBGZXRjaE9wdGlvbnM6
OkNhY2hlLCBjb25zdCBWZWN0b3I8VVJMPiYsIFNlcnZpY2VXb3JrZXJKb2I6OlJlZnJlc2hJbXBv
cnRlZFNjcmlwdHNDYWxsYmFjayYmKSA9IDA7CiAKICAgICAgICAgc3RydWN0IFJlZ2lzdHJhdGlv
blJlYWR5UmVxdWVzdCB7CiAgICAgICAgICAgICBTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2lu
OwpAQCAtMTMwLDcgKzEzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPFJlZ2lzdHJhdGlv
blJlYWR5UmVxdWVzdD4gbV9yZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzOwogICAgIH07CiAKLSAg
ICB1c2luZyBTb2Z0VXBkYXRlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJK
b2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIFJlc291cmNlUmVxdWVz
dCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYp
PjsKKyAgICB1c2luZyBTb2Z0VXBkYXRlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFNlcnZpY2VX
b3JrZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIFJlc291cmNl
UmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdvcmtlckZldGNoUmVzdWx0JiYpPiYm
KT47CiAgICAgdXNpbmcgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFBy
b2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0aW5nUHJvY2Vzc0lkZW50aWZpZXIsIHN0ZDo6b3B0aW9u
YWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpPjsKICAgICB1c2luZyBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayA9IEZ1bmN0aW9u
PHZvaWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiYmKT4mJik+OwogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyKFVuaXF1ZVJlZjxT
V09yaWdpblN0b3JlPiYmLCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3Ry
aW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklELCBib29s
IHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZywgYm9vbCBoYXNT
ZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG92ZXJyaWRl
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkNvdW50VGVzdGluZ1ZhbHVlLCBTb2Z0VXBkYXRlQ2Fs
bGJhY2smJiwgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmLCBBcHBCb3VuZERvbWFp
bnNDYWxsYmFjayYmKTsKQEAgLTE1Niw2ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNv
bHZlUmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpOwog
ICAgIHZvaWQgcmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGJvb2wgdW5yZWdpc3Ry
YXRpb25SZXN1bHQpOwogICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YSYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CisgICAgdm9pZCByZWZyZXNoSW1w
b3J0ZWRTY3JpcHRzKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24mLCBjb25zdCBWZWN0b3I8VVJMPiYpOwogCiAgICAgdm9pZCB1cGRhdGVXb3JrZXIoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24m
LCBjb25zdCBVUkwmLCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8m
LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBDcm9z
c09yaWdpbkVtYmVkZGVyUG9saWN5JiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29y
a2VyVHlwZSwgTWVtb3J5Q29tcGFjdFJvYmluSG9vZEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmLCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIpOwogICAg
IHZvaWQgZmlyZUluc3RhbGxFdmVudChTV1NlcnZlcldvcmtlciYpOwpAQCAtMTc4LDYgKzE4MCw3
IEBAIHB1YmxpYzoKIAogICAgIFNXT3JpZ2luU3RvcmUmIG9yaWdpblN0b3JlKCkgeyByZXR1cm4g
bV9vcmlnaW5TdG9yZTsgfQogCisgICAgdm9pZCByZWZyZXNoSW1wb3J0ZWRTY3JpcHRzRmluaXNo
ZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8VVJMLCBTY3JpcHRC
dWZmZXI+PiYpOwogICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgU1dTZXJ2ZXJXb3Jr
ZXImLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0
ZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+Jiwg
U1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3Qgc3RkOjpv
cHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgU1dTZXJ2ZXJXb3JrZXIm
LCBib29sIHdhc1N1Y2Nlc3NmdWwpOwpAQCAtMjUxLDcgKzI1NCw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBhbGxvd0xvb3BiYWNrSVBBZGRyZXNzKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgdmFs
aWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFNlcnZp
Y2VXb3JrZXJKb2JUeXBlLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
IAotICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3Qg
V29ya2VyRmV0Y2hSZXN1bHQmKTsKKyAgICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYsIFdvcmtlckZldGNoUmVzdWx0JiYpOwogCiAgICAgdm9pZCBkaWRSZXNvbHZl
UmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9uKiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYpOwogCkBAIC0yNzUsNiArMjc4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVw
ZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhjb25zdCBDbGllbnRPcmlnaW4mLCBMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAgICAgdm9pZCB3aGVuSW1wb3J0SXNDb21wbGV0
ZWRJZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCisgICAgUmVzb3VyY2VS
ZXF1ZXN0IGNyZWF0ZVNjcmlwdFJlcXVlc3QoY29uc3QgVVJMJiwgY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGEmLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOworCiAgICAgSGFzaE1hcDxTV1NlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4+IG1fY29u
bmVjdGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LCBXZWFr
UHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwOwogICAg
IEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVl
X3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fcmVnaXN0cmF0aW9uczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuY3BwCmluZGV4IGQ5MjM5NGQxMDIyODg0MmVkM2M2YmRiMDZlOGU4MzJjM2ZjNDA4MWQuLmVl
OWViYmQ5NTM3ZTAxMWJjM2RjYTI2MGRlNjFlZGNhOGRjMTY5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVl
LmNwcApAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgYm9vbCBkb0NlcnRpZmljYXRlc01hdGNoKGNv
bnN0IENlcnRpZmljYXRlSW5mbyYgZmlyc3QsIGNvbnN0IENlcnRpZmljYXRlSQogI2VuZGlmCiB9
CiAKLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBXb3Jr
ZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRj
aEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlk
ZW50aWZpZXIsIFdvcmtlckZldGNoUmVzdWx0JiYgcmVzdWx0KQogewogICAgIGlmICghaXNDdXJy
ZW50bHlQcm9jZXNzaW5nSm9iKGpvYkRhdGFJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTAxLDIwICsxMDEsNTIgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZp
bmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYKICAgICAvLyBmbGFn
IHNldCwgYW5kIHNjcmlwdCdzIHNvdXJjZSB0ZXh0IGlzIGEgYnl0ZS1mb3ItYnl0ZSBtYXRjaCB3
aXRoIG5ld2VzdFdvcmtlcidzIHNjcmlwdCByZXNvdXJjZSdzIHNvdXJjZQogICAgIC8vIHRleHQs
IHRoZW46CiAgICAgaWYgKG5ld2VzdFdvcmtlciAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVu
dGlmaWVyKG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCksIGpvYi5zY3JpcHRVUkwpICYmIG5ld2Vz
dFdvcmtlci0+dHlwZSgpID09IGpvYi53b3JrZXJUeXBlICYmIHJlc3VsdC5zY3JpcHQgPT0gbmV3
ZXN0V29ya2VyLT5zY3JpcHQoKSAmJiBkb0NlcnRpZmljYXRlc01hdGNoKHJlc3VsdC5jZXJ0aWZp
Y2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlmaWNhdGVJbmZvKCkpKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZl
dGNoRmluaXNoZWQsIHNjcmlwdCBhbmQgY2VydGlmaWNhdGUgYXJlIG1hdGNoaW5nIGZvciByZWdp
c3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50
NjQoKSk7CisKKyAgICAgICAgYXV0byBzY3JpcHRVUkxzID0gbmV3ZXN0V29ya2VyLT5pbXBvcnRl
ZFNjcmlwdFVSTHMoKTsKKyAgICAgICAgaWYgKCFzY3JpcHRVUkxzLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgbV93b3JrZXJGZXRjaFJlc3VsdCA9IFdURk1vdmUocmVzdWx0KTsKKyAgICAgICAg
ICAgIG1fc2VydmVyLnJlZnJlc2hJbXBvcnRlZFNjcmlwdHMoam9iLCAqcmVnaXN0cmF0aW9uLCBz
Y3JpcHRVUkxzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIC8v
IEZJWE1FOiBmb3Igbm9uIGNsYXNzaWMgc2NyaXB0cywgY2hlY2sgdGhlIHNjcmlwdOKAmXMgbW9k
dWxlIHJlY29yZCdzIFtbRUNNQVNjcmlwdENvZGVdXS4KIAotICAgICAgICAvLyBJbnZva2UgUmVz
b2x2ZSBKb2IgUHJvbWlzZSB3aXRoIGpvYiBhbmQgcmVnaXN0cmF0aW9uLgotICAgICAgICBtX3Nl
cnZlci5yZXNvbHZlUmVnaXN0cmF0aW9uSm9iKGpvYiwgcmVnaXN0cmF0aW9uLT5kYXRhKCksIFNo
b3VsZE5vdGlmeVdoZW5SZXNvbHZlZDo6Tm8pOworICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNl
V29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkLCBzY3Jp
cHQsIGNlcnRpZmljYXRlIGFuZCBpbXBvcnRlZCBzY3JpcHRzIGFyZSBtYXRjaGluZyBmb3IgcmVn
aXN0cmF0aW9uSUQ9JWxsdSIsIHRoaXMsIHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOworICAgICAgICBzY3JpcHRBbmRJbXBvcnRlZFNjcmlwdHNGZXRjaEZpbmlzaGVkKGpv
YiwgKnJlZ2lzdHJhdGlvbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICAgICAgLy8g
SW52b2tlIEZpbmlzaCBKb2Igd2l0aCBqb2IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAg
ICBmaW5pc2hDdXJyZW50Sm9iKCk7CisgICAgbV9zZXJ2ZXIudXBkYXRlV29ya2VyKGpvYi5pZGVu
dGlmaWVyKCksICpyZWdpc3RyYXRpb24sIGpvYi5zY3JpcHRVUkwsIHJlc3VsdC5zY3JpcHQsIHJl
c3VsdC5jZXJ0aWZpY2F0ZUluZm8sIHJlc3VsdC5jb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlc3Vs
dC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCByZXN1bHQucmVmZXJyZXJQb2xpY3ksIGpvYi53
b3JrZXJUeXBlLCB7IH0sIGpvYi5zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSk7Cit9CisK
K3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6aW1wb3J0ZWRTY3JpcHRzRmV0Y2hGaW5pc2hlZChjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFVSTCwgU2NyaXB0QnVmZmVyPj4mIGltcG9ydGVkU2NyaXB0cykK
K3sKKyAgICBpZiAoIWlzQ3VycmVudGx5UHJvY2Vzc2luZ0pvYihqb2JEYXRhSWRlbnRpZmllcikp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIGpvYiA9IGZpcnN0Sm9iKCk7CisKKyAgICBh
dXRvKiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRp
b25LZXkpOworICAgIGlmICghcmVnaXN0cmF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvKiBuZXdlc3RXb3JrZXIgPSByZWdpc3RyYXRpb24tPmdldE5ld2VzdFdvcmtlcigpOworICAg
IGlmIChuZXdlc3RXb3JrZXIgJiYgbmV3ZXN0V29ya2VyLT5tYXRjaGluZ0ltcG9ydGVkU2NyaXB0
cyhpbXBvcnRlZFNjcmlwdHMpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIs
ICIlcCAtIFNXU2VydmVySm9iUXVldWU6OmltcG9ydGVkU2NyaXB0c0ZldGNoRmluaXNoZWQsIHNj
cmlwdCwgY2VydGlmaWNhdGUgYW5kIGltcG9ydGVkIHNjcmlwdHMgYXJlIG1hdGNoaW5nIGZvciBy
ZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CisgICAgICAgIHNjcmlwdEFuZEltcG9ydGVkU2NyaXB0c0ZldGNoRmluaXNoZWQo
am9iLCAqcmVnaXN0cmF0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEZJ
WE1FOiBVcGRhdGUgYWxsIHRoZSBpbXBvcnRlZCBzY3JpcHRzIGFzIHBlciBzcGVjLiBGb3Igbm93
LCB3ZSBqdXN0IGRvIGFzIGlmIHRoZXJlIGlzIG5vbmUuCisgICAgbV9zZXJ2ZXIudXBkYXRlV29y
a2VyKGpvYi5pZGVudGlmaWVyKCksICpyZWdpc3RyYXRpb24sIGpvYi5zY3JpcHRVUkwsIG1fd29y
a2VyRmV0Y2hSZXN1bHQuc2NyaXB0LCBtX3dvcmtlckZldGNoUmVzdWx0LmNlcnRpZmljYXRlSW5m
bywgbV93b3JrZXJGZXRjaFJlc3VsdC5jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fd29ya2VyRmV0
Y2hSZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgbV93b3JrZXJGZXRjaFJlc3VsdC5y
ZWZlcnJlclBvbGljeSwgam9iLndvcmtlclR5cGUsIHsgfSwgam9iLnNlcnZpY2VXb3JrZXJQYWdl
SWRlbnRpZmllcigpKTsKK30KIAotICAgIG1fc2VydmVyLnVwZGF0ZVdvcmtlcihqb2IuaWRlbnRp
ZmllcigpLCAqcmVnaXN0cmF0aW9uLCBqb2Iuc2NyaXB0VVJMLCByZXN1bHQuc2NyaXB0LCByZXN1
bHQuY2VydGlmaWNhdGVJbmZvLCByZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5LCByZXN1bHQu
Y3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgcmVzdWx0LnJlZmVycmVyUG9saWN5LCBqb2Iud29y
a2VyVHlwZSwgeyB9LCBqb2Iuc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkpOwordm9pZCBT
V1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRBbmRJbXBvcnRlZFNjcmlwdHNGZXRjaEZpbmlzaGVkKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdp
c3RyYXRpb24pCit7CisgICAgLy8gSW52b2tlIFJlc29sdmUgSm9iIFByb21pc2Ugd2l0aCBqb2Ig
YW5kIHJlZ2lzdHJhdGlvbi4KKyAgICBtX3NlcnZlci5yZXNvbHZlUmVnaXN0cmF0aW9uSm9iKGpv
YiwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkOjpObyk7CisK
KyAgICAvLyBJbnZva2UgRmluaXNoIEpvYiB3aXRoIGpvYiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMu
CisgICAgZmluaXNoQ3VycmVudEpvYigpOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jdXBkYXRlLWFsZ29yaXRobQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaAppbmRleCAzZDk2
ODA2NzllNGYzODZjODhhY2YwZTg1NWQzYWY4NGRlY2I0MDE5Li4yYWRiYjg1NTU4NmMxMjAwNDAx
OGQ1MDc1NzFkMDEwYzI0N2E3Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaApAQCAtMzAsMTEgKzMwLDEz
IEBACiAjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0
YS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIK
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
V1NlcnZlcldvcmtlcjsKK2NsYXNzIFNlcnZpY2VXb3JrZXJKb2I7CiBzdHJ1Y3QgV29ya2VyRmV0
Y2hSZXN1bHQ7CiAKIGNsYXNzIFNXU2VydmVySm9iUXVldWUgewpAQCAtNTEsNyArNTMsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHJ1bk5leHRKb2IoKTsKIAotICAgIHZvaWQgc2NyaXB0RmV0Y2hG
aW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBXb3Jr
ZXJGZXRjaFJlc3VsdCYpOworICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBXb3JrZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2
b2lkIGltcG9ydGVkU2NyaXB0c0ZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxVUkwsIFNjcmlwdEJ1ZmZlcj4+
Jik7CiAgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YUlkZW50aWZpZXImLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAg
ICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyJiwgU1dTZXJ2ZXJXb3JrZXImLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwpAQCAtNzQsMTIgKzc3
LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnN0YWxsKFNXU2VydmVyUmVnaXN0cmF0aW9uJiwg
U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAgICAgdm9pZCByZW1vdmVBbGxKb2JzTWF0Y2hp
bmcoY29uc3QgRnVuY3Rpb248Ym9vbChTZXJ2aWNlV29ya2VySm9iRGF0YSYpPiYpOworICAgIHZv
aWQgc2NyaXB0QW5kSW1wb3J0ZWRTY3JpcHRzRmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YSYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CiAKICAgICBEZXF1ZTxTZXJ2aWNl
V29ya2VySm9iRGF0YT4gbV9qb2JRdWV1ZTsKIAogICAgIFRpbWVyIG1fam9iVGltZXI7CiAgICAg
U1dTZXJ2ZXImIG1fc2VydmVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgbV9y
ZWdpc3RyYXRpb25LZXk7CisgICAgV29ya2VyRmV0Y2hSZXN1bHQgbV93b3JrZXJGZXRjaFJlc3Vs
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggNWM2
YjJkYmRhYjNiNzRiYjNmZjM5NmIzZDk4ZGFmOGVlNTFhMmYwMy4uOTJjZDA1Mjk4YTkwYTNiN2Q3
ODM4NGJmODVlNTZmNjFlNmQwMTNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTQyNyw2ICs0Mjcs
MjEgQEAgYm9vbCBTV1NlcnZlcldvcmtlcjo6aXNDbGllbnRBY3RpdmVTZXJ2aWNlV29ya2VyKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWUKICAgICByZXR1cm4gcmVnaXN0cmF0aW9uSWRl
bnRpZmllciA9PSBtX2RhdGEucmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKIH0KIAorVmVjdG9yPFVS
TD4gU1dTZXJ2ZXJXb3JrZXI6OmltcG9ydGVkU2NyaXB0VVJMcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGNvcHlUb1ZlY3RvcihtX3NjcmlwdFJlc291cmNlTWFwLmtleXMoKSk7Cit9CisKK2Jvb2wg
U1dTZXJ2ZXJXb3JrZXI6Om1hdGNoaW5nSW1wb3J0ZWRTY3JpcHRzKGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8VVJMLCBTY3JpcHRCdWZmZXI+PiYgc2NyaXB0cykgY29uc3QKK3sKKyAgICBmb3IgKGF1
dG8mIHNjcmlwdCA6IHNjcmlwdHMpIHsKKyAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fc2NyaXB0
UmVzb3VyY2VNYXAuZmluZChzY3JpcHQuZmlyc3QpOworICAgICAgICBpZiAoaXRlcmF0b3IgPT0g
bV9zY3JpcHRSZXNvdXJjZU1hcC5lbmQoKSB8fCBpdGVyYXRvci0+dmFsdWUuc2NyaXB0ICE9IHNj
cmlwdC5zZWNvbmQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggOWJkNTY3YzNjYjk3MTE1MTg4OTc5NDlj
MjE5MDg1NjU4MmY3NjU0NC4uZjI0ZTJlYmZhMTBjNGVmNDA0YjFmOWFmYjI2NTJmNGFlYTA2OGE5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuaApAQCAtMTQ0LDYgKzE0NCwxMCBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBib29sIGlzQ2xpZW50QWN0aXZlU2VydmljZVdvcmtlcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllcikgY29uc3Q7CiAKKyAgICBWZWN0b3I8VVJMPiBpbXBvcnRlZFNj
cmlwdFVSTHMoKSBjb25zdDsKKyAgICBjb25zdCBNZW1vcnlDb21wYWN0Um9iaW5Ib29kSGFzaE1h
cDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiBzY3JpcHRS
ZXNvdXJjZU1hcCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0UmVzb3VyY2VNYXA7IH0KKyAgICBi
b29sIG1hdGNoaW5nSW1wb3J0ZWRTY3JpcHRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8VVJMLCBT
Y3JpcHRCdWZmZXI+PiYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFNXU2VydmVyV29ya2VyKFNX
U2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBjb25zdCBTY3JpcHRC
dWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiwgU3Ry
aW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBNZW1vcnlDb21wYWN0Um9iaW5Ib29kSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDA4MjY3M2IzMzE1NzkxOGJkMGIyZTU3Yzc2OTIy
NWM1ZDA4NDZiOTMuLjJhN2U4NGMyNTU2ZDFiYWQyMWFhYWM3NmRmODZiMjdlOTVjZWIzYjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC01
MCw3ICs1MCw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogY2xhc3MgU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIgZmluYWwgOiBwdWJsaWMgTmV0d29ya0xvYWRDbGllbnQsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcj4gewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHVzaW5nIEhhbmRsZXIgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0Jik+OworICAg
IHVzaW5nIEhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OldvcmtlckZl
dGNoUmVzdWx0JiYpPjsKICAgICBzdGF0aWMgdm9pZCBzdGFydChOZXR3b3JrU2Vzc2lvbiosIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJiYsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSGFuZGxlciYmKTsKIAogICAgIH5TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcAppbmRleCBjZjMwZGU0OWZjYjA5OTgxY2Y3ZTNkNjExZWIyOWVkYjlkYTQ4ZWNjLi43MzEw
NWU0Y2M5NDRmNmMyOTQyMGFlNzUyM2Y0MTZhYzJjOTJiZThjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTM0LDYgKzEzNCwxMSBAQCB2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KFNlcnZpY2VXb3JrZXJKb2JJ
ZGVudGlmaWVyCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpTdGFy
dFNjcmlwdEZldGNoRm9yU2VydmVyKGpvYklkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleSwgY2Fj
aGVQb2xpY3kpKTsKIH0KIAordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnJlZnJlc2hJbXBv
cnRlZFNjcmlwdHMoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIgam9iSWRlbnRpZmllciwgRmV0
Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSwgY29uc3QgVmVjdG9yPFVSTD4mIHVybHMsIFNl
cnZpY2VXb3JrZXJKb2I6OlJlZnJlc2hJbXBvcnRlZFNjcmlwdHNDYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0
aW9uOjpSZWZyZXNoSW1wb3J0ZWRTY3JpcHRzKGpvYklkZW50aWZpZXIsIGNhY2hlUG9saWN5LCB1
cmxzKSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlv
bjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGVJbkNsaWVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUg
c3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+JiBzZXJ2aWNlV29y
a2VyRGF0YSkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NsaWVudENvbm5lY3Rpb246OlVw
ZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKGlkZW50aWZpZXIsIHN0YXRlLCBzZXJ2aWNlV29ya2VyRGF0
YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDRmMDI1ZTIxOTEx
ZjMyYjZlYTBmM2QyYTk5N2U1ODk5ZTM4MGFiNDUuLmY0N2M4Yzk2MTAxMWFhNjhiMDI2ZjRkYjdm
MzEzY2M3ZWI5NDdkN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAg
LTkyLDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25Kb2JJ
bkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmLCBXZWJDb3JlOjpTaG91bGROb3RpZnlX
aGVuUmVzb2x2ZWQpIGZpbmFsOwogICAgIHZvaWQgcmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5D
bGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0
KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYsIFdlYkNvcmU6OkZldGNoT3B0aW9uczo6Q2FjaGUpIGZpbmFsOworICAgIHZv
aWQgcmVmcmVzaEltcG9ydGVkU2NyaXB0cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRp
ZmllciwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpDYWNoZSwgY29uc3QgVmVjdG9yPFVSTD4mLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpSZWZyZXNoSW1wb3J0ZWRTY3JpcHRzQ2FsbGJhY2sm
Jik7CiAgICAgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZUluQ2xpZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uU3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdv
cmtlckRhdGE+JikgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVXb3JrZXJTdGF0ZUluQ2xpZW50KFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyU3Rh
dGUpIGZpbmFsOwogICAgIHZvaWQgZmlyZVVwZGF0ZUZvdW5kRXZlbnQoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCmluZGV4IDkyNWE3YzViODYyNWIzZGIyZjAwZmE2MTExZmNmMzgzYjIx
NjYzODUuLmI0Yzc2OTVkMmFjYTk1NGNiOGYxMTkzYzJiMWQxOWJjMmFlZmFhMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlv
bi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI3LDYgKzI3LDcgQEAgbWVzc2FnZXMg
LT4gV2ViU1dDbGllbnRDb25uZWN0aW9uIHsKICAgICBKb2JSZWplY3RlZEluU2VydmVyKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyIGpvYkRhdGFJZGVudGlmaWVyLCBzdHJ1Y3Qg
V2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRpb24pCiAgICAgUmVnaXN0cmF0aW9uSm9iUmVz
b2x2ZWRJblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBqb2JEYXRh
SWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
IHJlZ2lzdHJhdGlvbiwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZE5vdGlmeVdoZW5SZXNvbHZl
ZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCiAgICAgU3RhcnRTY3JpcHRGZXRjaEZvclNlcnZl
cihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwg
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXksIFdl
YkNvcmU6OkZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kpCisgICAgUmVmcmVzaEltcG9y
dGVkU2NyaXB0cyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBqb2JEYXRhSWRl
bnRpZmllciwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSwgVmVjdG9y
PFVSTD4gdXJscykgLT4gKFZlY3RvcjxzdGQ6OnBhaXI8VVJMLCBXZWJDb3JlOjpTY3JpcHRCdWZm
ZXI+PiByZXN1bHRzKTsKICAgICBVcGRhdGVSZWdpc3RyYXRpb25TdGF0ZShXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRlLCBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhPiBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikK
ICAgICBVcGRhdGVXb3JrZXJTdGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJTdGF0ZSBzdGF0ZSkKICAgICBGaXJlVXBkYXRlRm91bmRFdmVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKaW5kZXggMTg4NjIzODEwZTljYTk5ZDA3MDBhZGVjNDYxNjdjZGQ3ZmViZmVk
My4uMTk1NWU0NWU0M2E1MDE3MzFhMzNjY2Y3MTE0ZDU3NjliNTYxOTI1MiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDQtMjUgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIHNlcnZpY2Ugd29ya2VyIHVwZGF0
ZSBzaG91bGQgcmVmcmVzaCBpbXBvcnRlZCBzY3JpcHRzIGluIGFkZGl0aW9uIHRvIHRoZSBtYWlu
IHNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM5NjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NyZWRl
bnRpYWxzLmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wNC0yNCAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgVGV4dFRyYWNrTG9hZGVyIHNob3VsZCB1c2Ug
U2FtZU9yaWdpbiBtb2RlIGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L2NyZWRlbnRpYWxzLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NyZWRl
bnRpYWxzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA5ZDNlNGNjM2RhZmQ4ZjNiYmU0YzUzYTBk
M2M3MmU3YTc1NzJkMjBlLi5lOWI0YTUzMWFjOGU1ZjY4MmIwNWNiNzliYTQ0OTQzY2I2NzlmYThh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9jcmVkZW50aWFscy5odHRwcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY3JlZGVudGlhbHMuaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDcgKzEsNyBAQAogCiBQQVNTIFNldCBjb29raWVzIGFzIGluaXRpYWxpemF0aW9u
CiBQQVNTIE1haW4gc2NyaXB0IHNob3VsZCBoYXZlIGNyZWRlbnRpYWxzCi1GQUlMIEltcG9ydGVk
IHNjcmlwdCBzaG91bGQgaGF2ZSBjcmVkZW50aWFscyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCBy
ZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9i
amVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvc3RNZXNzYWdlJykiCi1GQUlMIE1vZHVsZSB3aXRo
IGFuIGltcG9ydGVkIHN0YXRlbWVudCBzaG91bGQgbm90IGhhdmUgY3JlZGVudGlhbHMgcHJvbWlz
ZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9y
OiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3dvcmtlci5wb3N0TWVzc2FnZScp
IgorUEFTUyBJbXBvcnRlZCBzY3JpcHQgc2hvdWxkIGhhdmUgY3JlZGVudGlhbHMKK1BBU1MgTW9k
dWxlIHdpdGggYW4gaW1wb3J0ZWQgc3RhdGVtZW50IHNob3VsZCBub3QgaGF2ZSBjcmVkZW50aWFs
cwogRkFJTCBTY3JpcHQgd2l0aCBzZXJ2aWNlIHdvcmtlciBzZXJ2ZWQgYXMgbW9kdWxlcyBzaG91
bGQgbm90IGhhdmUgY3JlZGVudGlhbHMgYXNzZXJ0X2VxdWFsczogbmV3IG1vZHVsZSB3b3JrZXIg
c2hvdWxkIG5vdCBoYXZlIGNyZWRlbnRpYWxzIGV4cGVjdGVkICh1bmRlZmluZWQpIHVuZGVmaW5l
ZCBidXQgZ290IChzdHJpbmcpICIxIgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458426</attachid>
            <date>2022-04-27 00:45:15 -0700</date>
            <delta_ts>2022-04-27 06:13:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239657-20220427094512.patch</filename>
            <type>text/plain</type>
            <size>45253</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMzN2NlNDdiNTY5OTZk
NDA2MWMxYWI1NGE1MTAzODJiNDhhM2IzMi4uZjZmYWJiYWU1NDBlNGM3YzExNDMxMjUyNWYzYTBk
ZGI0MDIyMTQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTA0LTI3ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBzZXJ2aWNlIHdvcmtlciB1
cGRhdGUgc2hvdWxkIHJlZnJlc2ggaW1wb3J0ZWQgc2NyaXB0cyBpbiBhZGRpdGlvbiB0byB0aGUg
bWFpbiBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzOTY1NworCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAg
IEFmdGVyIGNoZWNraW5nIG1haW4gc2NyaXB0LCBpZiBtYXRjaGluZywgd2UgcmVmcmVhY2ggZWFj
aCBpZGVudGlmaWVkIGltcG9ydGVkIHNjcmlwdC4KKyAgICAgICAgSWYgbWF0Y2hpbmcsIHdlIHJl
dXNlIHRoZSBzYW1lIHdvcmtlciwgb3RoZXJ3aXNlIHdlIGluc3RhbGwgYSBuZXcgb25lLgorICAg
ICAgICBXZSByZXVzZSB0aGUgc29mdCB1cGRhdGUgbG9hZGVyIHRvIGZldGNoIHNjcmlwdHMgaW4g
Y2FzZSBvZiBzb2Z0IHVwZGF0ZS4KKyAgICAgICAgT3RoZXJ3aXNlLCB3ZSBsb2FkIHNjcmlwdHMg
dGhyb3VnaCB0aGUgam9iJ3MgY2xpZW50LgorCisgICAgICAgIENvdmVyZWQgYnkgcmViYXNlZCB0
ZXN0LgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHA6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcDoKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcDoKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VySm9iQ2xpZW50Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5o
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDIyLTA0
LTI3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGVz
dFJ1bm5lciBBUEkgdG8gY2xlYXIgbWVtb3J5IGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmMDBiZDEzYjZk
NjQ4ZmEwZjFjZDg3YzNmMDgxMDQxMDBkZmQzMmMuLjlhMjFlNGUxYzY4MTk5NGIzMDgzZTNkZjE4
MTM3ZDYwYzE5NjI3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMjcgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIHNlcnZpY2Ugd29ya2Vy
IHVwZGF0ZSBzaG91bGQgcmVmcmVzaCBpbXBvcnRlZCBzY3JpcHRzIGluIGFkZGl0aW9uIHRvIHRo
ZSBtYWluIHNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM5NjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKwogMjAyMi0wNC0yNyAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHRlc3RSdW5uZXIgQVBJ
IHRvIGNsZWFyIG1lbW9yeSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCA1NWYzNzM1YzIyMTdmZTQ5NWQ0
N2UyY2RkZGQ0NzFlMDRmMDA0MmU3Li4zM2RlZTkzMDIyYmRkYWQ5NmI2NWY5OGJmMjJlMDNkZDhk
OTdhNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGll
bnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dD
bGllbnRDb25uZWN0aW9uLmNwcApAQCAtMTE1LDYgKzExNSw0NSBAQCB2b2lkIFNXQ2xpZW50Q29u
bmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihTZXJ2aWNlV29ya2VySm9iSWRlbnRp
ZmllciBqbwogICAgICAgICBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHsgc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIoKSwgam9iSWRlbnRpZmllciB9LCBXVEZNb3ZlKHJlZ2lzdHJhdGlv
bktleSksIHdvcmtlckZldGNoRXJyb3IoUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHsgfSwgbWFrZVN0cmluZygiRmFpbGVkIHRvIGZldGNoIHNjcmlwdCBmb3Ig
c2VydmljZSB3b3JrZXIgd2l0aCBzY29wZSAiLCByZWdpc3RyYXRpb25LZXkuc2NvcGUoKS5zdHJp
bmcoKSkgfSkpOwogfQogCitjbGFzcyBSZWZyZXNoSW1wb3J0ZWRTY3JpcHRzQ2FsbGJhY2tIYW5k
bGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBSZWZyZXNoSW1wb3J0ZWRTY3JpcHRzQ2FsbGJhY2tIYW5kbGVyKFNlcnZpY2VXb3JrZXJKb2I6
OlJlZnJlc2hJbXBvcnRlZFNjcmlwdHNDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgICAgICA6IG1f
Y2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCisgICAgeworICAgIH0KKworICAgIH5SZWZyZXNo
SW1wb3J0ZWRTY3JpcHRzQ2FsbGJhY2tIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9j
YWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjayldICgpIG11dGFibGUgeworICAgICAgICAg
ICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgdm9pZCBjYWxsKFZl
Y3RvcjxzdGQ6OnBhaXI8VVJMLCBTY3JpcHRCdWZmZXI+PiYmIHNjcmlwdHMpCisgICAgeworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjayksIHNj
cmlwdHMgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShzY3JpcHRzKSldICgpIG11dGFibGUgewor
ICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShzY3JpcHRzKSk7CisgICAgICAgIH0pOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBTZXJ2aWNlV29ya2VySm9iOjpSZWZyZXNoSW1wb3J0ZWRTY3Jp
cHRzQ2FsbGJhY2sgbV9jYWxsYmFjazsKK307CisKK3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpy
ZWZyZXNoSW1wb3J0ZWRTY3JpcHRzKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyIGpvYklkZW50
aWZpZXIsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3ksIFZlY3RvcjxVUkw+JiYgdXJs
cywgU2VydmljZVdvcmtlckpvYjo6UmVmcmVzaEltcG9ydGVkU2NyaXB0c0NhbGxiYWNrJiYgY2Fs
bGJhY2spCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvIGhhbmRsZXIg
PSBtYWtlVW5pcXVlPFJlZnJlc2hJbXBvcnRlZFNjcmlwdHNDYWxsYmFja0hhbmRsZXI+KFdURk1v
dmUoY2FsbGJhY2spKTsKKyAgICBwb3N0VGFza0ZvckpvYihqb2JJZGVudGlmaWVyLCBJc0pvYkNv
bXBsZXRlOjpObywgW2NhY2hlUG9saWN5LCB1cmxzID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUo
dXJscykpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0gKGF1dG8mIGpvYikgbXV0YWJsZSB7
CisgICAgICAgIGpvYi5yZWZyZXNoSW1wb3J0ZWRTY3JpcHRzKHVybHMsIGNhY2hlUG9saWN5LCBb
aGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildIChhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgICAg
ICBoYW5kbGVyLT5jYWxsKFdURk1vdmUocmVzdWx0KSk7CisgICAgICAgIH0pOworICAgIH0pOwor
fQogCiBzdGF0aWMgdm9pZCBwb3N0TWVzc2FnZVRvQ29udGFpbmVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2Vydmlj
ZVdvcmtlckRhdGEmJiBzb3VyY2VEYXRhLCBTdHJpbmcmJiBzb3VyY2VPcmlnaW4pCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgK
aW5kZXggYTFmZGJlZTUwN2Q5MzhjNmE5NjdlODEwZTM3NjE3M2ExZTAwNzliMi4uMjNlMDZjNjFm
MmU3ZjUyNThkYjM0Zjg3ZDA0MDVhYjZlMzUyOTM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaApAQCAtMTI0LDYgKzEyNCw3
IEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGpvYlJlamVjdGVkSW5TZXJ2
ZXIoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIEV4Y2VwdGlvbkRhdGEmJik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKFNlcnZpY2VX
b3JrZXJKb2JJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmLCBTaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRTY3Jp
cHRGZXRjaEZvclNlcnZlcihTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYmLCBGZXRjaE9wdGlvbnM6OkNhY2hlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlZnJlc2hJbXBvcnRlZFNjcmlwdHMoU2VydmljZVdvcmtlckpvYklkZW50aWZp
ZXIsIEZldGNoT3B0aW9uczo6Q2FjaGUsIFZlY3RvcjxVUkw+JiYsIFNlcnZpY2VXb3JrZXJKb2I6
OlJlZnJlc2hJbXBvcnRlZFNjcmlwdHNDYWxsYmFjayYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYgc291cmNlLCBTdHJpbmcmJiBzb3VyY2VP
cmlnaW4pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUo
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25TdGF0ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyRGF0YT4mKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVdvcmtlclN0YXRlKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VyU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5kZXggNmJhM2QxY2Qy
M2I0YTJlN2FhODMxOWMwNDQ5ODJkZjRjMjk3ZGQ0NS4uYjRjMmVhMzM2ZTc3N2ZmZjE5N2MxOWI4
N2U5MzFmMGNkODYwZTI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC0xMjksNiArMTI5LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHdpbGxTZXR0bGVSZWdpc3RyYXRpb25Qcm9taXNlKGJvb2wgc3VjY2Vz
cyk7CiAKICAgICBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyIGNvbnRleHRJZGVudGlm
aWVyKCkgZmluYWw7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCgpIGZpbmFs
IHsgcmV0dXJuIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgU1dDbGllbnRDb25u
ZWN0aW9uJiBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCmluZGV4IGZlYzVmMzk2
MGRlNDlhOWIwMjhiMWYwMTQzOWMzMGRhZjdlY2FjZTUuLjZiY2M1ZWU0MDMyY2VkZjA3MWFkOWMw
MjE1YTc1OTc4ZDZjYWI2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKQEAgLTk1LDI3ICs5NSw5OCBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2goRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBv
bGljeSkKICAgICBtX2NsaWVudC5zdGFydFNjcmlwdEZldGNoRm9ySm9iKCp0aGlzLCBjYWNoZVBv
bGljeSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGZXRjaE9wdGlvbnM6OkNhY2hlIGNh
Y2hlUG9saWN5KQorc3RhdGljIFJlc291cmNlUmVxdWVzdCBzY3JpcHRSZXNvdXJjZVJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAg
QVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSAg
ICBBU1NFUlQoIW1fY29tcGxldGVkKTsKLQotICAgIC8vIEZJWE1FOiBXb3JrZXJTY3JpcHRMb2Fk
ZXIgaXMgdGhlIHdyb25nIGxvYWRlciBjbGFzcyB0byB1c2UgaGVyZSwgYnV0IHRoZXJlJ3Mgbm90
aGluZyBlbHNlIGJldHRlciByaWdodCBub3cuCi0gICAgbV9zY3JpcHRMb2FkZXIgPSBXb3JrZXJT
Y3JpcHRMb2FkZXI6OmNyZWF0ZSgpOwotCi0gICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgeyBt
X2pvYkRhdGEuc2NyaXB0VVJMIH07CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgeyB1cmwg
fTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcklkZW50aWZpZXIoY29udGV4dC5yZXNvdXJjZVJl
cXVlc3RJZGVudGlmaWVyKCkpOwogICAgIHJlcXVlc3QuYWRkSFRUUEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpTZXJ2aWNlV29ya2VyLCAic2NyaXB0Il9zKTsKKyAgICByZXR1cm4gcmVxdWVz
dDsKK30KIAorc3RhdGljIEZldGNoT3B0aW9ucyBzY3JpcHRGZXRjaE9wdGlvbnMoRmV0Y2hPcHRp
b25zOjpDYWNoZSBjYWNoZVBvbGljeSwgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbiBkZXN0aW5h
dGlvbikKK3sKICAgICBGZXRjaE9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLm1vZGUgPSBG
ZXRjaE9wdGlvbnM6Ok1vZGU6OlNhbWVPcmlnaW47CiAgICAgb3B0aW9ucy5jYWNoZSA9IGNhY2hl
UG9saWN5OwogICAgIG9wdGlvbnMucmVkaXJlY3QgPSBGZXRjaE9wdGlvbnM6OlJlZGlyZWN0OjpF
cnJvcjsKLSAgICBvcHRpb25zLmRlc3RpbmF0aW9uID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlv
bjo6U2VydmljZXdvcmtlcjsKKyAgICBvcHRpb25zLmRlc3RpbmF0aW9uID0gZGVzdGluYXRpb247
CiAgICAgb3B0aW9ucy5jcmVkZW50aWFscyA9IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OlNh
bWVPcmlnaW47CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK1NlcnZpY2VXb3JrZXJKb2I6Oklt
cG9ydGVkU2NyaXB0c0xvYWRlcjo6SW1wb3J0ZWRTY3JpcHRzTG9hZGVyKFJlZnJlc2hJbXBvcnRl
ZFNjcmlwdHNDYWxsYmFjayYmIGNhbGxiYWNrKQorICAgIDogbV9jYWxsYmFjayhXVEZNb3ZlKGNh
bGxiYWNrKSkKK3sKK30KKworU2VydmljZVdvcmtlckpvYjo6SW1wb3J0ZWRTY3JpcHRzTG9hZGVy
Ojp+SW1wb3J0ZWRTY3JpcHRzTG9hZGVyKCkKK3sKKyAgICBpZiAobV9jYWxsYmFjaykKKyAgICAg
ICAgbV9jYWxsYmFjayh7IH0pOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OkltcG9ydGVk
U2NyaXB0c0xvYWRlcjo6bG9hZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBWZWN0b3I8VVJMPiYgdXJscywgRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKK3sK
KyAgICBtX2xvYWRlcnMucmVzZXJ2ZUNhcGFjaXR5KHVybHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1
dG8mIHVybCA6IHVybHMpIHsKKyAgICAgICAgYXV0byBzY3JpcHRMb2FkZXIgPSBXb3JrZXJTY3Jp
cHRMb2FkZXI6OmNyZWF0ZSgpOworICAgICAgICBzY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25v
dXNseShjb250ZXh0LCBzY3JpcHRSZXNvdXJjZVJlcXVlc3QoY29udGV4dCwgdXJsKSwgV29ya2Vy
U2NyaXB0TG9hZGVyOjpTb3VyY2U6OkNsYXNzaWNXb3JrZXJTY3JpcHQsIHNjcmlwdEZldGNoT3B0
aW9ucyhjYWNoZVBvbGljeSwgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2NyaXB0KSwgQ29u
dGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkRvTm90RW5mb3JjZSwgU2VydmljZVdvcmtl
cnNNb2RlOjpOb25lLCAqdGhpcywgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAg
ICAgIGlmIChzY3JpcHRMb2FkZXItPmZhaWxlZCgpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIG1fbG9hZGVycy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShzY3JpcHRMb2FkZXIpKTsK
KyAgICB9CisgICAgbV9yZW1haW5pbmdMb2FkcyA9IG1fbG9hZGVycy5zaXplKCk7Cit9CisKK3Zv
aWQgU2VydmljZVdvcmtlckpvYjo6SW1wb3J0ZWRTY3JpcHRzTG9hZGVyOjpjYW5jZWwoKQorewor
ICAgIGF1dG8gbG9hZGVycyA9IFdURk1vdmUobV9sb2FkZXJzKTsKKyAgICBmb3IgKGF1dG8gbG9h
ZGVyIDogbG9hZGVycykKKyAgICAgICAgbG9hZGVyLT5jYW5jZWwoKTsKK30KKwordm9pZCBTZXJ2
aWNlV29ya2VySm9iOjpJbXBvcnRlZFNjcmlwdHNMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkKK3sK
KyAgICBpZiAoLS1tX3JlbWFpbmluZ0xvYWRzKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0
b3I8c3RkOjpwYWlyPFVSTCwgU2NyaXB0QnVmZmVyPj4gcmVzdWx0czsKKyAgICByZXN1bHRzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobV9sb2FkZXJzLnNpemUoKSk7CisKKyAgICBhdXRvIGxvYWRl
cnMgPSBXVEZNb3ZlKG1fbG9hZGVycyk7CisgICAgZm9yIChhdXRvIGxvYWRlciA6IGxvYWRlcnMp
IHsKKyAgICAgICAgaWYgKCFsb2FkZXItPmZhaWxlZCgpKQorICAgICAgICAgICAgcmVzdWx0cy51
bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIobG9hZGVyLT51cmwoKSwgbG9hZGVyLT5zY3Jp
cHQoKSkpOworICAgIH0KKworICAgIG1fY2FsbGJhY2soV1RGTW92ZShyZXN1bHRzKSk7Cit9CisK
Kwordm9pZCBTZXJ2aWNlV29ya2VySm9iOjpyZWZyZXNoSW1wb3J0ZWRTY3JpcHRzKGNvbnN0IFZl
Y3RvcjxVUkw+JiB1cmxzLCBGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5LCBSZWZyZXNo
SW1wb3J0ZWRTY3JpcHRzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQobV9jcmVh
dGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOworICAgIEFTU0VSVCghbV9j
b21wbGV0ZWQpOworCisgICAgYXV0byogY29udGV4dCA9IG1fY2xpZW50LmNvbnRleHQoKTsKKyAg
ICBpZiAoIWNvbnRleHQpIHsKKyAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1faW1wb3J0ZWRTY3JpcHRzTG9hZGVyID0gbWFrZVVuaXF1ZTxJbXBv
cnRlZFNjcmlwdHNMb2FkZXI+KFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX2ltcG9ydGVkU2Ny
aXB0c0xvYWRlci0+bG9hZCgqY29udGV4dCwgdXJscywgY2FjaGVQb2xpY3kpOworfQorCit2b2lk
IFNlcnZpY2VXb3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0aENvbnRleHQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKK3sKKyAg
ICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwor
ICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgYXV0byBzb3VyY2UgPSBtX2pvYkRhdGEu
d29ya2VyVHlwZSA9PSBXb3JrZXJUeXBlOjpNb2R1bGUgPyBXb3JrZXJTY3JpcHRMb2FkZXI6OlNv
dXJjZTo6TW9kdWxlU2NyaXB0IDogV29ya2VyU2NyaXB0TG9hZGVyOjpTb3VyY2U6OkNsYXNzaWNX
b3JrZXJTY3JpcHQ7Ci0gICAgbV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShjb250
ZXh0LCBXVEZNb3ZlKHJlcXVlc3QpLCBzb3VyY2UsIFdURk1vdmUob3B0aW9ucyksIENvbnRlbnRT
ZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2UsIFNlcnZpY2VXb3JrZXJzTW9k
ZTo6Tm9uZSwgKnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworCisgICAgbV9z
Y3JpcHRMb2FkZXIgPSBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZSgpOworICAgIG1fc2NyaXB0
TG9hZGVyLT5sb2FkQXN5bmNocm9ub3VzbHkoY29udGV4dCwgc2NyaXB0UmVzb3VyY2VSZXF1ZXN0
KGNvbnRleHQsIG1fam9iRGF0YS5zY3JpcHRVUkwpLCBzb3VyY2UsIHNjcmlwdEZldGNoT3B0aW9u
cyhjYWNoZVBvbGljeSwgRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2VydmljZXdvcmtlciks
IENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2UsIFNlcnZpY2VX
b3JrZXJzTW9kZTo6Tm9uZSwgKnRoaXMsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwog
fQogCiBSZXNvdXJjZUVycm9yIFNlcnZpY2VXb3JrZXJKb2I6OnZhbGlkYXRlU2VydmljZVdvcmtl
clJlc3BvbnNlKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTE4MCwxMiArMjUxLDE0IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQoKQogCiBib29sIFNlcnZpY2VXb3JrZXJKb2I6OmNh
bmNlbFBlbmRpbmdMb2FkKCkKIHsKLSAgICBpZiAoIW1fc2NyaXB0TG9hZGVyKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKGF1dG8gaW1wb3J0ZWRTY3JpcHRzTG9hZGVyID0gV1RGTW92
ZShtX2ltcG9ydGVkU2NyaXB0c0xvYWRlcikpCisgICAgICAgIGltcG9ydGVkU2NyaXB0c0xvYWRl
ci0+Y2FuY2VsKCk7CiAKLSAgICBtX3NjcmlwdExvYWRlci0+Y2FuY2VsKCk7Ci0gICAgbV9zY3Jp
cHRMb2FkZXIgPSBudWxscHRyOwotICAgIHJldHVybiB0cnVlOworICAgIGlmIChhdXRvIGxvYWRl
ciA9IFdURk1vdmUobV9zY3JpcHRMb2FkZXIpKSB7CisgICAgICAgIG1fc2NyaXB0TG9hZGVyLT5j
YW5jZWwoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmgKaW5kZXggM2ZlYjIwYThkOGE4OTI4M2Q1YzZh
MjJmZTg5ZTdkYzU5M2QyNmE0Zi4uZjM1NjY3MzQxMGE2OTcyZWVmMDY4NmNhYzRiZTIzMGJiOTMx
YjhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYi5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVz
LmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0TG9hZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyU2Ny
aXB0TG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC01OCw2ICs1OSw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KGJvb2wpOwogICAgIHZv
aWQgc3RhcnRTY3JpcHRGZXRjaChGZXRjaE9wdGlvbnM6OkNhY2hlKTsKIAorICAgIHVzaW5nIFJl
ZnJlc2hJbXBvcnRlZFNjcmlwdHNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPHN0ZDo6cGFpcjxVUkwsIFNjcmlwdEJ1ZmZlcj4+JiYpPjsKKyAgICB2b2lkIHJlZnJlc2hJ
bXBvcnRlZFNjcmlwdHMoY29uc3QgVmVjdG9yPFVSTD4mLCBGZXRjaE9wdGlvbnM6OkNhY2hlLCBS
ZWZyZXNoSW1wb3J0ZWRTY3JpcHRzQ2FsbGJhY2smJik7CisKICAgICB1c2luZyBJZGVudGlmaWVy
ID0gU2VydmljZVdvcmtlckpvYklkZW50aWZpZXI7CiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9qb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyOyB9
CiAKQEAgLTg0LDggKzg4LDI2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fY29tcGxldGVkIHsg
ZmFsc2UgfTsKIAorICAgIGNsYXNzIEltcG9ydGVkU2NyaXB0c0xvYWRlciA6IHB1YmxpYyBXb3Jr
ZXJTY3JpcHRMb2FkZXJDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
KyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEltcG9ydGVkU2NyaXB0c0xvYWRlcihSZWZy
ZXNoSW1wb3J0ZWRTY3JpcHRzQ2FsbGJhY2smJik7CisgICAgICAgIH5JbXBvcnRlZFNjcmlwdHNM
b2FkZXIoKTsKKyAgICAgICAgdm9pZCBsb2FkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBWZWN0b3I8VVJMPiYsIEZldGNoT3B0aW9uczo6Q2FjaGUpOworICAgICAgICB2b2lkIGNhbmNl
bCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VMb2FkZXJJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWwgeyB9
CisgICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5hbDsKKworICAgICAgICBSZWZyZXNo
SW1wb3J0ZWRTY3JpcHRzQ2FsbGJhY2sgbV9jYWxsYmFjazsKKyAgICAgICAgVmVjdG9yPFJlZjxX
b3JrZXJTY3JpcHRMb2FkZXI+PiBtX2xvYWRlcnM7CisgICAgICAgIHNpemVfdCBtX3JlbWFpbmlu
Z0xvYWRzIHsgMCB9OworICAgIH07CisKICAgICBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlm
aWVyIG1fY29udGV4dElkZW50aWZpZXI7CiAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExvYWRlcj4g
bV9zY3JpcHRMb2FkZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEltcG9ydGVkU2NyaXB0c0xvYWRl
cj4gbV9pbXBvcnRlZFNjcmlwdHNMb2FkZXI7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIFJl
ZjxUaHJlYWQ+IG1fY3JlYXRpb25UaHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xp
ZW50LmgKaW5kZXggMjMxNDk0MTg4MTlhNWUxMjlmMDRiODZiYTg0MzNmNzQzYzdkOWQ2ZC4uNmE0
OGE5ZjAwMWFkNmVjZjI3N2JlMmY5OGE5YjYxNmI5NzdlYmRhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oCkBA
IC0zNiw2ICszNiw3IEBAIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
czsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBTY3JpcHRC
dWZmZXI7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgU2VydmljZVdvcmtl
ckpvYjsKIHN0cnVjdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Owogc3RydWN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhOwpAQCAtNDUsNiArNDYsNyBAQCBjbGFzcyBTZXJ2aWNlV29y
a2VySm9iQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TZXJ2aWNlV29ya2VySm9iQ2xp
ZW50KCkgPSBkZWZhdWx0OwogCisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KCkgPSAwOwogICAgIHZpcnR1YWwgU2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmll
ciBjb250ZXh0SWRlbnRpZmllcigpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBqb2JGYWlsZWRX
aXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBFeGNlcHRpb24mKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3Bw
CmluZGV4IDUzZDAwYTI0ZmFlNzc2ZTY0M2U3MmQxYzgyYzQ4ZTViYTFhNDA5MjIuLmFjOTE4ZTlh
ZWU0MTY4ZGFkNGViMTVmZTBkN2I2Y2FhZmU3MmNhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0zNDUsOSArMzQ1LDkg
QEAgdm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXIKICAgICAgICAgbV9yZWdpc3RyYXRpb25TdG9yZS0+
Zmx1c2hDaGFuZ2VzKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBTV1Nl
cnZlcjo6Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFdvcmtlckZl
dGNoUmVzdWx0JiByZXN1bHQpCit2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpmaW5pc2hGZXRj
aGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYg
am9iRGF0YUlkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJl
Z2lzdHJhdGlvbktleSwgV29ya2VyRmV0Y2hSZXN1bHQmJiByZXN1bHQpCiB7Ci0gICAgbV9zZXJ2
ZXIuc2NyaXB0RmV0Y2hGaW5pc2hlZChqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5
LCByZXN1bHQpOworICAgIG1fc2VydmVyLnNjcmlwdEZldGNoRmluaXNoZWQoam9iRGF0YUlkZW50
aWZpZXIsIHJlZ2lzdHJhdGlvbktleSwgV1RGTW92ZShyZXN1bHQpKTsKIH0KIAogdm9pZCBTV1Nl
cnZlcjo6Q29ubmVjdGlvbjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQpAQCAtNTA3LDYgKzUwNywyNyBAQCBVUkwg
c3RhdGljIGlubGluZSBvcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKICAg
ICByZXR1cm4gdXJsOwogfQogCitSZXNvdXJjZVJlcXVlc3QgU1dTZXJ2ZXI6OmNyZWF0ZVNjcmlw
dFJlcXVlc3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JE
YXRhLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQoreworICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0IHsgdXJsIH07CisKKyAgICBhdXRvIHRvcE9yaWdpbiA9IGpvYkRhdGEu
dG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKGpvYkRhdGEuc2NyaXB0VVJMKTsKKworICAgIHJlcXVlc3Quc2V0RG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24oam9iRGF0YS5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbik7CisgICAg
cmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CisgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5
Rm9yQ29va2llcyhvcmlnaW5VUkwodG9wT3JpZ2luKSk7CisKKyAgICByZXF1ZXN0LnNldEhUVFBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6T3JpZ2luLCBvcmlnaW4tPnRvU3RyaW5nKCkpOwor
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZXJ2aWNlV29y
a2VyLCAic2NyaXB0Il9zKTsKKyAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihvcmlnaW5VUkwo
b3JpZ2luKS5zdHJpbmcoKSk7CisgICAgcmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KHNlcnZpY2VX
b3JrZXJDbGllbnRVc2VyQWdlbnQoQ2xpZW50T3JpZ2luIHsgam9iRGF0YS50b3BPcmlnaW4sIFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRVUkwpLT5kYXRhKCkgfSkpOworICAg
IHJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7CisgICAgcmVx
dWVzdC5zZXRJc0FwcEluaXRpYXRlZChyZWdpc3RyYXRpb24uaXNBcHBJbml0aWF0ZWQoKSk7CisK
KyAgICByZXR1cm4gcmVxdWVzdDsKK30KKwogdm9pZCBTV1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRj
aChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgU1dTZXJ2ZXJSZWdpc3RyYXRp
b24mIHJlZ2lzdHJhdGlvbikKIHsKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZlciBpc3N1
aW5nIHN0YXJ0U2NyaXB0RmV0Y2ggZm9yIGN1cnJlbnQgam9iICVzIGluIGNsaWVudCIsIGpvYkRh
dGEuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTUyNiwz
MiArNTQ3LDQyIEBAIHZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIFNXU2VydmVyUmVnCiAgICAgaWYgKGpvYkRhdGEuY29u
bmVjdGlvbklkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpIHsKICAgICAgICAg
QVNTRVJUKGpvYkRhdGEudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlKTsKICAg
ICAgICAgLy8gVGhpcyBpcyBhIHNvZnQtdXBkYXRlIGpvYiwgY3JlYXRlIGRpcmVjdGx5IGEgbmV0
d29yayBsb2FkIHRvIGZldGNoIHRoZSBzY3JpcHQuCi0gICAgICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0IHsgam9iRGF0YS5zY3JpcHRVUkwgfTsKLQotICAgICAgICBhdXRvIHRvcE9yaWdpbiA9
IGpvYkRhdGEudG9wT3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7Ci0gICAgICAgIGF1dG8gb3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShqb2JEYXRhLnNjcmlwdFVSTCk7Ci0KLSAgICAgICAg
cmVxdWVzdC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihqb2JEYXRhLmRvbWFpbkZvckNhY2hl
UGFydGl0aW9uKTsKLSAgICAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7Ci0gICAg
ICAgIHJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMob3JpZ2luVVJMKHRvcE9yaWdpbikp
OwotCi0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpP
cmlnaW4sIG9yaWdpbi0+dG9TdHJpbmcoKSk7Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZXJ2aWNlV29ya2VyLCAic2NyaXB0Il9zKTsKLSAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIob3JpZ2luVVJMKG9yaWdpbikuc3RyaW5nKCkpOwot
ICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoc2VydmljZVdvcmtlckNsaWVudFVzZXJB
Z2VudChDbGllbnRPcmlnaW4geyBqb2JEYXRhLnRvcE9yaWdpbiwgU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShqb2JEYXRhLnNjcmlwdFVSTCktPmRhdGEoKSB9KSk7Ci0gICAgICAgIHJlcXVlc3Quc2V0
UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7Ci0gICAgICAgIHJlcXVlc3Quc2V0
SXNBcHBJbml0aWF0ZWQocmVnaXN0cmF0aW9uLmlzQXBwSW5pdGlhdGVkKCkpOwotCi0gICAgICAg
IG1fc29mdFVwZGF0ZUNhbGxiYWNrKFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsgam9iRGF0YSB9LCBz
aG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCksIFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBqb2JEYXRhSWRlbnRpZmllciA9IGpvYkRhdGEuaWRlbnRpZmllcigpLCByZWdp
c3RyYXRpb25LZXkgPSBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpXShhdXRvJiByZXN1bHQpIHsK
KyAgICAgICAgbV9zb2Z0VXBkYXRlQ2FsbGJhY2soU2VydmljZVdvcmtlckpvYkRhdGEgeyBqb2JE
YXRhIH0sIHNob3VsZFJlZnJlc2hDYWNoZSwgY3JlYXRlU2NyaXB0UmVxdWVzdChqb2JEYXRhLnNj
cmlwdFVSTCwgam9iRGF0YSwgcmVnaXN0cmF0aW9uKSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIGpvYkRhdGFJZGVudGlmaWVyID0gam9iRGF0YS5pZGVudGlmaWVyKCksIHJlZ2lzdHJh
dGlvbktleSA9IGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCldKGF1dG8mJiByZXN1bHQpIHsKICAg
ICAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+c2NyaXB0
RmV0Y2hGaW5pc2hlZChqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCByZXN1bHQp
OworICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5zY3JpcHRGZXRjaEZpbmlzaGVkKGpvYkRhdGFJ
ZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXksIFdURk1vdmUocmVzdWx0KSk7CiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoY29ubmVj
dGlvbiwgIklmIHRoZSBjb25uZWN0aW9uIHdhcyBsb3N0LCB0aGlzIGpvYiBzaG91bGQgaGF2ZSBi
ZWVuIGNhbmNlbGxlZCIpOwogfQogCi12b2lkIFNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVk
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29u
c3QgV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKK2NsYXNzIFJlZnJlc2hJbXBvcnRlZFNjcmlw
dHNIYW5kbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UmVmcmVzaEltcG9ydGVkU2NyaXB0c0hhbmRs
ZXI+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPHN0ZDo6cGFpcjxVUkwsIFNjcmlwdEJ1ZmZlcj4+JiYpPjsKKyAgICBzdGF0aWMg
UmVmPFJlZnJlc2hJbXBvcnRlZFNjcmlwdHNIYW5kbGVyPiBjcmVhdGUoc2l6ZV90IGV4cGVjdGVk
SXRlbXMsIENhbGxiYWNrJiYgY2FsbGJhY2spIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVmcmVz
aEltcG9ydGVkU2NyaXB0c0hhbmRsZXIoZXhwZWN0ZWRJdGVtcywgV1RGTW92ZShjYWxsYmFjaykp
KTsgfQorCisgICAgdm9pZCBhZGQoY29uc3QgVVJMJiB1cmwsIFdvcmtlckZldGNoUmVzdWx0JiYg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgaWYgKHJlc3VsdC5lcnJvci5pc051bGwoKSkKKyAgICAg
ICAgICAgIG1fc2NyaXB0cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIodXJsLCBXVEZNb3ZlKHJlc3Vs
dC5zY3JpcHQpKSk7CisKKyAgICAgICAgaWYgKCEtLW1fcmVtYWluaW5nSXRlbXMpCisgICAgICAg
ICAgICBtX2NhbGxiYWNrKHN0ZDo6ZXhjaGFuZ2UobV9zY3JpcHRzLCB7IH0pKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgUmVmcmVzaEltcG9ydGVkU2NyaXB0c0hhbmRsZXIoc2l6ZV90IGV4cGVj
dGVkSXRlbXMsIENhbGxiYWNrJiYgY2FsbGJhY2spCisgICAgICAgIDogbV9yZW1haW5pbmdJdGVt
cyhleHBlY3RlZEl0ZW1zKQorICAgICAgICAsIG1fY2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykp
CisgICAgeworICAgIH0KKworICAgIHNpemVfdCBtX3JlbWFpbmluZ0l0ZW1zOworICAgIENhbGxi
YWNrIG1fY2FsbGJhY2s7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxVUkwsIFNjcmlwdEJ1ZmZlcj4+
IG1fc2NyaXB0czsKK307CisKK3ZvaWQgU1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBXb3JrZXJG
ZXRjaFJlc3VsdCYmIHJlc3VsdCkKIHsKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZlciBo
YW5kbGluZyBzY3JpcHRGZXRjaEZpbmlzaGVkIGZvciBjdXJyZW50IGpvYiAlcyBpbiBjbGllbnQi
LCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKQEAg
LTU2MSw3ICs1OTIsMzkgQEAgdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGEKICAgICBpZiAoIWpvYlF1
ZXVlKQogICAgICAgICByZXR1cm47CiAKLSAgICBqb2JRdWV1ZS0+c2NyaXB0RmV0Y2hGaW5pc2hl
ZChqb2JEYXRhSWRlbnRpZmllciwgcmVzdWx0KTsKKyAgICBqb2JRdWV1ZS0+c2NyaXB0RmV0Y2hG
aW5pc2hlZChqb2JEYXRhSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKK30KKwordm9pZCBT
V1NlcnZlcjo6cmVmcmVzaEltcG9ydGVkU2NyaXB0cyhjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YSYgam9iRGF0YSwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVmVj
dG9yPFVSTD4mIHVybHMpCit7CisgICAgUmVmcmVzaEltcG9ydGVkU2NyaXB0c0hhbmRsZXI6OkNh
bGxiYWNrIGNhbGxiYWNrID0gW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIGpvYkRhdGFJ
ZGVudGlmaWVyID0gam9iRGF0YS5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktleSA9IGpvYkRh
dGEucmVnaXN0cmF0aW9uS2V5KCldKGF1dG8mJiBzY3JpcHRzKSB7CisgICAgICAgIGlmICh3ZWFr
VGhpcykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5yZWZyZXNoSW1wb3J0ZWRTY3JpcHRzRmluaXNo
ZWQoam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleSwgc2NyaXB0cyk7CisgICAgfTsK
KyAgICBib29sIHNob3VsZFJlZnJlc2hDYWNoZSA9IHJlZ2lzdHJhdGlvbi51cGRhdGVWaWFDYWNo
ZSgpID09IFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6Tm9uZSB8fCAocmVnaXN0cmF0aW9u
LmdldE5ld2VzdFdvcmtlcigpICYmIHJlZ2lzdHJhdGlvbi5pc1N0YWxlKCkpOworCisgICAgYXV0
byogY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KGpvYkRhdGEuY29ubmVjdGlvbklkZW50
aWZpZXIoKSk7CisgICAgaWYgKGNvbm5lY3Rpb24pIHsKKyAgICAgICAgY29ubmVjdGlvbi0+cmVm
cmVzaEltcG9ydGVkU2NyaXB0cyhqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLCBz
aG91bGRSZWZyZXNoQ2FjaGUgPyBGZXRjaE9wdGlvbnM6OkNhY2hlOjpOb0NhY2hlIDogRmV0Y2hP
cHRpb25zOjpDYWNoZTo6RGVmYXVsdCwgdXJscywgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZp
ZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpOworICAgIGF1dG8gaGFuZGxlciA9IFJlZnJl
c2hJbXBvcnRlZFNjcmlwdHNIYW5kbGVyOjpjcmVhdGUodXJscy5zaXplKCksIFdURk1vdmUoY2Fs
bGJhY2spKTsKKyAgICBmb3IgKGF1dG8mIHVybCA6IHVybHMpIHsKKyAgICAgICAgbV9zb2Z0VXBk
YXRlQ2FsbGJhY2soU2VydmljZVdvcmtlckpvYkRhdGEgeyBqb2JEYXRhIH0sIHNob3VsZFJlZnJl
c2hDYWNoZSwgY3JlYXRlU2NyaXB0UmVxdWVzdCh1cmwsIGpvYkRhdGEsIHJlZ2lzdHJhdGlvbiks
IFtoYW5kbGVyLCB1cmwsIHNpemUgPSB1cmxzLnNpemUoKV0oYXV0byYmIHJlc3VsdCkgeworICAg
ICAgICAgICAgaGFuZGxlci0+YWRkKHVybCwgV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgfSk7
CisgICAgfQorfQorCit2b2lkIFNXU2VydmVyOjpyZWZyZXNoSW1wb3J0ZWRTY3JpcHRzRmluaXNo
ZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmll
ciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFVSTCwgU2NyaXB0QnVmZmVyPj4mIHNjcmlwdHMpCit7Cisg
ICAgYXV0byBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRpb25LZXkpOworICAg
IGlmICgham9iUXVldWUpCisgICAgICAgIHJldHVybjsKKworICAgIGpvYlF1ZXVlLT5pbXBvcnRl
ZFNjcmlwdHNGZXRjaEZpbmlzaGVkKGpvYkRhdGFJZGVudGlmaWVyLCBzY3JpcHRzKTsKIH0KIAog
dm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3Qgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiBqb2JEYXRhSWRlbnRpZmllciwg
U1dTZXJ2ZXJXb3JrZXImIHdvcmtlciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDMzYTgx
NDBhNThjNDhhODVlODdlYjMzZWNiOWM2ZDQ0NGYyYmJiOGIuLjk2NTIzNTllYzdjNWNlOTc2MWNi
MzdkNDdhODk5NzhjNmZlMDgwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAg
cHJvdGVjdGVkOgogICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKFNXU2VydmVyJiwg
SWRlbnRpZmllcik7CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5pc2hGZXRjaGlu
Z1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBXb3JrZXJGZXRjaFJlc3Vs
dCYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5T
ZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdvcmtlckZldGNoUmVzdWx0JiYpOwogICAgICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmln
aW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPiYmKTsKQEAgLTExOCw2ICsx
MTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlUmVnaXN0cmF0aW9u
Sm9iSW5DbGllbnQoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2JJbkNsaWVudChTZXJ2aWNl
V29ya2VySm9iSWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYs
IGJvb2wgcmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdGFy
dFNjcmlwdEZldGNoSW5DbGllbnQoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBGZXRjaE9wdGlvbnM6OkNhY2hlKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoSW1wb3J0ZWRTY3JpcHRzKFNlcnZpY2VXb3JrZXJK
b2JJZGVudGlmaWVyLCBGZXRjaE9wdGlvbnM6OkNhY2hlLCBjb25zdCBWZWN0b3I8VVJMPiYsIFNl
cnZpY2VXb3JrZXJKb2I6OlJlZnJlc2hJbXBvcnRlZFNjcmlwdHNDYWxsYmFjayYmKSA9IDA7CiAK
ICAgICAgICAgc3RydWN0IFJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdCB7CiAgICAgICAgICAgICBT
ZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luOwpAQCAtMTMwLDcgKzEzMSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgVmVjdG9yPFJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdD4gbV9yZWdpc3RyYXRpb25S
ZWFkeVJlcXVlc3RzOwogICAgIH07CiAKLSAgICB1c2luZyBTb2Z0VXBkYXRlQ2FsbGJhY2sgPSBG
dW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRS
ZWZyZXNoQ2FjaGUsIFJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdvcmtlckZldGNoUmVzdWx0Jik+JiYpPjsKKyAgICB1c2luZyBTb2Z0VXBkYXRlQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBz
aG91bGRSZWZyZXNoQ2FjaGUsIFJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdvcmtlckZldGNoUmVzdWx0JiYpPiYmKT47CiAgICAgdXNpbmcgQ3JlYXRlQ29udGV4dENv
bm5lY3Rpb25DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mLCBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVudGlmaWVyPiByZXF1ZXN0aW5nUHJv
Y2Vzc0lkZW50aWZpZXIsIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpPjsKICAgICB1c2luZyBBcHBCb3Vu
ZERvbWFpbnNDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChI
YXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik+OwogICAgIFdFQkNPUkVf
RVhQT1JUIFNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmLCBib29sIHByb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJl
Y3RvcnksIFBBTDo6U2Vzc2lvbklELCBib29sIHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWlu
VGhyZWFkRm9yVGVzdGluZywgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQsIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IG92ZXJyaWRlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkNvdW50
VGVzdGluZ1ZhbHVlLCBTb2Z0VXBkYXRlQ2FsbGJhY2smJiwgQ3JlYXRlQ29udGV4dENvbm5lY3Rp
b25DYWxsYmFjayYmLCBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayYmKTsKQEAgLTE1Niw2ICsxNTcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmLCBT
aG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpOwogICAgIHZvaWQgcmVzb2x2ZVVucmVnaXN0cmF0aW9u
Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwogICAgIHZvaWQgc3RhcnRT
Y3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIFNXU2VydmVyUmVnaXN0cmF0
aW9uJik7CisgICAgdm9pZCByZWZyZXNoSW1wb3J0ZWRTY3JpcHRzKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBWZWN0b3I8VVJMPiYpOwog
CiAgICAgdm9pZCB1cGRhdGVXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBjb25zdCBTY3JpcHRCdWZm
ZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMmLCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5JiwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgTWVtb3J5Q29tcGFjdFJvYmluSG9v
ZEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYm
LCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNl
V29ya2VyUGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChTV1NlcnZl
cldvcmtlciYpOwpAQCAtMTc4LDYgKzE4MCw3IEBAIHB1YmxpYzoKIAogICAgIFNXT3JpZ2luU3Rv
cmUmIG9yaWdpblN0b3JlKCkgeyByZXR1cm4gbV9vcmlnaW5TdG9yZTsgfQogCisgICAgdm9pZCBy
ZWZyZXNoSW1wb3J0ZWRTY3JpcHRzRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFZl
Y3RvcjxzdGQ6OnBhaXI8VVJMLCBTY3JpcHRCdWZmZXI+PiYpOwogICAgIHZvaWQgc2NyaXB0Q29u
dGV4dEZhaWxlZFRvU3RhcnQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXI+JiwgU1dTZXJ2ZXJXb3JrZXImLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwog
ICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZXI+JiwgU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIGRp
ZEZpbmlzaEluc3RhbGwoY29uc3Qgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXI+JiwgU1dTZXJ2ZXJXb3JrZXImLCBib29sIHdhc1N1Y2Nlc3NmdWwpOwpAQCAtMjU5
LDcgKzI2Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhbGxvd0xvb3BiYWNrSVBBZGRyZXNzKGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgdmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJKb2JUeXBlLCBib29sLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKIAotICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hl
ZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgV29ya2VyRmV0Y2hSZXN1bHQmKTsKKyAgICB2b2lk
IHNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
JiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdvcmtlckZldGNoUmVzdWx0
JiYpOwogCiAgICAgdm9pZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9u
KiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpOwogCkBAIC0yODMsNiArMjg2
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vy
cyhjb25zdCBDbGllbnRPcmlnaW4mLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAg
ICAgdm9pZCB3aGVuSW1wb3J0SXNDb21wbGV0ZWRJZk5lZWRlZChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogCisgICAgUmVzb3VyY2VSZXF1ZXN0IGNyZWF0ZVNjcmlwdFJlcXVlc3QoY29u
c3QgVVJMJiwgY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYpOworCiAgICAgSGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5LCBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9z
Y29wZVRvUmVnaXN0cmF0aW9uTWFwOwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1f
cmVnaXN0cmF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IGQ5MjM5NGQxMDIyODg0MmVk
M2M2YmRiMDZlOGU4MzJjM2ZjNDA4MWQuLmVlOWViYmQ5NTM3ZTAxMWJjM2RjYTI2MGRlNjFlZGNh
OGRjMTY5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtNjksNyArNjksNyBAQCBzdGF0aWMg
Ym9vbCBkb0NlcnRpZmljYXRlc01hdGNoKGNvbnN0IENlcnRpZmljYXRlSW5mbyYgZmlyc3QsIGNv
bnN0IENlcnRpZmljYXRlSQogI2VuZGlmCiB9CiAKLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2Ny
aXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpv
YkRhdGFJZGVudGlmaWVyLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQordm9pZCBT
V1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJK
b2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFdvcmtlckZldGNoUmVzdWx0JiYg
cmVzdWx0KQogewogICAgIGlmICghaXNDdXJyZW50bHlQcm9jZXNzaW5nSm9iKGpvYkRhdGFJZGVu
dGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAxLDIwICsxMDEsNTIgQEAgdm9pZCBTV1Nl
cnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYKICAgICAvLyBmbGFnIHNldCwgYW5kIHNjcmlwdCdzIHNvdXJjZSB0ZXh0
IGlzIGEgYnl0ZS1mb3ItYnl0ZSBtYXRjaCB3aXRoIG5ld2VzdFdvcmtlcidzIHNjcmlwdCByZXNv
dXJjZSdzIHNvdXJjZQogICAgIC8vIHRleHQsIHRoZW46CiAgICAgaWYgKG5ld2VzdFdvcmtlciAm
JiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG5ld2VzdFdvcmtlci0+c2NyaXB0VVJM
KCksIGpvYi5zY3JpcHRVUkwpICYmIG5ld2VzdFdvcmtlci0+dHlwZSgpID09IGpvYi53b3JrZXJU
eXBlICYmIHJlc3VsdC5zY3JpcHQgPT0gbmV3ZXN0V29ya2VyLT5zY3JpcHQoKSAmJiBkb0NlcnRp
ZmljYXRlc01hdGNoKHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlm
aWNhdGVJbmZvKCkpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAt
IFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQsIHNjcmlwdCBhbmQgY2VydGlm
aWNhdGUgYXJlIG1hdGNoaW5nIGZvciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0
cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisKKyAgICAgICAgYXV0byBzY3JpcHRV
UkxzID0gbmV3ZXN0V29ya2VyLT5pbXBvcnRlZFNjcmlwdFVSTHMoKTsKKyAgICAgICAgaWYgKCFz
Y3JpcHRVUkxzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbV93b3JrZXJGZXRjaFJlc3VsdCA9
IFdURk1vdmUocmVzdWx0KTsKKyAgICAgICAgICAgIG1fc2VydmVyLnJlZnJlc2hJbXBvcnRlZFNj
cmlwdHMoam9iLCAqcmVnaXN0cmF0aW9uLCBzY3JpcHRVUkxzKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm9uIGNsYXNzaWMgc2NyaXB0
cywgY2hlY2sgdGhlIHNjcmlwdOKAmXMgbW9kdWxlIHJlY29yZCdzIFtbRUNNQVNjcmlwdENvZGVd
XS4KIAotICAgICAgICAvLyBJbnZva2UgUmVzb2x2ZSBKb2IgUHJvbWlzZSB3aXRoIGpvYiBhbmQg
cmVnaXN0cmF0aW9uLgotICAgICAgICBtX3NlcnZlci5yZXNvbHZlUmVnaXN0cmF0aW9uSm9iKGpv
YiwgcmVnaXN0cmF0aW9uLT5kYXRhKCksIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZDo6Tm8pOwor
ICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVl
OjpzY3JpcHRGZXRjaEZpbmlzaGVkLCBzY3JpcHQsIGNlcnRpZmljYXRlIGFuZCBpbXBvcnRlZCBz
Y3JpcHRzIGFyZSBtYXRjaGluZyBmb3IgcmVnaXN0cmF0aW9uSUQ9JWxsdSIsIHRoaXMsIHJlZ2lz
dHJhdGlvbi0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBzY3JpcHRBbmRJbXBv
cnRlZFNjcmlwdHNGZXRjaEZpbmlzaGVkKGpvYiwgKnJlZ2lzdHJhdGlvbik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKLSAgICAgICAgLy8gSW52b2tlIEZpbmlzaCBKb2Igd2l0aCBqb2IgYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBmaW5pc2hDdXJyZW50Sm9iKCk7CisgICAgbV9z
ZXJ2ZXIudXBkYXRlV29ya2VyKGpvYi5pZGVudGlmaWVyKCksICpyZWdpc3RyYXRpb24sIGpvYi5z
Y3JpcHRVUkwsIHJlc3VsdC5zY3JpcHQsIHJlc3VsdC5jZXJ0aWZpY2F0ZUluZm8sIHJlc3VsdC5j
b250ZW50U2VjdXJpdHlQb2xpY3ksIHJlc3VsdC5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCBy
ZXN1bHQucmVmZXJyZXJQb2xpY3ksIGpvYi53b3JrZXJUeXBlLCB7IH0sIGpvYi5zZXJ2aWNlV29y
a2VyUGFnZUlkZW50aWZpZXIoKSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6aW1wb3J0
ZWRTY3JpcHRzRmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFVSTCwgU2NyaXB0
QnVmZmVyPj4mIGltcG9ydGVkU2NyaXB0cykKK3sKKyAgICBpZiAoIWlzQ3VycmVudGx5UHJvY2Vz
c2luZ0pvYihqb2JEYXRhSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8m
IGpvYiA9IGZpcnN0Sm9iKCk7CisKKyAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5n
ZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOworICAgIGlmICghcmVnaXN0cmF0aW9u
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBuZXdlc3RXb3JrZXIgPSByZWdpc3RyYXRp
b24tPmdldE5ld2VzdFdvcmtlcigpOworICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgbmV3ZXN0V29y
a2VyLT5tYXRjaGluZ0ltcG9ydGVkU2NyaXB0cyhpbXBvcnRlZFNjcmlwdHMpKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVldWU6OmltcG9y
dGVkU2NyaXB0c0ZldGNoRmluaXNoZWQsIHNjcmlwdCwgY2VydGlmaWNhdGUgYW5kIGltcG9ydGVk
IHNjcmlwdHMgYXJlIG1hdGNoaW5nIGZvciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVn
aXN0cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHNjcmlwdEFuZElt
cG9ydGVkU2NyaXB0c0ZldGNoRmluaXNoZWQoam9iLCAqcmVnaXN0cmF0aW9uKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBVcGRhdGUgYWxsIHRoZSBpbXBvcnRlZCBz
Y3JpcHRzIGFzIHBlciBzcGVjLiBGb3Igbm93LCB3ZSBqdXN0IGRvIGFzIGlmIHRoZXJlIGlzIG5v
bmUuCisgICAgbV9zZXJ2ZXIudXBkYXRlV29ya2VyKGpvYi5pZGVudGlmaWVyKCksICpyZWdpc3Ry
YXRpb24sIGpvYi5zY3JpcHRVUkwsIG1fd29ya2VyRmV0Y2hSZXN1bHQuc2NyaXB0LCBtX3dvcmtl
ckZldGNoUmVzdWx0LmNlcnRpZmljYXRlSW5mbywgbV93b3JrZXJGZXRjaFJlc3VsdC5jb250ZW50
U2VjdXJpdHlQb2xpY3ksIG1fd29ya2VyRmV0Y2hSZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBv
bGljeSwgbV93b3JrZXJGZXRjaFJlc3VsdC5yZWZlcnJlclBvbGljeSwgam9iLndvcmtlclR5cGUs
IHsgfSwgam9iLnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpKTsKK30KIAotICAgIG1fc2Vy
dmVyLnVwZGF0ZVdvcmtlcihqb2IuaWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9uLCBqb2Iuc2Ny
aXB0VVJMLCByZXN1bHQuc2NyaXB0LCByZXN1bHQuY2VydGlmaWNhdGVJbmZvLCByZXN1bHQuY29u
dGVudFNlY3VyaXR5UG9saWN5LCByZXN1bHQuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgcmVz
dWx0LnJlZmVycmVyUG9saWN5LCBqb2Iud29ya2VyVHlwZSwgeyB9LCBqb2Iuc2VydmljZVdvcmtl
clBhZ2VJZGVudGlmaWVyKCkpOwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRBbmRJbXBv
cnRlZFNjcmlwdHNGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2Is
IFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCit7CisgICAgLy8gSW52b2tlIFJl
c29sdmUgSm9iIFByb21pc2Ugd2l0aCBqb2IgYW5kIHJlZ2lzdHJhdGlvbi4KKyAgICBtX3NlcnZl
ci5yZXNvbHZlUmVnaXN0cmF0aW9uSm9iKGpvYiwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2hvdWxk
Tm90aWZ5V2hlblJlc29sdmVkOjpObyk7CisKKyAgICAvLyBJbnZva2UgRmluaXNoIEpvYiB3aXRo
IGpvYiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgZmluaXNoQ3VycmVudEpvYigpOwogfQog
CiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jdXBkYXRlLWFsZ29yaXRo
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuaAppbmRleCAzZDk2ODA2NzllNGYzODZjODhhY2YwZTg1NWQzYWY4NGRl
Y2I0MDE5Li4yYWRiYjg1NTU4NmMxMjAwNDAxOGQ1MDc1NzFkMDEwYzI0N2E3Y2JlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
Sm9iUXVldWUuaApAQCAtMzAsMTEgKzMwLDEzIEBACiAjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5j
bHVkZSAiV29ya2VyRmV0Y2hSZXN1bHQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTV1NlcnZlcldvcmtlcjsKK2NsYXNzIFNlcnZpY2VX
b3JrZXJKb2I7CiBzdHJ1Y3QgV29ya2VyRmV0Y2hSZXN1bHQ7CiAKIGNsYXNzIFNXU2VydmVySm9i
UXVldWUgewpAQCAtNTEsNyArNTMsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJ1bk5leHRKb2Io
KTsKIAotICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXImLCBjb25zdCBXb3JrZXJGZXRjaFJlc3VsdCYpOworICAgIHZvaWQgc2Ny
aXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBX
b3JrZXJGZXRjaFJlc3VsdCYmKTsKKyAgICB2b2lkIGltcG9ydGVkU2NyaXB0c0ZldGNoRmluaXNo
ZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxVUkwsIFNjcmlwdEJ1ZmZlcj4+Jik7CiAgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFp
bGVkVG9TdGFydChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIHNjcmlw
dENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZpbmlzaEluc3RhbGwoY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU1dTZXJ2ZXJXb3JrZXImLCBib29sIHdh
c1N1Y2Nlc3NmdWwpOwpAQCAtNzQsMTIgKzc3LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnN0
YWxsKFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogCiAg
ICAgdm9pZCByZW1vdmVBbGxKb2JzTWF0Y2hpbmcoY29uc3QgRnVuY3Rpb248Ym9vbChTZXJ2aWNl
V29ya2VySm9iRGF0YSYpPiYpOworICAgIHZvaWQgc2NyaXB0QW5kSW1wb3J0ZWRTY3JpcHRzRmV0
Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIFNXU2VydmVyUmVnaXN0cmF0
aW9uJik7CiAKICAgICBEZXF1ZTxTZXJ2aWNlV29ya2VySm9iRGF0YT4gbV9qb2JRdWV1ZTsKIAog
ICAgIFRpbWVyIG1fam9iVGltZXI7CiAgICAgU1dTZXJ2ZXImIG1fc2VydmVyOwogICAgIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CisgICAgV29ya2VyRmV0
Y2hSZXN1bHQgbV93b3JrZXJGZXRjaFJlc3VsdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHAKaW5kZXggNWM2YjJkYmRhYjNiNzRiYjNmZjM5NmIzZDk4ZGFmOGVl
NTFhMmYwMy4uOTJjZDA1Mjk4YTkwYTNiN2Q3ODM4NGJmODVlNTZmNjFlNmQwMTNkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5jcHAKQEAgLTQyNyw2ICs0MjcsMjEgQEAgYm9vbCBTV1NlcnZlcldvcmtlcjo6aXND
bGllbnRBY3RpdmVTZXJ2aWNlV29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWUK
ICAgICByZXR1cm4gcmVnaXN0cmF0aW9uSWRlbnRpZmllciA9PSBtX2RhdGEucmVnaXN0cmF0aW9u
SWRlbnRpZmllcjsKIH0KIAorVmVjdG9yPFVSTD4gU1dTZXJ2ZXJXb3JrZXI6OmltcG9ydGVkU2Ny
aXB0VVJMcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvcHlUb1ZlY3RvcihtX3NjcmlwdFJlc291
cmNlTWFwLmtleXMoKSk7Cit9CisKK2Jvb2wgU1dTZXJ2ZXJXb3JrZXI6Om1hdGNoaW5nSW1wb3J0
ZWRTY3JpcHRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8VVJMLCBTY3JpcHRCdWZmZXI+PiYgc2Ny
aXB0cykgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHNjcmlwdCA6IHNjcmlwdHMpIHsKKyAgICAg
ICAgYXV0byBpdGVyYXRvciA9IG1fc2NyaXB0UmVzb3VyY2VNYXAuZmluZChzY3JpcHQuZmlyc3Qp
OworICAgICAgICBpZiAoaXRlcmF0b3IgPT0gbV9zY3JpcHRSZXNvdXJjZU1hcC5lbmQoKSB8fCBp
dGVyYXRvci0+dmFsdWUuc2NyaXB0ICE9IHNjcmlwdC5zZWNvbmQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5k
ZXggOWJkNTY3YzNjYjk3MTE1MTg4OTc5NDljMjE5MDg1NjU4MmY3NjU0NC4uZjI0ZTJlYmZhMTBj
NGVmNDA0YjFmOWFmYjI2NTJmNGFlYTA2OGE5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMTQ0LDYgKzE0
NCwxMCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzQ2xpZW50QWN0aXZl
U2VydmljZVdvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikgY29uc3Q7CiAK
KyAgICBWZWN0b3I8VVJMPiBpbXBvcnRlZFNjcmlwdFVSTHMoKSBjb25zdDsKKyAgICBjb25zdCBN
ZW1vcnlDb21wYWN0Um9iaW5Ib29kSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YTo6SW1wb3J0ZWRTY3JpcHQ+JiBzY3JpcHRSZXNvdXJjZU1hcCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NyaXB0UmVzb3VyY2VNYXA7IH0KKyAgICBib29sIG1hdGNoaW5nSW1wb3J0ZWRTY3JpcHRzKGNv
bnN0IFZlY3RvcjxzdGQ6OnBhaXI8VVJMLCBTY3JpcHRCdWZmZXI+PiYpIGNvbnN0OworCiBwcml2
YXRlOgogICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24m
LCBjb25zdCBVUkwmLCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8m
LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBDcm9z
c09yaWdpbkVtYmVkZGVyUG9saWN5JiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5
cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBNZW1vcnlDb21wYWN0Um9iaW5Ib29kSGFzaE1h
cDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCmluZGV4IDA4
MjY3M2IzMzE1NzkxOGJkMGIyZTU3Yzc2OTIyNWM1ZDA4NDZiOTMuLjJhN2U4NGMyNTU2ZDFiYWQy
MWFhYWM3NmRmODZiMjdlOTVjZWIzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIE5ldHdvcmtTZXNz
aW9uOwogY2xhc3MgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIgZmluYWwgOiBwdWJsaWMg
TmV0d29ya0xvYWRDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHVzaW5nIEhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6
OldvcmtlckZldGNoUmVzdWx0Jik+OworICAgIHVzaW5nIEhhbmRsZXIgPSBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OldvcmtlckZldGNoUmVzdWx0JiYpPjsKICAgICBzdGF0aWMgdm9p
ZCBzdGFydChOZXR3b3JrU2Vzc2lvbiosIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJiYs
IGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSGFu
ZGxlciYmKTsKIAogICAgIH5TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBlYWVhYTNkOTMzNDE5ZDE1OTBk
OTUzYjkzZTFmM2VmNjBjODg1ZTA1Li40N2Q0MWYzZTU0OGJiZjk0NWQ0ODQ1NDkzODQ1OGJjODFk
NDc4ZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTM0
LDYgKzEzNCwxMSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRj
aEluQ2xpZW50KFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyCiAgICAgc2VuZChNZXNzYWdlczo6
V2ViU1dDbGllbnRDb25uZWN0aW9uOjpTdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKGpvYklkZW50
aWZpZXIsIHJlZ2lzdHJhdGlvbktleSwgY2FjaGVQb2xpY3kpKTsKIH0KIAordm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnJlZnJlc2hJbXBvcnRlZFNjcmlwdHMoU2VydmljZVdvcmtlckpvYklk
ZW50aWZpZXIgam9iSWRlbnRpZmllciwgRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSwg
Y29uc3QgVmVjdG9yPFVSTD4mIHVybHMsIFNlcnZpY2VXb3JrZXJKb2I6OlJlZnJlc2hJbXBvcnRl
ZFNjcmlwdHNDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpSZWZyZXNoSW1wb3J0ZWRTY3JpcHRzKGpv
YklkZW50aWZpZXIsIGNhY2hlUG9saWN5LCB1cmxzKSwgV1RGTW92ZShjYWxsYmFjaykpOworfQor
CiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGVJbkNs
aWVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgc3RhdGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKIHsKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OlVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKGlkZW50aWZp
ZXIsIHN0YXRlLCBzZXJ2aWNlV29ya2VyRGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5oCmluZGV4IDIxY2U1NjM0ZGM4OTQ1ODZmNTZhYzc2Mzg1NTk3NTk5NDYxMDAxNjYu
LjlmODQ2NmE5NWM5NTA0MDgxYmVjOWI3MmVlMGM4ZDdiOWQ2ZTlkMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTk2LDYgKzk2LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHJlc29sdmVSZWdpc3RyYXRpb25Kb2JJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Sm9iSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEmLCBXZWJDb3JlOjpTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpIGZpbmFsOwogICAgIHZvaWQg
cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlckpv
YklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
LCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0U2NyaXB0
RmV0Y2hJbkNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFdlYkNvcmU6OkZldGNoT3B0
aW9uczo6Q2FjaGUpIGZpbmFsOworICAgIHZvaWQgcmVmcmVzaEltcG9ydGVkU2NyaXB0cyhXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpD
YWNoZSwgY29uc3QgVmVjdG9yPFVSTD4mLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpSZWZy
ZXNoSW1wb3J0ZWRTY3JpcHRzQ2FsbGJhY2smJik7CiAgICAgdm9pZCB1cGRhdGVSZWdpc3RyYXRp
b25TdGF0ZUluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUsIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGE+JikgZmluYWw7CiAgICAgdm9pZCB1
cGRhdGVXb3JrZXJTdGF0ZUluQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyU3RhdGUpIGZpbmFsOwogICAgIHZvaWQgZmlyZVVwZGF0
ZUZvdW5kRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDkyNWE3YzVi
ODYyNWIzZGIyZjAwZmE2MTExZmNmMzgzYjIxNjYzODUuLmI0Yzc2OTVkMmFjYTk1NGNiOGYxMTkz
YzJiMWQxOWJjMmFlZmFhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
QEAgLTI3LDYgKzI3LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dDbGllbnRDb25uZWN0aW9uIHsKICAg
ICBKb2JSZWplY3RlZEluU2VydmVyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVy
IGpvYkRhdGFJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YSBleGNlcHRp
b24pCiAgICAgUmVnaXN0cmF0aW9uSm9iUmVzb2x2ZWRJblNlcnZlcihXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySm9iSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHJlZ2lzdHJhdGlvbiwgZW51bTpib29sIFdlYkNv
cmU6OlNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCiAg
ICAgU3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iSWRl
bnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSByZWdpc3RyYXRpb25LZXksIFdlYkNvcmU6OkZldGNoT3B0aW9uczo6Q2FjaGUgY2Fj
aGVQb2xpY3kpCisgICAgUmVmcmVzaEltcG9ydGVkU2NyaXB0cyhXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySm9iSWRlbnRpZmllciBqb2JEYXRhSWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hPcHRpb25z
OjpDYWNoZSBjYWNoZVBvbGljeSwgVmVjdG9yPFVSTD4gdXJscykgLT4gKFZlY3RvcjxzdGQ6OnBh
aXI8VVJMLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXI+PiByZXN1bHRzKTsKICAgICBVcGRhdGVSZWdp
c3RyYXRpb25TdGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvblN0YXRlIHN0YXRlLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRh
PiBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKICAgICBVcGRhdGVXb3JrZXJTdGF0ZShXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZW51bTp1
aW50OF90IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJTdGF0ZSBzdGF0ZSkKICAgICBGaXJlVXBkYXRl
Rm91bmRFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBp
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggY2Y2MDllZWVlNzc4
ZTg2Yjc0MjAxMGRjMzQ2MzFiMTAyMzJlN2I3ZC4uM2I0NGRkZmZhODg4M2I0MjEyN2YyMzQ4NDIz
ZjgwZjQ1ZmUxOTYxMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMjItMDQtMjcgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisg
ICAgICAgIHNlcnZpY2Ugd29ya2VyIHVwZGF0ZSBzaG91bGQgcmVmcmVzaCBpbXBvcnRlZCBzY3Jp
cHRzIGluIGFkZGl0aW9uIHRvIHRoZSBtYWluIHNjcmlwdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Q2hyaXMgRHVtZXouCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyL2NyZWRlbnRpYWxzLmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAy
Mi0wNC0yNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU2hh
cmVkIHdvcmtlcnMgc2hvdWxkIG1hdGNoIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbnMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NyZWRlbnRpYWxzLmh0dHBzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyL2NyZWRlbnRpYWxzLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRl
eCA5ZDNlNGNjM2RhZmQ4ZjNiYmU0YzUzYTBkM2M3MmU3YTc1NzJkMjBlLi5lOWI0YTUzMWFjOGU1
ZjY4MmIwNWNiNzliYTQ0OTQzY2I2NzlmYThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci9jcmVkZW50aWFscy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIv
Y3JlZGVudGlhbHMuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDcgKzEsNyBAQAogCiBQQVNTIFNl
dCBjb29raWVzIGFzIGluaXRpYWxpemF0aW9uCiBQQVNTIE1haW4gc2NyaXB0IHNob3VsZCBoYXZl
IGNyZWRlbnRpYWxzCi1GQUlMIEltcG9ydGVkIHNjcmlwdCBzaG91bGQgaGF2ZSBjcmVkZW50aWFs
cyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJU
eXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd29ya2VyLnBvc3RN
ZXNzYWdlJykiCi1GQUlMIE1vZHVsZSB3aXRoIGFuIGltcG9ydGVkIHN0YXRlbWVudCBzaG91bGQg
bm90IGhhdmUgY3JlZGVudGlhbHMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdp
dGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1
YXRpbmcgJ3dvcmtlci5wb3N0TWVzc2FnZScpIgorUEFTUyBJbXBvcnRlZCBzY3JpcHQgc2hvdWxk
IGhhdmUgY3JlZGVudGlhbHMKK1BBU1MgTW9kdWxlIHdpdGggYW4gaW1wb3J0ZWQgc3RhdGVtZW50
IHNob3VsZCBub3QgaGF2ZSBjcmVkZW50aWFscwogRkFJTCBTY3JpcHQgd2l0aCBzZXJ2aWNlIHdv
cmtlciBzZXJ2ZWQgYXMgbW9kdWxlcyBzaG91bGQgbm90IGhhdmUgY3JlZGVudGlhbHMgYXNzZXJ0
X2VxdWFsczogbmV3IG1vZHVsZSB3b3JrZXIgc2hvdWxkIG5vdCBoYXZlIGNyZWRlbnRpYWxzIGV4
cGVjdGVkICh1bmRlZmluZWQpIHVuZGVmaW5lZCBidXQgZ290IChzdHJpbmcpICIxIgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>