<?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>204678</bug_id>
          
          <creation_ts>2019-11-28 05:39:59 -0800</creation_ts>
          <short_desc>Move soft update handling to network process</short_desc>
          <delta_ts>2019-12-04 05:48:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>204641</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</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>1594019</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-28 05:39:59 -0800</bug_when>
    <thetext>Move soft update handling to network process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594020</commentid>
    <comment_count>1</comment_count>
      <attachid>384450</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-28 05:43:21 -0800</bug_when>
    <thetext>Created attachment 384450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594032</commentid>
    <comment_count>2</comment_count>
      <attachid>384454</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-28 06:41:49 -0800</bug_when>
    <thetext>Created attachment 384454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594066</commentid>
    <comment_count>3</comment_count>
      <attachid>384459</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-28 08:57:47 -0800</bug_when>
    <thetext>Created attachment 384459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594138</commentid>
    <comment_count>4</comment_count>
      <attachid>384480</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-28 23:10:35 -0800</bug_when>
    <thetext>Created attachment 384480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594941</commentid>
    <comment_count>5</comment_count>
      <attachid>384697</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-03 01:37:32 -0800</bug_when>
    <thetext>Created attachment 384697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595106</commentid>
    <comment_count>6</comment_count>
      <attachid>384697</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-03 12:00:45 -0800</bug_when>
    <thetext>Comment on attachment 384697
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerJobData.cpp:79
&gt; +        return scopeURL == job.scopeURL

Some of these checks may need to be case insensitive.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.h:55
&gt; +    ServiceWorkerSoftUpdateLoader(NetworkSession&amp;, WebCore::ServiceWorkerJobData&amp;&amp;, bool shouldRefreshCache, WebCore::ResourceRequest&amp;&amp;, Handler&amp;&amp;);

This should probably not be public, as clients are expected to call start().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595432</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-04 03:19:02 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Comment on attachment 384697 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=384697&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerJobData.cpp:79
&gt; &gt; +        return scopeURL == job.scopeURL
&gt; 
&gt; Some of these checks may need to be case insensitive.

Both script and scope are URLs.

We do URL string comparison for job when matching registration.
&apos;HTTP://example.org/I&apos; will then have a different scope compared to &apos;HTTP://example.org/i&apos;. This is consistent.
I believe we should do the same for scripts as well.

&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerSoftUpdateLoader.h:55
&gt; &gt; +    ServiceWorkerSoftUpdateLoader(NetworkSession&amp;, WebCore::ServiceWorkerJobData&amp;&amp;, bool shouldRefreshCache, WebCore::ResourceRequest&amp;&amp;, Handler&amp;&amp;);
&gt; 
&gt; This should probably not be public, as clients are expected to call start().

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595436</commentid>
    <comment_count>8</comment_count>
      <attachid>384802</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-04 03:50:21 -0800</bug_when>
    <thetext>Created attachment 384802
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595457</commentid>
    <comment_count>9</comment_count>
      <attachid>384802</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-04 05:47:58 -0800</bug_when>
    <thetext>Comment on attachment 384802
Patch for landing

Clearing flags on attachment: 384802

Committed r253102: &lt;https://trac.webkit.org/changeset/253102&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595458</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-04 05:47:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595459</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-04 05:48:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/57622145&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384450</attachid>
            <date>2019-11-28 05:43:21 -0800</date>
            <delta_ts>2019-11-28 06:41:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204678-20191128144318.patch</filename>
            <type>text/plain</type>
            <size>71766</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIxYTc4MTllMDEyM2Fk
NThiMjIyYzY4Zjc1MmViMjE4M2MyY2I0Zi4uN2JlZDU2NWNmYTEzYmFlNTJlNzZmODJlODA0MDFm
MWQ3YWYyMDJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTExLTI4ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHNvZnQgdXBkYXRl
IGhhbmRsaW5nIHRvIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0Njc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OnZhbGlkYXRlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc0VxdWl2YWxlbnQgY29uc3QpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24pOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZFJlc29sdmVSZWdpc3RyYXRp
b25Qcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpTV1NlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25Kb2IpOgorICAgICAgICAoV2ViQ29yZTo6b3Jp
Z2luVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OmdldFJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnJ1
blVwZGF0ZUpvYik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpv
YlF1ZXVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjplbnF1ZXVlSm9i
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJl
Z2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2V0
VXBkYXRlVmlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246
OnNvZnRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNj
aGVkdWxlU29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRp
b246OnNjb3BlVVJMV2l0aG91dEZyYWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyUmVnaXN0cmF0aW9uOjpzY3JpcHRVUkwgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisKIDIwMTktMTEt
MjcgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNXU2VydmVy
OjpzY3JpcHRGZXRjaEZpbmlzaGVkIGRvZXMgbm90IG5lZWQgYSBDb25uZWN0aW9uIGFzIHBhcmFt
ZXRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCAzYWNhMmE4ZWEwMDVlMTE1NmQ3OWI2NTI1YjNjYmMxOGM0MDc4NzQ0
Li5hZGY4ODA2ZmU0YjI5YzRiNTQ0MWEzNjAxM2E0M2NhZGZmNWI2MTc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDUxIEBACisyMDE5LTExLTI4ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KKworICAgICAgICBNb3ZlIHNvZnQgdXBkYXRlIGhhbmRsaW5nIHRvIG5ldHdvcmsgcHJvY2Vz
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0Njc4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphZGRTb2Z0
VXBkYXRlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnJlbW92ZVNv
ZnRVcGRhdGVMb2FkZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2spOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSk6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZEZhaWwpOgorICAg
ICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWROb3RIYW5kbGUpOgorICAg
ICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dp
dGgpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNvZnRV
cGRhdGVJZk5lZWRlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6c3RhcnQpOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6U2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6flNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyKToKKyAgICAgICAgKFdlYktp
dDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmZhaWwpOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6bG9hZFdpdGhDYWNoZUVudHJ5KToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmxvYWRGcm9tTmV0
d29yayk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjp3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlk
RmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlcjo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaDogQWRkZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKwogMjAxOS0xMS0yNiAg
QW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bUmVuZGVy
IHRyZWVdIEFkZCBMRkMgbGluZSBsYXlvdXQgcGF0aCB0byBSZW5kZXJCbG9ja0Zsb3cKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCAyMjhmM2Qx
N2ZmMDAyMmU2MmU2MzY0NTMyZDU1NmI5NTA3YTAxOGYyLi43Yzk5ZTdlZWNmZGYwYzcyMjNiMDc0
NDdjZWM3NWJiMmE1YmIyYWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwCkBAIC0xNTMsMjMgKzE1MywyOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVz
b3VyY2VSZXF1ZXN0PiBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZVJlc291cmNlUmVxdWVzdChj
b25zdAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZXNvdXJjZUVycm9yIFdvcmtlclNjcmlwdExvYWRlcjo6
dmFsaWRhdGVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRmV0Y2hP
cHRpb25zOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKIHsKLSAgICBpZiAocmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSAvIDEwMCAhPSAyICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpIHsK
LSAgICAgICAgbV9mYWlsZWQgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIC8gMTAwICE9IDIgJiYgcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSkKKyAgICAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgIlJlc3BvbnNlIGlzIG5vdCAyeHgiX3Ms
IFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKIAogICAgIGlmICghaXNTY3JpcHRBbGxv
d2VkQnlOb3NuaWZmKHJlc3BvbnNlKSkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VT
dHJpbmcoIlJlZnVzZWQgdG8gZXhlY3V0ZSAiLCByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgoKSwgIiBhcyBzY3JpcHQgYmVjYXVzZSBcIlgtQ29udGVudC1UeXBl
OiBub3NuaWZmXCIgd2FzIGdpdmVuIGFuZCBpdHMgQ29udGVudC1UeXBlIGlzIG5vdCBhIHNjcmlw
dCBNSU1FIHR5cGUuIik7Ci0gICAgICAgIG1fZXJyb3IgPSBSZXNvdXJjZUVycm9yIHsgZXJyb3JE
b21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsKCksIG1lc3NhZ2UsIFJlc291cmNlRXJyb3I6OlR5
cGU6OkdlbmVyYWwgfTsKLSAgICAgICAgbV9mYWlsZWQgPSB0cnVlOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5h
bCwgMCwgcmVzcG9uc2UudXJsKCksIFdURk1vdmUobWVzc2FnZSksIFJlc291cmNlRXJyb3I6OlR5
cGU6OkdlbmVyYWwgfTsKICAgICB9CiAKLSAgICBpZiAoc2hvdWxkQmxvY2tSZXNwb25zZUR1ZVRv
TUlNRVR5cGUocmVzcG9uc2UsIG1fZGVzdGluYXRpb24pKSB7CisgICAgaWYgKHNob3VsZEJsb2Nr
UmVzcG9uc2VEdWVUb01JTUVUeXBlKHJlc3BvbnNlLCBkZXN0aW5hdGlvbikpIHsKICAgICAgICAg
U3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgIiwgcmVzcG9u
c2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIgYXMgc2NyaXB0IGJl
Y2F1c2UgIiwgcmVzcG9uc2UubWltZVR5cGUoKSwgIiBpcyBub3QgYSBzY3JpcHQgTUlNRSB0eXBl
LiIpOwotICAgICAgICBtX2Vycm9yID0gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBtZXNzYWdlLCBSZXNvdXJjZUVycm9yOjpUeXBl
OjpHZW5lcmFsIH07CisgICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5X
ZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksIFdURk1vdmUobWVzc2FnZSksIFJlc291
cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHNlcnZpY2Ugd29ya2VyIGNoZWNrcyBmcm9tIFNlcnZpY2VXb3JrZXJKb2I6OmRpZFJlY2Vp
dmVSZXNwb25zZS4KKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIFdvcmtlclNjcmlwdExvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgbV9lcnJvciA9IHZhbGlkYXRlUmVzcG9u
c2UocmVzcG9uc2UsIG1fZGVzdGluYXRpb24pOworICAgIGlmICghbV9lcnJvci5pc051bGwoKSkg
ewogICAgICAgICBtX2ZhaWxlZCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCA5YTBmNDg3ODBj
N2M4MWY3YmEzN2JlMjRkNjc4NDc3Mjk4ZTQxNTQ4Li5iOTk3NmI3NGVkZjA0MjIzNDg4MWU2NTZi
MzZjMDc2MDlhNmRmOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmgKQEAgLTc3LDYgKzc3LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBjYW5jZWwoKTsK
IAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXNvdXJjZUVycm9yIHZhbGlkYXRlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb24pOwor
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8V29ya2VyU2NyaXB0
TG9hZGVyPjsKICAgICBmcmllbmQgc3RydWN0IHN0ZDo6ZGVmYXVsdF9kZWxldGU8V29ya2VyU2Ny
aXB0TG9hZGVyPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckpvYkRhdGEuY3BwCmluZGV4IDQ3YTc5ZjBhM2Y3NjZkZDVlNTQ4MjFhOWIy
ZWQyMzI1NWQ2Y2Y0MWUuLmRkZmY2OTA5YzhkNDY0MWI5NWQ1YzU3ODRiY2E0NWMzMGYwZGNjZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Sm9iRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2JEYXRhLmNwcApAQCAtNjcsNiArNjcsMjQgQEAgU2VydmljZVdvcmtlckpvYkRhdGEg
U2VydmljZVdvcmtlckpvYkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAorYm9vbCBTZXJ2aWNlV29ya2VySm9iRGF0YTo6aXNFcXVpdmFsZW50KGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUgIT0gam9i
LnR5cGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAg
IGNhc2UgU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyOgorICAgIGNhc2UgU2VydmljZVdv
cmtlckpvYlR5cGU6OlVwZGF0ZToKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbHNvIGNo
ZWNrIHdvcmtlciB0eXBlIGFuZCB1cGRhdGUgdmlhIGNhY2hlIG1vZGUuCisgICAgICAgIHJldHVy
biBzY29wZVVSTCA9PSBqb2Iuc2NvcGVVUkwgJiYgc2NyaXB0VVJMID09IGpvYi5zY3JpcHRVUkw7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2VydmljZVdvcmtlckpvYlR5cGU6OlVucmVnaXN0
ZXI6CisgICAgICAgIHJldHVybiBzY29wZVVSTCA9PSBqb2Iuc2NvcGVVUkw7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKaW5kZXggYzIw
ODUzN2YwODUzNzUyZmExMmE5Y2E5MGM3Yjc0ODMzZjU3ZTEyZC4uNWYzMzdjYmFhODM5MTZlNWFl
MzFkYzI3MDc3OWEwYTQxMWEwOWM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKQEAgLTQ2LDYgKzQ2LDggQEAgc3Ry
dWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsKIAogICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXIu
Y29ubmVjdGlvbklkZW50aWZpZXI7IH0KIAorICAgIGJvb2wgaXNFcXVpdmFsZW50KGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhJikgY29uc3Q7CisKICAgICBVUkwgc2NyaXB0VVJMOwogICAgIFVS
TCBjbGllbnRDcmVhdGlvblVSTDsKICAgICBTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luOwpA
QCAtNTYsNyArNTgsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGEgewogICAgIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zIHJlZ2lzdHJhdGlvbk9wdGlvbnM7CiAKICAgICBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAg
ICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktleSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0
aW9uS2V5KCkgY29uc3Q7CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGEgaXNvbGF0ZWRDb3B5KCkg
Y29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggZjIxODkwNzBlYWI3OGQ4YzUy
NzkxYjNiNWRlMzA0YzBmNTNkMjNjNy4uMTE2YmJiNGZmNzljYWNlZWZkNzkwMjViZDNjYzhhNzIw
MzM5NjhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcApAQCAtNDYsOCArNDYsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uKTsKIAotY29uc3QgU2Vjb25kcyBzb2Z0VXBkYXRlRGVsYXkgeyAxX3Mg
fTsKLQogUmVmPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb246OmdldE9yQ3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyPiYmIGNvbnRhaW5lciwgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGEmJiBkYXRhKQogewogICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBjb250YWlu
ZXItPnJlZ2lzdHJhdGlvbihkYXRhLmlkZW50aWZpZXIpKSB7CkBAIC02Miw3ICs2MCw2IEBAIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29uCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAg
ICAgLCBtX3JlZ2lzdHJhdGlvbkRhdGEoV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhKSkKICAgICAs
IG1fY29udGFpbmVyKFdURk1vdmUoY29udGFpbmVyKSkKLSAgICAsIG1fc29mdFVwZGF0ZVRpbWVy
KFt0aGlzXSB7IHNvZnRVcGRhdGUoKTsgfSkKIHsKICAgICBMT0coU2VydmljZVdvcmtlciwgIkNy
ZWF0aW5nIHJlZ2lzdHJhdGlvbiAlcCBmb3IgcmVnaXN0cmF0aW9uIGtleSAlcyIsIHRoaXMsIG1f
cmVnaXN0cmF0aW9uRGF0YS5rZXkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAg
IHN1c3BlbmRJZk5lZWRlZCgpOwpAQCAtMTU2LDI4ICsxNTMsNiBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb246OnVwZGF0ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAg
ICAgbV9jb250YWluZXItPnVwZGF0ZVJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbkRhdGEuc2Nv
cGVVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCksIFdvcmtlclR5cGU6OkNsYXNzaWMsIFdU
Rk1vdmUocHJvbWlzZSkpOwogfQogCi0vLyBUbyBhdm9pZCBzY2hlZHVsaW5nIG1hbnkgdXBkYXRl
cyBkdXJpbmcgYSBzaW5nbGUgcGFnZSBsb2FkLCB3ZSBkbyBzb2Z0IHVwZGF0ZXMgb24gYSAxIHNl
Y29uZCBkZWxheSBhbmQga2VlcCBkZWxheWluZwotLy8gYXMgbG9uZyBhcyBzb2Z0IHVwZGF0ZSBy
ZXF1ZXN0cyBrZWVwIGNvbWluZy4gVGhpcyBzZWVtcyB0byBtYXRjaCBDaHJvbWUncyBiZWhhdmlv
ci4KLXZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0VXBkYXRlKCkK
LXsKLSAgICBpZiAobV9zb2Z0VXBkYXRlVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9zb2Z0
VXBkYXRlVGltZXIuc3RvcCgpOwotICAgIG1fc29mdFVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChz
b2Z0VXBkYXRlRGVsYXkpOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnNv
ZnRVcGRhdGUoKQotewotICAgIGlmIChtX2lzU3RvcHBlZCkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byogbmV3ZXN0V29ya2VyID0gZ2V0TmV3ZXN0V29ya2VyKCk7Ci0gICAgaWYgKCFuZXdl
c3RXb3JrZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1FOiBTdXBwb3J0IHdvcmtl
ciB0eXBlcy4KLSAgICBtX2NvbnRhaW5lci0+dXBkYXRlUmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0
aW9uRGF0YS5zY29wZVVSTCwgbmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgV29ya2VyVHlwZTo6
Q2xhc3NpYywgbnVsbHB0cik7Ci19Ci0KIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6
dW5yZWdpc3RlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgaWYgKG1f
aXNTdG9wcGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaAppbmRleCAxOTFmYTQwYjhmYTc3ZDI5MmIx
M2RjZDFmMmFkNWRmNzFhYzRmNzBlLi42YjgwNjhlZDU0OGYyYjg4NTJiNzJlMTczNDI0MDdmMzRk
MjBjMmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKQEAgLTY4LDggKzY4LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgdXBkYXRlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHZvaWQgdW5yZWdp
c3RlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAotICAgIHZvaWQgc2NoZWR1bGVTb2Z0VXBk
YXRlKCk7Ci0KICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRl
ZDo6ZGVyZWY7CiAgICAgCkBAIC04Nyw4ICs4NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWZF
dmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIHZvaWQgc29mdFVwZGF0ZSgpOwotCiAgICAgLy8g
QWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7
CkBAIC0xMDYsNyArMTAyLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTdXNwZW5kZWQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRGaXJlVXBkYXRlRm91bmRFdmVudFVwb25SZXN1bWlu
ZyB7IGZhbHNlIH07CiAgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uPj4gbV9wZW5kaW5nQWN0aXZpdHlGb3JFdmVudERpc3BhdGNoOwotICAgIFRpbWVy
IG1fc29mdFVwZGF0ZVRpbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmNwcAppbmRleCBhNmRlN2QyZTM5MzA1NDdkYzhkOGRhNWEyOTAwODFhMDlmMDIy
ZGZlLi5lMmQ4MTFiYWM3MjI4Mjg3YzdkY2RjZmNlMTQ4OGVlNDIzMDJkN2NlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmNwcApAQCAtMTA4LDE1ICsxMDgsNiBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6
OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkuZmlyZUFjdGl2YXRlRXZlbnQoKTsKIH0KIAotdm9p
ZCBTV0NvbnRleHRNYW5hZ2VyOjpzb2Z0VXBkYXRlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCi17Ci0gICAgYXV0byogc2VydmljZVdvcmtlciA9IG1fd29ya2VyTWFwLmdldChp
ZGVudGlmaWVyKTsKLSAgICBpZiAoIXNlcnZpY2VXb3JrZXIpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnNvZnRVcGRhdGUoKTsKLX0KLQogdm9pZCBTV0Nv
bnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgYXV0byBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJNYXAudGFrZShpZGVu
dGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCA0OTM0NjNlY2E5OWZlZWY5NTExNmUxOTA2
N2I2ZTk4Y2NkOTBmNDBhLi5iYTJiY2U0ZTQ2ZGE3NWVlMmZiOTYzOTIzOTAwYWM0NDMyOWRiYWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC04Myw3ICs4Myw2IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBTZXJ2aWNl
V29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNvZnRVcGRhdGUoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKICAg
ICB2b2lkIGZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFdURjo6RnVuY3Rpb248dm9p
ZChTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkmKT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3Bw
CmluZGV4IDQ0OTY5YWYwNmY0ZjhjMWU3N2E1YzFlYmE5ZmQ0YjAyMjNhMDY3YTIuLjk3ODNhOWQ5
ZTY3MWI3MmQxOTQ4ZTQyN2JjMTk0MzVmNTNmNGIxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNo
LmNwcApAQCAtMTQwLDcgKzE0MCw2IEBAIHZvaWQgZGlzcGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGll
bnQ+JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIGdsb2JhbFNjCiAgICAgRmV0
Y2hPcHRpb25zOjpSZWRpcmVjdCByZWRpcmVjdCA9IG9wdGlvbnMucmVkaXJlY3Q7CiAKICAgICBi
b29sIGlzTmF2aWdhdGlvbiA9IG9wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5h
dmlnYXRlOwotICAgIGJvb2wgaXNOb25TdWJyZXNvdXJjZVJlcXVlc3QgPSBXZWJDb3JlOjppc05v
blN1YnJlc291cmNlUmVxdWVzdChvcHRpb25zLmRlc3RpbmF0aW9uKTsKIAogICAgIEFTU0VSVChn
bG9iYWxTY29wZS5yZWdpc3RyYXRpb24oKS5hY3RpdmUoKSk7CiAgICAgQVNTRVJUKGdsb2JhbFNj
b3BlLnJlZ2lzdHJhdGlvbigpLmFjdGl2ZSgpLT5pZGVudGlmaWVyKCkgPT0gZ2xvYmFsU2NvcGUu
dGhyZWFkKCkuaWRlbnRpZmllcigpKTsKQEAgLTE4OCwxMCArMTg3LDYgQEAgdm9pZCBkaXNwYXRj
aEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSYgZ2xvYmFsU2MKICAgICB9CiAKICAgICBnbG9iYWxTY29wZS51cGRhdGVFeHRlbmRlZEV2ZW50
c1NldChldmVudC5wdHIoKSk7Ci0KLSAgICBhdXRvJiByZWdpc3RyYXRpb24gPSBnbG9iYWxTY29w
ZS5yZWdpc3RyYXRpb24oKTsKLSAgICBpZiAoaXNOb25TdWJyZXNvdXJjZVJlcXVlc3QgfHwgcmVn
aXN0cmF0aW9uLm5lZWRzVXBkYXRlKCkpCi0gICAgICAgIHJlZ2lzdHJhdGlvbi5zY2hlZHVsZVNv
ZnRVcGRhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgU2VydmljZVdvcmtlckZldGNoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGU0ZWVjYTBmYWE5N2FhOTZiMjlhMzg0N2EwMzNj
YWE2NTMzZTZmNGMuLjA0ZTljODg0ZWE1ZjBhNDFlZmNhYzQ4MGVhNjdmMjNjZWMxMmViOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0xNzUsMTQgKzE3NSw2IEBAIHZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZDo6ZmlyZUFjdGl2YXRlRXZlbnQoKQogICAgIH0pOwogfQogCi12b2lk
IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnNvZnRVcGRhdGUoKQotewotICAgIHJ1bkxvb3AoKS5wb3N0
VGFzayhbXShhdXRvJiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgc2VydmljZVdv
cmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250
ZXh0KTsKLSAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnJlZ2lzdHJhdGlvbigpLnNj
aGVkdWxlU29mdFVwZGF0ZSgpOwotICAgIH0pOwotfQotCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJl
YWQ6OmZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpCiB7CiAgICAgbV9kb2VzSGFuZGxlRmV0Y2gg
PSB3b3JrZXJHbG9iYWxTY29wZSgpLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuZmV0
Y2hFdmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggMDczY2Q2MjI2MzNiNWI1ZjYx
ZTNhOTBiNGRjOGYwNjZmN2UzMjFmOC4uYTQyNTc5ZmQ4ZGU1MWU5NGRmMDQ4ZjNhZmZiZjRhODBk
NTZjMzMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtNjEsNyArNjEsNiBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0
ZUV2ZW50KCk7Ci0gICAgdm9pZCBzb2Z0VXBkYXRlKCk7CiAKICAgICBjb25zdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmIGNvbnRleHREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKaW5kZXggMGRkZmNmY2QwODg3NDVhZjdjZWJlMTdlZDU4MmU1ZGJhZDhlOWYxYi4uNGU5OWVh
OWQzZDIxYTM1YzYyZWYyNDM3ZmNiNTFjNTJiYzYxMzgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTI5Myw3ICsyOTMs
NyBAQCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2Vy
dmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaAogCiB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9u
OjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiBrZXkpCiB7Ci0gICAgbV9zZXJ2ZXIuZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblBy
b21pc2UoKnRoaXMsIGtleSk7CisgICAgbV9zZXJ2ZXIuZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblBy
b21pc2UodGhpcywga2V5KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6YWRkU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC0zMTIsMTEgKzMxMiwxMiBAQCB2b2lkIFNXU2VydmVy
OjpDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZQogICAgICAgICBtX3NlcnZlci5zeW5jVGVybWluYXRlV29ya2VyKCp3b3JrZXIp
OwogfQogCi1TV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYgb3Jp
Z2luU3RvcmUsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiBy
ZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBD
cmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2spCitTV1NlcnZlcjo6U1dT
ZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURp
cmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTb2Z0VXBkYXRlQ2FsbGJhY2smJiBz
b2Z0VXBkYXRlQ2FsbGJhY2ssIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2smJiBjYWxs
YmFjaykKICAgICA6IG1fb3JpZ2luU3RvcmUoV1RGTW92ZShvcmlnaW5TdG9yZSkpCiAgICAgLCBt
X3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlF
bmFibGVkKHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCkKICAgICAsIG1fY3JlYXRlQ29u
dGV4dENvbm5lY3Rpb25DYWxsYmFjayhXVEZNb3ZlKGNhbGxiYWNrKSkKKyAgICAsIG1fc29mdFVw
ZGF0ZUNhbGxiYWNrKFdURk1vdmUoc29mdFVwZGF0ZUNhbGxiYWNrKSkKIHsKICAgICBBU1NFUlQo
IXJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSB8fCBtX3Nlc3Npb25JRC5p
c0VwaGVtZXJhbCgpKTsKICAgICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCkBAIC0z
MzEsMTYgKzMzMiwyNiBAQCBTV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3Rv
cmU+JiYgb3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aQogLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3NjaGVkdWxlLWpvYi1hbGdvcml0aG0KIHZvaWQgU1dT
ZXJ2ZXI6OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkKIHsKLSAg
ICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlm
aWVyKCkpKTsKLQotICAgIC8vIEZJWE1FOiBQZXIgdGhlIHNwZWMsIGNoZWNrIGlmIHRoaXMgam9i
IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGxhc3Qgam9iIG9uIHRoZSBxdWV1ZS4KLSAgICAvLyBJZiBp
dCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0IGpvYi4KKyAgICBBU1NFUlQobV9jb25uZWN0
aW9ucy5jb250YWlucyhqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpIHx8IGpvYkRhdGEu
Y29ubmVjdGlvbklkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpOwogCiAgICAg
YXV0byYgam9iUXVldWUgPSAqbV9qb2JRdWV1ZXMuZW5zdXJlKGpvYkRhdGEucmVnaXN0cmF0aW9u
S2V5KCksIFt0aGlzLCAmam9iRGF0YV0gewogICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1Nl
cnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7CiAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOwogCi0gICAgam9iUXVldWUuZW5xdWV1ZUpvYihqb2JEYXRhKTsKKyAg
ICBpZiAoIWpvYlF1ZXVlLnNpemUoKSkgeworICAgICAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKFdU
Rk1vdmUoam9iRGF0YSkpOworICAgICAgICBqb2JRdWV1ZS5ydW5OZXh0Sm9iKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgYXV0byYgbGFzdEpvYiA9IGpvYlF1ZXVlLmxhc3RKb2IoKTsK
KyAgICBpZiAoam9iRGF0YS5pc0VxdWl2YWxlbnQobGFzdEpvYikpIHsKKyAgICAgICAgLy8gRklY
TUU6IFBlciB0aGUgc3BlYywgY2hlY2sgaWYgdGhpcyBqb2IgaXMgZXF1aXZhbGVudCB0byB0aGUg
bGFzdCBqb2Igb24gdGhlIHF1ZXVlLgorICAgICAgICAvLyBJZiBpdCBpcywgc3RhY2sgaXQgYWxv
bmcgd2l0aCB0aGF0IGpvYi4gRm9yIG5vdywgd2UganVzdCBtYWtlIHN1cmUgdG8gbm90IGNhbGwg
c29mdC11cGRhdGUgdG9vIG9mdGVuLgorICAgICAgICBpZiAoam9iRGF0YS50eXBlID09IFNlcnZp
Y2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUgJiYgam9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigp
ID09IFByb2Nlc3M6OmlkZW50aWZpZXIoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKFdURk1vdmUoam9iRGF0YSkpOwogICAgIGlmIChqb2JR
dWV1ZS5zaXplKCkgPT0gMSkKICAgICAgICAgam9iUXVldWUucnVuTmV4dEpvYigpOwogfQpAQCAt
MzU5LDggKzM3MCwxMSBAQCB2b2lkIFNXU2VydmVyOjpyZXNvbHZlUmVnaXN0cmF0aW9uSm9iKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBjb25zdAogewogICAgIExPRyhTZXJ2
aWNlV29ya2VyLCAiUmVzb2x2ZWQgU2VydmljZVdvcmtlciBqb2IgJXMgaW4gc2VydmVyIHdpdGgg
cmVnaXN0cmF0aW9uICVzIiwgam9iRGF0YS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCksIHJlZ2lzdHJhdGlvbkRhdGEuaWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAgICAgYXV0byogY29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0
KGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7Ci0gICAgaWYgKCFjb25uZWN0aW9uKQor
ICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICBpZiAoc2hvdWxkTm90aWZ5V2hlblJlc29s
dmVkID09IFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZDo6WWVzICYmIGpvYkRhdGEuY29ubmVjdGlv
bklkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpCisgICAgICAgICAgICBkaWRS
ZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShudWxscHRyLCByZWdpc3RyYXRpb25EYXRhLmtleSk7
CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBjb25uZWN0aW9uLT5yZXNvbHZlUmVnaXN0
cmF0aW9uSm9iSW5DbGllbnQoam9iRGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllciwgcmVn
aXN0cmF0aW9uRGF0YSwgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKTsKIH0KQEAgLTM3NCwyMCAr
Mzg4LDU2IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYihjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgY29uCiAgICAgY29ubmVjdGlvbi0+cmVzb2x2
ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoam9iRGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRp
ZmllciwgcmVnaXN0cmF0aW9uS2V5LCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CiB9CiAKLXZvaWQg
U1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpv
YkRhdGEsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kpCitVUkwgc3RhdGljIGlubGlu
ZSBvcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKK3sKKyAgICBVUkwgdXJs
OworICAgIHVybC5zZXRQcm90b2NvbChvcmlnaW4ucHJvdG9jb2woKSk7CisgICAgdXJsLnNldEhv
c3Qob3JpZ2luLmhvc3QoKSk7CisgICAgaWYgKG9yaWdpbi5wb3J0KCkpCisgICAgICAgIHVybC5z
ZXRQb3J0KCpvcmlnaW4ucG9ydCgpKTsKKyAgICByZXR1cm4gdXJsOworfQorCit2b2lkIFNXU2Vy
dmVyOjpzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRh
LCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSkKIHsKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNl
cnZlciBpc3N1aW5nIHN0YXJ0U2NyaXB0RmV0Y2ggZm9yIGN1cnJlbnQgam9iICVzIGluIGNsaWVu
dCIsIGpvYkRhdGEuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICAgICBhdXRvKiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoam9iRGF0YS5jb25uZWN0
aW9uSWRlbnRpZmllcigpKTsKKyAgICBpZiAoY29ubmVjdGlvbikgeworICAgICAgICBjb25uZWN0
aW9uLT5zdGFydFNjcmlwdEZldGNoSW5DbGllbnQoam9iRGF0YS5pZGVudGlmaWVyKCkuam9iSWRl
bnRpZmllciwgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgc2hvdWxkUmVmcmVzaENhY2hlID8g
RmV0Y2hPcHRpb25zOjpDYWNoZTo6Tm9DYWNoZSA6IEZldGNoT3B0aW9uczo6Q2FjaGU6OkRlZmF1
bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChqb2JEYXRhLmNvbm5lY3Rpb25J
ZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRpZmllcigpKSB7CisgICAgICAgIEFTU0VSVChq
b2JEYXRhLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSk7CisgICAgICAgIC8v
IFRoaXMgaXMgYSBzb2Z0LXVwZGF0ZSBqb2IsIGNyZWF0ZSBkaXJlY3RseSBhIG5ldHdvcmsgbG9h
ZCB0byBmZXRjaCB0aGUgc2NyaXB0LgorICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCB7
IGpvYkRhdGEuc2NyaXB0VVJMIH07CisKKyAgICAgICAgYXV0byB0b3BPcmlnaW4gPSBqb2JEYXRh
LnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAgICAgICBhdXRvIG9yaWdpbiA9IFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRVUkwpOworCisgICAgICAgIHJlcXVlc3Qu
c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24odG9wT3JpZ2luLT5kb21haW5Gb3JDYWNoZVBhcnRp
dGlvbigpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CisgICAgICAg
IHJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMob3JpZ2luVVJMKHRvcE9yaWdpbikpOwor
CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpPcmln
aW4sIG9yaWdpbi0+dG9TdHJpbmcoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVy
KG9yaWdpblVSTChvcmlnaW4pKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KHNl
cnZpY2VXb3JrZXJDbGllbnRVc2VyQWdlbnQoQ2xpZW50T3JpZ2luIHsgam9iRGF0YS50b3BPcmln
aW4sIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRVUkwpLT5kYXRhKCkgfSkp
OworICAgICAgICByZXF1ZXN0LnNldFByaW9yaXR5KFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3cp
OworCisgICAgICAgIG1fc29mdFVwZGF0ZUNhbGxiYWNrKFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsg
am9iRGF0YSB9LCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCksIFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRvJiByZXN1bHQpIHsKKyAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgc2Ny
aXB0RmV0Y2hGaW5pc2hlZChyZXN1bHQpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGNvbm5lY3Rpb24sICJJZiB0aGUgY29ubmVj
dGlvbiB3YXMgbG9zdCwgdGhpcyBqb2Igc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxsZWQiKTsKLSAg
ICBpZiAoY29ubmVjdGlvbikKLSAgICAgICAgY29ubmVjdGlvbi0+c3RhcnRTY3JpcHRGZXRjaElu
Q2xpZW50KGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIsIGpvYkRhdGEucmVnaXN0
cmF0aW9uS2V5KCksIGNhY2hlUG9saWN5KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0
Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKIHsKICAg
ICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZlciBoYW5kbGluZyBzY3JpcHRGZXRjaEZpbmlzaGVk
IGZvciBjdXJyZW50IGpvYiAlcyBpbiBjbGllbnQiLCByZXN1bHQuam9iRGF0YUlkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgQVNTRVJUKG1fY29ubmVjdGlv
bnMuY29udGFpbnMocmVzdWx0LmpvYkRhdGFJZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVy
KSk7CisgICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMocmVzdWx0LmpvYkRhdGFJZGVu
dGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVyKSB8fCByZXN1bHQuam9iRGF0YUlkZW50aWZpZXIu
Y29ubmVjdGlvbklkZW50aWZpZXIgPT0gUHJvY2Vzczo6aWRlbnRpZmllcigpKTsKIAogICAgIGF1
dG8gam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVzdWx0LnJlZ2lzdHJhdGlvbktleSk7CiAg
ICAgaWYgKCFqb2JRdWV1ZSkKQEAgLTUxNyw5ICs1NjcsOSBAQCB2b2lkIFNXU2VydmVyOjpjbGFp
bShTV1NlcnZlcldvcmtlciYgd29ya2VyKQogICAgIH0pOwogfQogCi12b2lkIFNXU2VydmVyOjpk
aWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCit2b2lkIFNX
U2VydmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9uKiBjb25uZWN0
aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkp
CiB7Ci0gICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCBtX2Nvbm5lY3Rpb25zLmNvbnRhaW5z
KGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CisgICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9u
LCAhY29ubmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24tPmlkZW50
aWZpZXIoKSkpOwogCiAgICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJl
Z2lzdHJhdGlvbktleSkpCiAgICAgICAgIGpvYlF1ZXVlLT5kaWRSZXNvbHZlUmVnaXN0cmF0aW9u
UHJvbWlzZSgpOwpAQCAtOTk4LDYgKzEwNDgsMTcgQEAgYm9vbCBTV1NlcnZlcjo6Y2FuSGFuZGxl
U2NoZW1lKFN0cmluZ1ZpZXcgc2NoZW1lKSBjb25zdAogICAgIHJldHVybiBzY2hlbWUubGVuZ3Ro
KCkgPT0gNDsKIH0KIAorLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3Nv
ZnQtdXBkYXRlCit2b2lkIFNXU2VydmVyOjpzb2Z0VXBkYXRlKFNXU2VydmVyUmVnaXN0cmF0aW9u
JiByZWdpc3RyYXRpb24pCit7CisgICAgU2VydmljZVdvcmtlckpvYkRhdGEgam9iRGF0YShQcm9j
ZXNzOjppZGVudGlmaWVyKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsK
KyAgICBqb2JEYXRhLnNjcmlwdFVSTCA9IHJlZ2lzdHJhdGlvbi5zY3JpcHRVUkwoKTsKKyAgICBq
b2JEYXRhLnRvcE9yaWdpbiA9IHJlZ2lzdHJhdGlvbi5rZXkoKS50b3BPcmlnaW4oKTsKKyAgICBq
b2JEYXRhLnNjb3BlVVJMID0gcmVnaXN0cmF0aW9uLnNjb3BlVVJMV2l0aG91dEZyYWdtZW50KCk7
CisgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZTsKKyAgICBz
Y2hlZHVsZUpvYihXVEZNb3ZlKGpvYkRhdGEpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDljZGE5YjM4OWM0NTlh
ZDdlMDFiMTc4NGY0ZTg0Y2Y5MzQ5MDFhYjAuLmJjMTEyNzZhMTNlZGI1MDhjNWMzNmMxNzY0MDNi
MTFmMWZmOTI4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKQEAgLTEyNCw4ICsxMjQsOSBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3Rv
cjxSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3Q+IG1fcmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0czsK
ICAgICB9OwogCisgICAgdXNpbmcgU29mdFVwZGF0ZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChT
ZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTZXJ2aWNlV29y
a2VyRmV0Y2hSZXN1bHQmKT4mJik+OwogICAgIHVzaW5nIENyZWF0ZUNvbnRleHRDb25uZWN0aW9u
Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Jik+OwotICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3Jl
PiYmLCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgcmVnaXN0
cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklELCBDcmVhdGVDb250ZXh0Q29u
bmVjdGlvbkNhbGxiYWNrJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyKFVuaXF1ZVJl
ZjxTV09yaWdpblN0b3JlPiYmLCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwg
U3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklELCBT
b2Z0VXBkYXRlQ2FsbGJhY2smJiwgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIH5TV1NlcnZlcigpOwogCkBAIC0xMzUsNiArMTM2LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRTdXNwZW5zaW9uKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRTdXNwZW5z
aW9uKCk7CiAKKyAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbiogZ2V0UmVnaXN0cmF0aW9uKFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fcmVn
aXN0cmF0aW9ucy5nZXQoaWRlbnRpZmllcik7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZl
clJlZ2lzdHJhdGlvbiogZ2V0UmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmKTsKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dT
ZXJ2ZXJSZWdpc3RyYXRpb24+JiYpOwogICAgIHZvaWQgcmVtb3ZlUmVnaXN0cmF0aW9uKFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKQEAgLTE0NCw3ICsxNDYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZWplY3RKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBjb25z
dCBFeGNlcHRpb25EYXRhJik7CiAgICAgdm9pZCByZXNvbHZlUmVnaXN0cmF0aW9uSm9iKGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEmLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpOwogICAgIHZvaWQgcmVzb2x2ZVVucmVnaXN0
cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwotICAgIHZvaWQg
c3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIEZldGNoT3B0aW9u
czo6Q2FjaGUpOworICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlKTsKIAogICAgIHZvaWQgdXBkYXRlV29y
a2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyUmVnaXN0
cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xp
Y3ksIFdvcmtlclR5cGUsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Oklt
cG9ydGVkU2NyaXB0PiYmKTsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTV1NlcnZlcldvcmtl
ciYpOwpAQCAtMjA2LDEwICsyMDgsMTIgQEAgcHVibGljOgogICAgIGJvb2wgaXNJbXBvcnRDb21w
bGV0ZWQoKSBjb25zdCB7IHJldHVybiBtX2ltcG9ydENvbXBsZXRlZDsgfQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgd2hlbkltcG9ydElzQ29tcGxldGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAKKyAgICB2b2lkIHNvZnRVcGRhdGUoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKKwog
cHJpdmF0ZToKICAgICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtl
ckZldGNoUmVzdWx0Jik7CiAKLSAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNl
KENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CisgICAg
dm9pZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9uKiwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpOwogCiAgICAgdm9pZCBhZGRDbGllbnRTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uKENvbm5lY3Rpb24mLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CkBA
IC0yNjYsNiArMjcwLDcgQEAgcHJpdmF0ZToKICAgICBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNh
bGxiYWNrIG1fY3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjazsKICAgICBIYXNoU2V0PFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBtX3BlbmRpbmdDb25uZWN0aW9uRG9tYWluczsKICAg
ICBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPj4gbV9pbXBvcnRDb21wbGV0ZWRDYWxs
YmFja3M7CisgICAgU29mdFVwZGF0ZUNhbGxiYWNrIG1fc29mdFVwZGF0ZUNhbGxiYWNrOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggM2E5NzI3
YzhkM2M4NjY3NzBmMTllNDk5YTM5OWExMjQ2ZTM4ZWE3ZS4uODk0MGViOTJiZmQyYjI2YTM2OGRm
Y2Y0YjFjZGEyM2QyMDMwM2JkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCkBAIC0zMzIsMTcgKzMz
MiwxMyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blVwZGF0ZUpvYihjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYgam9iKQogICAgIGlmIChqb2IudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9i
VHlwZTo6VXBkYXRlICYmIG5ld2VzdFdvcmtlciAmJiAhZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpKSkKICAgICAg
ICAgcmV0dXJuIHJlamVjdEN1cnJlbnRKb2IoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgIkNh
bm5vdCB1cGRhdGUgYSBzZXJ2aWNlIHdvcmtlciB3aXRoIGEgcmVxdWVzdGVkIHNjcmlwdCBVUkwg
d2hvc2UgbmV3ZXN0IHdvcmtlciBoYXMgYSBkaWZmZXJlbnQgc2NyaXB0IFVSTCJfcyB9KTsKIAot
ICAgIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kgPSBGZXRjaE9wdGlvbnM6OkNhY2hl
OjpEZWZhdWx0OwogICAgIC8vIFNldCByZXF1ZXN0J3MgY2FjaGUgbW9kZSB0byAibm8tY2FjaGUi
IGlmIGFueSBvZiB0aGUgZm9sbG93aW5nIGFyZSB0cnVlOgogICAgIC8vIC0gcmVnaXN0cmF0aW9u
J3MgdXBkYXRlIHZpYSBjYWNoZSBtb2RlIGlzIG5vdCAiYWxsIi4KICAgICAvLyAtIGpvYidzIGZv
cmNlIGJ5cGFzcyBjYWNoZSBmbGFnIGlzIHNldC4KICAgICAvLyAtIG5ld2VzdFdvcmtlciBpcyBu
b3QgbnVsbCwgYW5kIHJlZ2lzdHJhdGlvbidzIGxhc3QgdXBkYXRlIGNoZWNrIHRpbWUgaXMgbm90
IG51bGwgYW5kIHRoZSB0aW1lIGRpZmZlcmVuY2UgaW4gc2Vjb25kcyBjYWxjdWxhdGVkIGJ5IHRo
ZQogICAgIC8vICAgY3VycmVudCB0aW1lIG1pbnVzIHJlZ2lzdHJhdGlvbidzIGxhc3QgdXBkYXRl
IGNoZWNrIHRpbWUgaXMgZ3JlYXRlciB0aGFuIDg2NDAwLgotICAgIGlmIChyZWdpc3RyYXRpb24t
PnVwZGF0ZVZpYUNhY2hlKCkgIT0gU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpBbGwKLSAg
ICAgICAgfHwgKG5ld2VzdFdvcmtlciAmJiByZWdpc3RyYXRpb24tPmlzU3RhbGUoKSkpIHsKLSAg
ICAgICAgY2FjaGVQb2xpY3kgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpOb0NhY2hlOwotICAgIH0K
LSAgICBtX3NlcnZlci5zdGFydFNjcmlwdEZldGNoKGpvYiwgY2FjaGVQb2xpY3kpOworICAgIGJv
b2wgc2hvdWxkUmVmcmVzaENhY2hlID0gcmVnaXN0cmF0aW9uLT51cGRhdGVWaWFDYWNoZSgpICE9
IFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6QWxsIHx8IChuZXdlc3RXb3JrZXIgJiYgcmVn
aXN0cmF0aW9uLT5pc1N0YWxlKCkpOworICAgIG1fc2VydmVyLnN0YXJ0U2NyaXB0RmV0Y2goam9i
LCBzaG91bGRSZWZyZXNoQ2FjaGUpOwogfQogCiB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJlamVj
dEN1cnJlbnRKb2IoY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmgKaW5kZXggNmMwNDM0ZWM0ZTUzNmVhNzQwNjE2MmNhNzFiNWJiN2U3OGM1Nzg3OS4uZWI5
MzFlMDQxNDcwMGVkNTk2N2FhYjYxZDY0ODI3NTgxMjU5YzQzNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGEmIGZpcnN0Sm9iKCkgY29uc3QgeyByZXR1cm4gbV9qb2JRdWV1ZS5maXJzdCgpOyB9CiAgICAg
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGxhc3RKb2IoKSBjb25zdCB7IHJldHVybiBtX2pv
YlF1ZXVlLmxhc3QoKTsgfQotICAgIHZvaWQgZW5xdWV1ZUpvYihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYgam9iRGF0YSkgeyBtX2pvYlF1ZXVlLmFwcGVuZChqb2JEYXRhKTsgfQorICAgIHZv
aWQgZW5xdWV1ZUpvYihTZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEpIHsgbV9qb2JRdWV1
ZS5hcHBlbmQoV1RGTW92ZShqb2JEYXRhKSk7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fam9iUXVldWUuc2l6ZSgpOyB9CiAKICAgICB2b2lkIHJ1bk5leHRKb2IoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggMDJhMGM5NjdmMTI5ZWE3OTdmOGZjODE3MmZh
ODU1NzNhM2Y0MGI5Ni4uYzI5YjQ2Mjc4OTBlZjliNjc3OGQyNzk3ZGY2NGJmN2YxOWYzYjljYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAgU1dTZXJ2ZXJS
ZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIGNvbnN0
IFNlcnZpY2VXb3JrZXIKICAgICAsIG1fc2NyaXB0VVJMKHNjcmlwdFVSTCkKICAgICAsIG1fc2Vy
dmVyKHNlcnZlcikKICAgICAsIG1fY3JlYXRpb25UaW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQor
ICAgICwgbV9zb2Z0VXBkYXRlVGltZXIgeyAqdGhpcywgJlNXU2VydmVyUmVnaXN0cmF0aW9uOjpz
b2Z0VXBkYXRlIH0KIHsKICAgICBtX3Njb3BlVVJMLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigp
OwogfQpAQCAtMzYzLDE4ICszNjQsMTYgQEAgYm9vbCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2hv
dWxkU29mdFVwZGF0ZShjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMpIGNvbnN0CiAgICAgcmV0
dXJuIFdlYkNvcmU6OmlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0KG9wdGlvbnMuZGVzdGluYXRpb24p
ICYmIGlzU3RhbGUoKTsKIH0KIAotLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3Jr
ZXIvI3NvZnQtdXBkYXRlCiB2b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlKCkK
IHsKLSAgICBhdXRvKiB3b3JrZXIgPSBnZXROZXdlc3RXb3JrZXIoKTsKLSAgICBpZiAoIXdvcmtl
cikKLSAgICAgICAgcmV0dXJuOworICAgIG1fc2VydmVyLnNvZnRVcGRhdGUoKnRoaXMpOworfQog
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBzY2hlZHVsZSBhbiB1cGRhdGUgam9iLgotICAgIG1f
c2VydmVyLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeSh3b3JrZXItPmlkZW50aWZpZXIoKSwg
W3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCldKGF1dG8qIGNv
bnRleHRDb25uZWN0aW9uKSB7Ci0gICAgICAgIGlmIChjb250ZXh0Q29ubmVjdGlvbikKLSAgICAg
ICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5zb2Z0VXBkYXRlKHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKLSAgICB9KTsKK3ZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNjaGVkdWxlU29mdFVw
ZGF0ZSgpCit7CisgICAgLy8gVG8gYXZvaWQgc2NoZWR1bGluZyBtYW55IHVwZGF0ZXMgZHVyaW5n
IGEgc2luZ2xlIHBhZ2UgbG9hZCwgd2UgZG8gc29mdCB1cGRhdGVzIG9uIGEgMSBzZWNvbmQgZGVs
YXkgYW5kIGtlZXAgZGVsYXlpbmcKKyAgICAvLyBhcyBsb25nIGFzIHNvZnQgdXBkYXRlIHJlcXVl
c3RzIGtlZXAgY29taW5nLiBUaGlzIHNlZW1zIHRvIG1hdGNoIENocm9tZSdzIGJlaGF2aW9yLgor
ICAgIG1fc29mdFVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChzb2Z0VXBkYXRlRGVsYXkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKaW5kZXggZDBi
NjJjMWNkODczNTQ5MzlhMzE2MTI5MTYwMTdhYTU2NDY4N2M2Ni4uNmIwYmZkYzA4ZDBkMzc5YTE1
NzhjMWNiZWY0NWJjNjgxOTk2Y2YyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyVHlwZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNp
bmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTk4LDEzICs5OSwxNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBmb3JFYWNoQ29ubmVjdGlvbihjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoU1dTZXJ2ZXI6
OkNvbm5lY3Rpb24mKT4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkU29mdFVw
ZGF0ZShjb25zdCBGZXRjaE9wdGlvbnMmKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNvZnRVcGRhdGUoKTsKLSAgICAKLSAgICBTdHJpbmcgc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQo
KSBjb25zdCB7IHJldHVybiBtX3Njb3BlVVJMOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
Y2hlZHVsZVNvZnRVcGRhdGUoKTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgc29mdFVw
ZGF0ZURlbGF5IHsgMV9zIH07CisKKyAgICBVUkwgc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBj
b25zdCB7IHJldHVybiBtX3Njb3BlVVJMOyB9CisgICAgVVJMIHNjcmlwdFVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NyaXB0VVJMOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhY3RpdmF0ZSgpOwog
ICAgIHZvaWQgaGFuZGxlQ2xpZW50VW5sb2FkKCk7CisgICAgdm9pZCBzb2Z0VXBkYXRlKCk7CiAK
ICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAg
ICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBtX3JlZ2lzdHJhdGlvbktleTsKQEAgLTEy
NCw2ICsxMjgsOCBAQCBwcml2YXRlOgogCiAgICAgTW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGlt
ZTsKICAgICBIYXNoTWFwPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEhhc2hTZXQ8RG9j
dW1lbnRJZGVudGlmaWVyPj4gbV9jbGllbnRzVXNpbmdSZWdpc3RyYXRpb247CisKKyAgICBXZWJD
b3JlOjpUaW1lciBtX3NvZnRVcGRhdGVUaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGQ0N2U5ZjE4N2Rh
NGUwMDhmZWZiZjY1N2JiZGM4YWQ5ZWZkYTYzY2YuLjgyMjI5OTkxZDYyMTg5OGU5YjZjZTg3MmZi
MGYzYzc3OWRjNWJhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApA
QCAtNTIsNyArNTIsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluc3RhbGxTZXJ2aWNl
V29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0
ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNv
ZnRVcGRhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERh
dGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDEzZmNlMmU3YzU5YzRhNDQyM2Zh
ZjcyYTYzNWM5YzlkZTQ5YTRlMWUuLjY4NWY3ZDE4ZDk4MjJhNzgwZDY2MTAyOWVhNTBlZWMwZTAz
NGI4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCkBAIC0yMzUzLDcgKzIzNTMsOSBAQCBTV1NlcnZlciYgTmV0d29ya1Byb2Nlc3M6OnN3
U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAgIC8vIElm
IHRoZXJlJ3Mgbm90LCB0aGVuIHdoZXJlIGRpZCB0aGlzIFBBTDo6U2Vzc2lvbklEIGNvbWUgZnJv
bT8KICAgICAgICAgQVNTRVJUKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpIHx8ICFwYXRoLmlzRW1w
dHkoKSk7CiAKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVS
ZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgaW5mby5wcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJs
ZWQsIFdURk1vdmUocGF0aCksIHNlc3Npb25JRCwgW3RoaXMsIHNlc3Npb25JRF0oYXV0byYgcmVn
aXN0cmFibGVEb21haW4pIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1h
a2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgaW5mby5wcm9jZXNzVGVybWluYXRpb25E
ZWxheUVuYWJsZWQsIFdURk1vdmUocGF0aCksIHNlc3Npb25JRCwgW3RoaXMsIHNlc3Npb25JRF0o
YXV0byYmIGpvYkRhdGEsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBhdXRvJiYgcmVxdWVzdCwg
YXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFNlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpzdGFydChuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLCBX
VEZNb3ZlKGpvYkRhdGEpLCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgfSwgW3RoaXMsIHNlc3Npb25JRF0o
YXV0byYgcmVnaXN0cmFibGVEb21haW4pIHsKICAgICAgICAgICAgIEFTU0VSVCghcmVnaXN0cmFi
bGVEb21haW4uaXNFbXB0eSgpKTsKICAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXNz
aW9uSUQgfSwgMCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDY5OGNlMGQ3NDIyY2YxNTQzZGQyZjNhNDYxMmRlODQ3
YzQyYWFhODguLjVjOGVkZWY0NWNiOThjOWQwYWFkMzM0NGM5ZjQzN2ZhMmRiMGI0MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIlByZWZldGNoQ2FjaGUuaCIKICNpbmNsdWRlICJTYW5kYm94
RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCIK
ICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lz
dHJ5SW1wbC5oPgpAQCAtMTI3LDYgKzEyOCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU3Rh
bGVXaGlsZVJldmFsaWRhdGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0YWxlV2hpbGVS
ZXZhbGlkYXRlRW5hYmxlZDsgfQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZv
aWQgYWRkU29mdFVwZGF0ZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI+JiYgbG9hZGVyKSB7IG1fc29mdFVwZGF0ZUxvYWRlcnMuYWRkKFdURk1vdmUo
bG9hZGVyKSk7IH0KKyAgICB2b2lkIHJlbW92ZVNvZnRVcGRhdGVMb2FkZXIoU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIqIGxvYWRlcikgeyBtX3NvZnRVcGRhdGVMb2FkZXJzLnJlbW92ZShs
b2FkZXIpOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIE5ldHdvcmtTZXNzaW9uKE5ldHdv
cmtQcm9jZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKIApA
QCAtMTYwLDYgKzE2NiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6
Q2FjaGU+IG1fY2FjaGU7CiAgICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCBtX2Jsb2JSZWdp
c3RyeTsKICAgICB1bnNpZ25lZCBtX3Rlc3RTcGVlZE11bHRpcGxpZXIgeyAxIH07CisKKyNpZiBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8U2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI+PiBtX3NvZnRVcGRhdGVMb2FkZXJzOworI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmNwcAppbmRleCBhMGViYTM3YTRhZDY2ZTg5MDNjYTEzYzZmOGIwNjM3ODY2YjYzZWY0
Li42MzJkNWM4NjhjNDMyYTFjYmRkZGY0NGRhYTU5OWU5YTZhODMyYjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZl
dGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRy
b2wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg+CiAKICNkZWZp
bmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9sb2Fk
ZXIuc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIs
ICIlcCAtIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19f
KQogI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNF
X0xPR19FUlJPUl9JRihtX2xvYWRlci5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgU2VydmljZVdvcmtlciwgIiVwIC0gU2VydmljZVdvcmtlckZldGNoVGFzazo6IiBmbXQs
IHRoaXMsICMjX19WQV9BUkdTX18pCkBAIC00OSwxMyArNTAsMTUgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCitTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGJvb2wgc2hvdWxkU29mdFVwZGF0ZSkK
ICAgICA6IG1fbG9hZGVyKGxvYWRlcikKICAgICAsIG1fZmV0Y2hJZGVudGlmaWVyKFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkKICAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIpCiAgICAgLCBtX3NlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgICwgbV9jdXJyZW50UmVx
dWVzdChXVEZNb3ZlKHJlcXVlc3QpKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGltZXJGaXJlZCkKKyAgICAsIG1fc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIpCisgICAgLCBtX3Nob3VsZFNvZnRVcGRhdGUoc2hvdWxkU29mdFVwZGF0ZSkKIHsKICAg
ICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QobG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKS5uZXR3b3JrUHJvY2VzcygpLnNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoKSk7CiB9CkBA
IC0xMDYsNyArMTA5LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydEZldGNo
KCkKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBtX3dhc0hhbmRsZWQgPSB0cnVl
OworICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsK
IAogICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZp
Y2VXb3JrZXIpOwogICAgIGF1dG8gbmV3UmVxdWVzdCA9IG1fY3VycmVudFJlcXVlc3QucmVkaXJl
Y3RlZFJlcXVlc3QocmVzcG9uc2UsIG1fbG9hZGVyLnBhcmFtZXRlcnMoKS5zaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KTsKQEAgLTExOCw3ICsxMjIsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNl
JiYgcmVzcG9uc2UsIGJvbwogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2Vp
dmVSZXNwb25zZTogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOwotICAgIG1fd2FzSGFuZGxlZCA9
IHRydWU7CisgICAgc29mdFVwZGF0ZUlmTmVlZGVkKCk7CiAKICAgICByZXNwb25zZS5zZXRTb3Vy
Y2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyKTsKICAgICBzZW5kVG9D
bGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyBy
ZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CkBAIC0x
NDYsNyArMTUwLDEwIEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkK
IAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewotICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV90aW1l
b3V0VGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7Cisg
ICAgICAgIHNvZnRVcGRhdGVJZk5lZWRlZCgpOworICAgIH0KICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKCJkaWRGYWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNo
SWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV9sb2FkZXIu
ZGlkRmFpbExvYWRpbmcoZXJyb3IpOwogfQpAQCAtMTU1LDYgKzE2Miw4IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6ZGlkTm90SGFuZGxlKCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWROb3RIYW5kbGVGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJ
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRU
aW1lci5zdG9wKCk7CisgICAgc29mdFVwZGF0ZUlmTmVlZGVkKCk7CisKICAgICBtX2xvYWRlci5z
ZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CiB9CiAKQEAgLTE3MSw2ICsxODAsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2Uo
KQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNvbnRpbnVlRmV0Y2hUYXNrV2l0aChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogeworICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25l
U2hvdChtX2xvYWRlci5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5z
ZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KCkpOwogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbikgewogICAgICAgICBtX2xvYWRlci5zZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTE4MSwxMSArMTkxLDIxIEBAIHZvaWQgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6Y29udGludWVGZXRjaFRhc2tXaXRoKFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91dFRpbWVyRmlyZWQoKQog
eworICAgIHNvZnRVcGRhdGVJZk5lZWRlZCgpOworCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgidGltZW91dFRpbWVyRmlyZWQ6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRlbnRp
Zmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKG1fc2VydmljZVdv
cmtlckNvbm5lY3Rpb24pCiAgICAgICAgIG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24tPmZldGNo
VGFza1RpbWVkT3V0KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkpOwogfQogCit2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OnNvZnRVcGRhdGVJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX3No
b3VsZFNvZnRVcGRhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0byogcmVnaXN0cmF0
aW9uID0gbV9sb2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLnN3Q29ubmVjdGlvbigpLnNl
cnZlcigpLmdldFJlZ2lzdHJhdGlvbihtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyKSkKKyAgICAgICAgcmVnaXN0cmF0aW9uLT5zY2hlZHVsZVNvZnRVcGRhdGUoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkNzE2YmJlMDJlNjlj
ZmFkMWM0ZDM0NjBlM2VkNGRhZWVlYzljNDAyLi41ZGI5M2MxYjBiNmRmMmIxZjkwMjFkZGY5MWE3
M2YxNjI3MDZjMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAg
LTU2LDcgKzU2LDcgQEAgY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogY2xh
c3MgU2VydmljZVdvcmtlckZldGNoVGFzayA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgU2VydmljZVdvcmtlckZldGNoVGFzayhOZXR3b3JrUmVzb3VyY2VMb2FkZXImLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKKyAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
KE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IGJvb2wgc2hvdWxkU29mdFVwZGF0ZSk7CiAgICAgflNlcnZpY2VXb3JrZXJGZXRjaFRhc2soKTsK
IAogICAgIHZvaWQgc3RhcnQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CkBAIC04
OCw2ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydEZldGNoKCk7CiAKICAgICB2b2lk
IHRpbWVvdXRUaW1lckZpcmVkKCk7CisgICAgdm9pZCBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1lc3NhZ2U+IGJvb2wgc2VuZFRvU2VydmljZVdvcmtlcihN
ZXNzYWdlJiYpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1lc3NhZ2U+IGJvb2wgc2VuZFRvQ2xp
ZW50KE1lc3NhZ2UmJik7CkBAIC0xMDAsNiArMTAxLDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsKICAgICBXZWJDb3JlOjpUaW1lciBt
X3RpbWVvdXRUaW1lcjsKICAgICBib29sIG1fd2FzSGFuZGxlZCB7IGZhbHNlIH07CisgICAgV2Vi
Q29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBib29sIG1fc2hvdWxkU29mdFVwZGF0ZSB7IGZh
bHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmJmMTk5ZGIyYThkMDE5MjkwODM1MjQzMzIyMzgz
MmI0OWMyMDliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMCww
ICsxLDE4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDYWNoZS5oIgor
I2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dFJlc291cmNlRGVjb2Rlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyU2Ny
aXB0TG9hZGVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKwordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6c3RhcnQoTmV0d29y
a1Nlc3Npb24qIHNlc3Npb24sIFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBz
aG91bGRSZWZyZXNoQ2FjaGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEhhbmRsZXImJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihzZXJ2aWNlV29ya2VyRmV0Y2hFcnJvcihqb2JEYXRhLmlkZW50aWZp
ZXIoKSwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSB7IGpvYkRhdGEucmVnaXN0cmF0aW9u
S2V5KCkgfSwgUmVzb3VyY2VFcnJvciB7IFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlv
biB9KSk7CisgICAgc2Vzc2lvbi0+YWRkU29mdFVwZGF0ZUxvYWRlcihtYWtlVW5pcXVlPFNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyPigqc2Vzc2lvbiwgV1RGTW92ZShqb2JEYXRhKSwgc2hv
dWxkUmVmcmVzaENhY2hlLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkpOworfQorCitTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6U2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIFNlcnZpY2VXb3JrZXJK
b2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIEhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICA6IG1fY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgLCBtX2pvYkRhdGEo
V1RGTW92ZShqb2JEYXRhKSkKKyAgICAsIG1fc2Vzc2lvbihtYWtlV2Vha1B0cihzZXNzaW9uKSkK
K3sKKyAgICBBU1NFUlQoIXJlcXVlc3QuaXNDb25kaXRpb25hbCgpKTsKKworICAgIGlmIChzZXNz
aW9uLmNhY2hlKCkpIHsKKyAgICAgICAgLy8gV2Ugc2V0IGNhY2hlIHBvbGljeSB0byBkaXNhYmxl
IHNwZWN1bGF0aXZlIGxvYWRpbmcvYXN5bmMgcmV2YWxpZGF0aW9uIGZyb20gdGhlIGNhY2hlLgor
ICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5
OjpSZXR1cm5DYWNoZURhdGFEb250TG9hZCk7CisgICAgICAgIAorICAgICAgICBzZXNzaW9uLmNh
Y2hlKCktPnJldHJpZXZlKHJlcXVlc3QsIE5ldHdvcmtDYWNoZTo6R2xvYmFsRnJhbWVJRCB7IH0s
IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdCwgc2hvdWxkUmVm
cmVzaENhY2hlXShhdXRvJiYgZW50cnksIGF1dG8mJikgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICgh
bV9zZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgZmFpbChSZXNvdXJjZUVycm9yIHsgUmVzb3Vy
Y2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghc2hvdWxkUmVmcmVzaENhY2hlICYmIGVu
dHJ5ICYmICFlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBsb2Fk
V2l0aENhY2hlRW50cnkoKmVudHJ5KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlDYWNoZURhdGEpOworICAgICAgICAgICAgaWYgKGVu
dHJ5KSB7CisgICAgICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gV1RGTW92ZShlbnRyeSk7CisK
KyAgICAgICAgICAgICAgICBTdHJpbmcgZVRhZyA9IG1fY2FjaGVFbnRyeS0+cmVzcG9uc2UoKS5o
dHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkVUYWcpOworICAgICAgICAgICAgICAgIGlm
ICghZVRhZy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk5vbmVNYXRjaCwgZVRhZyk7CisKKyAgICAgICAg
ICAgICAgICBTdHJpbmcgbGFzdE1vZGlmaWVkID0gbV9jYWNoZUVudHJ5LT5yZXNwb25zZSgpLmh0
dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6TGFzdE1vZGlmaWVkKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWxhc3RNb2RpZmllZC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk1vZGlmaWVkU2luY2Us
IGxhc3RNb2RpZmllZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb2FkRnJvbU5ldHdv
cmsoKm1fc2Vzc2lvbiwgV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgIH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGxvYWRGcm9tTmV0d29yayhzZXNzaW9uLCBXVEZNb3ZlKHJlcXVl
c3QpKTsKK30KKworU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6On5TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcigpCit7CisgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAg
ICAgIG1fY29tcGxldGlvbkhhbmRsZXIoc2VydmljZVdvcmtlckZldGNoRXJyb3IobV9qb2JEYXRh
LmlkZW50aWZpZXIoKSwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSB7IG1fam9iRGF0YS5y
ZWdpc3RyYXRpb25LZXkoKSB9LCBSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6
Q2FuY2VsbGF0aW9uIH0pKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
cjo6ZmFpbChSZXNvdXJjZUVycm9yJiYgZXJyb3IpCit7CisgICAgaWYgKCFtX2NvbXBsZXRpb25I
YW5kbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbXBsZXRpb25IYW5kbGVyKHNlcnZp
Y2VXb3JrZXJGZXRjaEVycm9yKG1fam9iRGF0YS5pZGVudGlmaWVyKCksIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkgeyBtX2pvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkgfSwgV1RGTW92ZShl
cnJvcikpKTsKKyAgICBkaWRDb21wbGV0ZSgpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpsb2FkV2l0aENhY2hlRW50cnkoTmV0d29ya0NhY2hlOjpFbnRyeSYgZW50
cnkpCit7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UgeyBlbnRyeS5y
ZXNwb25zZSgpIH0sIFtdKGF1dG8pIHsgfSk7CisgICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIg
JiYgZW50cnkuYnVmZmVyKCkpCisgICAgICAgIGRpZFJlY2VpdmVCdWZmZXIobWFrZVJlZigqZW50
cnkuYnVmZmVyKCkpLCAwKTsKKyAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAg
ZGlkRmluaXNoTG9hZGluZyh7IH0pOworICAgIGRpZENvbXBsZXRlKCk7Cit9CisKK3ZvaWQgU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmxvYWRGcm9tTmV0d29yayhOZXR3b3JrU2Vzc2lv
biYgc2Vzc2lvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAgICBOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxz
UG9saWN5ID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKKyAgICBwYXJhbWV0ZXJzLmNv
bnRlbnRTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRTbmlmZmluZ1BvbGljeTo6RG9Ob3RTbmlmZkNv
bnRlbnQ7CisgICAgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9IENv
bnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsKKyAgICBwYXJhbWV0ZXJzLnJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpOworICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5l
dHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgc2Vzc2lvbik7
Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OndpbGxTZW5kUmVkaXJl
Y3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJj
ZVJlc3BvbnNlJiYpCit7CisgICAgZmFpbChSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6
VHlwZTo6Q2FuY2VsbGF0aW9uIH0pOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYg
KHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0ICYmIG1fY2FjaGVFbnRyeSkgeworICAg
ICAgICBsb2FkV2l0aENhY2hlRW50cnkoKm1fY2FjaGVFbnRyeSk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gZXJyb3IgPSBXb3JrZXJTY3JpcHRMb2FkZXI6OnZhbGlkYXRlUmVzcG9uc2Uo
cmVzcG9uc2UsIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OlNlcnZpY2V3b3JrZXIpOworICAg
IGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgZmFpbChXVEZNb3ZlKGVycm9yKSk7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fY29udGVudFNlY3VyaXR5UG9saWN5ID0gQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsgcmVzcG9uc2UgfTsKKyAgICBtX3JlZmVycmVy
UG9saWN5ID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpSZWZlcnJl
clBvbGljeSk7CisgICAgbV9yZXNwb25zZUVuY29kaW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5n
TmFtZSgpOworCisgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOworfQor
Cit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkK
K3sKKyAgICBpZiAoIW1fZGVjb2RlcikgeworICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGlu
Zy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjcmVhdGUoInRleHQvamF2YXNjcmlwdCJfcywgbV9yZXNwb25zZUVuY29kaW5nKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3Jl
YXRlKCJ0ZXh0L2phdmFzY3JpcHQiX3MsICJVVEYtOCIpOworICAgIH0KKworICAgIGlmIChhdXRv
IHNpemUgPSBidWZmZXItPnNpemUoKSkKKyAgICAgICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rl
ci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXplKSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJikKK3sKKyAgICBpZiAobV9kZWNvZGVyKQorICAgICAgICBtX3NjcmlwdC5h
cHBlbmQobV9kZWNvZGVyLT5mbHVzaCgpKTsKKyAgICBtX2NvbXBsZXRpb25IYW5kbGVyKHsgbV9q
b2JEYXRhLmlkZW50aWZpZXIoKSwgbV9qb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBtX3Njcmlw
dC50b1N0cmluZygpLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9yZWZlcnJlclBvbGljeSwg
eyB9IH0pOworICAgIGRpZENvbXBsZXRlKCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQor
eworICAgIGZhaWwoUmVzb3VyY2VFcnJvcihlcnJvcikpOworfQorCit2b2lkIFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRDb21wbGV0ZSgpCit7CisgICAgbV9uZXR3b3JrTG9hZCA9
IG51bGxwdHI7CisgICAgaWYgKG1fc2Vzc2lvbikKKyAgICAgICAgbV9zZXNzaW9uLT5yZW1vdmVT
b2Z0VXBkYXRlTG9hZGVyKHRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjYzYjVjNjYwNjM4YWJlYTEyM2Fi
Y2RiMzljMDcyOTQ5MzI1ZmExNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5o
CkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUVudHJ5LmgiCisjaW5j
bHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRp
b25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oPgorI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7Citz
dHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGE7CitjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwor
fQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29ya0xvYWQ7CitjbGFzcyBOZXR3
b3JrU2Vzc2lvbjsKKworY2xhc3MgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIgZmluYWwg
OiBwdWJsaWMgTmV0d29ya0xvYWRDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
cHVibGljOgorICAgIHVzaW5nIEhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpPjsKKyAgICBzdGF0aWMgdm9pZCBz
dGFydChOZXR3b3JrU2Vzc2lvbiosIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJiYsIGJv
b2wgc2hvdWxkUmVmcmVzaENhY2hlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSGFuZGxl
ciYmKTsKKworICAgIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyKE5ldHdvcmtTZXNzaW9u
JiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmJiwgYm9vbCBzaG91bGRSZWZyZXNoQ2Fj
aGUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBIYW5kbGVyJiYpOworICAgIH5TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcigpOworICAgIAorcHJpdmF0ZToKKyAgICAvLyBOZXR3b3Jr
TG9hZENsaWVudC4KKyAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRl
c1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsIHsgfQor
ICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVj
dFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBkaWRGYWlsTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CisKKyAgICB2b2lkIGxv
YWRXaXRoQ2FjaGVFbnRyeShOZXR3b3JrQ2FjaGU6OkVudHJ5Jik7CisgICAgdm9pZCBsb2FkRnJv
bU5ldHdvcmsoTmV0d29ya1Nlc3Npb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7Cisg
ICAgdm9pZCBmYWlsKFdlYkNvcmU6OlJlc291cmNlRXJyb3ImJik7CisgICAgdm9pZCBkaWRDb21w
bGV0ZSgpOworCisgICAgSGFuZGxlciBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhIG1fam9iRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya0xvYWQ+IG1fbmV0d29ya0xvYWQ7CisgICAgV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9z
ZXNzaW9uOworCisgICAgU3RyaW5nIG1fcmVzcG9uc2VFbmNvZGluZzsKKyAgICBTdHJpbmcgbV9y
ZWZlcnJlclBvbGljeTsKKyAgICBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25z
ZUhlYWRlcnMgbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVudHJ5OworICAgIFJlZlB0cjxXZWJDb3JlOjpU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CisgICAgU3RyaW5nQnVpbGRlciBtX3Njcmlw
dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4
IDU2MDY1NzA1OWY5NTg3NDNiYjhjZjJjZTcwMGY4NTAwMDNjMTE4ZWQuLjljMjRjMjgwNmFjMDAz
OTQzOTk5OWE0ZWY1MWQ0NmQ4ZDQ4MmMwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uY3BwCkBAIC0xNzcsMTQgKzE3NywxNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2Vydmlj
ZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2so
TgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKKyAgICBhdXRvKiByZWdpc3RyYXRp
b24gPSBzZXJ2ZXIoKS5nZXRSZWdpc3RyYXRpb24oKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKTsKKyAgICBib29sIHNob3VsZFNvZnRVcGRhdGUgPSByZWdpc3RyYXRpb24gJiYg
cmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9u
cyk7CiAgICAgaWYgKHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkgewotICAgICAgICBh
dXRvKiByZWdpc3RyYXRpb24gPSBzZXJ2ZXIoKS5nZXRSZWdpc3RyYXRpb24od29ya2VyLT5yZWdp
c3RyYXRpb25LZXkoKSk7Ci0gICAgICAgIGlmIChyZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9u
LT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucykpCi0gICAgICAg
ICAgICByZWdpc3RyYXRpb24tPnNvZnRVcGRhdGUoKTsKKyAgICAgICAgaWYgKHNob3VsZFNvZnRV
cGRhdGUpCisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxlU29mdFVwZGF0ZSgpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHRhc2sgPSBtYWtlVW5p
cXVlPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+KGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0IHsgcmVx
dWVzdCB9LCBpZGVudGlmaWVyKCksIHdvcmtlci0+aWRlbnRpZmllcigpLCAqc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8U2Vy
dmljZVdvcmtlckZldGNoVGFzaz4obG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH0s
IGlkZW50aWZpZXIoKSwgd29ya2VyLT5pZGVudGlmaWVyKCksICpzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciwgc2hvdWxkU29mdFVwZGF0ZSk7CiAgICAgc3RhcnRGZXRjaCgqdGFz
aywgKndvcmtlcik7CiAgICAgcmV0dXJuIHRhc2s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IGI4MzVjNTY1YWJkMmMzZmQ4
NTZhZjhlNDYwMjRhODdhMTMzODY0NzAuLjRmMmJmMWI0OGE2MjNlZjU1ZWNiMmJlNzZjNjgyOTg3
OTUzYjZlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwCkBAIC0xMDAsMTEgKzEwMCw2IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpcmVB
Y3RpdmF0ZUV2ZW50KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7CiB9CiAKLXZvaWQgV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzb2Z0VXBkYXRlKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQotewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTb2Z0VXBkYXRlKHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSk7Ci19Ci0KIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5h
dGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIp
CiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRl
cm1pbmF0ZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGVmNGY0MTNkM2JhMGI0
ZmNmODBjYjE0MjhiOGY4YTFiYWVkZDRmMWUuLjA0YzhkNjMwYTMyZTEzOWM1MWRhNzE4N2U0NTVm
Mzg1MWZhMWNmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKQEAgLTg4LDcgKzg4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluc3RhbGxT
ZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7CiAgICAgdm9pZCBmaXJlSW5zdGFs
bEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lk
IGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5h
bDsKLSAgICB2b2lkIHNvZnRVcGRhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIp
IGZpbmFsOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZmluZENsaWVudEJ5SWRl
bnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVy
cm9yKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGYyNGU2NzE3NWY5ZmI4
MTkzY2VmY2ZjNjI2ZTllMzcxY2U4ZGRhMTAuLjU2YTZkNjU1Mzg4OWI5YjViZGJlZjE5MTU4ODE1
NGVlMjA0YThkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcApAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5o
IgogCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2lu
Y2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRG93bmxv
YWQuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKQEAgLTExMCw3ICsxMTEs
OCBAQCBWZWN0b3I8dWludDY0X3Q+IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y29hbGVzY2VDaGFs
bGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbAogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSogdG9wT3JpZ2luLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgQVNTRVJUKHBhZ2VJRCk7CisgICAgaWYgKCFwYWdlSUQpCisgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCB7IH0pOwogCiAgICAgdWludDY0X3QgY2hhbGxl
bmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcCh7IHBhZ2VJRCwgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpIH0pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApp
bmRleCAzZjdkM2ZiNjIxNmZmZmM2ZjNiY2IyZDNmZDUzYmVmYTEwNDE4NjYwLi40NDk0ODBlZDkz
YWU3NDhiYzkzNDI0MjQxZWNlZTBkODNlODNhZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTYxLDYgKzYx
LDcgQEAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKIE5ldHdv
cmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCiAKIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgQG5vLXVu
aWZ5CitOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcAogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3Jl
LmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVjYjgxY2NjMjAyY2U2
MjFiM2FkODUxZjVhYmE5ZTVlNDdiYjJmY2MuLjM1ZWVjOTBlZWIwNzQ1NjNmODAzMGI4ZmQ2MThm
YjZkNDQ0MDIyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMzE4OCw2ICszMTg4LDggQEAKIAkJNDFDNTM3OEYyMUYxMzYyRDAwOEIx
RkFEIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDFDODU4MTkxRjUxMERFRTAwNjVFMDg1IC8qIENhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
Y2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDFEMTI5RDkxRjNEMTAxNDAwRDE1RTQ3IC8qIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQxRDVDNkQ4MjM4RUIyMEQwMEI5QjNDQiAvKiBTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUQ1QzZEOTIzOEVCMjBFMDBCOUIzQ0IgLyogU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MURDNDU5
NDFFM0Q2RTFFMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtSVENQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MURDNDU5NTFFM0Q2RTFFMDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3Zp
ZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtSVENQ
cm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxREM0NTk4MUUzRDZF
RDYwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzQ2OCw2ICs3NDcwLDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CTQxNTE4NTM2MjIyNzA0RjYwMDU0MzBDNiAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCAq
LywKIAkJCQk0MTUxODUzNTIyMjcwNEY1MDA1NDMwQzYgLyogU2VydmljZVdvcmtlckZldGNoVGFz
ay5oICovLAorCQkJCTQxRDVDNkQ5MjM4RUIyMEUwMEI5QjNDQiAvKiBTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5jcHAgKi8sCisJCQkJNDFENUM2RDgyMzhFQjIwRDAwQjlCM0NCIC8qIFNl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggKi8sCiAJCQkJNDE1MTg1MzgyMjI3MEY1MzAw
NTQzMEM2IC8qIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4gKi8sCiAJCQkJOTNC
QTA0REYyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXT3JpZ2luU3RvcmUuY3BwICovLAogCQkJCTkz
QkEwNERFMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV09yaWdpblN0b3JlLmggKi8sCkBAIC05ODIw
LDcgKzk4MjQsNiBAQAogCQkJCTUxMUY4QTdCMTM4QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVtU2hp
bUxpYnJhcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOEU2OTBDMTY5QjU2M0YwMDlCNjY3MCAv
KiBTZWNJdGVtU2hpbVByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMThFNjkxODE2OUI2NjdC
MDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk3QUE3NDZENTIzNTkzRDgxMDAwOTUwNTAgLyogU2VjSXRlbVNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTcwQUI4RjMyMEFFM0JENzAwQjhCRTg3IC8qIFNlY0tleVByb3h5U3RvcmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNEQ5RjU3MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0OEZGQSAvKiBT
ZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCmluZGV4IGVjZjdhM2JmMWJmYTg5MzM1MTFmMDNmNzEzNzBlODViYzcyNTE2OGQuLjJk
ZDc1Y2MwZTgwOWNiZTIyNWJhMTkwMGQ2ODg2NGI5NmJhOTA0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTI1NiwxMSArMjU2LDYgQEAgdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWQKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5maXJlQWN0aXZhdGVF
dmVudChpZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6c29mdFVwZGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
KQotewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNvZnRVcGRhdGUoaWRlbnRp
Zmllcik7Ci19Ci0KIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0
ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBTV0Nv
bnRleHRNYW5hZ2VyOjp3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIG51bGxwdHIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggMjk3MzUxZjJiODZiODJkODQzYTBlZWFjMTE0
MDEwNmM2ZTIyNmI0OS4uNjk5MDMzMmVhN2VkOGM5NzRiOTM5YzU0Y2Y4ZTE3NzkzMjcwMmI4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC05MCw3ICs5MCw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBz
b3VyY2VEYXRhKTsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHZvaWQgc29mdFVwZGF0ZShXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlcihX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgTWVzc2FnZXM6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyRGVsYXllZFJlcGx5JiYpOwogICAg
IHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJv
b2wgaGFzU2VjdXJpdHlFcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCmluZGV4IDFiZTI5YWFhZDk3ODcxNGU0YjQyMTc1YjJhOTdjNDg2Njcw
ZWZjMDYuLjFkMzM5Y2NiMTUxYTYxNGY5ZTAyYzY5YjQwY2Y0YjkxZmEyNmMyMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMCw3ICsz
MCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNv
dW50ZWQgewogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNs
aWVudERhdGEgc291cmNlRGF0YSkKICAgICBGaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgRmlyZUFjdGl2YXRlRXZlbnQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKLSAgICBTb2Z0VXBkYXRl
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgVGVybWlu
YXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgU3luY1Rlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKSAtPiAoKSBTeW5jaHJvbm91cwogICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXJD
b21wbGV0ZWQodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgT3B0aW9uYWw8V2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJv
cikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384454</attachid>
            <date>2019-11-28 06:41:49 -0800</date>
            <delta_ts>2019-11-28 08:57:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204678-20191128154145.patch</filename>
            <type>text/plain</type>
            <size>76296</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU0NjQ4MzhhNGU3ZDU1
NWI1MmI5MzliYTVjN2VmNTRkY2YzYmZhNy4uN2JlZDU2NWNmYTEzYmFlNTJlNzZmODJlODA0MDFm
MWQ3YWYyMDJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE5LTExLTI4ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHNvZnQgdXBkYXRl
IGhhbmRsaW5nIHRvIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0Njc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OnZhbGlkYXRlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc0VxdWl2YWxlbnQgY29uc3QpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24pOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZFJlc29sdmVSZWdpc3RyYXRp
b25Qcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpTV1NlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25Kb2IpOgorICAgICAgICAoV2ViQ29yZTo6b3Jp
Z2luVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OmdldFJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnJ1
blVwZGF0ZUpvYik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpv
YlF1ZXVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjplbnF1ZXVlSm9i
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJl
Z2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2V0
VXBkYXRlVmlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246
OnNvZnRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNj
aGVkdWxlU29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRp
b246OnNjb3BlVVJMV2l0aG91dEZyYWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyUmVnaXN0cmF0aW9uOjpzY3JpcHRVUkwgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisKKzIwMTktMTEt
MjcgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFNXU2VydmVy
OjpzY3JpcHRGZXRjaEZpbmlzaGVkIGRvZXMgbm90IG5lZWQgYSBDb25uZWN0aW9uIGFzIHBhcmFt
ZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0
NjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
Y2hhbmdlIG9mIGJlaGF2aW9yLCByZW1vdmluZyBhbiB1bnVzZWQgcGFyYW1ldGVyLgorCisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRjaCk6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZCk6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmg6CisKIDIwMTktMTEtMjYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIEFjdGl2ZURPTU9i
amVjdDo6c2hvdWxkUHJldmVudEVudGVyaW5nQmFja0ZvcndhcmRDYWNoZV9ERVBSRUNBVEVEKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggM2FjYTJhOGVhMDA1ZTExNTZkNzliNjUyNWIzY2JjMThjNDA3ODc0NC4uYWRm
ODgwNmZlNGIyOWM0YjU0NDFhMzYwMTNhNDNjYWRmZjViNjE3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1MSBAQAorMjAxOS0xMS0yOCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgTW92ZSBzb2Z0IHVwZGF0ZSBoYW5kbGluZyB0byBuZXR3b3JrIHByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDY3OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6c3dTZXJ2ZXJGb3JTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6YWRkU29mdFVwZGF0
ZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZW1vdmVTb2Z0VXBk
YXRlTG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKToKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpOgorICAgICAgICAo
V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKToKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkTm90SGFuZGxlKToKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6Y29udGludWVGZXRjaFRhc2tXaXRoKToK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91dFRpbWVyRmly
ZWQpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzb2Z0VXBkYXRl
SWZOZWVkZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OlNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXI6On5TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpmYWlsKToKKyAgICAgICAgKFdlYktpdDo6U2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmxvYWRXaXRoQ2FjaGVFbnRyeSk6CisgICAgICAg
IChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpsb2FkRnJvbU5ldHdvcmsp
OgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6d2lsbFNl
bmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZhaWxM
b2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2spOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIwMTktMTEtMjYgIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW1JlbmRlciB0cmVl
XSBBZGQgTEZDIGxpbmUgbGF5b3V0IHBhdGggdG8gUmVuZGVyQmxvY2tGbG93CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggMjI4ZjNkMTdmZjAw
MjJlNjJlNjM2NDUzMmQ1NTZiOTUwN2EwMThmMi4uN2M5OWU3ZWVjZmRmMGM3MjIzYjA3NDQ3Y2Vj
NzViYjJhNWJiMmFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcApAQCAtMTUzLDIzICsxNTMsMjkgQEAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNl
UmVxdWVzdD4gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QoY29uc3QK
ICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQorUmVzb3VyY2VFcnJvciBXb3JrZXJTY3JpcHRMb2FkZXI6OnZhbGlk
YXRlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIEZldGNoT3B0aW9u
czo6RGVzdGluYXRpb24gZGVzdGluYXRpb24pCiB7Ci0gICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0
dXNDb2RlKCkgLyAxMDAgIT0gMiAmJiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSB7Ci0gICAg
ICAgIG1fZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAocmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSAvIDEwMCAhPSAyICYmIHJlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCkpCisgICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksICJSZXNwb25zZSBpcyBub3QgMnh4Il9zLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsIH07CiAKICAgICBpZiAoIWlzU2NyaXB0QWxsb3dlZEJ5
Tm9zbmlmZihyZXNwb25zZSkpIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5n
KCJSZWZ1c2VkIHRvIGV4ZWN1dGUgIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBz
aXplZFRvTGVuZ3RoKCksICIgYXMgc2NyaXB0IGJlY2F1c2UgXCJYLUNvbnRlbnQtVHlwZTogbm9z
bmlmZlwiIHdhcyBnaXZlbiBhbmQgaXRzIENvbnRlbnQtVHlwZSBpcyBub3QgYSBzY3JpcHQgTUlN
RSB0eXBlLiIpOwotICAgICAgICBtX2Vycm9yID0gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHVybCgpLCBtZXNzYWdlLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpH
ZW5lcmFsIH07Ci0gICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IHJlc3BvbnNlLnVybCgpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpH
ZW5lcmFsIH07CiAgICAgfQogCi0gICAgaWYgKHNob3VsZEJsb2NrUmVzcG9uc2VEdWVUb01JTUVU
eXBlKHJlc3BvbnNlLCBtX2Rlc3RpbmF0aW9uKSkgeworICAgIGlmIChzaG91bGRCbG9ja1Jlc3Bv
bnNlRHVlVG9NSU1FVHlwZShyZXNwb25zZSwgZGVzdGluYXRpb24pKSB7CiAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0byBleGVjdXRlICIsIHJlc3BvbnNlLnVy
bCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiIGFzIHNjcmlwdCBiZWNhdXNl
ICIsIHJlc3BvbnNlLm1pbWVUeXBlKCksICIgaXMgbm90IGEgc2NyaXB0IE1JTUUgdHlwZS4iKTsK
LSAgICAgICAgbV9lcnJvciA9IFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCByZXNwb25zZS51cmwoKSwgbWVzc2FnZSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2Vu
ZXJhbCB9OworICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpHZW5lcmFsIH07CisgICAgfQorCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBz
ZXJ2aWNlIHdvcmtlciBjaGVja3MgZnJvbSBTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVz
cG9uc2UuCisgICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIG1fZXJyb3IgPSB2YWxpZGF0ZVJlc3BvbnNlKHJl
c3BvbnNlLCBtX2Rlc3RpbmF0aW9uKTsKKyAgICBpZiAoIW1fZXJyb3IuaXNOdWxsKCkpIHsKICAg
ICAgICAgbV9mYWlsZWQgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggOWEwZjQ4NzgwYzdjODFm
N2JhMzdiZTI0ZDY3ODQ3NzI5OGU0MTU0OC4uYjk5NzZiNzRlZGYwNDIyMzQ4ODFlNjU2YjM2YzA3
NjA5YTZkZjk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5oCkBAIC03Nyw2ICs3Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FuY2VsKCk7CiAKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVzb3VyY2VFcnJvciB2YWxpZGF0ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uKTsKKwogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRl
cj47CiAgICAgZnJpZW5kIHN0cnVjdCBzdGQ6OmRlZmF1bHRfZGVsZXRlPFdvcmtlclNjcmlwdExv
YWRlcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJKb2JEYXRhLmNwcAppbmRleCA0N2E3OWYwYTNmNzY2ZGQ1ZTU0ODIxYTliMmVkMjMy
NTVkNmNmNDFlLi5kZGZmNjkwOWM4ZDQ2NDFiOTVkNWM1Nzg0YmNhNDVjMzBmMGRjY2YyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Sm9iRGF0YS5jcHAKQEAgLTY3LDYgKzY3LDI0IEBAIFNlcnZpY2VXb3JrZXJKb2JEYXRhIFNlcnZp
Y2VXb3JrZXJKb2JEYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK2Jvb2wgU2VydmljZVdvcmtlckpvYkRhdGE6OmlzRXF1aXZhbGVudChjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYgam9iKSBjb25zdAoreworICAgIGlmICh0eXBlICE9IGpvYi50eXBl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjoKKyAgICBjYXNlIFNlcnZpY2VXb3JrZXJK
b2JUeXBlOjpVcGRhdGU6CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxzbyBjaGVjayB3
b3JrZXIgdHlwZSBhbmQgdXBkYXRlIHZpYSBjYWNoZSBtb2RlLgorICAgICAgICByZXR1cm4gc2Nv
cGVVUkwgPT0gam9iLnNjb3BlVVJMICYmIHNjcmlwdFVSTCA9PSBqb2Iuc2NyaXB0VVJMOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVbnJlZ2lzdGVyOgor
ICAgICAgICByZXR1cm4gc2NvcGVVUkwgPT0gam9iLnNjb3BlVVJMOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCmluZGV4IGMyMDg1Mzdm
MDg1Mzc1MmZhMTJhOWNhOTBjN2I3NDgzM2Y1N2UxMmQuLjVmMzM3Y2JhYTgzOTE2ZTVhZTMxZGMy
NzA3NzlhMGE0MTFhMDljNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCkBAIC00Niw2ICs0Niw4IEBAIHN0cnVjdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YSB7CiAKICAgICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyLmNvbm5l
Y3Rpb25JZGVudGlmaWVyOyB9CiAKKyAgICBib29sIGlzRXF1aXZhbGVudChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYpIGNvbnN0OworCiAgICAgVVJMIHNjcmlwdFVSTDsKICAgICBVUkwgY2xp
ZW50Q3JlYXRpb25VUkw7CiAgICAgU2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbjsKQEAgLTU2
LDcgKzU4LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsKICAgICBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uT3B0aW9ucyByZWdpc3RyYXRpb25PcHRpb25zOwogCiAgICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXkoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktl
eSgpIGNvbnN0OwogICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGYyMTg5MDcwZWFiNzhkOGM1Mjc5MWIz
YjVkZTMwNGMwZjUzZDIzYzcuLjExNmJiYjRmZjc5Y2FjZWVmZDc5MDI1YmQzY2M4YTcyMDMzOTY4
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTQ2LDggKzQ2LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbik7CiAKLWNvbnN0IFNlY29uZHMgc29mdFVwZGF0ZURlbGF5IHsgMV9zIH07Ci0K
IFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
OjpnZXRPckNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcj4mJiBjb250YWluZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhJiYgZGF0YSkKIHsKICAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gY29udGFpbmVyLT5y
ZWdpc3RyYXRpb24oZGF0YS5pZGVudGlmaWVyKSkgewpAQCAtNjIsNyArNjAsNiBAQCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbgogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwg
bV9yZWdpc3RyYXRpb25EYXRhKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpCiAgICAgLCBtX2Nv
bnRhaW5lcihXVEZNb3ZlKGNvbnRhaW5lcikpCi0gICAgLCBtX3NvZnRVcGRhdGVUaW1lcihbdGhp
c10geyBzb2Z0VXBkYXRlKCk7IH0pCiB7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJDcmVhdGlu
ZyByZWdpc3RyYXRpb24gJXAgZm9yIHJlZ2lzdHJhdGlvbiBrZXkgJXMiLCB0aGlzLCBtX3JlZ2lz
dHJhdGlvbkRhdGEua2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBzdXNw
ZW5kSWZOZWVkZWQoKTsKQEAgLTE1NiwyOCArMTUzLDYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uOjp1cGRhdGUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIG1f
Y29udGFpbmVyLT51cGRhdGVSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25EYXRhLnNjb3BlVVJM
LCBuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpLCBXb3JrZXJUeXBlOjpDbGFzc2ljLCBXVEZNb3Zl
KHByb21pc2UpKTsKIH0KIAotLy8gVG8gYXZvaWQgc2NoZWR1bGluZyBtYW55IHVwZGF0ZXMgZHVy
aW5nIGEgc2luZ2xlIHBhZ2UgbG9hZCwgd2UgZG8gc29mdCB1cGRhdGVzIG9uIGEgMSBzZWNvbmQg
ZGVsYXkgYW5kIGtlZXAgZGVsYXlpbmcKLS8vIGFzIGxvbmcgYXMgc29mdCB1cGRhdGUgcmVxdWVz
dHMga2VlcCBjb21pbmcuIFRoaXMgc2VlbXMgdG8gbWF0Y2ggQ2hyb21lJ3MgYmVoYXZpb3IuCi12
b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnNjaGVkdWxlU29mdFVwZGF0ZSgpCi17Ci0g
ICAgaWYgKG1fc29mdFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc29mdFVwZGF0
ZVRpbWVyLnN0b3AoKTsKLSAgICBtX3NvZnRVcGRhdGVUaW1lci5zdGFydE9uZVNob3Qoc29mdFVw
ZGF0ZURlbGF5KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzb2Z0VXBk
YXRlKCkKLXsKLSAgICBpZiAobV9pc1N0b3BwZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1
dG8qIG5ld2VzdFdvcmtlciA9IGdldE5ld2VzdFdvcmtlcigpOwotICAgIGlmICghbmV3ZXN0V29y
a2VyKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCB3b3JrZXIgdHlw
ZXMuCi0gICAgbV9jb250YWluZXItPnVwZGF0ZVJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbkRh
dGEuc2NvcGVVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCksIFdvcmtlclR5cGU6OkNsYXNz
aWMsIG51bGxwdHIpOwotfQotCiB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnVucmVn
aXN0ZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChtX2lzU3Rv
cHBlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKaW5kZXggMTkxZmE0MGI4ZmE3N2QyOTJiMTNkY2Qx
ZjJhZDVkZjcxYWM0ZjcwZS4uNmI4MDY4ZWQ1NDhmMmI4ODUyYjcyZTE3MzQyNDA3ZjM0ZDIwYzJi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oCkBAIC02OCw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHVwZGF0ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIHVucmVnaXN0ZXIo
UmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKLSAgICB2b2lkIHNjaGVkdWxlU29mdFVwZGF0ZSgp
OwotCiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRl
cmVmOwogICAgIApAQCAtODcsOCArODUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZlbnRU
YXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmlu
YWwgeyBkZXJlZigpOyB9CiAKLSAgICB2b2lkIHNvZnRVcGRhdGUoKTsKLQogICAgIC8vIEFjdGl2
ZURPTU9iamVjdC4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwpAQCAt
MTA2LDcgKzEwMiw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fc2hvdWxkRmlyZVVwZGF0ZUZvdW5kRXZlbnRVcG9uUmVzdW1pbmcgeyBm
YWxzZSB9OwogICAgIFJlZlB0cjxQZW5kaW5nQWN0aXZpdHk8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbj4+IG1fcGVuZGluZ0FjdGl2aXR5Rm9yRXZlbnREaXNwYXRjaDsKLSAgICBUaW1lciBtX3Nv
ZnRVcGRhdGVUaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5jcHAKaW5kZXggYTZkZTdkMmUzOTMwNTQ3ZGM4ZDhkYTVhMjkwMDgxYTA5ZjAyMmRmZS4u
ZTJkODExYmFjNzIyODI4N2M3ZGNkY2ZjZTE0ODhlZTQyMzAyZDdjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5jcHAKQEAgLTEwOCwxNSArMTA4LDYgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpmaXJl
QWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHNl
cnZpY2VXb3JrZXItPnRocmVhZCgpLmZpcmVBY3RpdmF0ZUV2ZW50KCk7CiB9CiAKLXZvaWQgU1dD
b250ZXh0TWFuYWdlcjo6c29mdFVwZGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlm
aWVyKQotewotICAgIGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoaWRlbnRp
Zmllcik7Ci0gICAgaWYgKCFzZXJ2aWNlV29ya2VyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBz
ZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5zb2Z0VXBkYXRlKCk7Ci19Ci0KIHZvaWQgU1dDb250ZXh0
TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFNlY29uZHMgdGltZW91dCwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGF1dG8gc2VydmljZVdvcmtlciA9IG1fd29ya2VyTWFwLnRha2UoaWRlbnRpZmll
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggNDkzNDYzZWNhOTlmZWVmOTUxMTZlMTkwNjdiNmU5
OGNjZDkwZjQwYS4uYmEyYmNlNGU0NmRhNzVlZTJmYjk2MzkyMzkwMGFjNDQzMjlkYmFjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NX
Q29udGV4dE1hbmFnZXIuaApAQCAtODMsNyArODMsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBkZXN0aW5hdGlvbiwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgU2VydmljZVdvcmtl
ck9yQ2xpZW50RGF0YSYmIHNvdXJjZURhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmly
ZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzb2Z0VXBkYXRlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAgICAgdm9p
ZCBmb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5Jik+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRl
eCA0NDk2OWFmMDZmNGY4YzFlNzdhNWMxZWJhOWZkNGIwMjIzYTA2N2EyLi45NzgzYTlkOWU2NzFi
NzJkMTk0OGU0MjdiYzE5NDM1ZjUzZjRiMTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAK
QEAgLTE0MCw3ICsxNDAsNiBAQCB2b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYm
IGNsaWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTYwogICAgIEZldGNoT3B0
aW9uczo6UmVkaXJlY3QgcmVkaXJlY3QgPSBvcHRpb25zLnJlZGlyZWN0OwogCiAgICAgYm9vbCBp
c05hdmlnYXRpb24gPSBvcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0
ZTsKLSAgICBib29sIGlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0ID0gV2ViQ29yZTo6aXNOb25TdWJy
ZXNvdXJjZVJlcXVlc3Qob3B0aW9ucy5kZXN0aW5hdGlvbik7CiAKICAgICBBU1NFUlQoZ2xvYmFs
U2NvcGUucmVnaXN0cmF0aW9uKCkuYWN0aXZlKCkpOwogICAgIEFTU0VSVChnbG9iYWxTY29wZS5y
ZWdpc3RyYXRpb24oKS5hY3RpdmUoKS0+aWRlbnRpZmllcigpID09IGdsb2JhbFNjb3BlLnRocmVh
ZCgpLmlkZW50aWZpZXIoKSk7CkBAIC0xODgsMTAgKzE4Nyw2IEBAIHZvaWQgZGlzcGF0Y2hGZXRj
aEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIGds
b2JhbFNjCiAgICAgfQogCiAgICAgZ2xvYmFsU2NvcGUudXBkYXRlRXh0ZW5kZWRFdmVudHNTZXQo
ZXZlbnQucHRyKCkpOwotCi0gICAgYXV0byYgcmVnaXN0cmF0aW9uID0gZ2xvYmFsU2NvcGUucmVn
aXN0cmF0aW9uKCk7Ci0gICAgaWYgKGlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0IHx8IHJlZ2lzdHJh
dGlvbi5uZWVkc1VwZGF0ZSgpKQotICAgICAgICByZWdpc3RyYXRpb24uc2NoZWR1bGVTb2Z0VXBk
YXRlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFNlcnZpY2VXb3JrZXJGZXRjaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmNwcAppbmRleCBlNGVlY2EwZmFhOTdhYTk2YjI5YTM4NDdhMDMzY2FhNjUz
M2U2ZjRjLi4wNGU5Yzg4NGVhNWYwYTQxZWZjYWM0ODBlYTY3ZjIzY2VjMTJlYjhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtMTc1LDE0ICsxNzUsNiBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJUaHJlYWQ6OmZpcmVBY3RpdmF0ZUV2ZW50KCkKICAgICB9KTsKIH0KIAotdm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkOjpzb2Z0VXBkYXRlKCkKLXsKLSAgICBydW5Mb29wKCkucG9zdFRhc2so
W10oYXV0byYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7
Ci0gICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5yZWdpc3RyYXRpb24oKS5zY2hlZHVs
ZVNvZnRVcGRhdGUoKTsKLSAgICB9KTsKLX0KLQogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpm
aW5pc2hlZEV2YWx1YXRpbmdTY3JpcHQoKQogewogICAgIG1fZG9lc0hhbmRsZUZldGNoID0gd29y
a2VyR2xvYmFsU2NvcGUoKS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmZldGNoRXZl
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4IDA3M2NkNjIyNjMzYjViNWY2MWUzYTkw
YjRkYzhmMDY2ZjdlMzIxZjguLmE0MjU3OWZkOGRlNTFlOTRkZjA0OGYzYWZmYmY0YTgwZDU2YzMz
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgog
CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KCk7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVu
dCgpOwotICAgIHZvaWQgc29mdFVwZGF0ZSgpOwogCiAgICAgY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhJiBjb250ZXh0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmlu
ZGV4IGM3NjRiYWE5OWU3M2U3ZGZhZjMxODE3NTFkNTU4OWQ1N2Q2MmJmMDkuLjRlOTllYTlkM2Qy
MWEzNWM2MmVmMjQzN2ZjYjUxYzUyYmM2MTM4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0yODgsMTIgKzI4OCwxMiBA
QCB2b2lkIFNXU2VydmVyOjpjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5
T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcgogCiB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpm
aW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3Vs
dCYgcmVzdWx0KQogewotICAgIG1fc2VydmVyLnNjcmlwdEZldGNoRmluaXNoZWQoKnRoaXMsIHJl
c3VsdCk7CisgICAgbV9zZXJ2ZXIuc2NyaXB0RmV0Y2hGaW5pc2hlZChyZXN1bHQpOwogfQogCiB2
b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCiB7Ci0gICAgbV9zZXJ2ZXIu
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoKnRoaXMsIGtleSk7CisgICAgbV9zZXJ2ZXIu
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UodGhpcywga2V5KTsKIH0KIAogdm9pZCBTV1Nl
cnZlcjo6Q29ubmVjdGlvbjo6YWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC0zMTIsMTEg
KzMxMiwxMiBAQCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2Vy
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZQogICAgICAgICBtX3NlcnZlci5zeW5j
VGVybWluYXRlV29ya2VyKCp3b3JrZXIpOwogfQogCi1TV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVl
UmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYg
Y2FsbGJhY2spCitTV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYg
b3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcm
JiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTb2Z0VXBkYXRlQ2FsbGJhY2smJiBzb2Z0VXBkYXRlQ2FsbGJhY2ssIENyZWF0ZUNvbnRleHRD
b25uZWN0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICA6IG1fb3JpZ2luU3RvcmUoV1RGTW92
ZShvcmlnaW5TdG9yZSkpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2lz
UHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5h
YmxlZCkKICAgICAsIG1fY3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayhXVEZNb3ZlKGNh
bGxiYWNrKSkKKyAgICAsIG1fc29mdFVwZGF0ZUNhbGxiYWNrKFdURk1vdmUoc29mdFVwZGF0ZUNh
bGxiYWNrKSkKIHsKICAgICBBU1NFUlQoIXJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5Lmlz
RW1wdHkoKSB8fCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKICAgICBpZiAoIW1fc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCkBAIC0zMzEsMTYgKzMzMiwyNiBAQCBTV1NlcnZlcjo6U1dTZXJ2
ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vzc1Rl
cm1pbmF0aQogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3NjaGVkdWxl
LWpvYi1hbGdvcml0aG0KIHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJK
b2JEYXRhJiYgam9iRGF0YSkKIHsKLSAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhq
b2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpKTsKLQotICAgIC8vIEZJWE1FOiBQZXIgdGhl
IHNwZWMsIGNoZWNrIGlmIHRoaXMgam9iIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGxhc3Qgam9iIG9u
IHRoZSBxdWV1ZS4KLSAgICAvLyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0IGpv
Yi4KKyAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhqb2JEYXRhLmNvbm5lY3Rpb25J
ZGVudGlmaWVyKCkpIHx8IGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSA9PSBQcm9jZXNz
OjppZGVudGlmaWVyKCkpOwogCiAgICAgYXV0byYgam9iUXVldWUgPSAqbV9qb2JRdWV1ZXMuZW5z
dXJlKGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIFt0aGlzLCAmam9iRGF0YV0gewogICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdp
c3RyYXRpb25LZXkoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgam9iUXVldWUu
ZW5xdWV1ZUpvYihqb2JEYXRhKTsKKyAgICBpZiAoIWpvYlF1ZXVlLnNpemUoKSkgeworICAgICAg
ICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKFdURk1vdmUoam9iRGF0YSkpOworICAgICAgICBqb2JRdWV1
ZS5ydW5OZXh0Sm9iKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byYgbGFzdEpv
YiA9IGpvYlF1ZXVlLmxhc3RKb2IoKTsKKyAgICBpZiAoam9iRGF0YS5pc0VxdWl2YWxlbnQobGFz
dEpvYikpIHsKKyAgICAgICAgLy8gRklYTUU6IFBlciB0aGUgc3BlYywgY2hlY2sgaWYgdGhpcyBq
b2IgaXMgZXF1aXZhbGVudCB0byB0aGUgbGFzdCBqb2Igb24gdGhlIHF1ZXVlLgorICAgICAgICAv
LyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0IGpvYi4gRm9yIG5vdywgd2UganVz
dCBtYWtlIHN1cmUgdG8gbm90IGNhbGwgc29mdC11cGRhdGUgdG9vIG9mdGVuLgorICAgICAgICBp
ZiAoam9iRGF0YS50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUgJiYgam9iRGF0
YS5jb25uZWN0aW9uSWRlbnRpZmllcigpID09IFByb2Nlc3M6OmlkZW50aWZpZXIoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKFdURk1vdmUo
am9iRGF0YSkpOwogICAgIGlmIChqb2JRdWV1ZS5zaXplKCkgPT0gMSkKICAgICAgICAgam9iUXVl
dWUucnVuTmV4dEpvYigpOwogfQpAQCAtMzU5LDggKzM3MCwxMSBAQCB2b2lkIFNXU2VydmVyOjpy
ZXNvbHZlUmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRh
LCBjb25zdAogewogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiUmVzb2x2ZWQgU2VydmljZVdvcmtl
ciBqb2IgJXMgaW4gc2VydmVyIHdpdGggcmVnaXN0cmF0aW9uICVzIiwgam9iRGF0YS5pZGVudGlm
aWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlZ2lzdHJhdGlvbkRhdGEuaWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgYXV0byogY29ubmVj
dGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7
Ci0gICAgaWYgKCFjb25uZWN0aW9uKQorICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICBp
ZiAoc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkID09IFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZDo6
WWVzICYmIGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlm
aWVyKCkpCisgICAgICAgICAgICBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShudWxscHRy
LCByZWdpc3RyYXRpb25EYXRhLmtleSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBj
b25uZWN0aW9uLT5yZXNvbHZlUmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoam9iRGF0YS5pZGVudGlm
aWVyKCkuam9iSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uRGF0YSwgc2hvdWxkTm90aWZ5V2hlblJl
c29sdmVkKTsKIH0KQEAgLTM3NCwyNiArMzg4LDYyIEBAIHZvaWQgU1dTZXJ2ZXI6OnJlc29sdmVV
bnJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgY29u
CiAgICAgY29ubmVjdGlvbi0+cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoam9iRGF0
YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCB1bnJlZ2lzdHJh
dGlvblJlc3VsdCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQ
b2xpY3kpCitVUkwgc3RhdGljIGlubGluZSBvcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmlnaW4m
IG9yaWdpbikKK3sKKyAgICBVUkwgdXJsOworICAgIHVybC5zZXRQcm90b2NvbChvcmlnaW4ucHJv
dG9jb2woKSk7CisgICAgdXJsLnNldEhvc3Qob3JpZ2luLmhvc3QoKSk7CisgICAgaWYgKG9yaWdp
bi5wb3J0KCkpCisgICAgICAgIHVybC5zZXRQb3J0KCpvcmlnaW4ucG9ydCgpKTsKKyAgICByZXR1
cm4gdXJsOworfQorCit2b2lkIFNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSkKIHsKICAg
ICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZlciBpc3N1aW5nIHN0YXJ0U2NyaXB0RmV0Y2ggZm9y
IGN1cnJlbnQgam9iICVzIGluIGNsaWVudCIsIGpvYkRhdGEuaWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBhdXRvKiBjb25uZWN0aW9uID0gbV9jb25uZWN0
aW9ucy5nZXQoam9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBpZiAoY29ubmVj
dGlvbikgeworICAgICAgICBjb25uZWN0aW9uLT5zdGFydFNjcmlwdEZldGNoSW5DbGllbnQoam9i
RGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllciwgam9iRGF0YS5yZWdpc3RyYXRpb25LZXko
KSwgc2hvdWxkUmVmcmVzaENhY2hlID8gRmV0Y2hPcHRpb25zOjpDYWNoZTo6Tm9DYWNoZSA6IEZl
dGNoT3B0aW9uczo6Q2FjaGU6OkRlZmF1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmIChqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRpZmll
cigpKSB7CisgICAgICAgIEFTU0VSVChqb2JEYXRhLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5
cGU6OlVwZGF0ZSk7CisgICAgICAgIC8vIFRoaXMgaXMgYSBzb2Z0LXVwZGF0ZSBqb2IsIGNyZWF0
ZSBkaXJlY3RseSBhIG5ldHdvcmsgbG9hZCB0byBmZXRjaCB0aGUgc2NyaXB0LgorICAgICAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCB7IGpvYkRhdGEuc2NyaXB0VVJMIH07CisKKyAgICAgICAg
YXV0byB0b3BPcmlnaW4gPSBqb2JEYXRhLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAg
ICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRV
UkwpOworCisgICAgICAgIHJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24odG9wT3Jp
Z2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRBbGxv
d0Nvb2tpZXModHJ1ZSk7CisgICAgICAgIHJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMo
b3JpZ2luVVJMKHRvcE9yaWdpbikpOworCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpPcmlnaW4sIG9yaWdpbi0+dG9TdHJpbmcoKSk7CisgICAgICAg
IHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKG9yaWdpblVSTChvcmlnaW4pKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQVXNlckFnZW50KHNlcnZpY2VXb3JrZXJDbGllbnRVc2VyQWdlbnQoQ2xpZW50
T3JpZ2luIHsgam9iRGF0YS50b3BPcmlnaW4sIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0
YS5zY3JpcHRVUkwpLT5kYXRhKCkgfSkpOworICAgICAgICByZXF1ZXN0LnNldFByaW9yaXR5KFJl
c291cmNlTG9hZFByaW9yaXR5OjpMb3cpOworCisgICAgICAgIG1fc29mdFVwZGF0ZUNhbGxiYWNr
KFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsgam9iRGF0YSB9LCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdU
Rk1vdmUocmVxdWVzdCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRv
JiByZXN1bHQpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgc2NyaXB0RmV0Y2hGaW5pc2hlZChyZXN1bHQpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGNv
bm5lY3Rpb24sICJJZiB0aGUgY29ubmVjdGlvbiB3YXMgbG9zdCwgdGhpcyBqb2Igc2hvdWxkIGhh
dmUgYmVlbiBjYW5jZWxsZWQiKTsKLSAgICBpZiAoY29ubmVjdGlvbikKLSAgICAgICAgY29ubmVj
dGlvbi0+c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklk
ZW50aWZpZXIsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIGNhY2hlUG9saWN5KTsKIH0KIAot
dm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3ZvaWQgU1dTZXJ2ZXI6
OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1
bHQpCiB7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2ZXIgaGFuZGxpbmcgc2NyaXB0RmV0
Y2hGaW5pc2hlZCBmb3IgY3VycmVudCBqb2IgJXMgaW4gY2xpZW50IiwgcmVzdWx0LmpvYkRhdGFJ
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVCht
X2Nvbm5lY3Rpb25zLmNvbnRhaW5zKHJlc3VsdC5qb2JEYXRhSWRlbnRpZmllci5jb25uZWN0aW9u
SWRlbnRpZmllcikpOworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKHJlc3VsdC5q
b2JEYXRhSWRlbnRpZmllci5jb25uZWN0aW9uSWRlbnRpZmllcikgfHwgcmVzdWx0LmpvYkRhdGFJ
ZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVyID09IFByb2Nlc3M6OmlkZW50aWZpZXIoKSk7
CiAKICAgICBhdXRvIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJlc3VsdC5yZWdpc3RyYXRp
b25LZXkpOwogICAgIGlmICgham9iUXVldWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGpvYlF1
ZXVlLT5zY3JpcHRGZXRjaEZpbmlzaGVkKGNvbm5lY3Rpb24sIHJlc3VsdCk7CisgICAgam9iUXVl
dWUtPnNjcmlwdEZldGNoRmluaXNoZWQocmVzdWx0KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6c2Ny
aXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyJiB3b3JrZXIs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKQEAgLTUxNyw5ICs1NjcsOSBAQCB2b2lkIFNXU2VydmVy
OjpjbGFpbShTV1NlcnZlcldvcmtlciYgd29ya2VyKQogICAgIH0pOwogfQogCi12b2lkIFNXU2Vy
dmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCit2
b2lkIFNXU2VydmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9uKiBj
b25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXkpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCBtX2Nvbm5lY3Rpb25zLmNv
bnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CisgICAgQVNTRVJUX1VOVVNFRChjb25u
ZWN0aW9uLCAhY29ubmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24t
PmlkZW50aWZpZXIoKSkpOwogCiAgICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMu
Z2V0KHJlZ2lzdHJhdGlvbktleSkpCiAgICAgICAgIGpvYlF1ZXVlLT5kaWRSZXNvbHZlUmVnaXN0
cmF0aW9uUHJvbWlzZSgpOwpAQCAtNTQyLDcgKzU5Miw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92
ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
U2VyCiAgICAgICAgIHJlZ2lzdHJhdGlvbi0+cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbihjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OnVw
ZGF0ZVdvcmtlcihDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlv
biwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1h
cCkKK3ZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVn
aXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8
VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJl
c291cmNlTWFwKQogewogICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YSh7IGpvYkRhdGFJZGVudGlm
aWVyLCByZWdpc3RyYXRpb24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJh
dGUoKSwgc2NyaXB0LCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmws
IHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKIH0KQEAgLTk5OCw2
ICsxMDQ4LDE3IEBAIGJvb2wgU1dTZXJ2ZXI6OmNhbkhhbmRsZVNjaGVtZShTdHJpbmdWaWV3IHNj
aGVtZSkgY29uc3QKICAgICByZXR1cm4gc2NoZW1lLmxlbmd0aCgpID09IDQ7CiB9CiAKKy8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNzb2Z0LXVwZGF0ZQordm9pZCBTV1Nl
cnZlcjo6c29mdFVwZGF0ZShTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQorewor
ICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhIGpvYkRhdGEoUHJvY2Vzczo6aWRlbnRpZmllcigpLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgam9iRGF0YS5zY3JpcHRV
UkwgPSByZWdpc3RyYXRpb24uc2NyaXB0VVJMKCk7CisgICAgam9iRGF0YS50b3BPcmlnaW4gPSBy
ZWdpc3RyYXRpb24ua2V5KCkudG9wT3JpZ2luKCk7CisgICAgam9iRGF0YS5zY29wZVVSTCA9IHJl
Z2lzdHJhdGlvbi5zY29wZVVSTFdpdGhvdXRGcmFnbWVudCgpOworICAgIGpvYkRhdGEudHlwZSA9
IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGU7CisgICAgc2NoZWR1bGVKb2IoV1RGTW92ZShq
b2JEYXRhKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBkNjI3Mjc3ODdiZjVlNWQ2YmFhYjcxNzcwMjMwNjBlZmFh
MjBhNjhlLi5iYzExMjc2YTEzZWRiNTA4YzVjMzZjMTc2NDAzYjExZjFmZjkyODMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0x
MjQsOCArMTI0LDkgQEAgcHVibGljOgogICAgICAgICBWZWN0b3I8UmVnaXN0cmF0aW9uUmVhZHlS
ZXF1ZXN0PiBtX3JlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdHM7CiAgICAgfTsKIAorICAgIHVzaW5n
IFNvZnRVcGRhdGVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckpvYkRhdGEm
JiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSwgUmVzb3VyY2VSZXF1ZXN0JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik+JiYp
PjsKICAgICB1c2luZyBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpPjsKLSAgICBXRUJDT1JFX0VY
UE9SVCBTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiwgYm9vbCBwcm9jZXNzVGVy
bWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0
b3J5LCBQQUw6OlNlc3Npb25JRCwgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiwg
Ym9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlv
bkRhdGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Npb25JRCwgU29mdFVwZGF0ZUNhbGxiYWNrJiYs
IENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2smJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB+U1dTZXJ2ZXIoKTsKIApAQCAtMTM1LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0YXJ0U3VzcGVuc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kU3VzcGVuc2lvbigpOwogCisgICAgU1dTZXJ2
ZXJSZWdpc3RyYXRpb24qIGdldFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbnMuZ2V0KGlkZW50
aWZpZXIpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIGdldFJl
Z2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAgICAgdm9p
ZCBhZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYm
KTsKICAgICB2b2lkIHJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcik7CkBAIC0xNDQsOSArMTQ2LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVqZWN0
Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgRXhjZXB0aW9uRGF0YSYpOwog
ICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YSYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiwgU2hvdWxkTm90aWZ5V2hl
blJlc29sdmVkKTsKICAgICB2b2lkIHJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBi
b29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKLSAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2goY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBGZXRjaE9wdGlvbnM6OkNhY2hlKTsKKyAgICB2b2lk
IHN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBib29sIHNob3Vs
ZFJlZnJlc2hDYWNoZSk7CiAKLSAgICB2b2lkIHVwZGF0ZVdvcmtlcihDb25uZWN0aW9uJiwgY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24m
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29y
a2VyVHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQ+JiYpOworICAgIHZvaWQgdXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEhhc2hNYXA8VVJM
LCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKICAgICB2b2lk
IHRlcm1pbmF0ZVdvcmtlcihTV1NlcnZlcldvcmtlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc3luY1Rlcm1pbmF0ZVdvcmtlcihTV1NlcnZlcldvcmtlciYpOwogICAgIHZvaWQgZmlyZUlu
c3RhbGxFdmVudChTV1NlcnZlcldvcmtlciYpOwpAQCAtMjA2LDEwICsyMDgsMTIgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNJbXBvcnRDb21wbGV0ZWQoKSBjb25zdCB7IHJldHVybiBtX2ltcG9ydENv
bXBsZXRlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2hlbkltcG9ydElzQ29tcGxldGVk
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKKyAgICB2b2lkIHNvZnRVcGRhdGUoU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24mKTsKKwogcHJpdmF0ZToKLSAgICB2b2lkIHNjcmlwdEZldGNoRmlu
aXNoZWQoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOworICAg
IHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQm
KTsKIAotICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29ubmVjdGlvbiYs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKKyAgICB2b2lkIGRpZFJlc29s
dmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5lY3Rpb24qLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5Jik7CiAKICAgICB2b2lkIGFkZENsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24oQ29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsK
ICAgICB2b2lkIHJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlv
biYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKQEAgLTI2Niw2ICsyNzAs
NyBAQCBwcml2YXRlOgogICAgIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2sgbV9jcmVh
dGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrOwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zOwogICAgIFZlY3RvcjxDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX2ltcG9ydENvbXBsZXRlZENhbGxiYWNrczsKKyAgICBT
b2Z0VXBkYXRlQ2FsbGJhY2sgbV9zb2Z0VXBkYXRlQ2FsbGJhY2s7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAppbmRleCA0ODdjYzc1ZDVmM2U2Mjg4Zjlm
Y2NmMGI2OGRkNTI2MDk4MmNhY2RiLi44OTQwZWI5MmJmZDJiMjZhMzY4ZGZjZjRiMWNkYTIzZDIw
MzAzYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgYm9vbCBTV1Nl
cnZlckpvYlF1ZXVlOjppc0N1cnJlbnRseVByb2Nlc3NpbmdKb2IoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGkKICAgICByZXR1cm4gIW1fam9iUXVldWUuaXNFbXB0eSgpICYmIGZpcnN0
Sm9iKCkuaWRlbnRpZmllcigpID09IGpvYkRhdGFJZGVudGlmaWVyOwogfQogCi12b2lkIFNXU2Vy
dmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQordm9pZCBT
V1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJG
ZXRjaFJlc3VsdCYgcmVzdWx0KQogewogICAgIGlmICghaXNDdXJyZW50bHlQcm9jZXNzaW5nSm9i
KHJlc3VsdC5qb2JEYXRhSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMSw3ICsx
MDEsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2
ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbgogICAgIC8vIEZJWE1FOiBVcGRhdGUgYWxs
IHRoZSBpbXBvcnRlZCBzY3JpcHRzIGFzIHBlciBzcGVjLiBGb3Igbm93LCB3ZSBqdXN0IGRvIGFz
IGlmIHRoZXJlIGlzIG5vbmUuCiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCB0aGUgcHJvcGVyIHdv
cmtlciB0eXBlIChjbGFzc2ljIHZzIG1vZHVsZSkKLSAgICBtX3NlcnZlci51cGRhdGVXb3JrZXIo
Y29ubmVjdGlvbiwgam9iLmlkZW50aWZpZXIoKSwgKnJlZ2lzdHJhdGlvbiwgam9iLnNjcmlwdFVS
TCwgcmVzdWx0LnNjcmlwdCwgcmVzdWx0LmNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVzdWx0LnJl
ZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlOjpDbGFzc2ljLCB7IH0pOworICAgIG1fc2VydmVyLnVw
ZGF0ZVdvcmtlcihqb2IuaWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9uLCBqb2Iuc2NyaXB0VVJM
LCByZXN1bHQuc2NyaXB0LCByZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5LCByZXN1bHQucmVm
ZXJyZXJQb2xpY3ksIFdvcmtlclR5cGU6OkNsYXNzaWMsIHsgfSk7CiB9CiAKIC8vIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN1cGRhdGUtYWxnb3JpdGhtCkBAIC0zMzIsMTcg
KzMzMiwxMyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blVwZGF0ZUpvYihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYgam9iKQogICAgIGlmIChqb2IudHlwZSA9PSBTZXJ2aWNlV29ya2Vy
Sm9iVHlwZTo6VXBkYXRlICYmIG5ld2VzdFdvcmtlciAmJiAhZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpKSkKICAg
ICAgICAgcmV0dXJuIHJlamVjdEN1cnJlbnRKb2IoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwg
IkNhbm5vdCB1cGRhdGUgYSBzZXJ2aWNlIHdvcmtlciB3aXRoIGEgcmVxdWVzdGVkIHNjcmlwdCBV
Ukwgd2hvc2UgbmV3ZXN0IHdvcmtlciBoYXMgYSBkaWZmZXJlbnQgc2NyaXB0IFVSTCJfcyB9KTsK
IAotICAgIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kgPSBGZXRjaE9wdGlvbnM6OkNh
Y2hlOjpEZWZhdWx0OwogICAgIC8vIFNldCByZXF1ZXN0J3MgY2FjaGUgbW9kZSB0byAibm8tY2Fj
aGUiIGlmIGFueSBvZiB0aGUgZm9sbG93aW5nIGFyZSB0cnVlOgogICAgIC8vIC0gcmVnaXN0cmF0
aW9uJ3MgdXBkYXRlIHZpYSBjYWNoZSBtb2RlIGlzIG5vdCAiYWxsIi4KICAgICAvLyAtIGpvYidz
IGZvcmNlIGJ5cGFzcyBjYWNoZSBmbGFnIGlzIHNldC4KICAgICAvLyAtIG5ld2VzdFdvcmtlciBp
cyBub3QgbnVsbCwgYW5kIHJlZ2lzdHJhdGlvbidzIGxhc3QgdXBkYXRlIGNoZWNrIHRpbWUgaXMg
bm90IG51bGwgYW5kIHRoZSB0aW1lIGRpZmZlcmVuY2UgaW4gc2Vjb25kcyBjYWxjdWxhdGVkIGJ5
IHRoZQogICAgIC8vICAgY3VycmVudCB0aW1lIG1pbnVzIHJlZ2lzdHJhdGlvbidzIGxhc3QgdXBk
YXRlIGNoZWNrIHRpbWUgaXMgZ3JlYXRlciB0aGFuIDg2NDAwLgotICAgIGlmIChyZWdpc3RyYXRp
b24tPnVwZGF0ZVZpYUNhY2hlKCkgIT0gU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpBbGwK
LSAgICAgICAgfHwgKG5ld2VzdFdvcmtlciAmJiByZWdpc3RyYXRpb24tPmlzU3RhbGUoKSkpIHsK
LSAgICAgICAgY2FjaGVQb2xpY3kgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpOb0NhY2hlOwotICAg
IH0KLSAgICBtX3NlcnZlci5zdGFydFNjcmlwdEZldGNoKGpvYiwgY2FjaGVQb2xpY3kpOworICAg
IGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlID0gcmVnaXN0cmF0aW9uLT51cGRhdGVWaWFDYWNoZSgp
ICE9IFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6QWxsIHx8IChuZXdlc3RXb3JrZXIgJiYg
cmVnaXN0cmF0aW9uLT5pc1N0YWxlKCkpOworICAgIG1fc2VydmVyLnN0YXJ0U2NyaXB0RmV0Y2go
am9iLCBzaG91bGRSZWZyZXNoQ2FjaGUpOwogfQogCiB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJl
amVjdEN1cnJlbnRKb2IoY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpv
YlF1ZXVlLmgKaW5kZXggMGE5Nzc3ZWJiOTBjZDAxODRhY2EwZTdmNWY1N2IyNmQwYWQwZDFjMC4u
ZWI5MzFlMDQxNDcwMGVkNTk2N2FhYjYxZDY0ODI3NTgxMjU5YzQzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVl
LmgKQEAgLTQ1LDEyICs0NSwxMiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYgZmlyc3RKb2IoKSBjb25zdCB7IHJldHVybiBtX2pvYlF1ZXVlLmZpcnN0KCk7IH0K
ICAgICBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgbGFzdEpvYigpIGNvbnN0IHsgcmV0dXJu
IG1fam9iUXVldWUubGFzdCgpOyB9Ci0gICAgdm9pZCBlbnF1ZXVlSm9iKGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhJiBqb2JEYXRhKSB7IG1fam9iUXVldWUuYXBwZW5kKGpvYkRhdGEpOyB9Cisg
ICAgdm9pZCBlbnF1ZXVlSm9iKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkgeyBtX2pv
YlF1ZXVlLmFwcGVuZChXVEZNb3ZlKGpvYkRhdGEpKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9qb2JRdWV1ZS5zaXplKCk7IH0KIAogICAgIHZvaWQgcnVuTmV4dEpvYigp
OwogCi0gICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwg
Y29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7CisgICAgdm9pZCBzY3JpcHRGZXRjaEZp
bmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwogICAgIHZvaWQgc2NyaXB0
Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAg
dm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRGaW5pc2hJbnN0
YWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyV29ya2Vy
JiwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXgg
MDJhMGM5NjdmMTI5ZWE3OTdmOGZjODE3MmZhODU1NzNhM2Y0MGI5Ni4uYzI5YjQ2Mjc4OTBlZjli
Njc3OGQyNzk3ZGY2NGJmN2YxOWYzYjljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAK
QEAgLTQ5LDYgKzQ5LDcgQEAgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0
aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXIKICAgICAsIG1fc2NyaXB0
VVJMKHNjcmlwdFVSTCkKICAgICAsIG1fc2VydmVyKHNlcnZlcikKICAgICAsIG1fY3JlYXRpb25U
aW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQorICAgICwgbV9zb2Z0VXBkYXRlVGltZXIgeyAqdGhp
cywgJlNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlIH0KIHsKICAgICBtX3Njb3BlVVJM
LnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogfQpAQCAtMzYzLDE4ICszNjQsMTYgQEAgYm9v
bCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2hvdWxkU29mdFVwZGF0ZShjb25zdCBGZXRjaE9wdGlv
bnMmIG9wdGlvbnMpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkNvcmU6OmlzTm9uU3VicmVzb3VyY2VS
ZXF1ZXN0KG9wdGlvbnMuZGVzdGluYXRpb24pICYmIGlzU3RhbGUoKTsKIH0KIAotLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3NvZnQtdXBkYXRlCiB2b2lkIFNXU2VydmVy
UmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlKCkKIHsKLSAgICBhdXRvKiB3b3JrZXIgPSBnZXROZXdl
c3RXb3JrZXIoKTsKLSAgICBpZiAoIXdvcmtlcikKLSAgICAgICAgcmV0dXJuOworICAgIG1fc2Vy
dmVyLnNvZnRVcGRhdGUoKnRoaXMpOworfQogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBzY2hl
ZHVsZSBhbiB1cGRhdGUgam9iLgotICAgIG1fc2VydmVyLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vz
c2FyeSh3b3JrZXItPmlkZW50aWZpZXIoKSwgW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29y
a2VyLT5pZGVudGlmaWVyKCldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSB7Ci0gICAgICAgIGlm
IChjb250ZXh0Q29ubmVjdGlvbikKLSAgICAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5zb2Z0
VXBkYXRlKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB9KTsKK3ZvaWQgU1dTZXJ2ZXJS
ZWdpc3RyYXRpb246OnNjaGVkdWxlU29mdFVwZGF0ZSgpCit7CisgICAgLy8gVG8gYXZvaWQgc2No
ZWR1bGluZyBtYW55IHVwZGF0ZXMgZHVyaW5nIGEgc2luZ2xlIHBhZ2UgbG9hZCwgd2UgZG8gc29m
dCB1cGRhdGVzIG9uIGEgMSBzZWNvbmQgZGVsYXkgYW5kIGtlZXAgZGVsYXlpbmcKKyAgICAvLyBh
cyBsb25nIGFzIHNvZnQgdXBkYXRlIHJlcXVlc3RzIGtlZXAgY29taW5nLiBUaGlzIHNlZW1zIHRv
IG1hdGNoIENocm9tZSdzIGJlaGF2aW9yLgorICAgIG1fc29mdFVwZGF0ZVRpbWVyLnN0YXJ0T25l
U2hvdChzb2Z0VXBkYXRlRGVsYXkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVn
aXN0cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmgKaW5kZXggZDBiNjJjMWNkODczNTQ5MzlhMzE2MTI5MTYwMTdhYTU2
NDY4N2M2Ni4uNmIwYmZkYzA4ZDBkMzc5YTE1NzhjMWNiZWY0NWJjNjgxOTk2Y2YyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lz
dHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTk4
LDEzICs5OSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JFYWNoQ29ubmVjdGlvbihjb25zdCBX
VEY6OkZ1bmN0aW9uPHZvaWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mKT4mKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc2hvdWxkU29mdFVwZGF0ZShjb25zdCBGZXRjaE9wdGlvbnMmKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNvZnRVcGRhdGUoKTsKLSAgICAKLSAgICBTdHJp
bmcgc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlVVJMOyB9
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZVNvZnRVcGRhdGUoKTsKKyAgICBzdGF0
aWMgY29uc3RleHByIFNlY29uZHMgc29mdFVwZGF0ZURlbGF5IHsgMV9zIH07CisKKyAgICBVUkwg
c2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlVVJMOyB9Cisg
ICAgVVJMIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0VVJMOyB9CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBhY3RpdmF0ZSgpOwogICAgIHZvaWQgaGFuZGxlQ2xpZW50VW5sb2FkKCk7
CisgICAgdm9pZCBzb2Z0VXBkYXRlKCk7CiAKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSBtX3JlZ2lzdHJhdGlvbktleTsKQEAgLTEyNCw2ICsxMjgsOCBAQCBwcml2YXRlOgogCiAgICAg
TW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGltZTsKICAgICBIYXNoTWFwPFNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPj4gbV9jbGllbnRzVXNp
bmdSZWdpc3RyYXRpb247CisKKyAgICBXZWJDb3JlOjpUaW1lciBtX3NvZnRVcGRhdGVUaW1lcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCmluZGV4IGQ0N2U5ZjE4N2RhNGUwMDhmZWZiZjY1N2JiZGM4YWQ5ZWZkYTYzY2Yu
LjgyMjI5OTkxZDYyMTg5OGU5YjZjZTg3MmZiMGYzYzc3OWRjNWJhYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTIsNyArNTIsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNvZnRVcGRhdGUoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXIoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5
SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgT3B0
aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IDEzZmNlMmU3YzU5YzRhNDQyM2ZhZjcyYTYzNWM5YzlkZTQ5YTRlMWUuLjY4NWY3ZDE4
ZDk4MjJhNzgwZDY2MTAyOWVhNTBlZWMwZTAzNGI4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMzUzLDcgKzIzNTMsOSBAQCBT
V1NlcnZlciYgTmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCiAgICAgICAgIC8vIElmIHRoZXJlJ3Mgbm90LCB0aGVuIHdoZXJlIGRpZCB0
aGlzIFBBTDo6U2Vzc2lvbklEIGNvbWUgZnJvbT8KICAgICAgICAgQVNTRVJUKHNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpIHx8ICFwYXRoLmlzRW1wdHkoKSk7CiAKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgaW5mby5w
cm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGF0aCksIHNlc3Npb25JRCwg
W3RoaXMsIHNlc3Npb25JRF0oYXV0byYgcmVnaXN0cmFibGVEb21haW4pIHsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4o
KSwgaW5mby5wcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGF0aCksIHNl
c3Npb25JRCwgW3RoaXMsIHNlc3Npb25JRF0oYXV0byYmIGpvYkRhdGEsIGJvb2wgc2hvdWxkUmVm
cmVzaENhY2hlLCBhdXRvJiYgcmVxdWVzdCwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpzdGFydChu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLCBXVEZNb3ZlKGpvYkRhdGEpLCBzaG91bGRSZWZyZXNo
Q2FjaGUsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgfSwgW3RoaXMsIHNlc3Npb25JRF0oYXV0byYgcmVnaXN0cmFibGVEb21haW4pIHsKICAg
ICAgICAgICAgIEFTU0VSVCghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKTsKICAgICAgICAg
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9uSUQgfSwgMCk7CiAgICAgICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDY5OGNl
MGQ3NDIyY2YxNTQzZGQyZjNhNDYxMmRlODQ3YzQyYWFhODguLjVjOGVkZWY0NWNiOThjOWQwYWFk
MzM0NGM5ZjQzN2ZhMmRiMGI0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlByZWZldGNo
Q2FjaGUuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5SW1wbC5oPgpAQCAtMTI3LDYgKzEyOCwxMSBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzU3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsgfQogCisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgYWRkU29mdFVwZGF0ZUxvYWRlcihzdGQ6OnVu
aXF1ZV9wdHI8U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI+JiYgbG9hZGVyKSB7IG1fc29m
dFVwZGF0ZUxvYWRlcnMuYWRkKFdURk1vdmUobG9hZGVyKSk7IH0KKyAgICB2b2lkIHJlbW92ZVNv
ZnRVcGRhdGVMb2FkZXIoU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIqIGxvYWRlcikgeyBt
X3NvZnRVcGRhdGVMb2FkZXJzLnJlbW92ZShsb2FkZXIpOyB9CisjZW5kaWYKKwogcHJvdGVjdGVk
OgogICAgIE5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMmKTsKIApAQCAtMTYwLDYgKzE2NiwxMCBAQCBwcm90ZWN0ZWQ6
CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7CiAgICAgV2ViQ29yZTo6
QmxvYlJlZ2lzdHJ5SW1wbCBtX2Jsb2JSZWdpc3RyeTsKICAgICB1bnNpZ25lZCBtX3Rlc3RTcGVl
ZE11bHRpcGxpZXIgeyAxIH07CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgSGFz
aFNldDxzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI+PiBtX3Nv
ZnRVcGRhdGVMb2FkZXJzOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCBhMGViYTM3YTRhZDY2
ZTg5MDNjYTEzYzZmOGIwNjM3ODY2YjYzZWY0Li42MzJkNWM4NjhjNDMyYTFjYmRkZGY0NGRhYTU5
OWU5YTZhODMyYjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3Bw
CkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmg+CiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQs
IC4uLikgUkVMRUFTRV9MT0dfSUYobV9sb2FkZXIuc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihtX2xvYWRlci5zZXNzaW9u
SUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIiVwIC0gU2Vy
dmljZVdvcmtlckZldGNoVGFzazo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCkBAIC00OSwx
MyArNTAsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKE5ldHdv
cmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIpCitTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKE5ldHdv
cmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIGJvb2wgc2hvdWxkU29mdFVwZGF0ZSkKICAgICA6IG1fbG9hZGVyKGxvYWRlcikKICAgICAs
IG1fZmV0Y2hJZGVudGlmaWVyKFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkK
ICAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIpCiAgICAgLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQogICAgICwgbV9jdXJyZW50UmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQogICAgICwg
bV90aW1lb3V0VGltZXIoKnRoaXMsICZTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGlt
ZXJGaXJlZCkKKyAgICAsIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIoc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCisgICAgLCBtX3Nob3VsZFNvZnRVcGRh
dGUoc2hvdWxkU29mdFVwZGF0ZSkKIHsKICAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3Qo
bG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5uZXR3b3JrUHJvY2VzcygpLnNlcnZpY2VX
b3JrZXJGZXRjaFRpbWVvdXQoKSk7CiB9CkBAIC0xMDYsNyArMTA5LDggQEAgdm9pZCBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpzdGFydEZldGNoKCkKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBtX3dhc0hhbmRsZWQgPSB0cnVlOworICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsK
KyAgICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAogICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNv
dXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOwogICAgIGF1dG8gbmV3UmVxdWVz
dCA9IG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RlZFJlcXVlc3QocmVzcG9uc2UsIG1fbG9hZGVy
LnBhcmFtZXRlcnMoKS5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KTsK
QEAgLTExOCw3ICsxMjIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvbwogewogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogJXMiLCBtX2ZldGNoSWRlbnRp
Zmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV90aW1lb3V0VGltZXIu
c3RvcCgpOwotICAgIG1fd2FzSGFuZGxlZCA9IHRydWU7CisgICAgc29mdFVwZGF0ZUlmTmVlZGVk
KCk7CiAKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpT
ZXJ2aWNlV29ya2VyKTsKICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UgfSk7CkBAIC0xNDYsNyArMTUwLDEwIEBAIHZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIG1fdGltZW91dFRp
bWVyLnN0b3AoKTsKKyAgICBpZiAobV90aW1lb3V0VGltZXIuaXNBY3RpdmUoKSkgeworICAgICAg
ICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CisgICAgICAgIHNvZnRVcGRhdGVJZk5lZWRlZCgpOwor
ICAgIH0KICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJkaWRGYWlsRmV0Y2g6IGZl
dGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgbV9sb2FkZXIuZGlkRmFpbExvYWRpbmcoZXJyb3IpOwogfQpAQCAt
MTU1LDYgKzE2Miw4IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkTm90SGFuZGxl
KCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWROb3RIYW5kbGVGZXRjaDogZmV0
Y2hJZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CisgICAgc29mdFVwZGF0ZUlm
TmVlZGVkKCk7CisKICAgICBtX2xvYWRlci5zZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CiB9
CiAKQEAgLTE3MSw2ICsxODAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmNvbnRpbnVlRmV0Y2hUYXNrV2l0aChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewor
ICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChtX2xvYWRlci5jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KCkpOwog
ICAgIGlmICghbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikgewogICAgICAgICBtX2xvYWRlci5z
ZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE4MSwxMSAr
MTkxLDIxIEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y29udGludWVGZXRjaFRhc2tX
aXRoKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNo
VGFzazo6dGltZW91dFRpbWVyRmlyZWQoKQogeworICAgIHNvZnRVcGRhdGVJZk5lZWRlZCgpOwor
CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidGltZW91dFRpbWVyRmlyZWQ6IGZldGNoSWRl
bnRpZmllcjogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgaWYgKG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCiAgICAgICAgIG1fc2Vy
dmljZVdvcmtlckNvbm5lY3Rpb24tPmZldGNoVGFza1RpbWVkT3V0KHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKCkpOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNvZnRVcGRhdGVJ
Zk5lZWRlZCgpCit7CisgICAgaWYgKCFtX3Nob3VsZFNvZnRVcGRhdGUpCisgICAgICAgIHJldHVy
bjsKKyAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9sb2FkZXIuY29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpLnN3Q29ubmVjdGlvbigpLnNlcnZlcigpLmdldFJlZ2lzdHJhdGlvbihtX3NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSkKKyAgICAgICAgcmVnaXN0cmF0aW9uLT5z
Y2hlZHVsZVNvZnRVcGRhdGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaAppbmRleCBkNzE2YmJlMDJlNjljZmFkMWM0ZDM0NjBlM2VkNGRhZWVlYzljNDAyLi41
ZGI5M2MxYjBiNmRmMmIxZjkwMjFkZGY5MWE3M2YxNjI3MDZjMTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzayA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU2VydmljZVdvcmtlckZldGNoVGFzayhO
ZXR3b3JrUmVzb3VyY2VMb2FkZXImLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsK
KyAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGJvb2wgc2hvdWxkU29mdFVwZGF0ZSk7CiAgICAg
flNlcnZpY2VXb3JrZXJGZXRjaFRhc2soKTsKIAogICAgIHZvaWQgc3RhcnQoV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uJik7CkBAIC04OCw2ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzdGFydEZldGNoKCk7CiAKICAgICB2b2lkIHRpbWVvdXRUaW1lckZpcmVkKCk7CisgICAgdm9p
ZCBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1lc3NhZ2U+
IGJvb2wgc2VuZFRvU2VydmljZVdvcmtlcihNZXNzYWdlJiYpOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE1lc3NhZ2U+IGJvb2wgc2VuZFRvQ2xpZW50KE1lc3NhZ2UmJik7CkBAIC0xMDAsNiArMTAx
LDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVx
dWVzdDsKICAgICBXZWJDb3JlOjpUaW1lciBtX3RpbWVvdXRUaW1lcjsKICAgICBib29sIG1fd2Fz
SGFuZGxlZCB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBi
b29sIG1fc2hvdWxkU29mdFVwZGF0ZSB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmJm
MTk5ZGIyYThkMDE5MjkwODM1MjQzMzIyMzgzMmI0OWMyMDliCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMCwwICsxLDE4OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5o
IgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk5ldHdvcmtDYWNoZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJG
ZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dFJlc291cmNlRGVjb2Rlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyU2NyaXB0TG9hZGVyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordm9pZCBTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlcjo6c3RhcnQoTmV0d29ya1Nlc3Npb24qIHNlc3Npb24sIFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIEhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAo
IXNlc3Npb24pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzZXJ2aWNlV29ya2Vy
RmV0Y2hFcnJvcihqb2JEYXRhLmlkZW50aWZpZXIoKSwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSB7IGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkgfSwgUmVzb3VyY2VFcnJvciB7IFJlc291
cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbiB9KSk7CisgICAgc2Vzc2lvbi0+YWRkU29mdFVw
ZGF0ZUxvYWRlcihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyPigqc2Vz
c2lvbiwgV1RGTW92ZShqb2JEYXRhKSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworfQorCitTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlcjo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIoTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24sIFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRS
ZWZyZXNoQ2FjaGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCisgICAgLCBtX2pvYkRhdGEoV1RGTW92ZShqb2JEYXRhKSkKKyAgICAsIG1fc2Vz
c2lvbihtYWtlV2Vha1B0cihzZXNzaW9uKSkKK3sKKyAgICBBU1NFUlQoIXJlcXVlc3QuaXNDb25k
aXRpb25hbCgpKTsKKworICAgIGlmIChzZXNzaW9uLmNhY2hlKCkpIHsKKyAgICAgICAgLy8gV2Ug
c2V0IGNhY2hlIHBvbGljeSB0byBkaXNhYmxlIHNwZWN1bGF0aXZlIGxvYWRpbmcvYXN5bmMgcmV2
YWxpZGF0aW9uIGZyb20gdGhlIGNhY2hlLgorICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5
KFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpSZXR1cm5DYWNoZURhdGFEb250TG9hZCk7Cisg
ICAgICAgIAorICAgICAgICBzZXNzaW9uLmNhY2hlKCktPnJldHJpZXZlKHJlcXVlc3QsIE5ldHdv
cmtDYWNoZTo6R2xvYmFsRnJhbWVJRCB7IH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgcmVxdWVzdCwgc2hvdWxkUmVmcmVzaENhY2hlXShhdXRvJiYgZW50cnksIGF1dG8m
JikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGlmICghbV9zZXNzaW9uKSB7CisgICAgICAgICAgICAgICAg
ZmFpbChSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0p
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICghc2hvdWxkUmVmcmVzaENhY2hlICYmIGVudHJ5ICYmICFlbnRyeS0+bmVlZHNWYWxpZGF0aW9u
KCkpIHsKKyAgICAgICAgICAgICAgICBsb2FkV2l0aENhY2hlRW50cnkoKmVudHJ5KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJlcXVlc3Qu
c2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlDYWNo
ZURhdGEpOworICAgICAgICAgICAgaWYgKGVudHJ5KSB7CisgICAgICAgICAgICAgICAgbV9jYWNo
ZUVudHJ5ID0gV1RGTW92ZShlbnRyeSk7CisKKyAgICAgICAgICAgICAgICBTdHJpbmcgZVRhZyA9
IG1fY2FjaGVFbnRyeS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkVUYWcpOworICAgICAgICAgICAgICAgIGlmICghZVRhZy5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk5v
bmVNYXRjaCwgZVRhZyk7CisKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGFzdE1vZGlmaWVkID0g
bV9jYWNoZUVudHJ5LT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
TGFzdE1vZGlmaWVkKTsKKyAgICAgICAgICAgICAgICBpZiAoIWxhc3RNb2RpZmllZC5pc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpJZk1vZGlmaWVkU2luY2UsIGxhc3RNb2RpZmllZCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBsb2FkRnJvbU5ldHdvcmsoKm1fc2Vzc2lvbiwgV1RGTW92ZShyZXF1ZXN0
KSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGxvYWRGcm9tTmV0
d29yayhzZXNzaW9uLCBXVEZNb3ZlKHJlcXVlc3QpKTsKK30KKworU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6On5TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcigpCit7CisgICAgaWYg
KG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoc2Vydmlj
ZVdvcmtlckZldGNoRXJyb3IobV9qb2JEYXRhLmlkZW50aWZpZXIoKSwgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSB7IG1fam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSB9LCBSZXNvdXJjZUVy
cm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pKTsKK30KKwordm9pZCBT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZmFpbChSZXNvdXJjZUVycm9yJiYgZXJyb3Ip
Cit7CisgICAgaWYgKCFtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2NvbXBsZXRpb25IYW5kbGVyKHNlcnZpY2VXb3JrZXJGZXRjaEVycm9yKG1fam9iRGF0YS5p
ZGVudGlmaWVyKCksIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgeyBtX2pvYkRhdGEucmVn
aXN0cmF0aW9uS2V5KCkgfSwgV1RGTW92ZShlcnJvcikpKTsKKyAgICBkaWRDb21wbGV0ZSgpOwor
fQorCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpsb2FkV2l0aENhY2hlRW50
cnkoTmV0d29ya0NhY2hlOjpFbnRyeSYgZW50cnkpCit7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UgeyBlbnRyeS5yZXNwb25zZSgpIH0sIFtdKGF1dG8pIHsgfSk7Cisg
ICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIgJiYgZW50cnkuYnVmZmVyKCkpCisgICAgICAgIGRp
ZFJlY2VpdmVCdWZmZXIobWFrZVJlZigqZW50cnkuYnVmZmVyKCkpLCAwKTsKKyAgICBpZiAobV9j
b21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgZGlkRmluaXNoTG9hZGluZyh7IH0pOworICAgIGRp
ZENvbXBsZXRlKCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6Omxv
YWRGcm9tTmV0d29yayhOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKK3sKKyAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBw
YXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OlVzZTsKKyAgICBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRT
bmlmZmluZ1BvbGljeTo6RG9Ob3RTbmlmZkNvbnRlbnQ7CisgICAgcGFyYW1ldGVycy5jb250ZW50
RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpT
bmlmZjsKKyAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOworICAgIG1f
bmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgc2Vzc2lvbik7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYs
IFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpCit7CisgICAgZmFpbChSZXNv
dXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pOworfQorCit2
b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0g
MzA0ICYmIG1fY2FjaGVFbnRyeSkgeworICAgICAgICBsb2FkV2l0aENhY2hlRW50cnkoKm1fY2Fj
aGVFbnRyeSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3Jl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZXJyb3IgPSBXb3JrZXJTY3Jp
cHRMb2FkZXI6OnZhbGlkYXRlUmVzcG9uc2UocmVzcG9uc2UsIEZldGNoT3B0aW9uczo6RGVzdGlu
YXRpb246OlNlcnZpY2V3b3JrZXIpOworICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAg
ICAgZmFpbChXVEZNb3ZlKGVycm9yKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGlj
eUFjdGlvbjo6SWdub3JlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29udGVu
dFNlY3VyaXR5UG9saWN5ID0gQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsg
cmVzcG9uc2UgfTsKKyAgICBtX3JlZmVycmVyUG9saWN5ID0gcmVzcG9uc2UuaHR0cEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpSZWZlcnJlclBvbGljeSk7CisgICAgbV9yZXNwb25zZUVuY29k
aW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOworCisgICAgY29tcGxldGlvbkhhbmRs
ZXIoUG9saWN5QWN0aW9uOjpVc2UpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3sKKyAgICBpZiAoIW1fZGVjb2RlcikgeworICAg
ICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2Rl
Y29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvamF2YXNjcmlwdCJfcywg
bV9yZXNwb25zZUVuY29kaW5nKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9kZWNvZGVy
ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQiX3MsICJVVEYt
OCIpOworICAgIH0KKworICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKKyAgICAg
ICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXpl
KSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKK3sKKyAgICBpZiAobV9k
ZWNvZGVyKQorICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5mbHVzaCgpKTsKKyAg
ICBtX2NvbXBsZXRpb25IYW5kbGVyKHsgbV9qb2JEYXRhLmlkZW50aWZpZXIoKSwgbV9qb2JEYXRh
LnJlZ2lzdHJhdGlvbktleSgpLCBtX3NjcmlwdC50b1N0cmluZygpLCBtX2NvbnRlbnRTZWN1cml0
eVBvbGljeSwgbV9yZWZlcnJlclBvbGljeSwgeyB9IH0pOworICAgIGRpZENvbXBsZXRlKCk7Cit9
CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGZhaWwoUmVzb3VyY2VFcnJvcihlcnJv
cikpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRDb21wbGV0
ZSgpCit7CisgICAgbV9uZXR3b3JrTG9hZCA9IG51bGxwdHI7CisgICAgaWYgKG1fc2Vzc2lvbikK
KyAgICAgICAgbV9zZXNzaW9uLT5yZW1vdmVTb2Z0VXBkYXRlTG9hZGVyKHRoaXMpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjYzYjVjNjYwNjM4YWJlYTEyM2FiY2RiMzljMDcyOTQ5MzI1ZmExNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZUVudHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VySm9iRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGE7Citj
bGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgTmV0d29ya0xvYWQ7CitjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKKworY2xhc3MgU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIgZmluYWwgOiBwdWJsaWMgTmV0d29ya0xvYWRDbGllbnQsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcj4geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHVzaW5nIEhhbmRsZXIgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJl
c3VsdCYpPjsKKyAgICBzdGF0aWMgdm9pZCBzdGFydChOZXR3b3JrU2Vzc2lvbiosIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhJiYsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgSGFuZGxlciYmKTsKKworICAgIFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyKE5ldHdvcmtTZXNzaW9uJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRh
dGEmJiwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBIYW5kbGVyJiYpOworICAgIH5TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcigpOworICAg
IAorcHJpdmF0ZToKKyAgICAvLyBOZXR3b3JrTG9hZENsaWVudC4KKyAgICB2b2lkIGRpZFNlbmRE
YXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3Rh
bEJ5dGVzVG9CZVNlbnQpIGZpbmFsIHsgfQorICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JD
cmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCB3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CisgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgZmluYWw7CisKKyAgICB2b2lkIGxvYWRXaXRoQ2FjaGVFbnRyeShOZXR3b3JrQ2FjaGU6
OkVudHJ5Jik7CisgICAgdm9pZCBsb2FkRnJvbU5ldHdvcmsoTmV0d29ya1Nlc3Npb24mLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgdm9pZCBmYWlsKFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJik7CisgICAgdm9pZCBkaWRDb21wbGV0ZSgpOworCisgICAgSGFuZGxlciBtX2NvbXBs
ZXRpb25IYW5kbGVyOworICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhIG1fam9iRGF0
YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+IG1fbmV0d29ya0xvYWQ7CisgICAg
V2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9zZXNzaW9uOworCisgICAgU3RyaW5nIG1fcmVzcG9u
c2VFbmNvZGluZzsKKyAgICBTdHJpbmcgbV9yZWZlcnJlclBvbGljeTsKKyAgICBXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgbV9jb250ZW50U2VjdXJpdHlQb2xp
Y3k7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVu
dHJ5OworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7
CisgICAgU3RyaW5nQnVpbGRlciBtX3NjcmlwdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDU2MDY1NzA1OWY5NTg3NDNiYjhjZjJjZTcwMGY4
NTAwMDNjMTE4ZWQuLjljMjRjMjgwNmFjMDAzOTQzOTk5OWE0ZWY1MWQ0NmQ4ZDQ4MmMwZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNzcsMTQgKzE3Nywx
NSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKKyAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZXJ2ZXIoKS5nZXRSZWdpc3RyYXRpb24o
KnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKKyAgICBib29sIHNob3VsZFNv
ZnRVcGRhdGUgPSByZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRl
KGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucyk7CiAgICAgaWYgKHdvcmtlci0+c2hvdWxkU2tp
cEZldGNoRXZlbnQoKSkgewotICAgICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZXJ2ZXIoKS5n
ZXRSZWdpc3RyYXRpb24od29ya2VyLT5yZWdpc3RyYXRpb25LZXkoKSk7Ci0gICAgICAgIGlmIChy
ZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJh
bWV0ZXJzKCkub3B0aW9ucykpCi0gICAgICAgICAgICByZWdpc3RyYXRpb24tPnNvZnRVcGRhdGUo
KTsKKyAgICAgICAgaWYgKHNob3VsZFNvZnRVcGRhdGUpCisgICAgICAgICAgICByZWdpc3RyYXRp
b24tPnNjaGVkdWxlU29mdFVwZGF0ZSgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+KGxv
YWRlciwgUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9LCBpZGVudGlmaWVyKCksIHdvcmtlci0+
aWRlbnRpZmllcigpLCAqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOworICAg
IGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZldGNoVGFzaz4obG9hZGVyLCBS
ZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH0sIGlkZW50aWZpZXIoKSwgd29ya2VyLT5pZGVudGlm
aWVyKCksICpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgc2hvdWxkU29mdFVw
ZGF0ZSk7CiAgICAgc3RhcnRGZXRjaCgqdGFzaywgKndvcmtlcik7CiAgICAgcmV0dXJuIHRhc2s7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCmluZGV4IGI4MzVjNTY1YWJkMmMzZmQ4NTZhZjhlNDYwMjRhODdhMTMzODY0NzAuLjRmMmJm
MWI0OGE2MjNlZjU1ZWNiMmJlNzZjNjgyOTg3OTUzYjZlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xMDAsMTEgKzEwMCw2
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVu
dChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpcmVBY3RpdmF0ZUV2ZW50KHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzb2Z0
VXBkYXRlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQot
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTb2Z0
VXBkYXRlKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7Ci19Ci0KIHZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVdvcmtlcihzZXJ2aWNlV29ya2VySWRl
bnRpZmllcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCmluZGV4IGVmNGY0MTNkM2JhMGI0ZmNmODBjYjE0MjhiOGY4YTFiYWVkZDRmMWUuLjA0
YzhkNjMwYTMyZTEzOWM1MWRhNzE4N2U0NTVmMzg1MWZhMWNmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTg4LDcgKzg4LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkg
ZmluYWw7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIHNvZnRVcGRhdGUoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgdGVybWluYXRlV29y
a2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHN5
bmNUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFs
OwogICAgIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuY3BwCmluZGV4IGYyNGU2NzE3NWY5ZmI4MTkzY2VmY2ZjNjI2ZTllMzcxY2U4ZGRhMTAuLjU2
YTZkNjU1Mzg4OWI5YjViZGJlZjE5MTU4ODE1NGVlMjA0YThkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25N
YW5hZ2VyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWVzc2FnZXMuaCIKQEAgLTExMCw3ICsxMTEsOCBAQCBWZWN0b3I8dWludDY0X3Q+IEF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6Y29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbAog
CiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSogdG9wT3JpZ2luLCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKHBhZ2VJRCk7
CisgICAgaWYgKCFwYWdlSUQpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCB7
IH0pOwogCiAgICAgdWludDY0X3QgY2hhbGxlbmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5n
ZU1hcCh7IHBhZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzZjdkM2ZiNjIxNmZmZmM2ZjNiY2IyZDNm
ZDUzYmVmYTEwNDE4NjYwLi40NDk0ODBlZDkzYWU3NDhiYzkzNDI0MjQxZWNlZTBkODNlODNhZDU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTYxLDYgKzYxLDcgQEAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L1BlbmRpbmdEb3dubG9hZC5jcHAKIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25u
ZWN0aW9uVG9DbGllbnQuY3BwCiAKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5jcHAgQG5vLXVuaWZ5CitOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDVjYjgxY2NjMjAyY2U2MjFiM2FkODUxZjVhYmE5ZTVlNDdiYjJmY2MuLjM1
ZWVjOTBlZWIwNzQ1NjNmODAzMGI4ZmQ2MThmYjZkNDQ0MDIyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzE4OCw2ICszMTg4LDgg
QEAKIAkJNDFDNTM3OEYyMUYxMzYyRDAwOEIxRkFEIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxl
Z2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJzaXRlRGF0YVN0
b3JlRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDODU4MTkxRjUx
MERFRTAwNjVFMDg1IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMTI5RDkxRjNEMTAxNDAwRDE1RTQ3IC8qIFdl
YkNhY2hlU3RvcmFnZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZVBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDVDNkQ4MjM4RUIyMEQw
MEI5QjNDQiAvKiBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQ1QzZEOTIzOEVCMjBFMDBCOUIzQ0IgLyogU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MURDNDU5NDFFM0Q2RTFFMDBCMTFGNTEgLyogTmV0d29ya1JU
Q1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtSVENQ
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MURDNDU5NTFFM0Q2RTFF
MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtSVENQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxREM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlk
ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya1JUQ1Byb3ZpZGVy
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ2OCw2ICs3NDcw
LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQxNTE4NTM2MjIyNzA0RjYwMDU0MzBDNiAvKiBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCAqLywKIAkJCQk0MTUxODUzNTIyMjcwNEY1MDA1NDMw
QzYgLyogU2VydmljZVdvcmtlckZldGNoVGFzay5oICovLAorCQkJCTQxRDVDNkQ5MjM4RUIyMEUw
MEI5QjNDQiAvKiBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgKi8sCisJCQkJNDFE
NUM2RDgyMzhFQjIwRDAwQjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgg
Ki8sCiAJCQkJNDE1MTg1MzgyMjI3MEY1MzAwNTQzMEM2IC8qIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2subWVzc2FnZXMuaW4gKi8sCiAJCQkJOTNCQTA0REYyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNX
T3JpZ2luU3RvcmUuY3BwICovLAogCQkJCTkzQkEwNERFMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJT
V09yaWdpblN0b3JlLmggKi8sCkBAIC05ODIwLDcgKzk4MjQsNiBAQAogCQkJCTUxMUY4QTdCMTM4
QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbUxpYnJhcnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxOEU2OTBDMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMThFNjkxODE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QUE3NDZENTIzNTkzRDgxMDAwOTUwNTAgLyog
U2VjSXRlbVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcwQUI4RjMyMEFFM0JENzAwQjhCRTg3
IC8qIFNlY0tleVByb3h5U3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEQ5RjU3MTkxMTlE
MzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RkRFNjVBMTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGVjZjdhM2JmMWJmYTg5MzM1
MTFmMDNmNzEzNzBlODViYzcyNTE2OGQuLjJkZDc1Y2MwZTgwOWNiZTIyNWJhMTkwMGQ2ODg2NGI5
NmJhOTA0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTI1Niwx
MSArMjU2LDYgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZUFjdGl2
YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWQKICAgICBTV0NvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5maXJlQWN0aXZhdGVFdmVudChpZGVudGlmaWVyKTsKIH0KIAotdm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c29mdFVwZGF0ZShXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnNvZnRVcGRhdGUoaWRlbnRpZmllcik7Ci19Ci0KIHZvaWQgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyKQogewogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1p
bmF0ZVdvcmtlcihpZGVudGlmaWVyLCBTV0NvbnRleHRNYW5hZ2VyOjp3b3JrZXJUZXJtaW5hdGlv
blRpbWVvdXQsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXgg
Mjk3MzUxZjJiODZiODJkODQzYTBlZWFjMTE0MDEwNmM2ZTIyNmI0OS4uNjk5MDMzMmVhN2VkOGM5
NzRiOTM5YzU0Y2Y4ZTE3NzkzMjcwMmI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oCkBAIC05MCw3ICs5MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKTsKICAgICB2b2lkIGZpcmVJbnN0
YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgZmly
ZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHZv
aWQgc29mdFVwZGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9p
ZCB0ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAg
IHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRl
V29ya2VyRGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDFiZTI5YWFh
ZDk3ODcxNGU0YjQyMTc1YjJhOTdjNDg2NjcwZWZjMDYuLjFkMzM5Y2NiMTUxYTYxNGY5ZTAyYzY5
YjQwY2Y0YjkxZmEyNmMyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCkBAIC0zMCw3ICszMCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIFBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRl
bnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2Us
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEgc291cmNlRGF0YSkKICAgICBGaXJl
SW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiAgICAgRmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllcikKLSAgICBTb2Z0VXBkYXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU3luY1Rlcm1pbmF0ZVdvcmtlcihXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoKSBTeW5jaHJvbm91cwog
ICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgY2xpZW50SWRSZXF1
ZXN0SWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+
IGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384459</attachid>
            <date>2019-11-28 08:57:47 -0800</date>
            <delta_ts>2019-11-28 23:10:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204678-20191128175745.patch</filename>
            <type>text/plain</type>
            <size>77121</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU0NjQ4MzhhNGU3ZDU1
NWI1MmI5MzliYTVjN2VmNTRkY2YzYmZhNy4uN2JlZDU2NWNmYTEzYmFlNTJlNzZmODJlODA0MDFm
MWQ3YWYyMDJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE5LTExLTI4ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHNvZnQgdXBkYXRl
IGhhbmRsaW5nIHRvIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0Njc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OnZhbGlkYXRlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc0VxdWl2YWxlbnQgY29uc3QpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24pOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZFJlc29sdmVSZWdpc3RyYXRp
b25Qcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpTV1NlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25Kb2IpOgorICAgICAgICAoV2ViQ29yZTo6b3Jp
Z2luVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OmdldFJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnJ1
blVwZGF0ZUpvYik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpv
YlF1ZXVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjplbnF1ZXVlSm9i
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJl
Z2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2V0
VXBkYXRlVmlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246
OnNvZnRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNj
aGVkdWxlU29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRp
b246OnNjb3BlVVJMV2l0aG91dEZyYWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyUmVnaXN0cmF0aW9uOjpzY3JpcHRVUkwgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisKKzIwMTktMTEt
MjcgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFNXU2VydmVy
OjpzY3JpcHRGZXRjaEZpbmlzaGVkIGRvZXMgbm90IG5lZWQgYSBDb25uZWN0aW9uIGFzIHBhcmFt
ZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0
NjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
Y2hhbmdlIG9mIGJlaGF2aW9yLCByZW1vdmluZyBhbiB1bnVzZWQgcGFyYW1ldGVyLgorCisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRjaCk6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZCk6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmg6CisKIDIwMTktMTEtMjYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIEFjdGl2ZURPTU9i
amVjdDo6c2hvdWxkUHJldmVudEVudGVyaW5nQmFja0ZvcndhcmRDYWNoZV9ERVBSRUNBVEVEKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggM2FjYTJhOGVhMDA1ZTExNTZkNzliNjUyNWIzY2JjMThjNDA3ODc0NC4uYWRm
ODgwNmZlNGIyOWM0YjU0NDFhMzYwMTNhNDNjYWRmZjViNjE3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1MSBAQAorMjAxOS0xMS0yOCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgTW92ZSBzb2Z0IHVwZGF0ZSBoYW5kbGluZyB0byBuZXR3b3JrIHByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDY3OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6c3dTZXJ2ZXJGb3JTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6YWRkU29mdFVwZGF0
ZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZW1vdmVTb2Z0VXBk
YXRlTG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKToKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpOgorICAgICAgICAo
V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKToKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkTm90SGFuZGxlKToKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6Y29udGludWVGZXRjaFRhc2tXaXRoKToK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91dFRpbWVyRmly
ZWQpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzb2Z0VXBkYXRl
SWZOZWVkZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OlNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXI6On5TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpmYWlsKToKKyAgICAgICAgKFdlYktpdDo6U2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmxvYWRXaXRoQ2FjaGVFbnRyeSk6CisgICAgICAg
IChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpsb2FkRnJvbU5ldHdvcmsp
OgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6d2lsbFNl
bmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZhaWxM
b2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2spOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIwMTktMTEtMjYgIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW1JlbmRlciB0cmVl
XSBBZGQgTEZDIGxpbmUgbGF5b3V0IHBhdGggdG8gUmVuZGVyQmxvY2tGbG93CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggMjI4ZjNkMTdmZjAw
MjJlNjJlNjM2NDUzMmQ1NTZiOTUwN2EwMThmMi4uN2M5OWU3ZWVjZmRmMGM3MjIzYjA3NDQ3Y2Vj
NzViYjJhNWJiMmFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcApAQCAtMTUzLDIzICsxNTMsMjkgQEAgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNl
UmVxdWVzdD4gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJjZVJlcXVlc3QoY29uc3QK
ICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQorUmVzb3VyY2VFcnJvciBXb3JrZXJTY3JpcHRMb2FkZXI6OnZhbGlk
YXRlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIEZldGNoT3B0aW9u
czo6RGVzdGluYXRpb24gZGVzdGluYXRpb24pCiB7Ci0gICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0
dXNDb2RlKCkgLyAxMDAgIT0gMiAmJiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSB7Ci0gICAg
ICAgIG1fZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAocmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSAvIDEwMCAhPSAyICYmIHJlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCkpCisgICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksICJSZXNwb25zZSBpcyBub3QgMnh4Il9zLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsIH07CiAKICAgICBpZiAoIWlzU2NyaXB0QWxsb3dlZEJ5
Tm9zbmlmZihyZXNwb25zZSkpIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5n
KCJSZWZ1c2VkIHRvIGV4ZWN1dGUgIiwgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBz
aXplZFRvTGVuZ3RoKCksICIgYXMgc2NyaXB0IGJlY2F1c2UgXCJYLUNvbnRlbnQtVHlwZTogbm9z
bmlmZlwiIHdhcyBnaXZlbiBhbmQgaXRzIENvbnRlbnQtVHlwZSBpcyBub3QgYSBzY3JpcHQgTUlN
RSB0eXBlLiIpOwotICAgICAgICBtX2Vycm9yID0gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHVybCgpLCBtZXNzYWdlLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpH
ZW5lcmFsIH07Ci0gICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IHJlc3BvbnNlLnVybCgpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpH
ZW5lcmFsIH07CiAgICAgfQogCi0gICAgaWYgKHNob3VsZEJsb2NrUmVzcG9uc2VEdWVUb01JTUVU
eXBlKHJlc3BvbnNlLCBtX2Rlc3RpbmF0aW9uKSkgeworICAgIGlmIChzaG91bGRCbG9ja1Jlc3Bv
bnNlRHVlVG9NSU1FVHlwZShyZXNwb25zZSwgZGVzdGluYXRpb24pKSB7CiAgICAgICAgIFN0cmlu
ZyBtZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0byBleGVjdXRlICIsIHJlc3BvbnNlLnVy
bCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiIGFzIHNjcmlwdCBiZWNhdXNl
ICIsIHJlc3BvbnNlLm1pbWVUeXBlKCksICIgaXMgbm90IGEgc2NyaXB0IE1JTUUgdHlwZS4iKTsK
LSAgICAgICAgbV9lcnJvciA9IFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCByZXNwb25zZS51cmwoKSwgbWVzc2FnZSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2Vu
ZXJhbCB9OworICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpHZW5lcmFsIH07CisgICAgfQorCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBz
ZXJ2aWNlIHdvcmtlciBjaGVja3MgZnJvbSBTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVz
cG9uc2UuCisgICAgcmV0dXJuIHsgfTsKK30KKwordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIG1fZXJyb3IgPSB2YWxpZGF0ZVJlc3BvbnNlKHJl
c3BvbnNlLCBtX2Rlc3RpbmF0aW9uKTsKKyAgICBpZiAoIW1fZXJyb3IuaXNOdWxsKCkpIHsKICAg
ICAgICAgbV9mYWlsZWQgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggOWEwZjQ4NzgwYzdjODFm
N2JhMzdiZTI0ZDY3ODQ3NzI5OGU0MTU0OC4uYjk5NzZiNzRlZGYwNDIyMzQ4ODFlNjU2YjM2YzA3
NjA5YTZkZjk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3Jp
cHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5oCkBAIC03Nyw2ICs3Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FuY2VsKCk7CiAKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVzb3VyY2VFcnJvciB2YWxpZGF0ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uKTsKKwogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRl
cj47CiAgICAgZnJpZW5kIHN0cnVjdCBzdGQ6OmRlZmF1bHRfZGVsZXRlPFdvcmtlclNjcmlwdExv
YWRlcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJKb2JEYXRhLmNwcAppbmRleCA0N2E3OWYwYTNmNzY2ZGQ1ZTU0ODIxYTliMmVkMjMy
NTVkNmNmNDFlLi5kZGZmNjkwOWM4ZDQ2NDFiOTVkNWM1Nzg0YmNhNDVjMzBmMGRjY2YyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Sm9iRGF0YS5jcHAKQEAgLTY3LDYgKzY3LDI0IEBAIFNlcnZpY2VXb3JrZXJKb2JEYXRhIFNlcnZp
Y2VXb3JrZXJKb2JEYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK2Jvb2wgU2VydmljZVdvcmtlckpvYkRhdGE6OmlzRXF1aXZhbGVudChjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYgam9iKSBjb25zdAoreworICAgIGlmICh0eXBlICE9IGpvYi50eXBl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNl
IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjoKKyAgICBjYXNlIFNlcnZpY2VXb3JrZXJK
b2JUeXBlOjpVcGRhdGU6CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWxzbyBjaGVjayB3
b3JrZXIgdHlwZSBhbmQgdXBkYXRlIHZpYSBjYWNoZSBtb2RlLgorICAgICAgICByZXR1cm4gc2Nv
cGVVUkwgPT0gam9iLnNjb3BlVVJMICYmIHNjcmlwdFVSTCA9PSBqb2Iuc2NyaXB0VVJMOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVbnJlZ2lzdGVyOgor
ICAgICAgICByZXR1cm4gc2NvcGVVUkwgPT0gam9iLnNjb3BlVVJMOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCmluZGV4IGMyMDg1Mzdm
MDg1Mzc1MmZhMTJhOWNhOTBjN2I3NDgzM2Y1N2UxMmQuLjVmMzM3Y2JhYTgzOTE2ZTVhZTMxZGMy
NzA3NzlhMGE0MTFhMDljNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oCkBAIC00Niw2ICs0Niw4IEBAIHN0cnVjdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YSB7CiAKICAgICBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyLmNvbm5l
Y3Rpb25JZGVudGlmaWVyOyB9CiAKKyAgICBib29sIGlzRXF1aXZhbGVudChjb25zdCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYpIGNvbnN0OworCiAgICAgVVJMIHNjcmlwdFVSTDsKICAgICBVUkwgY2xp
ZW50Q3JlYXRpb25VUkw7CiAgICAgU2VjdXJpdHlPcmlnaW5EYXRhIHRvcE9yaWdpbjsKQEAgLTU2
LDcgKzU4LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsKICAgICBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uT3B0aW9ucyByZWdpc3RyYXRpb25PcHRpb25zOwogCiAgICAgSWRlbnRp
ZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25LZXkoKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlvbktl
eSgpIGNvbnN0OwogICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGYyMTg5MDcwZWFiNzhkOGM1Mjc5MWIz
YjVkZTMwNGMwZjUzZDIzYzcuLjExNmJiYjRmZjc5Y2FjZWVmZDc5MDI1YmQzY2M4YTcyMDMzOTY4
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTQ2LDggKzQ2LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbik7CiAKLWNvbnN0IFNlY29uZHMgc29mdFVwZGF0ZURlbGF5IHsgMV9zIH07Ci0K
IFJlZjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
OjpnZXRPckNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcj4mJiBjb250YWluZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhJiYgZGF0YSkKIHsKICAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gY29udGFpbmVyLT5y
ZWdpc3RyYXRpb24oZGF0YS5pZGVudGlmaWVyKSkgewpAQCAtNjIsNyArNjAsNiBAQCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbgogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwg
bV9yZWdpc3RyYXRpb25EYXRhKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpCiAgICAgLCBtX2Nv
bnRhaW5lcihXVEZNb3ZlKGNvbnRhaW5lcikpCi0gICAgLCBtX3NvZnRVcGRhdGVUaW1lcihbdGhp
c10geyBzb2Z0VXBkYXRlKCk7IH0pCiB7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJDcmVhdGlu
ZyByZWdpc3RyYXRpb24gJXAgZm9yIHJlZ2lzdHJhdGlvbiBrZXkgJXMiLCB0aGlzLCBtX3JlZ2lz
dHJhdGlvbkRhdGEua2V5LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBzdXNw
ZW5kSWZOZWVkZWQoKTsKQEAgLTE1NiwyOCArMTUzLDYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uOjp1cGRhdGUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIG1f
Y29udGFpbmVyLT51cGRhdGVSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25EYXRhLnNjb3BlVVJM
LCBuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpLCBXb3JrZXJUeXBlOjpDbGFzc2ljLCBXVEZNb3Zl
KHByb21pc2UpKTsKIH0KIAotLy8gVG8gYXZvaWQgc2NoZWR1bGluZyBtYW55IHVwZGF0ZXMgZHVy
aW5nIGEgc2luZ2xlIHBhZ2UgbG9hZCwgd2UgZG8gc29mdCB1cGRhdGVzIG9uIGEgMSBzZWNvbmQg
ZGVsYXkgYW5kIGtlZXAgZGVsYXlpbmcKLS8vIGFzIGxvbmcgYXMgc29mdCB1cGRhdGUgcmVxdWVz
dHMga2VlcCBjb21pbmcuIFRoaXMgc2VlbXMgdG8gbWF0Y2ggQ2hyb21lJ3MgYmVoYXZpb3IuCi12
b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnNjaGVkdWxlU29mdFVwZGF0ZSgpCi17Ci0g
ICAgaWYgKG1fc29mdFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc29mdFVwZGF0
ZVRpbWVyLnN0b3AoKTsKLSAgICBtX3NvZnRVcGRhdGVUaW1lci5zdGFydE9uZVNob3Qoc29mdFVw
ZGF0ZURlbGF5KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzb2Z0VXBk
YXRlKCkKLXsKLSAgICBpZiAobV9pc1N0b3BwZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1
dG8qIG5ld2VzdFdvcmtlciA9IGdldE5ld2VzdFdvcmtlcigpOwotICAgIGlmICghbmV3ZXN0V29y
a2VyKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCB3b3JrZXIgdHlw
ZXMuCi0gICAgbV9jb250YWluZXItPnVwZGF0ZVJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbkRh
dGEuc2NvcGVVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCksIFdvcmtlclR5cGU6OkNsYXNz
aWMsIG51bGxwdHIpOwotfQotCiB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnVucmVn
aXN0ZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIGlmIChtX2lzU3Rv
cHBlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKaW5kZXggMTkxZmE0MGI4ZmE3N2QyOTJiMTNkY2Qx
ZjJhZDVkZjcxYWM0ZjcwZS4uNmI4MDY4ZWQ1NDhmMmI4ODUyYjcyZTE3MzQyNDA3ZjM0ZDIwYzJi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oCkBAIC02OCw4ICs2OCw2IEBAIHB1YmxpYzoKICAgICB2
b2lkIHVwZGF0ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIHVucmVnaXN0ZXIo
UmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKLSAgICB2b2lkIHNjaGVkdWxlU29mdFVwZGF0ZSgp
OwotCiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRl
cmVmOwogICAgIApAQCAtODcsOCArODUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVmRXZlbnRU
YXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmlu
YWwgeyBkZXJlZigpOyB9CiAKLSAgICB2b2lkIHNvZnRVcGRhdGUoKTsKLQogICAgIC8vIEFjdGl2
ZURPTU9iamVjdC4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwpAQCAt
MTA2LDcgKzEwMiw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2Ug
fTsKICAgICBib29sIG1fc2hvdWxkRmlyZVVwZGF0ZUZvdW5kRXZlbnRVcG9uUmVzdW1pbmcgeyBm
YWxzZSB9OwogICAgIFJlZlB0cjxQZW5kaW5nQWN0aXZpdHk8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbj4+IG1fcGVuZGluZ0FjdGl2aXR5Rm9yRXZlbnREaXNwYXRjaDsKLSAgICBUaW1lciBtX3Nv
ZnRVcGRhdGVUaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5jcHAKaW5kZXggYTZkZTdkMmUzOTMwNTQ3ZGM4ZDhkYTVhMjkwMDgxYTA5ZjAyMmRmZS4u
ZTJkODExYmFjNzIyODI4N2M3ZGNkY2ZjZTE0ODhlZTQyMzAyZDdjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5jcHAKQEAgLTEwOCwxNSArMTA4LDYgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpmaXJl
QWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHNl
cnZpY2VXb3JrZXItPnRocmVhZCgpLmZpcmVBY3RpdmF0ZUV2ZW50KCk7CiB9CiAKLXZvaWQgU1dD
b250ZXh0TWFuYWdlcjo6c29mdFVwZGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlm
aWVyKQotewotICAgIGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoaWRlbnRp
Zmllcik7Ci0gICAgaWYgKCFzZXJ2aWNlV29ya2VyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBz
ZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5zb2Z0VXBkYXRlKCk7Ci19Ci0KIHZvaWQgU1dDb250ZXh0
TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFNlY29uZHMgdGltZW91dCwgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGF1dG8gc2VydmljZVdvcmtlciA9IG1fd29ya2VyTWFwLnRha2UoaWRlbnRpZmll
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggNDkzNDYzZWNhOTlmZWVmOTUxMTZlMTkwNjdiNmU5
OGNjZDkwZjQwYS4uYmEyYmNlNGU0NmRhNzVlZTJmYjk2MzkyMzkwMGFjNDQzMjlkYmFjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NX
Q29udGV4dE1hbmFnZXIuaApAQCAtODMsNyArODMsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBkZXN0aW5hdGlvbiwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgU2VydmljZVdvcmtl
ck9yQ2xpZW50RGF0YSYmIHNvdXJjZURhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmly
ZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzb2Z0VXBkYXRlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYpOwogCiAgICAgdm9p
ZCBmb3JFYWNoU2VydmljZVdvcmtlclRocmVhZChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5Jik+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAppbmRl
eCA0NDk2OWFmMDZmNGY4YzFlNzdhNWMxZWJhOWZkNGIwMjIzYTA2N2EyLi45NzgzYTlkOWU2NzFi
NzJkMTk0OGU0MjdiYzE5NDM1ZjUzZjRiMTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAK
QEAgLTE0MCw3ICsxNDAsNiBAQCB2b2lkIGRpc3BhdGNoRmV0Y2hFdmVudChSZWY8Q2xpZW50PiYm
IGNsaWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBnbG9iYWxTYwogICAgIEZldGNoT3B0
aW9uczo6UmVkaXJlY3QgcmVkaXJlY3QgPSBvcHRpb25zLnJlZGlyZWN0OwogCiAgICAgYm9vbCBp
c05hdmlnYXRpb24gPSBvcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0
ZTsKLSAgICBib29sIGlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0ID0gV2ViQ29yZTo6aXNOb25TdWJy
ZXNvdXJjZVJlcXVlc3Qob3B0aW9ucy5kZXN0aW5hdGlvbik7CiAKICAgICBBU1NFUlQoZ2xvYmFs
U2NvcGUucmVnaXN0cmF0aW9uKCkuYWN0aXZlKCkpOwogICAgIEFTU0VSVChnbG9iYWxTY29wZS5y
ZWdpc3RyYXRpb24oKS5hY3RpdmUoKS0+aWRlbnRpZmllcigpID09IGdsb2JhbFNjb3BlLnRocmVh
ZCgpLmlkZW50aWZpZXIoKSk7CkBAIC0xODgsMTAgKzE4Nyw2IEBAIHZvaWQgZGlzcGF0Y2hGZXRj
aEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIGds
b2JhbFNjCiAgICAgfQogCiAgICAgZ2xvYmFsU2NvcGUudXBkYXRlRXh0ZW5kZWRFdmVudHNTZXQo
ZXZlbnQucHRyKCkpOwotCi0gICAgYXV0byYgcmVnaXN0cmF0aW9uID0gZ2xvYmFsU2NvcGUucmVn
aXN0cmF0aW9uKCk7Ci0gICAgaWYgKGlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0IHx8IHJlZ2lzdHJh
dGlvbi5uZWVkc1VwZGF0ZSgpKQotICAgICAgICByZWdpc3RyYXRpb24uc2NoZWR1bGVTb2Z0VXBk
YXRlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFNlcnZpY2VXb3JrZXJGZXRjaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmNwcAppbmRleCBlNGVlY2EwZmFhOTdhYTk2YjI5YTM4NDdhMDMzY2FhNjUz
M2U2ZjRjLi4wNGU5Yzg4NGVhNWYwYTQxZWZjYWM0ODBlYTY3ZjIzY2VjMTJlYjhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtMTc1LDE0ICsxNzUsNiBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJUaHJlYWQ6OmZpcmVBY3RpdmF0ZUV2ZW50KCkKICAgICB9KTsKIH0KIAotdm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkOjpzb2Z0VXBkYXRlKCkKLXsKLSAgICBydW5Mb29wKCkucG9zdFRhc2so
W10oYXV0byYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7
Ci0gICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5yZWdpc3RyYXRpb24oKS5zY2hlZHVs
ZVNvZnRVcGRhdGUoKTsKLSAgICB9KTsKLX0KLQogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpm
aW5pc2hlZEV2YWx1YXRpbmdTY3JpcHQoKQogewogICAgIG1fZG9lc0hhbmRsZUZldGNoID0gd29y
a2VyR2xvYmFsU2NvcGUoKS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLmZldGNoRXZl
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4IDA3M2NkNjIyNjMzYjViNWY2MWUzYTkw
YjRkYzhmMDY2ZjdlMzIxZjguLmE0MjU3OWZkOGRlNTFlOTRkZjA0OGYzYWZmYmY0YTgwZDU2YzMz
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgog
CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KCk7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVu
dCgpOwotICAgIHZvaWQgc29mdFVwZGF0ZSgpOwogCiAgICAgY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhJiBjb250ZXh0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmlu
ZGV4IGM3NjRiYWE5OWU3M2U3ZGZhZjMxODE3NTFkNTU4OWQ1N2Q2MmJmMDkuLjRlOTllYTlkM2Qy
MWEzNWM2MmVmMjQzN2ZjYjUxYzUyYmM2MTM4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0yODgsMTIgKzI4OCwxMiBA
QCB2b2lkIFNXU2VydmVyOjpjbGVhcihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5
T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcgogCiB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpm
aW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3Vs
dCYgcmVzdWx0KQogewotICAgIG1fc2VydmVyLnNjcmlwdEZldGNoRmluaXNoZWQoKnRoaXMsIHJl
c3VsdCk7CisgICAgbV9zZXJ2ZXIuc2NyaXB0RmV0Y2hGaW5pc2hlZChyZXN1bHQpOwogfQogCiB2
b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCiB7Ci0gICAgbV9zZXJ2ZXIu
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoKnRoaXMsIGtleSk7CisgICAgbV9zZXJ2ZXIu
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UodGhpcywga2V5KTsKIH0KIAogdm9pZCBTV1Nl
cnZlcjo6Q29ubmVjdGlvbjo6YWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC0zMTIsMTEg
KzMxMiwxMiBAQCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2Vy
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZQogICAgICAgICBtX3NlcnZlci5zeW5j
VGVybWluYXRlV29ya2VyKCp3b3JrZXIpOwogfQogCi1TV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVl
UmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYg
Y2FsbGJhY2spCitTV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYg
b3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcm
JiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTb2Z0VXBkYXRlQ2FsbGJhY2smJiBzb2Z0VXBkYXRlQ2FsbGJhY2ssIENyZWF0ZUNvbnRleHRD
b25uZWN0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICA6IG1fb3JpZ2luU3RvcmUoV1RGTW92
ZShvcmlnaW5TdG9yZSkpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2lz
UHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5h
YmxlZCkKICAgICAsIG1fY3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayhXVEZNb3ZlKGNh
bGxiYWNrKSkKKyAgICAsIG1fc29mdFVwZGF0ZUNhbGxiYWNrKFdURk1vdmUoc29mdFVwZGF0ZUNh
bGxiYWNrKSkKIHsKICAgICBBU1NFUlQoIXJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5Lmlz
RW1wdHkoKSB8fCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKICAgICBpZiAoIW1fc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCkBAIC0zMzEsMTYgKzMzMiwyNiBAQCBTV1NlcnZlcjo6U1dTZXJ2
ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vzc1Rl
cm1pbmF0aQogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3NjaGVkdWxl
LWpvYi1hbGdvcml0aG0KIHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJK
b2JEYXRhJiYgam9iRGF0YSkKIHsKLSAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhq
b2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpKTsKLQotICAgIC8vIEZJWE1FOiBQZXIgdGhl
IHNwZWMsIGNoZWNrIGlmIHRoaXMgam9iIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGxhc3Qgam9iIG9u
IHRoZSBxdWV1ZS4KLSAgICAvLyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0IGpv
Yi4KKyAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhqb2JEYXRhLmNvbm5lY3Rpb25J
ZGVudGlmaWVyKCkpIHx8IGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSA9PSBQcm9jZXNz
OjppZGVudGlmaWVyKCkpOwogCiAgICAgYXV0byYgam9iUXVldWUgPSAqbV9qb2JRdWV1ZXMuZW5z
dXJlKGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIFt0aGlzLCAmam9iRGF0YV0gewogICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdp
c3RyYXRpb25LZXkoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgam9iUXVldWUu
ZW5xdWV1ZUpvYihqb2JEYXRhKTsKKyAgICBpZiAoIWpvYlF1ZXVlLnNpemUoKSkgeworICAgICAg
ICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKFdURk1vdmUoam9iRGF0YSkpOworICAgICAgICBqb2JRdWV1
ZS5ydW5OZXh0Sm9iKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byYgbGFzdEpv
YiA9IGpvYlF1ZXVlLmxhc3RKb2IoKTsKKyAgICBpZiAoam9iRGF0YS5pc0VxdWl2YWxlbnQobGFz
dEpvYikpIHsKKyAgICAgICAgLy8gRklYTUU6IFBlciB0aGUgc3BlYywgY2hlY2sgaWYgdGhpcyBq
b2IgaXMgZXF1aXZhbGVudCB0byB0aGUgbGFzdCBqb2Igb24gdGhlIHF1ZXVlLgorICAgICAgICAv
LyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0IGpvYi4gRm9yIG5vdywgd2UganVz
dCBtYWtlIHN1cmUgdG8gbm90IGNhbGwgc29mdC11cGRhdGUgdG9vIG9mdGVuLgorICAgICAgICBp
ZiAoam9iRGF0YS50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUgJiYgam9iRGF0
YS5jb25uZWN0aW9uSWRlbnRpZmllcigpID09IFByb2Nlc3M6OmlkZW50aWZpZXIoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKFdURk1vdmUo
am9iRGF0YSkpOwogICAgIGlmIChqb2JRdWV1ZS5zaXplKCkgPT0gMSkKICAgICAgICAgam9iUXVl
dWUucnVuTmV4dEpvYigpOwogfQpAQCAtMzU5LDggKzM3MCwxMSBAQCB2b2lkIFNXU2VydmVyOjpy
ZXNvbHZlUmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRh
LCBjb25zdAogewogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiUmVzb2x2ZWQgU2VydmljZVdvcmtl
ciBqb2IgJXMgaW4gc2VydmVyIHdpdGggcmVnaXN0cmF0aW9uICVzIiwgam9iRGF0YS5pZGVudGlm
aWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlZ2lzdHJhdGlvbkRhdGEuaWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgYXV0byogY29ubmVj
dGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7
Ci0gICAgaWYgKCFjb25uZWN0aW9uKQorICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICBp
ZiAoc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkID09IFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZDo6
WWVzICYmIGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlm
aWVyKCkpCisgICAgICAgICAgICBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShudWxscHRy
LCByZWdpc3RyYXRpb25EYXRhLmtleSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBj
b25uZWN0aW9uLT5yZXNvbHZlUmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoam9iRGF0YS5pZGVudGlm
aWVyKCkuam9iSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uRGF0YSwgc2hvdWxkTm90aWZ5V2hlblJl
c29sdmVkKTsKIH0KQEAgLTM3NCwyNiArMzg4LDYyIEBAIHZvaWQgU1dTZXJ2ZXI6OnJlc29sdmVV
bnJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgY29u
CiAgICAgY29ubmVjdGlvbi0+cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoam9iRGF0
YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCB1bnJlZ2lzdHJh
dGlvblJlc3VsdCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQ
b2xpY3kpCitVUkwgc3RhdGljIGlubGluZSBvcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmlnaW4m
IG9yaWdpbikKK3sKKyAgICBVUkwgdXJsOworICAgIHVybC5zZXRQcm90b2NvbChvcmlnaW4ucHJv
dG9jb2woKSk7CisgICAgdXJsLnNldEhvc3Qob3JpZ2luLmhvc3QoKSk7CisgICAgaWYgKG9yaWdp
bi5wb3J0KCkpCisgICAgICAgIHVybC5zZXRQb3J0KCpvcmlnaW4ucG9ydCgpKTsKKyAgICByZXR1
cm4gdXJsOworfQorCit2b2lkIFNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSkKIHsKICAg
ICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZlciBpc3N1aW5nIHN0YXJ0U2NyaXB0RmV0Y2ggZm9y
IGN1cnJlbnQgam9iICVzIGluIGNsaWVudCIsIGpvYkRhdGEuaWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBhdXRvKiBjb25uZWN0aW9uID0gbV9jb25uZWN0
aW9ucy5nZXQoam9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBpZiAoY29ubmVj
dGlvbikgeworICAgICAgICBjb25uZWN0aW9uLT5zdGFydFNjcmlwdEZldGNoSW5DbGllbnQoam9i
RGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllciwgam9iRGF0YS5yZWdpc3RyYXRpb25LZXko
KSwgc2hvdWxkUmVmcmVzaENhY2hlID8gRmV0Y2hPcHRpb25zOjpDYWNoZTo6Tm9DYWNoZSA6IEZl
dGNoT3B0aW9uczo6Q2FjaGU6OkRlZmF1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmIChqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRpZmll
cigpKSB7CisgICAgICAgIEFTU0VSVChqb2JEYXRhLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5
cGU6OlVwZGF0ZSk7CisgICAgICAgIC8vIFRoaXMgaXMgYSBzb2Z0LXVwZGF0ZSBqb2IsIGNyZWF0
ZSBkaXJlY3RseSBhIG5ldHdvcmsgbG9hZCB0byBmZXRjaCB0aGUgc2NyaXB0LgorICAgICAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCB7IGpvYkRhdGEuc2NyaXB0VVJMIH07CisKKyAgICAgICAg
YXV0byB0b3BPcmlnaW4gPSBqb2JEYXRhLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAg
ICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRV
UkwpOworCisgICAgICAgIHJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24odG9wT3Jp
Z2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRBbGxv
d0Nvb2tpZXModHJ1ZSk7CisgICAgICAgIHJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMo
b3JpZ2luVVJMKHRvcE9yaWdpbikpOworCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpPcmlnaW4sIG9yaWdpbi0+dG9TdHJpbmcoKSk7CisgICAgICAg
IHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKG9yaWdpblVSTChvcmlnaW4pKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQVXNlckFnZW50KHNlcnZpY2VXb3JrZXJDbGllbnRVc2VyQWdlbnQoQ2xpZW50
T3JpZ2luIHsgam9iRGF0YS50b3BPcmlnaW4sIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0
YS5zY3JpcHRVUkwpLT5kYXRhKCkgfSkpOworICAgICAgICByZXF1ZXN0LnNldFByaW9yaXR5KFJl
c291cmNlTG9hZFByaW9yaXR5OjpMb3cpOworCisgICAgICAgIG1fc29mdFVwZGF0ZUNhbGxiYWNr
KFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsgam9iRGF0YSB9LCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdU
Rk1vdmUocmVxdWVzdCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShhdXRv
JiByZXN1bHQpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgc2NyaXB0RmV0Y2hGaW5pc2hlZChyZXN1bHQpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGNv
bm5lY3Rpb24sICJJZiB0aGUgY29ubmVjdGlvbiB3YXMgbG9zdCwgdGhpcyBqb2Igc2hvdWxkIGhh
dmUgYmVlbiBjYW5jZWxsZWQiKTsKLSAgICBpZiAoY29ubmVjdGlvbikKLSAgICAgICAgY29ubmVj
dGlvbi0+c3RhcnRTY3JpcHRGZXRjaEluQ2xpZW50KGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklk
ZW50aWZpZXIsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIGNhY2hlUG9saWN5KTsKIH0KIAot
dm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3ZvaWQgU1dTZXJ2ZXI6
OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1
bHQpCiB7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2ZXIgaGFuZGxpbmcgc2NyaXB0RmV0
Y2hGaW5pc2hlZCBmb3IgY3VycmVudCBqb2IgJXMgaW4gY2xpZW50IiwgcmVzdWx0LmpvYkRhdGFJ
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIEFTU0VSVCht
X2Nvbm5lY3Rpb25zLmNvbnRhaW5zKHJlc3VsdC5qb2JEYXRhSWRlbnRpZmllci5jb25uZWN0aW9u
SWRlbnRpZmllcikpOworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKHJlc3VsdC5q
b2JEYXRhSWRlbnRpZmllci5jb25uZWN0aW9uSWRlbnRpZmllcikgfHwgcmVzdWx0LmpvYkRhdGFJ
ZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVyID09IFByb2Nlc3M6OmlkZW50aWZpZXIoKSk7
CiAKICAgICBhdXRvIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJlc3VsdC5yZWdpc3RyYXRp
b25LZXkpOwogICAgIGlmICgham9iUXVldWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGpvYlF1
ZXVlLT5zY3JpcHRGZXRjaEZpbmlzaGVkKGNvbm5lY3Rpb24sIHJlc3VsdCk7CisgICAgam9iUXVl
dWUtPnNjcmlwdEZldGNoRmluaXNoZWQocmVzdWx0KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6c2Ny
aXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyPiYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyV29ya2VyJiB3b3JrZXIs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKQEAgLTUxNyw5ICs1NjcsOSBAQCB2b2lkIFNXU2VydmVy
OjpjbGFpbShTV1NlcnZlcldvcmtlciYgd29ya2VyKQogICAgIH0pOwogfQogCi12b2lkIFNXU2Vy
dmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCit2
b2lkIFNXU2VydmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9uKiBj
b25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXkpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChjb25uZWN0aW9uLCBtX2Nvbm5lY3Rpb25zLmNv
bnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CisgICAgQVNTRVJUX1VOVVNFRChjb25u
ZWN0aW9uLCAhY29ubmVjdGlvbiB8fCBtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24t
PmlkZW50aWZpZXIoKSkpOwogCiAgICAgaWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMu
Z2V0KHJlZ2lzdHJhdGlvbktleSkpCiAgICAgICAgIGpvYlF1ZXVlLT5kaWRSZXNvbHZlUmVnaXN0
cmF0aW9uUHJvbWlzZSgpOwpAQCAtNTQyLDcgKzU5Miw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92
ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
U2VyCiAgICAgICAgIHJlZ2lzdHJhdGlvbi0+cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbihjb25uZWN0aW9uLmlkZW50aWZpZXIoKSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OnVw
ZGF0ZVdvcmtlcihDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlm
aWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlv
biwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1h
cCkKK3ZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVn
aXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hNYXA8
VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJl
c291cmNlTWFwKQogewogICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YSh7IGpvYkRhdGFJZGVudGlm
aWVyLCByZWdpc3RyYXRpb24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJh
dGUoKSwgc2NyaXB0LCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmws
IHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKIH0KQEAgLTk5OCw2
ICsxMDQ4LDE3IEBAIGJvb2wgU1dTZXJ2ZXI6OmNhbkhhbmRsZVNjaGVtZShTdHJpbmdWaWV3IHNj
aGVtZSkgY29uc3QKICAgICByZXR1cm4gc2NoZW1lLmxlbmd0aCgpID09IDQ7CiB9CiAKKy8vIGh0
dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNzb2Z0LXVwZGF0ZQordm9pZCBTV1Nl
cnZlcjo6c29mdFVwZGF0ZShTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQorewor
ICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhIGpvYkRhdGEoUHJvY2Vzczo6aWRlbnRpZmllcigpLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgam9iRGF0YS5zY3JpcHRV
UkwgPSByZWdpc3RyYXRpb24uc2NyaXB0VVJMKCk7CisgICAgam9iRGF0YS50b3BPcmlnaW4gPSBy
ZWdpc3RyYXRpb24ua2V5KCkudG9wT3JpZ2luKCk7CisgICAgam9iRGF0YS5zY29wZVVSTCA9IHJl
Z2lzdHJhdGlvbi5zY29wZVVSTFdpdGhvdXRGcmFnbWVudCgpOworICAgIGpvYkRhdGEudHlwZSA9
IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGU7CisgICAgc2NoZWR1bGVKb2IoV1RGTW92ZShq
b2JEYXRhKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBkNjI3Mjc3ODdiZjVlNWQ2YmFhYjcxNzcwMjMwNjBlZmFh
MjBhNjhlLi5iYzExMjc2YTEzZWRiNTA4YzVjMzZjMTc2NDAzYjExZjFmZjkyODMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0x
MjQsOCArMTI0LDkgQEAgcHVibGljOgogICAgICAgICBWZWN0b3I8UmVnaXN0cmF0aW9uUmVhZHlS
ZXF1ZXN0PiBtX3JlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdHM7CiAgICAgfTsKIAorICAgIHVzaW5n
IFNvZnRVcGRhdGVDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckpvYkRhdGEm
JiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSwgUmVzb3VyY2VSZXF1ZXN0JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik+JiYp
PjsKICAgICB1c2luZyBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248
dm9pZChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpPjsKLSAgICBXRUJDT1JFX0VY
UE9SVCBTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiwgYm9vbCBwcm9jZXNzVGVy
bWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0
b3J5LCBQQUw6OlNlc3Npb25JRCwgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiwg
Ym9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlv
bkRhdGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Npb25JRCwgU29mdFVwZGF0ZUNhbGxiYWNrJiYs
IENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2smJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB+U1dTZXJ2ZXIoKTsKIApAQCAtMTM1LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHN0YXJ0U3VzcGVuc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kU3VzcGVuc2lvbigpOwogCisgICAgU1dTZXJ2
ZXJSZWdpc3RyYXRpb24qIGdldFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbnMuZ2V0KGlkZW50
aWZpZXIpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIGdldFJl
Z2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAgICAgdm9p
ZCBhZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYm
KTsKICAgICB2b2lkIHJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcik7CkBAIC0xNDQsOSArMTQ2LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVqZWN0
Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgRXhjZXB0aW9uRGF0YSYpOwog
ICAgIHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YSYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiwgU2hvdWxkTm90aWZ5V2hl
blJlc29sdmVkKTsKICAgICB2b2lkIHJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBi
b29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKLSAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2goY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBGZXRjaE9wdGlvbnM6OkNhY2hlKTsKKyAgICB2b2lk
IHN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBib29sIHNob3Vs
ZFJlZnJlc2hDYWNoZSk7CiAKLSAgICB2b2lkIHVwZGF0ZVdvcmtlcihDb25uZWN0aW9uJiwgY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24m
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29y
a2VyVHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQ+JiYpOworICAgIHZvaWQgdXBkYXRlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEhhc2hNYXA8VVJM
LCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKICAgICB2b2lk
IHRlcm1pbmF0ZVdvcmtlcihTV1NlcnZlcldvcmtlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc3luY1Rlcm1pbmF0ZVdvcmtlcihTV1NlcnZlcldvcmtlciYpOwogICAgIHZvaWQgZmlyZUlu
c3RhbGxFdmVudChTV1NlcnZlcldvcmtlciYpOwpAQCAtMjA2LDEwICsyMDgsMTIgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNJbXBvcnRDb21wbGV0ZWQoKSBjb25zdCB7IHJldHVybiBtX2ltcG9ydENv
bXBsZXRlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2hlbkltcG9ydElzQ29tcGxldGVk
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKKyAgICB2b2lkIHNvZnRVcGRhdGUoU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24mKTsKKwogcHJpdmF0ZToKLSAgICB2b2lkIHNjcmlwdEZldGNoRmlu
aXNoZWQoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOworICAg
IHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQm
KTsKIAotICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29ubmVjdGlvbiYs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKKyAgICB2b2lkIGRpZFJlc29s
dmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5lY3Rpb24qLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5Jik7CiAKICAgICB2b2lkIGFkZENsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24oQ29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsK
ICAgICB2b2lkIHJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlv
biYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKQEAgLTI2Niw2ICsyNzAs
NyBAQCBwcml2YXRlOgogICAgIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2sgbV9jcmVh
dGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrOwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zOwogICAgIFZlY3RvcjxDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX2ltcG9ydENvbXBsZXRlZENhbGxiYWNrczsKKyAgICBT
b2Z0VXBkYXRlQ2FsbGJhY2sgbV9zb2Z0VXBkYXRlQ2FsbGJhY2s7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAppbmRleCA0ODdjYzc1ZDVmM2U2Mjg4Zjlm
Y2NmMGI2OGRkNTI2MDk4MmNhY2RiLi44OTQwZWI5MmJmZDJiMjZhMzY4ZGZjZjRiMWNkYTIzZDIw
MzAzYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgYm9vbCBTV1Nl
cnZlckpvYlF1ZXVlOjppc0N1cnJlbnRseVByb2Nlc3NpbmdKb2IoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGFJZGVudGkKICAgICByZXR1cm4gIW1fam9iUXVldWUuaXNFbXB0eSgpICYmIGZpcnN0
Sm9iKCkuaWRlbnRpZmllcigpID09IGpvYkRhdGFJZGVudGlmaWVyOwogfQogCi12b2lkIFNXU2Vy
dmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQordm9pZCBT
V1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJG
ZXRjaFJlc3VsdCYgcmVzdWx0KQogewogICAgIGlmICghaXNDdXJyZW50bHlQcm9jZXNzaW5nSm9i
KHJlc3VsdC5qb2JEYXRhSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMSw3ICsx
MDEsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2
ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbgogICAgIC8vIEZJWE1FOiBVcGRhdGUgYWxs
IHRoZSBpbXBvcnRlZCBzY3JpcHRzIGFzIHBlciBzcGVjLiBGb3Igbm93LCB3ZSBqdXN0IGRvIGFz
IGlmIHRoZXJlIGlzIG5vbmUuCiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCB0aGUgcHJvcGVyIHdv
cmtlciB0eXBlIChjbGFzc2ljIHZzIG1vZHVsZSkKLSAgICBtX3NlcnZlci51cGRhdGVXb3JrZXIo
Y29ubmVjdGlvbiwgam9iLmlkZW50aWZpZXIoKSwgKnJlZ2lzdHJhdGlvbiwgam9iLnNjcmlwdFVS
TCwgcmVzdWx0LnNjcmlwdCwgcmVzdWx0LmNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVzdWx0LnJl
ZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlOjpDbGFzc2ljLCB7IH0pOworICAgIG1fc2VydmVyLnVw
ZGF0ZVdvcmtlcihqb2IuaWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9uLCBqb2Iuc2NyaXB0VVJM
LCByZXN1bHQuc2NyaXB0LCByZXN1bHQuY29udGVudFNlY3VyaXR5UG9saWN5LCByZXN1bHQucmVm
ZXJyZXJQb2xpY3ksIFdvcmtlclR5cGU6OkNsYXNzaWMsIHsgfSk7CiB9CiAKIC8vIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN1cGRhdGUtYWxnb3JpdGhtCkBAIC0zMzIsMTcg
KzMzMiwxMyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blVwZGF0ZUpvYihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYgam9iKQogICAgIGlmIChqb2IudHlwZSA9PSBTZXJ2aWNlV29ya2Vy
Sm9iVHlwZTo6VXBkYXRlICYmIG5ld2VzdFdvcmtlciAmJiAhZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpKSkKICAg
ICAgICAgcmV0dXJuIHJlamVjdEN1cnJlbnRKb2IoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwg
IkNhbm5vdCB1cGRhdGUgYSBzZXJ2aWNlIHdvcmtlciB3aXRoIGEgcmVxdWVzdGVkIHNjcmlwdCBV
Ukwgd2hvc2UgbmV3ZXN0IHdvcmtlciBoYXMgYSBkaWZmZXJlbnQgc2NyaXB0IFVSTCJfcyB9KTsK
IAotICAgIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kgPSBGZXRjaE9wdGlvbnM6OkNh
Y2hlOjpEZWZhdWx0OwogICAgIC8vIFNldCByZXF1ZXN0J3MgY2FjaGUgbW9kZSB0byAibm8tY2Fj
aGUiIGlmIGFueSBvZiB0aGUgZm9sbG93aW5nIGFyZSB0cnVlOgogICAgIC8vIC0gcmVnaXN0cmF0
aW9uJ3MgdXBkYXRlIHZpYSBjYWNoZSBtb2RlIGlzIG5vdCAiYWxsIi4KICAgICAvLyAtIGpvYidz
IGZvcmNlIGJ5cGFzcyBjYWNoZSBmbGFnIGlzIHNldC4KICAgICAvLyAtIG5ld2VzdFdvcmtlciBp
cyBub3QgbnVsbCwgYW5kIHJlZ2lzdHJhdGlvbidzIGxhc3QgdXBkYXRlIGNoZWNrIHRpbWUgaXMg
bm90IG51bGwgYW5kIHRoZSB0aW1lIGRpZmZlcmVuY2UgaW4gc2Vjb25kcyBjYWxjdWxhdGVkIGJ5
IHRoZQogICAgIC8vICAgY3VycmVudCB0aW1lIG1pbnVzIHJlZ2lzdHJhdGlvbidzIGxhc3QgdXBk
YXRlIGNoZWNrIHRpbWUgaXMgZ3JlYXRlciB0aGFuIDg2NDAwLgotICAgIGlmIChyZWdpc3RyYXRp
b24tPnVwZGF0ZVZpYUNhY2hlKCkgIT0gU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpBbGwK
LSAgICAgICAgfHwgKG5ld2VzdFdvcmtlciAmJiByZWdpc3RyYXRpb24tPmlzU3RhbGUoKSkpIHsK
LSAgICAgICAgY2FjaGVQb2xpY3kgPSBGZXRjaE9wdGlvbnM6OkNhY2hlOjpOb0NhY2hlOwotICAg
IH0KLSAgICBtX3NlcnZlci5zdGFydFNjcmlwdEZldGNoKGpvYiwgY2FjaGVQb2xpY3kpOworICAg
IGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlID0gcmVnaXN0cmF0aW9uLT51cGRhdGVWaWFDYWNoZSgp
ICE9IFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6QWxsIHx8IChuZXdlc3RXb3JrZXIgJiYg
cmVnaXN0cmF0aW9uLT5pc1N0YWxlKCkpOworICAgIG1fc2VydmVyLnN0YXJ0U2NyaXB0RmV0Y2go
am9iLCBzaG91bGRSZWZyZXNoQ2FjaGUpOwogfQogCiB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJl
amVjdEN1cnJlbnRKb2IoY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpv
YlF1ZXVlLmgKaW5kZXggMGE5Nzc3ZWJiOTBjZDAxODRhY2EwZTdmNWY1N2IyNmQwYWQwZDFjMC4u
ZWI5MzFlMDQxNDcwMGVkNTk2N2FhYjYxZDY0ODI3NTgxMjU5YzQzNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVl
LmgKQEAgLTQ1LDEyICs0NSwxMiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYgZmlyc3RKb2IoKSBjb25zdCB7IHJldHVybiBtX2pvYlF1ZXVlLmZpcnN0KCk7IH0K
ICAgICBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgbGFzdEpvYigpIGNvbnN0IHsgcmV0dXJu
IG1fam9iUXVldWUubGFzdCgpOyB9Ci0gICAgdm9pZCBlbnF1ZXVlSm9iKGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhJiBqb2JEYXRhKSB7IG1fam9iUXVldWUuYXBwZW5kKGpvYkRhdGEpOyB9Cisg
ICAgdm9pZCBlbnF1ZXVlSm9iKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkgeyBtX2pv
YlF1ZXVlLmFwcGVuZChXVEZNb3ZlKGpvYkRhdGEpKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9qb2JRdWV1ZS5zaXplKCk7IH0KIAogICAgIHZvaWQgcnVuTmV4dEpvYigp
OwogCi0gICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwg
Y29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7CisgICAgdm9pZCBzY3JpcHRGZXRjaEZp
bmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwogICAgIHZvaWQgc2NyaXB0
Q29udGV4dEZhaWxlZFRvU3RhcnQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
JiwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAgICAg
dm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRGaW5pc2hJbnN0
YWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyV29ya2Vy
JiwgYm9vbCB3YXNTdWNjZXNzZnVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXgg
MDJhMGM5NjdmMTI5ZWE3OTdmOGZjODE3MmZhODU1NzNhM2Y0MGI5Ni4uYzI5YjQ2Mjc4OTBlZjli
Njc3OGQyNzk3ZGY2NGJmN2YxOWYzYjljYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAK
QEAgLTQ5LDYgKzQ5LDcgQEAgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0
aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXIKICAgICAsIG1fc2NyaXB0
VVJMKHNjcmlwdFVSTCkKICAgICAsIG1fc2VydmVyKHNlcnZlcikKICAgICAsIG1fY3JlYXRpb25U
aW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQorICAgICwgbV9zb2Z0VXBkYXRlVGltZXIgeyAqdGhp
cywgJlNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlIH0KIHsKICAgICBtX3Njb3BlVVJM
LnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogfQpAQCAtMzYzLDE4ICszNjQsMTYgQEAgYm9v
bCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2hvdWxkU29mdFVwZGF0ZShjb25zdCBGZXRjaE9wdGlv
bnMmIG9wdGlvbnMpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkNvcmU6OmlzTm9uU3VicmVzb3VyY2VS
ZXF1ZXN0KG9wdGlvbnMuZGVzdGluYXRpb24pICYmIGlzU3RhbGUoKTsKIH0KIAotLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3NvZnQtdXBkYXRlCiB2b2lkIFNXU2VydmVy
UmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlKCkKIHsKLSAgICBhdXRvKiB3b3JrZXIgPSBnZXROZXdl
c3RXb3JrZXIoKTsKLSAgICBpZiAoIXdvcmtlcikKLSAgICAgICAgcmV0dXJuOworICAgIG1fc2Vy
dmVyLnNvZnRVcGRhdGUoKnRoaXMpOworfQogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBzY2hl
ZHVsZSBhbiB1cGRhdGUgam9iLgotICAgIG1fc2VydmVyLnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vz
c2FyeSh3b3JrZXItPmlkZW50aWZpZXIoKSwgW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29y
a2VyLT5pZGVudGlmaWVyKCldKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uKSB7Ci0gICAgICAgIGlm
IChjb250ZXh0Q29ubmVjdGlvbikKLSAgICAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5zb2Z0
VXBkYXRlKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICB9KTsKK3ZvaWQgU1dTZXJ2ZXJS
ZWdpc3RyYXRpb246OnNjaGVkdWxlU29mdFVwZGF0ZSgpCit7CisgICAgLy8gVG8gYXZvaWQgc2No
ZWR1bGluZyBtYW55IHVwZGF0ZXMgZHVyaW5nIGEgc2luZ2xlIHBhZ2UgbG9hZCwgd2UgZG8gc29m
dCB1cGRhdGVzIG9uIGEgMSBzZWNvbmQgZGVsYXkgYW5kIGtlZXAgZGVsYXlpbmcKKyAgICAvLyBh
cyBsb25nIGFzIHNvZnQgdXBkYXRlIHJlcXVlc3RzIGtlZXAgY29taW5nLiBUaGlzIHNlZW1zIHRv
IG1hdGNoIENocm9tZSdzIGJlaGF2aW9yLgorICAgIG1fc29mdFVwZGF0ZVRpbWVyLnN0YXJ0T25l
U2hvdChzb2Z0VXBkYXRlRGVsYXkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVn
aXN0cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmgKaW5kZXggZDBiNjJjMWNkODczNTQ5MzlhMzE2MTI5MTYwMTdhYTU2
NDY4N2M2Ni4uNmIwYmZkYzA4ZDBkMzc5YTE1NzhjMWNiZWY0NWJjNjgxOTk2Y2YyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lz
dHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJDbGllbnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTk4
LDEzICs5OSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JFYWNoQ29ubmVjdGlvbihjb25zdCBX
VEY6OkZ1bmN0aW9uPHZvaWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mKT4mKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc2hvdWxkU29mdFVwZGF0ZShjb25zdCBGZXRjaE9wdGlvbnMmKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNvZnRVcGRhdGUoKTsKLSAgICAKLSAgICBTdHJp
bmcgc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlVVJMOyB9
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZVNvZnRVcGRhdGUoKTsKKyAgICBzdGF0
aWMgY29uc3RleHByIFNlY29uZHMgc29mdFVwZGF0ZURlbGF5IHsgMV9zIH07CisKKyAgICBVUkwg
c2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlVVJMOyB9Cisg
ICAgVVJMIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0VVJMOyB9CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBhY3RpdmF0ZSgpOwogICAgIHZvaWQgaGFuZGxlQ2xpZW50VW5sb2FkKCk7
CisgICAgdm9pZCBzb2Z0VXBkYXRlKCk7CiAKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSBtX3JlZ2lzdHJhdGlvbktleTsKQEAgLTEyNCw2ICsxMjgsOCBAQCBwcml2YXRlOgogCiAgICAg
TW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGltZTsKICAgICBIYXNoTWFwPFNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPj4gbV9jbGllbnRzVXNp
bmdSZWdpc3RyYXRpb247CisKKyAgICBXZWJDb3JlOjpUaW1lciBtX3NvZnRVcGRhdGVUaW1lcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCmluZGV4IGQ0N2U5ZjE4N2RhNGUwMDhmZWZiZjY1N2JiZGM4YWQ5ZWZkYTYzY2Yu
LjgyMjI5OTkxZDYyMTg5OGU5YjZjZTg3MmZiMGYzYzc3OWRjNWJhYjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTIsNyArNTIsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNvZnRVcGRhdGUoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXIoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5
SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgT3B0
aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IDEzZmNlMmU3YzU5YzRhNDQyM2ZhZjcyYTYzNWM5YzlkZTQ5YTRlMWUuLjY4NWY3ZDE4
ZDk4MjJhNzgwZDY2MTAyOWVhNTBlZWMwZTAzNGI4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMzUzLDcgKzIzNTMsOSBAQCBT
V1NlcnZlciYgTmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpCiAgICAgICAgIC8vIElmIHRoZXJlJ3Mgbm90LCB0aGVuIHdoZXJlIGRpZCB0
aGlzIFBBTDo6U2Vzc2lvbklEIGNvbWUgZnJvbT8KICAgICAgICAgQVNTRVJUKHNlc3Npb25JRC5p
c0VwaGVtZXJhbCgpIHx8ICFwYXRoLmlzRW1wdHkoKSk7CiAKLSAgICAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4oKSwgaW5mby5w
cm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGF0aCksIHNlc3Npb25JRCwg
W3RoaXMsIHNlc3Npb25JRF0oYXV0byYgcmVnaXN0cmFibGVEb21haW4pIHsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4o
KSwgaW5mby5wcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGF0aCksIHNl
c3Npb25JRCwgW3RoaXMsIHNlc3Npb25JRF0oYXV0byYmIGpvYkRhdGEsIGJvb2wgc2hvdWxkUmVm
cmVzaENhY2hlLCBhdXRvJiYgcmVxdWVzdCwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpzdGFydChu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLCBXVEZNb3ZlKGpvYkRhdGEpLCBzaG91bGRSZWZyZXNo
Q2FjaGUsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICAgICAgfSwgW3RoaXMsIHNlc3Npb25JRF0oYXV0byYgcmVnaXN0cmFibGVEb21haW4pIHsKICAg
ICAgICAgICAgIEFTU0VSVCghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKTsKICAgICAgICAg
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9uSUQgfSwgMCk7CiAgICAgICAgIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDY5OGNl
MGQ3NDIyY2YxNTQzZGQyZjNhNDYxMmRlODQ3YzQyYWFhODguLjVjOGVkZWY0NWNiOThjOWQwYWFk
MzM0NGM5ZjQzN2ZhMmRiMGI0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlByZWZldGNo
Q2FjaGUuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5SW1wbC5oPgpAQCAtMTI3LDYgKzEyOCwxMSBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzU3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsgfQogCisjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgYWRkU29mdFVwZGF0ZUxvYWRlcihzdGQ6OnVu
aXF1ZV9wdHI8U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI+JiYgbG9hZGVyKSB7IG1fc29m
dFVwZGF0ZUxvYWRlcnMuYWRkKFdURk1vdmUobG9hZGVyKSk7IH0KKyAgICB2b2lkIHJlbW92ZVNv
ZnRVcGRhdGVMb2FkZXIoU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIqIGxvYWRlcikgeyBt
X3NvZnRVcGRhdGVMb2FkZXJzLnJlbW92ZShsb2FkZXIpOyB9CisjZW5kaWYKKwogcHJvdGVjdGVk
OgogICAgIE5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMmKTsKIApAQCAtMTYwLDYgKzE2NiwxMCBAQCBwcm90ZWN0ZWQ6
CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7CiAgICAgV2ViQ29yZTo6
QmxvYlJlZ2lzdHJ5SW1wbCBtX2Jsb2JSZWdpc3RyeTsKICAgICB1bnNpZ25lZCBtX3Rlc3RTcGVl
ZE11bHRpcGxpZXIgeyAxIH07CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgSGFz
aFNldDxzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI+PiBtX3Nv
ZnRVcGRhdGVMb2FkZXJzOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCBhMGViYTM3YTRhZDY2
ZTg5MDNjYTEzYzZmOGIwNjM3ODY2YjYzZWY0Li42MzJkNWM4NjhjNDMyYTFjYmRkZGY0NGRhYTU5
OWU5YTZhODMyYjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3Bw
CkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmg+CiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQs
IC4uLikgUkVMRUFTRV9MT0dfSUYobV9sb2FkZXIuc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihtX2xvYWRlci5zZXNzaW9u
SUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtlciwgIiVwIC0gU2Vy
dmljZVdvcmtlckZldGNoVGFzazo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCkBAIC00OSwx
MyArNTAsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKE5ldHdv
cmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIpCitTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKE5ldHdv
cmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIGJvb2wgc2hvdWxkU29mdFVwZGF0ZSkKICAgICA6IG1fbG9hZGVyKGxvYWRlcikKICAgICAs
IG1fZmV0Y2hJZGVudGlmaWVyKFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSkK
ICAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIpCiAgICAgLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQogICAgICwgbV9jdXJyZW50UmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQogICAgICwg
bV90aW1lb3V0VGltZXIoKnRoaXMsICZTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGlt
ZXJGaXJlZCkKKyAgICAsIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIoc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCisgICAgLCBtX3Nob3VsZFNvZnRVcGRh
dGUoc2hvdWxkU29mdFVwZGF0ZSkKIHsKICAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3Qo
bG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5uZXR3b3JrUHJvY2VzcygpLnNlcnZpY2VX
b3JrZXJGZXRjaFRpbWVvdXQoKSk7CiB9CkBAIC0xMDYsNyArMTA5LDggQEAgdm9pZCBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpzdGFydEZldGNoKCkKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBtX3dhc0hhbmRsZWQgPSB0cnVlOworICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsK
KyAgICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAogICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNv
dXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOwogICAgIGF1dG8gbmV3UmVxdWVz
dCA9IG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RlZFJlcXVlc3QocmVzcG9uc2UsIG1fbG9hZGVy
LnBhcmFtZXRlcnMoKS5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KTsK
QEAgLTExOCw3ICsxMjIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvbwogewogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogJXMiLCBtX2ZldGNoSWRlbnRp
Zmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV90aW1lb3V0VGltZXIu
c3RvcCgpOwotICAgIG1fd2FzSGFuZGxlZCA9IHRydWU7CisgICAgc29mdFVwZGF0ZUlmTmVlZGVk
KCk7CiAKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpT
ZXJ2aWNlV29ya2VyKTsKICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6OldlYlJlc291cmNlTG9h
ZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UgfSk7CkBAIC0xNDYsNyArMTUwLDEwIEBAIHZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIG1fdGltZW91dFRp
bWVyLnN0b3AoKTsKKyAgICBpZiAobV90aW1lb3V0VGltZXIuaXNBY3RpdmUoKSkgeworICAgICAg
ICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CisgICAgICAgIHNvZnRVcGRhdGVJZk5lZWRlZCgpOwor
ICAgIH0KICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJkaWRGYWlsRmV0Y2g6IGZl
dGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgbV9sb2FkZXIuZGlkRmFpbExvYWRpbmcoZXJyb3IpOwogfQpAQCAt
MTU1LDYgKzE2Miw4IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkTm90SGFuZGxl
KCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWROb3RIYW5kbGVGZXRjaDogZmV0
Y2hJZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CisgICAgc29mdFVwZGF0ZUlm
TmVlZGVkKCk7CisKICAgICBtX2xvYWRlci5zZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CiB9
CiAKQEAgLTE3MSw2ICsxODAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNvbnRp
bnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmNvbnRpbnVlRmV0Y2hUYXNrV2l0aChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewor
ICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChtX2xvYWRlci5jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0KCkpOwog
ICAgIGlmICghbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikgewogICAgICAgICBtX2xvYWRlci5z
ZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE4MSwxMSAr
MTkxLDIxIEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y29udGludWVGZXRjaFRhc2tX
aXRoKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNo
VGFzazo6dGltZW91dFRpbWVyRmlyZWQoKQogeworICAgIHNvZnRVcGRhdGVJZk5lZWRlZCgpOwor
CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidGltZW91dFRpbWVyRmlyZWQ6IGZldGNoSWRl
bnRpZmllcjogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgaWYgKG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCiAgICAgICAgIG1fc2Vy
dmljZVdvcmtlckNvbm5lY3Rpb24tPmZldGNoVGFza1RpbWVkT3V0KHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKCkpOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNvZnRVcGRhdGVJ
Zk5lZWRlZCgpCit7CisgICAgaWYgKCFtX3Nob3VsZFNvZnRVcGRhdGUpCisgICAgICAgIHJldHVy
bjsKKyAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9sb2FkZXIuY29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpLnN3Q29ubmVjdGlvbigpLnNlcnZlcigpLmdldFJlZ2lzdHJhdGlvbihtX3NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSkKKyAgICAgICAgcmVnaXN0cmF0aW9uLT5z
Y2hlZHVsZVNvZnRVcGRhdGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaAppbmRleCBkNzE2YmJlMDJlNjljZmFkMWM0ZDM0NjBlM2VkNGRhZWVlYzljNDAyLi41
ZGI5M2MxYjBiNmRmMmIxZjkwMjFkZGY5MWE3M2YxNjI3MDZjMTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xhc3MgV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzayA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU2VydmljZVdvcmtlckZldGNoVGFzayhO
ZXR3b3JrUmVzb3VyY2VMb2FkZXImLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsK
KyAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGJvb2wgc2hvdWxkU29mdFVwZGF0ZSk7CiAgICAg
flNlcnZpY2VXb3JrZXJGZXRjaFRhc2soKTsKIAogICAgIHZvaWQgc3RhcnQoV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uJik7CkBAIC04OCw2ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzdGFydEZldGNoKCk7CiAKICAgICB2b2lkIHRpbWVvdXRUaW1lckZpcmVkKCk7CisgICAgdm9p
ZCBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1lc3NhZ2U+
IGJvb2wgc2VuZFRvU2VydmljZVdvcmtlcihNZXNzYWdlJiYpOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE1lc3NhZ2U+IGJvb2wgc2VuZFRvQ2xpZW50KE1lc3NhZ2UmJik7CkBAIC0xMDAsNiArMTAx
LDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9jdXJyZW50UmVx
dWVzdDsKICAgICBXZWJDb3JlOjpUaW1lciBtX3RpbWVvdXRUaW1lcjsKICAgICBib29sIG1fd2Fz
SGFuZGxlZCB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKKyAgICBi
b29sIG1fc2hvdWxkU29mdFVwZGF0ZSB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmJm
MTk5ZGIyYThkMDE5MjkwODM1MjQzMzIyMzgzMmI0OWMyMDliCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMCwwICsxLDE4OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5o
IgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk5ldHdvcmtDYWNoZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCisjaW5j
bHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJG
ZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dFJlc291cmNlRGVjb2Rlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyU2NyaXB0TG9hZGVyLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordm9pZCBTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlcjo6c3RhcnQoTmV0d29ya1Nlc3Npb24qIHNlc3Npb24sIFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIEhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAo
IXNlc3Npb24pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzZXJ2aWNlV29ya2Vy
RmV0Y2hFcnJvcihqb2JEYXRhLmlkZW50aWZpZXIoKSwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSB7IGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkgfSwgUmVzb3VyY2VFcnJvciB7IFJlc291
cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbiB9KSk7CisgICAgc2Vzc2lvbi0+YWRkU29mdFVw
ZGF0ZUxvYWRlcihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyPigqc2Vz
c2lvbiwgV1RGTW92ZShqb2JEYXRhKSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworfQorCitTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlcjo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIoTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24sIFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRS
ZWZyZXNoQ2FjaGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCisgICAgLCBtX2pvYkRhdGEoV1RGTW92ZShqb2JEYXRhKSkKKyAgICAsIG1fc2Vz
c2lvbihtYWtlV2Vha1B0cihzZXNzaW9uKSkKK3sKKyAgICBBU1NFUlQoIXJlcXVlc3QuaXNDb25k
aXRpb25hbCgpKTsKKworICAgIGlmIChzZXNzaW9uLmNhY2hlKCkpIHsKKyAgICAgICAgLy8gV2Ug
c2V0IGNhY2hlIHBvbGljeSB0byBkaXNhYmxlIHNwZWN1bGF0aXZlIGxvYWRpbmcvYXN5bmMgcmV2
YWxpZGF0aW9uIGZyb20gdGhlIGNhY2hlLgorICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5
KFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpSZXR1cm5DYWNoZURhdGFEb250TG9hZCk7Cisg
ICAgICAgIAorICAgICAgICBzZXNzaW9uLmNhY2hlKCktPnJldHJpZXZlKHJlcXVlc3QsIE5ldHdv
cmtDYWNoZTo6R2xvYmFsRnJhbWVJRCB7IH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgcmVxdWVzdCwgc2hvdWxkUmVmcmVzaENhY2hlXShhdXRvJiYgZW50cnksIGF1dG8m
JikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGlmICghbV9zZXNzaW9uKSB7CisgICAgICAgICAgICAgICAg
ZmFpbChSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0p
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICghc2hvdWxkUmVmcmVzaENhY2hlICYmIGVudHJ5ICYmICFlbnRyeS0+bmVlZHNWYWxpZGF0aW9u
KCkpIHsKKyAgICAgICAgICAgICAgICBsb2FkV2l0aENhY2hlRW50cnkoKmVudHJ5KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJlcXVlc3Qu
c2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlDYWNo
ZURhdGEpOworICAgICAgICAgICAgaWYgKGVudHJ5KSB7CisgICAgICAgICAgICAgICAgbV9jYWNo
ZUVudHJ5ID0gV1RGTW92ZShlbnRyeSk7CisKKyAgICAgICAgICAgICAgICBTdHJpbmcgZVRhZyA9
IG1fY2FjaGVFbnRyeS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6
OkVUYWcpOworICAgICAgICAgICAgICAgIGlmICghZVRhZy5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk5v
bmVNYXRjaCwgZVRhZyk7CisKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGFzdE1vZGlmaWVkID0g
bV9jYWNoZUVudHJ5LT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
TGFzdE1vZGlmaWVkKTsKKyAgICAgICAgICAgICAgICBpZiAoIWxhc3RNb2RpZmllZC5pc0VtcHR5
KCkpCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpJZk1vZGlmaWVkU2luY2UsIGxhc3RNb2RpZmllZCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBsb2FkRnJvbU5ldHdvcmsoKm1fc2Vzc2lvbiwgV1RGTW92ZShyZXF1ZXN0
KSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGxvYWRGcm9tTmV0
d29yayhzZXNzaW9uLCBXVEZNb3ZlKHJlcXVlc3QpKTsKK30KKworU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6On5TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcigpCit7CisgICAgaWYg
KG1fY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoc2Vydmlj
ZVdvcmtlckZldGNoRXJyb3IobV9qb2JEYXRhLmlkZW50aWZpZXIoKSwgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSB7IG1fam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSB9LCBSZXNvdXJjZUVy
cm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pKTsKK30KKwordm9pZCBT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZmFpbChSZXNvdXJjZUVycm9yJiYgZXJyb3Ip
Cit7CisgICAgaWYgKCFtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2NvbXBsZXRpb25IYW5kbGVyKHNlcnZpY2VXb3JrZXJGZXRjaEVycm9yKG1fam9iRGF0YS5p
ZGVudGlmaWVyKCksIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgeyBtX2pvYkRhdGEucmVn
aXN0cmF0aW9uS2V5KCkgfSwgV1RGTW92ZShlcnJvcikpKTsKKyAgICBkaWRDb21wbGV0ZSgpOwor
fQorCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpsb2FkV2l0aENhY2hlRW50
cnkoTmV0d29ya0NhY2hlOjpFbnRyeSYgZW50cnkpCit7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UgeyBlbnRyeS5yZXNwb25zZSgpIH0sIFtdKGF1dG8pIHsgfSk7Cisg
ICAgaWYgKG1fY29tcGxldGlvbkhhbmRsZXIgJiYgZW50cnkuYnVmZmVyKCkpCisgICAgICAgIGRp
ZFJlY2VpdmVCdWZmZXIobWFrZVJlZigqZW50cnkuYnVmZmVyKCkpLCAwKTsKKyAgICBpZiAobV9j
b21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgZGlkRmluaXNoTG9hZGluZyh7IH0pOworICAgIGRp
ZENvbXBsZXRlKCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6Omxv
YWRGcm9tTmV0d29yayhOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKK3sKKyAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBw
YXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OlVzZTsKKyAgICBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRT
bmlmZmluZ1BvbGljeTo6RG9Ob3RTbmlmZkNvbnRlbnQ7CisgICAgcGFyYW1ldGVycy5jb250ZW50
RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpT
bmlmZjsKKyAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOworICAgIG1f
bmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgc2Vzc2lvbik7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYs
IFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpCit7CisgICAgZmFpbChSZXNv
dXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pOworfQorCit2
b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0g
MzA0ICYmIG1fY2FjaGVFbnRyeSkgeworICAgICAgICBsb2FkV2l0aENhY2hlRW50cnkoKm1fY2Fj
aGVFbnRyeSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3Jl
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gZXJyb3IgPSBXb3JrZXJTY3Jp
cHRMb2FkZXI6OnZhbGlkYXRlUmVzcG9uc2UocmVzcG9uc2UsIEZldGNoT3B0aW9uczo6RGVzdGlu
YXRpb246OlNlcnZpY2V3b3JrZXIpOworICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAg
ICAgZmFpbChXVEZNb3ZlKGVycm9yKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGlj
eUFjdGlvbjo6SWdub3JlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29udGVu
dFNlY3VyaXR5UG9saWN5ID0gQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIHsg
cmVzcG9uc2UgfTsKKyAgICBtX3JlZmVycmVyUG9saWN5ID0gcmVzcG9uc2UuaHR0cEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpSZWZlcnJlclBvbGljeSk7CisgICAgbV9yZXNwb25zZUVuY29k
aW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOworCisgICAgY29tcGxldGlvbkhhbmRs
ZXIoUG9saWN5QWN0aW9uOjpVc2UpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQg
cmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKK3sKKyAgICBpZiAoIW1fZGVjb2RlcikgeworICAg
ICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2Rl
Y29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvamF2YXNjcmlwdCJfcywg
bV9yZXNwb25zZUVuY29kaW5nKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9kZWNvZGVy
ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQiX3MsICJVVEYt
OCIpOworICAgIH0KKworICAgIGlmIChhdXRvIHNpemUgPSBidWZmZXItPnNpemUoKSkKKyAgICAg
ICAgbV9zY3JpcHQuYXBwZW5kKG1fZGVjb2Rlci0+ZGVjb2RlKGJ1ZmZlci0+ZGF0YSgpLCBzaXpl
KSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikKK3sKKyAgICBpZiAobV9k
ZWNvZGVyKQorICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5mbHVzaCgpKTsKKyAg
ICBtX2NvbXBsZXRpb25IYW5kbGVyKHsgbV9qb2JEYXRhLmlkZW50aWZpZXIoKSwgbV9qb2JEYXRh
LnJlZ2lzdHJhdGlvbktleSgpLCBtX3NjcmlwdC50b1N0cmluZygpLCBtX2NvbnRlbnRTZWN1cml0
eVBvbGljeSwgbV9yZWZlcnJlclBvbGljeSwgeyB9IH0pOworICAgIGRpZENvbXBsZXRlKCk7Cit9
CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGZhaWwoUmVzb3VyY2VFcnJvcihlcnJv
cikpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRDb21wbGV0
ZSgpCit7CisgICAgbV9uZXR3b3JrTG9hZCA9IG51bGxwdHI7CisgICAgaWYgKG1fc2Vzc2lvbikK
KyAgICAgICAgbV9zZXNzaW9uLT5yZW1vdmVTb2Z0VXBkYXRlTG9hZGVyKHRoaXMpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjYzYjVjNjYwNjM4YWJlYTEyM2FiY2RiMzljMDcyOTQ5MzI1ZmExNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUg
Ik5ldHdvcmtDYWNoZUVudHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VySm9iRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGE7Citj
bGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgTmV0d29ya0xvYWQ7CitjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKKworY2xhc3MgU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIgZmluYWwgOiBwdWJsaWMgTmV0d29ya0xvYWRDbGllbnQsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcj4geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHVzaW5nIEhhbmRsZXIgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJl
c3VsdCYpPjsKKyAgICBzdGF0aWMgdm9pZCBzdGFydChOZXR3b3JrU2Vzc2lvbiosIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhJiYsIGJvb2wgc2hvdWxkUmVmcmVzaENhY2hlLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgSGFuZGxlciYmKTsKKworICAgIFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyKE5ldHdvcmtTZXNzaW9uJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRh
dGEmJiwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBIYW5kbGVyJiYpOworICAgIH5TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcigpOworICAg
IAorcHJpdmF0ZToKKyAgICAvLyBOZXR3b3JrTG9hZENsaWVudC4KKyAgICB2b2lkIGRpZFNlbmRE
YXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3Rh
bEJ5dGVzVG9CZVNlbnQpIGZpbmFsIHsgfQorICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JD
cmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCB3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2
b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikg
ZmluYWw7CisgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgZmluYWw7CisKKyAgICB2b2lkIGxvYWRXaXRoQ2FjaGVFbnRyeShOZXR3b3JrQ2FjaGU6
OkVudHJ5Jik7CisgICAgdm9pZCBsb2FkRnJvbU5ldHdvcmsoTmV0d29ya1Nlc3Npb24mLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgdm9pZCBmYWlsKFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImJik7CisgICAgdm9pZCBkaWRDb21wbGV0ZSgpOworCisgICAgSGFuZGxlciBtX2NvbXBs
ZXRpb25IYW5kbGVyOworICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhIG1fam9iRGF0
YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+IG1fbmV0d29ya0xvYWQ7CisgICAg
V2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9zZXNzaW9uOworCisgICAgU3RyaW5nIG1fcmVzcG9u
c2VFbmNvZGluZzsKKyAgICBTdHJpbmcgbV9yZWZlcnJlclBvbGljeTsKKyAgICBXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgbV9jb250ZW50U2VjdXJpdHlQb2xp
Y3k7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gbV9jYWNoZUVu
dHJ5OworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7
CisgICAgU3RyaW5nQnVpbGRlciBtX3NjcmlwdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDU2MDY1NzA1OWY5NTg3NDNiYjhjZjJjZTcwMGY4
NTAwMDNjMTE4ZWQuLjljMjRjMjgwNmFjMDAzOTQzOTk5OWE0ZWY1MWQ0NmQ4ZDQ4MmMwZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNzcsMTQgKzE3Nywx
NSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2soTgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKKyAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZXJ2ZXIoKS5nZXRSZWdpc3RyYXRpb24o
KnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKKyAgICBib29sIHNob3VsZFNv
ZnRVcGRhdGUgPSByZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRl
KGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucyk7CiAgICAgaWYgKHdvcmtlci0+c2hvdWxkU2tp
cEZldGNoRXZlbnQoKSkgewotICAgICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZXJ2ZXIoKS5n
ZXRSZWdpc3RyYXRpb24od29ya2VyLT5yZWdpc3RyYXRpb25LZXkoKSk7Ci0gICAgICAgIGlmIChy
ZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJh
bWV0ZXJzKCkub3B0aW9ucykpCi0gICAgICAgICAgICByZWdpc3RyYXRpb24tPnNvZnRVcGRhdGUo
KTsKKyAgICAgICAgaWYgKHNob3VsZFNvZnRVcGRhdGUpCisgICAgICAgICAgICByZWdpc3RyYXRp
b24tPnNjaGVkdWxlU29mdFVwZGF0ZSgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+KGxv
YWRlciwgUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9LCBpZGVudGlmaWVyKCksIHdvcmtlci0+
aWRlbnRpZmllcigpLCAqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOworICAg
IGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZldGNoVGFzaz4obG9hZGVyLCBS
ZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH0sIGlkZW50aWZpZXIoKSwgd29ya2VyLT5pZGVudGlm
aWVyKCksICpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgc2hvdWxkU29mdFVw
ZGF0ZSk7CiAgICAgc3RhcnRGZXRjaCgqdGFzaywgKndvcmtlcik7CiAgICAgcmV0dXJuIHRhc2s7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCmluZGV4IGI4MzVjNTY1YWJkMmMzZmQ4NTZhZjhlNDYwMjRhODdhMTMzODY0NzAuLjRmMmJm
MWI0OGE2MjNlZjU1ZWNiMmJlNzZjNjgyOTg3OTUzYjZlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xMDAsMTEgKzEwMCw2
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVu
dChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OkZpcmVBY3RpdmF0ZUV2ZW50KHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzb2Z0
VXBkYXRlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQot
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTb2Z0
VXBkYXRlKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7Ci19Ci0KIHZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVdvcmtlcihzZXJ2aWNlV29ya2VySWRl
bnRpZmllcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCmluZGV4IGVmNGY0MTNkM2JhMGI0ZmNmODBjYjE0MjhiOGY4YTFiYWVkZDRmMWUuLjA0
YzhkNjMwYTMyZTEzOWM1MWRhNzE4N2U0NTVmMzg1MWZhMWNmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTg4LDcgKzg4LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkg
ZmluYWw7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIHNvZnRVcGRhdGUoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgdGVybWluYXRlV29y
a2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHN5
bmNUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFs
OwogICAgIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuY3BwCmluZGV4IGYyNGU2NzE3NWY5ZmI4MTkzY2VmY2ZjNjI2ZTllMzcxY2U4ZGRhMTAuLjU2
YTZkNjU1Mzg4OWI5YjViZGJlZjE5MTU4ODE1NGVlMjA0YThkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25N
YW5hZ2VyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWVzc2FnZXMuaCIKQEAgLTExMCw3ICsxMTEsOCBAQCBWZWN0b3I8dWludDY0X3Q+IEF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6Y29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbAog
CiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSogdG9wT3JpZ2luLCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKHBhZ2VJRCk7
CisgICAgaWYgKCFwYWdlSUQpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCB7
IH0pOwogCiAgICAgdWludDY0X3QgY2hhbGxlbmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5n
ZU1hcCh7IHBhZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzZjdkM2ZiNjIxNmZmZmM2ZjNiY2IyZDNm
ZDUzYmVmYTEwNDE4NjYwLi40NDk0ODBlZDkzYWU3NDhiYzkzNDI0MjQxZWNlZTBkODNlODNhZDU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTYxLDYgKzYxLDcgQEAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L1BlbmRpbmdEb3dubG9hZC5jcHAKIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25u
ZWN0aW9uVG9DbGllbnQuY3BwCiAKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5jcHAgQG5vLXVuaWZ5CitOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDVjYjgxY2NjMjAyY2U2MjFiM2FkODUxZjVhYmE5ZTVlNDdiYjJmY2MuLjM1
ZWVjOTBlZWIwNzQ1NjNmODAzMGI4ZmQ2MThmYjZkNDQ0MDIyYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzE4OCw2ICszMTg4LDgg
QEAKIAkJNDFDNTM3OEYyMUYxMzYyRDAwOEIxRkFEIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxl
Z2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJzaXRlRGF0YVN0
b3JlRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFDODU4MTkxRjUx
MERFRTAwNjVFMDg1IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlU3RvcmFnZUVuZ2luZUNhY2hlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEMTI5RDkxRjNEMTAxNDAwRDE1RTQ3IC8qIFdl
YkNhY2hlU3RvcmFnZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNhY2hlU3RvcmFnZVBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDVDNkQ4MjM4RUIyMEQw
MEI5QjNDQiAvKiBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQ1QzZEOTIzOEVCMjBFMDBCOUIzQ0IgLyogU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0MURDNDU5NDFFM0Q2RTFFMDBCMTFGNTEgLyogTmV0d29ya1JU
Q1Byb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtSVENQ
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MURDNDU5NTFFM0Q2RTFF
MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtSVENQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxREM0NTk4MUUzRDZFRDYwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlk
ZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmV0d29ya1JUQ1Byb3ZpZGVy
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzQ2OCw2ICs3NDcw
LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTQxNTE4NTM2MjIyNzA0RjYwMDU0MzBDNiAvKiBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCAqLywKIAkJCQk0MTUxODUzNTIyMjcwNEY1MDA1NDMw
QzYgLyogU2VydmljZVdvcmtlckZldGNoVGFzay5oICovLAorCQkJCTQxRDVDNkQ5MjM4RUIyMEUw
MEI5QjNDQiAvKiBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgKi8sCisJCQkJNDFE
NUM2RDgyMzhFQjIwRDAwQjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgg
Ki8sCiAJCQkJNDE1MTg1MzgyMjI3MEY1MzAwNTQzMEM2IC8qIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2subWVzc2FnZXMuaW4gKi8sCiAJCQkJOTNCQTA0REYyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNX
T3JpZ2luU3RvcmUuY3BwICovLAogCQkJCTkzQkEwNERFMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJT
V09yaWdpblN0b3JlLmggKi8sCkBAIC05ODIwLDcgKzk4MjQsNiBAQAogCQkJCTUxMUY4QTdCMTM4
QjQ2MDkwMEE5NUY0NCAvKiBTZWNJdGVtU2hpbUxpYnJhcnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxOEU2OTBDMTY5QjU2M0YwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMThFNjkxODE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKLQkJCQk3QUE3NDZENTIzNTkzRDgxMDAwOTUwNTAgLyog
U2VjSXRlbVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcwQUI4RjMyMEFFM0JENzAwQjhCRTg3
IC8qIFNlY0tleVByb3h5U3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEQ5RjU3MTkxMTlE
MzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RkRFNjVBMTk1NEE0MkIwMEM0OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGVjZjdhM2JmMWJmYTg5MzM1
MTFmMDNmNzEzNzBlODViYzcyNTE2OGQuLjJkZDc1Y2MwZTgwOWNiZTIyNWJhMTkwMGQ2ODg2NGI5
NmJhOTA0NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTI1Niwx
MSArMjU2LDYgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZmlyZUFjdGl2
YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWQKICAgICBTV0NvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5maXJlQWN0aXZhdGVFdmVudChpZGVudGlmaWVyKTsKIH0KIAotdm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c29mdFVwZGF0ZShXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQotewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnNvZnRVcGRhdGUoaWRlbnRpZmllcik7Ci19Ci0KIHZvaWQgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyKQogewogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1p
bmF0ZVdvcmtlcihpZGVudGlmaWVyLCBTV0NvbnRleHRNYW5hZ2VyOjp3b3JrZXJUZXJtaW5hdGlv
blRpbWVvdXQsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXgg
Mjk3MzUxZjJiODZiODJkODQzYTBlZWFjMTE0MDEwNmM2ZTIyNmI0OS4uNjk5MDMzMmVhN2VkOGM5
NzRiOTM5YzU0Y2Y4ZTE3NzkzMjcwMmI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oCkBAIC05MCw3ICs5MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKTsKICAgICB2b2lkIGZpcmVJbnN0
YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgZmly
ZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAgIHZv
aWQgc29mdFVwZGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9p
ZCB0ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAg
IHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRl
V29ya2VyRGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDFiZTI5YWFh
ZDk3ODcxNGU0YjQyMTc1YjJhOTdjNDg2NjcwZWZjMDYuLjFkMzM5Y2NiMTUxYTYxNGY5ZTAyYzY5
YjQwY2Y0YjkxZmEyNmMyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCkBAIC0zMCw3ICszMCw2IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIFBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRl
bnRpZmllciwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2Us
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEgc291cmNlRGF0YSkKICAgICBGaXJl
SW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiAgICAgRmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllcikKLSAgICBTb2Z0VXBkYXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU3luY1Rlcm1pbmF0ZVdvcmtlcihXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKSAtPiAoKSBTeW5jaHJvbm91cwog
ICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgY2xpZW50SWRSZXF1
ZXN0SWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+
IGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy93b3JrZXItaW1wb3J0U2NyaXB0cy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvd29ya2VyLWltcG9ydFNjcmlwdHMtZXhwZWN0ZWQu
dHh0CmluZGV4IDMxNzFkYjgxMWVmNmVlZWUxMDUzNzU3ZjEwYTg0ZmFmZjExZDVhYjcuLmExMmJm
ZDI2NzcwMmI4YWQ3NDVkYWYxZDkwMWE0NDViYmQ4MzY2ZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd29ya2Vycy93b3JrZXItaW1wb3J0U2NyaXB0cy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRz
LWV4cGVjdGVkLnR4dApAQCAtMjQsNyArMjQsNyBAQCBMb2FkZWQgbWVzc2FnZSBmcm9tIGRpZmZl
cmVudCBvcmlnaW4KIExvYWRlZCByZXNvdXJjZSAyCiBQQVNTOiBhbGwgcmVzb3VyY2VzIGV4ZWN1
dGVkLgogTG9hZGVkIHJlc291cmNlIDEKLVBBU1M6IFRocmV3IE5ldHdvcmtFcnJvcjogRmFpbGVk
IHRvIGxvYWQgc2NyaXB0IHdoZW4gbG9hZCBmYWlsZWQKK1BBU1M6IFRocmV3IE5ldHdvcmtFcnJv
cjogUmVzcG9uc2UgaXMgbm90IDJ4eCB3aGVuIGxvYWQgZmFpbGVkCiBQQVNTOiBzb21lIHJlc291
cmNlcyB3ZXJlIGxvYWRlZCBkZXNwaXRlIHRoZSBuZXR3b3JrIGVycm9yCiBMb2FkZWQgcmVzb3Vy
Y2UgMQogUEFTUzogVGhyZXcgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgaWRlbnRpZmllciAnc3lu
dGF4JyB3aGVuIGVuY291bnRlcmluZyBhIHN5bnRheCBlcnJvciBpbiBpbXBvcnRlZCBzY3JpcHQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384480</attachid>
            <date>2019-11-28 23:10:35 -0800</date>
            <delta_ts>2019-12-03 01:37:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204678-20191129081033.patch</filename>
            <type>text/plain</type>
            <size>82613</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU0NjQ4MzhhNGU3ZDU1
NWI1MmI5MzliYTVjN2VmNTRkY2YzYmZhNy4uN2JlZDU2NWNmYTEzYmFlNTJlNzZmODJlODA0MDFm
MWQ3YWYyMDJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE5LTExLTI4ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHNvZnQgdXBkYXRl
IGhhbmRsaW5nIHRvIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0Njc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OnZhbGlkYXRlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc0VxdWl2YWxlbnQgY29uc3QpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24pOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZFJlc29sdmVSZWdpc3RyYXRp
b25Qcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpTV1NlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25Kb2IpOgorICAgICAgICAoV2ViQ29yZTo6b3Jp
Z2luVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OmdldFJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnJ1
blVwZGF0ZUpvYik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpv
YlF1ZXVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjplbnF1ZXVlSm9i
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJl
Z2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2V0
VXBkYXRlVmlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246
OnNvZnRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNj
aGVkdWxlU29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRp
b246OnNjb3BlVVJMV2l0aG91dEZyYWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyUmVnaXN0cmF0aW9uOjpzY3JpcHRVUkwgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisKKzIwMTktMTEt
MjcgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFNXU2VydmVy
OjpzY3JpcHRGZXRjaEZpbmlzaGVkIGRvZXMgbm90IG5lZWQgYSBDb25uZWN0aW9uIGFzIHBhcmFt
ZXRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0
NjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
Y2hhbmdlIG9mIGJlaGF2aW9yLCByZW1vdmluZyBhbiB1bnVzZWQgcGFyYW1ldGVyLgorCisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c3RhcnRTY3JpcHRGZXRjaCk6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZCk6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmg6CisKIDIwMTktMTEtMjYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIEFjdGl2ZURPTU9i
amVjdDo6c2hvdWxkUHJldmVudEVudGVyaW5nQmFja0ZvcndhcmRDYWNoZV9ERVBSRUNBVEVEKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggM2FjYTJhOGVhMDA1ZTExNTZkNzliNjUyNWIzY2JjMThjNDA3ODc0NC4uYWRm
ODgwNmZlNGIyOWM0YjU0NDFhMzYwMTNhNDNjYWRmZjViNjE3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw1MSBAQAorMjAxOS0xMS0yOCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgTW92ZSBzb2Z0IHVwZGF0ZSBoYW5kbGluZyB0byBuZXR3b3JrIHByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDY3OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
czo6c3dTZXJ2ZXJGb3JTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6YWRkU29mdFVwZGF0
ZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpyZW1vdmVTb2Z0VXBk
YXRlTG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKToKKyAgICAgICAgKFdlYktpdDo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpOgorICAgICAgICAo
V2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKToKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkTm90SGFuZGxlKToKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6Y29udGludWVGZXRjaFRhc2tXaXRoKToK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91dFRpbWVyRmly
ZWQpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzb2Z0VXBkYXRl
SWZOZWVkZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKFdl
YktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OlNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXI6On5TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpmYWlsKToKKyAgICAgICAgKFdlYktpdDo6U2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmxvYWRXaXRoQ2FjaGVFbnRyeSk6CisgICAgICAg
IChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpsb2FkRnJvbU5ldHdvcmsp
OgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6d2lsbFNl
bmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2
aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToK
KyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZEZhaWxM
b2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6IEFkZGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRjaFRhc2spOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAg
ICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIwMTktMTEtMjYgIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW1JlbmRlciB0cmVl
XSBBZGQgTEZDIGxpbmUgbGF5b3V0IHBhdGggdG8gUmVuZGVyQmxvY2tGbG93CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJOYW1lcy5pbiBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck5hbWVzLmluCmluZGV4IGQz
ZDk2NWU3YzNlNjdlYjU5YTFmZDEyY2IzM2NiNzFhODRhM2NlYTEuLjAxY2RlM2NiZjY3NDMxYjc2
MjU5MjEwMjY1NmJjNmZlMTU2MzI0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvSFRUUEhlYWRlck5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvSFRUUEhlYWRlck5hbWVzLmluCkBAIC04NCw2ICs4NCw3IEBAIFNlYy1XZWJT
b2NrZXQtS2V5CiBTZWMtV2ViU29ja2V0LVByb3RvY29sCiBTZWMtV2ViU29ja2V0LVZlcnNpb24K
IFNlcnZlci1UaW1pbmcKK1NlcnZpY2UtV29ya2VyCiBTZXJ2aWNlLVdvcmtlci1BbGxvd2VkCiBT
ZXQtQ29va2llCiBTZXQtQ29va2llMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwCmluZGV4IDIyOGYzZDE3ZmYwMDIyZTYyZTYzNjQ1MzJkNTU2Yjk1MDdh
MDE4ZjIuLjMxZGQ4YTk4ZThmMTQ3YmEyMjNmYzMxODY0YjY2YmEyOWM5NjQxZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTE1MywyMyAr
MTUzLDI4IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IFdvcmtlclNjcmlwdExv
YWRlcjo6Y3JlYXRlUmVzb3VyY2VSZXF1ZXN0KGNvbnN0CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9
CiAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK1Jlc291
cmNlRXJyb3IgV29ya2VyU2NyaXB0TG9hZGVyOjp2YWxpZGF0ZVdvcmtlclJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRl
c3RpbmF0aW9uKQogewotICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIC8gMTAwICE9
IDIgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkgewotICAgICAgICBtX2ZhaWxlZCA9IHRy
dWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCkgLyAxMDAgIT0gMiAmJiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKQorICAgICAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3Bv
bnNlLnVybCgpLCAiUmVzcG9uc2UgaXMgbm90IDJ4eCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6
R2VuZXJhbCB9OwogCiAgICAgaWYgKCFpc1NjcmlwdEFsbG93ZWRCeU5vc25pZmYocmVzcG9uc2Up
KSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0byBleGVj
dXRlICIsIHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAi
IGFzIHNjcmlwdCBiZWNhdXNlIFwiWC1Db250ZW50LVR5cGU6IG5vc25pZmZcIiB3YXMgZ2l2ZW4g
YW5kIGl0cyBDb250ZW50LVR5cGUgaXMgbm90IGEgc2NyaXB0IE1JTUUgdHlwZS4iKTsKLSAgICAg
ICAgbV9lcnJvciA9IFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAw
LCB1cmwoKSwgbWVzc2FnZSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9OwotICAgICAg
ICBtX2ZhaWxlZCA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIFJlc291
cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwg
V1RGTW92ZShtZXNzYWdlKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9OwogICAgIH0K
IAotICAgIGlmIChzaG91bGRCbG9ja1Jlc3BvbnNlRHVlVG9NSU1FVHlwZShyZXNwb25zZSwgbV9k
ZXN0aW5hdGlvbikpIHsKKyAgICBpZiAoc2hvdWxkQmxvY2tSZXNwb25zZUR1ZVRvTUlNRVR5cGUo
cmVzcG9uc2UsIGRlc3RpbmF0aW9uKSkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VT
dHJpbmcoIlJlZnVzZWQgdG8gZXhlY3V0ZSAiLCByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgoKSwgIiBhcyBzY3JpcHQgYmVjYXVzZSAiLCByZXNwb25zZS5taW1l
VHlwZSgpLCAiIGlzIG5vdCBhIHNjcmlwdCBNSU1FIHR5cGUuIik7Ci0gICAgICAgIG1fZXJyb3Ig
PSBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2Uu
dXJsKCksIG1lc3NhZ2UsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsKKyAgICAgICAg
cmV0dXJuIFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNw
b25zZS51cmwoKSwgV1RGTW92ZShtZXNzYWdlKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJh
bCB9OworICAgIH0KKworICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgV29ya2VyU2NyaXB0TG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBtX2Vycm9yID0gdmFsaWRhdGVXb3Jr
ZXJSZXNwb25zZShyZXNwb25zZSwgbV9kZXN0aW5hdGlvbik7CisgICAgaWYgKCFtX2Vycm9yLmlz
TnVsbCgpKSB7CiAgICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCmluZGV4IDlh
MGY0ODc4MGM3YzgxZjdiYTM3YmUyNGQ2Nzg0NzcyOThlNDE1NDguLmU1MTQ2YTU3YjVjN2Y5NzQ5
MjZhYTgzZDEwZDdmNTk4YmZmODdmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuaApAQCAtNzcsNiArNzcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNh
bmNlbCgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlc291cmNlRXJyb3IgdmFsaWRh
dGVXb3JrZXJSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRmV0Y2hPcHRpb25zOjpE
ZXN0aW5hdGlvbik7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6UmVmQ291bnRl
ZDxXb3JrZXJTY3JpcHRMb2FkZXI+OwogICAgIGZyaWVuZCBzdHJ1Y3Qgc3RkOjpkZWZhdWx0X2Rl
bGV0ZTxXb3JrZXJTY3JpcHRMb2FkZXI+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCmluZGV4IGM2ZDJhMjhkMjhjZDdlYmNmYjE0
NTA2MjU4YzNjN2FlZmQyOTVhOTAuLmU5ZjBjMTRiNzc4YzYwOWMyNzhiOWZhMWQ4MjA5OTBkZWRk
NmJkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYi5jcHAKQEAgLTExMyw0NiArMTEzLDQ1IEBAIHZvaWQgU2VydmljZVdvcmtlckpv
Yjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBGCiAgICAgbV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShjb250ZXh0LCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlvbnMpLCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZv
cmNlbWVudDo6RG9Ob3RFbmZvcmNlLCBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUsICp0aGlzKTsK
IH0KIAotdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQg
bG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZXNvdXJjZUVycm9yIFNl
cnZpY2VXb3JrZXJKb2I6OnZhbGlkYXRlU2VydmljZVdvcmtlclJlc3BvbnNlKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKIHsKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJy
ZW50KCkpOwotICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwotICAgIEFTU0VSVChtX3NjcmlwdExv
YWRlcik7Ci0KICAgICAvLyBFeHRyYWN0IGEgTUlNRSB0eXBlIGZyb20gdGhlIHJlc3BvbnNlJ3Mg
aGVhZGVyIGxpc3QuIElmIHRoaXMgTUlNRSB0eXBlIChpZ25vcmluZyBwYXJhbWV0ZXJzKSBpcyBu
b3QgYSBKYXZhU2NyaXB0IE1JTUUgdHlwZSwgdGhlbjoKLSAgICBpZiAoIU1JTUVUeXBlUmVnaXN0
cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKSB7
Ci0gICAgICAgIG1fc2NyaXB0TG9hZGVyLT5jYW5jZWwoKTsKLSAgICAgICAgbV9zY3JpcHRMb2Fk
ZXIgPSBudWxscHRyOwotCi0gICAgICAgIC8vIEludm9rZSBSZWplY3QgSm9iIFByb21pc2Ugd2l0
aCBqb2IgYW5kICJTZWN1cml0eUVycm9yIiBET01FeGNlcHRpb24uCi0gICAgICAgIEV4Y2VwdGlv
biBleGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiTUlNRSBUeXBlIGlzIG5vdCBhIEphdmFTY3Jp
cHQgTUlNRSB0eXBlIl9zIH07Ci0gICAgICAgIC8vIEFzeW5jaHJvbm91c2x5IGNvbXBsZXRlIHRo
ZXNlIHN0ZXBzIHdpdGggYSBuZXR3b3JrIGVycm9yLgotICAgICAgICBSZXNvdXJjZUVycm9yIGVy
cm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksICJVbmV4
cGVjdGVkIE1JTUUgdHlwZSJfcyB9OwotICAgICAgICBtX2NsaWVudC5qb2JGYWlsZWRMb2FkaW5n
U2NyaXB0KCp0aGlzLCBXVEZNb3ZlKGVycm9yKSwgV1RGTW92ZShleGNlcHRpb24pKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVk
SmF2YVNjcmlwdE1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKQorICAgICAgICByZXR1cm4g
eyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgIk1JTUUgVHlw
ZSBpcyBub3QgYSBKYXZhU2NyaXB0IE1JTUUgdHlwZSJfcyB9OwogCiAgICAgU3RyaW5nIHNlcnZp
Y2VXb3JrZXJBbGxvd2VkID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpTZXJ2aWNlV29ya2VyQWxsb3dlZCk7CiAgICAgU3RyaW5nIG1heFNjb3BlU3RyaW5nOwogICAg
IGlmIChzZXJ2aWNlV29ya2VyQWxsb3dlZC5pc051bGwoKSkgewotICAgICAgICBTdHJpbmcgcGF0
aCA9IG1fam9iRGF0YS5zY3JpcHRVUkwucGF0aCgpOworICAgICAgICBTdHJpbmcgcGF0aCA9IGpv
YkRhdGEuc2NyaXB0VVJMLnBhdGgoKTsKICAgICAgICAgLy8gTGFzdCBwYXJ0IG9mIHRoZSBwYXRo
IGlzIHRoZSBzY3JpcHQncyBmaWxlbmFtZS4KICAgICAgICAgbWF4U2NvcGVTdHJpbmcgPSBwYXRo
LnN1YnN0cmluZygwLCBwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBhdXRvIG1heFNjb3BlID0gVVJMKG1fam9iRGF0YS5zY3JpcHRVUkwsIHNlcnZpY2VX
b3JrZXJBbGxvd2VkKTsKLSAgICAgICAgaWYgKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobWF4U2Nv
cGUpLT5pc1NhbWVPcmlnaW5BcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fam9iRGF0YS5zY3Jp
cHRVUkwpKSkKKyAgICAgICAgYXV0byBtYXhTY29wZSA9IFVSTChqb2JEYXRhLnNjcmlwdFVSTCwg
c2VydmljZVdvcmtlckFsbG93ZWQpOworICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShtYXhTY29wZSktPmlzU2FtZU9yaWdpbkFzKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0
YS5zY3JpcHRVUkwpKSkKICAgICAgICAgICAgIG1heFNjb3BlU3RyaW5nID0gbWF4U2NvcGUucGF0
aCgpOwogICAgIH0KIAotICAgIFN0cmluZyBzY29wZVN0cmluZyA9IG1fam9iRGF0YS5zY29wZVVS
TC5wYXRoKCk7Ci0gICAgaWYgKHNjb3BlU3RyaW5nLnN0YXJ0c1dpdGgobWF4U2NvcGVTdHJpbmcp
KQorICAgIFN0cmluZyBzY29wZVN0cmluZyA9IGpvYkRhdGEuc2NvcGVVUkwucGF0aCgpOworICAg
IGlmICghc2NvcGVTdHJpbmcuc3RhcnRzV2l0aChtYXhTY29wZVN0cmluZykpCisgICAgICAgIHJl
dHVybiB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCAiU2Nv
cGUgVVJMIHNob3VsZCBzdGFydCB3aXRoIHRoZSBnaXZlbiBzY3JpcHQgVVJMIl9zIH07CisKKyAg
ICByZXR1cm4geyB9OworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmRpZFJlY2VpdmVSZXNw
b25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sK
KyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OworICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOworICAgIEFTU0VSVChtX3NjcmlwdExvYWRlcik7
CisKKyAgICBhdXRvIGVycm9yID0gdmFsaWRhdGVTZXJ2aWNlV29ya2VyUmVzcG9uc2UobV9qb2JE
YXRhLCByZXNwb25zZSk7CisgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX3NjcmlwdExvYWRlci0+Y2FuY2VsKCk7CiAgICAgbV9zY3JpcHRMb2FkZXIgPSBu
dWxscHRyOwogCi0gICAgRXhjZXB0aW9uIGV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJTY29w
ZSBVUkwgc2hvdWxkIHN0YXJ0IHdpdGggdGhlIGdpdmVuIHNjcmlwdCBVUkwiX3MgfTsKLSAgICBS
ZXNvdXJjZUVycm9yIGVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9u
c2UudXJsKCksICJTY29wZSBVUkwgc2hvdWxkIHN0YXJ0IHdpdGggdGhlIGdpdmVuIHNjcmlwdCBV
UkwiX3MgfTsKKyAgICBFeGNlcHRpb24gZXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgZXJyb3Iu
bG9jYWxpemVkRGVzY3JpcHRpb24oKSB9OwogICAgIG1fY2xpZW50LmpvYkZhaWxlZExvYWRpbmdT
Y3JpcHQoKnRoaXMsIFdURk1vdmUoZXJyb3IpLCBXVEZNb3ZlKGV4Y2VwdGlvbikpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpv
Yi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaApp
bmRleCA3ZGJiN2QzYmFjZTIwZTNjYWVkNzYyNjE5ZTg4NGZjZjVkMDg3NGFiLi45M2E0NzRjMmM2
YjVlOWVhN2IxNjNlYjEwNjZiMjViM2FjZjQ5ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmgKQEAgLTcwLDYgKzcwLDggQEAgcHVi
bGljOgogCiAgICAgYm9vbCBjYW5jZWxQZW5kaW5nTG9hZCgpOwogCisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlc291cmNlRXJyb3IgdmFsaWRhdGVTZXJ2aWNlV29ya2VyUmVzcG9uc2UoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisKIHBy
aXZhdGU6CiAgICAgLy8gV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckpvYkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcAppbmRleCA0N2E3OWYwYTNmNzY2ZGQ1ZTU0ODIxYTli
MmVkMjMyNTVkNmNmNDFlLi5hMGYzNjQ1OGZiZjZkOWRiMTZlNjgxYjE5ZjcxMDgxYWNhZjdkYTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckpvYkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5jcHAKQEAgLTY3LDYgKzY3LDI1IEBAIFNlcnZpY2VXb3JrZXJKb2JEYXRh
IFNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKKy8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNkZm4t
am9iLWVxdWl2YWxlbnQKK2Jvb2wgU2VydmljZVdvcmtlckpvYkRhdGE6OmlzRXF1aXZhbGVudChj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKSBjb25zdAoreworICAgIGlmICh0eXBlICE9
IGpvYi50eXBlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsK
KyAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjoKKyAgICBjYXNlIFNlcnZp
Y2VXb3JrZXJKb2JUeXBlOjpVcGRhdGU6CisgICAgICAgIHJldHVybiBzY29wZVVSTCA9PSBqb2Iu
c2NvcGVVUkwKKyAgICAgICAgICAgICYmIHNjcmlwdFVSTCA9PSBqb2Iuc2NyaXB0VVJMCisgICAg
ICAgICAgICAmJiByZWdpc3RyYXRpb25PcHRpb25zLnR5cGUgPT0gam9iLnJlZ2lzdHJhdGlvbk9w
dGlvbnMudHlwZQorICAgICAgICAgICAgJiYgcmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFD
YWNoZSA9PSBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZTsKKyAgICBjYXNl
IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVbnJlZ2lzdGVyOgorICAgICAgICByZXR1cm4gc2NvcGVV
UkwgPT0gam9iLnNjb3BlVVJMOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JE
YXRhLmgKaW5kZXggYzIwODUzN2YwODUzNzUyZmExMmE5Y2E5MGM3Yjc0ODMzZjU3ZTEyZC4uNWYz
MzdjYmFhODM5MTZlNWFlMzFkYzI3MDc3OWEwYTQxMWEwOWM0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgKQEAgLTQ2
LDYgKzQ2LDggQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsKIAogICAgIFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXI7IH0KIAorICAgIGJvb2wgaXNFcXVp
dmFsZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgY29uc3Q7CisKICAgICBVUkwgc2Ny
aXB0VVJMOwogICAgIFVSTCBjbGllbnRDcmVhdGlvblVSTDsKICAgICBTZWN1cml0eU9yaWdpbkRh
dGEgdG9wT3JpZ2luOwpAQCAtNTYsNyArNTgsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRh
dGEgewogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zIHJlZ2lzdHJhdGlvbk9w
dGlvbnM7CiAKICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KLSAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJlZ2lzdHJhdGlv
bktleSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkgcmVnaXN0cmF0aW9uS2V5KCkgY29uc3Q7CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGEg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggZjIx
ODkwNzBlYWI3OGQ4YzUyNzkxYjNiNWRlMzA0YzBmNTNkMjNjNy4uMTE2YmJiNGZmNzljYWNlZWZk
NzkwMjViZDNjYzhhNzIwMzM5NjhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcApAQCAtNDYs
OCArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKTsKIAotY29uc3QgU2Vjb25kcyBzb2Z0VXBk
YXRlRGVsYXkgeyAxX3MgfTsKLQogUmVmPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFJlZjxTZXJ2aWNlV29ya2VyQ29udGFpbmVyPiYmIGNvbnRhaW5lciwgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiBkYXRhKQogewogICAgIGlmIChhdXRvKiByZWdpc3Ry
YXRpb24gPSBjb250YWluZXItPnJlZ2lzdHJhdGlvbihkYXRhLmlkZW50aWZpZXIpKSB7CkBAIC02
Miw3ICs2MCw2IEBAIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29uCiAgICAgOiBBY3RpdmVET01PYmpl
Y3QoJmNvbnRleHQpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbkRhdGEoV1RGTW92ZShyZWdpc3RyYXRp
b25EYXRhKSkKICAgICAsIG1fY29udGFpbmVyKFdURk1vdmUoY29udGFpbmVyKSkKLSAgICAsIG1f
c29mdFVwZGF0ZVRpbWVyKFt0aGlzXSB7IHNvZnRVcGRhdGUoKTsgfSkKIHsKICAgICBMT0coU2Vy
dmljZVdvcmtlciwgIkNyZWF0aW5nIHJlZ2lzdHJhdGlvbiAlcCBmb3IgcmVnaXN0cmF0aW9uIGtl
eSAlcyIsIHRoaXMsIG1fcmVnaXN0cmF0aW9uRGF0YS5rZXkubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwpAQCAtMTU2LDI4ICsxNTMsNiBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnVwZGF0ZShSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiAgICAgbV9jb250YWluZXItPnVwZGF0ZVJlZ2lzdHJhdGlvbihtX3JlZ2lz
dHJhdGlvbkRhdGEuc2NvcGVVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCksIFdvcmtlclR5
cGU6OkNsYXNzaWMsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi0vLyBUbyBhdm9pZCBzY2hlZHVs
aW5nIG1hbnkgdXBkYXRlcyBkdXJpbmcgYSBzaW5nbGUgcGFnZSBsb2FkLCB3ZSBkbyBzb2Z0IHVw
ZGF0ZXMgb24gYSAxIHNlY29uZCBkZWxheSBhbmQga2VlcCBkZWxheWluZwotLy8gYXMgbG9uZyBh
cyBzb2Z0IHVwZGF0ZSByZXF1ZXN0cyBrZWVwIGNvbWluZy4gVGhpcyBzZWVtcyB0byBtYXRjaCBD
aHJvbWUncyBiZWhhdmlvci4KLXZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c2NoZWR1
bGVTb2Z0VXBkYXRlKCkKLXsKLSAgICBpZiAobV9zb2Z0VXBkYXRlVGltZXIuaXNBY3RpdmUoKSkK
LSAgICAgICAgbV9zb2Z0VXBkYXRlVGltZXIuc3RvcCgpOwotICAgIG1fc29mdFVwZGF0ZVRpbWVy
LnN0YXJ0T25lU2hvdChzb2Z0VXBkYXRlRGVsYXkpOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb246OnNvZnRVcGRhdGUoKQotewotICAgIGlmIChtX2lzU3RvcHBlZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgYXV0byogbmV3ZXN0V29ya2VyID0gZ2V0TmV3ZXN0V29ya2VyKCk7
Ci0gICAgaWYgKCFuZXdlc3RXb3JrZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIEZJWE1F
OiBTdXBwb3J0IHdvcmtlciB0eXBlcy4KLSAgICBtX2NvbnRhaW5lci0+dXBkYXRlUmVnaXN0cmF0
aW9uKG1fcmVnaXN0cmF0aW9uRGF0YS5zY29wZVVSTCwgbmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwo
KSwgV29ya2VyVHlwZTo6Q2xhc3NpYywgbnVsbHB0cik7Ci19Ci0KIHZvaWQgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbjo6dW5yZWdpc3RlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Up
CiB7CiAgICAgaWYgKG1faXNTdG9wcGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaAppbmRleCAxOTFm
YTQwYjhmYTc3ZDI5MmIxM2RjZDFmMmFkNWRmNzFhYzRmNzBlLi42YjgwNjhlZDU0OGYyYjg4NTJi
NzJlMTczNDI0MDdmMzRkMjBjMmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKQEAgLTY4LDggKzY4
LDYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwog
ICAgIHZvaWQgdW5yZWdpc3RlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAotICAgIHZvaWQg
c2NoZWR1bGVTb2Z0VXBkYXRlKCk7Ci0KICAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CiAgICAg
dXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAgICAgCkBAIC04Nyw4ICs4NSw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRl
cmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIHZvaWQgc29mdFVwZGF0
ZSgpOwotCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbikgZmluYWw7CkBAIC0xMDYsNyArMTAyLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRGaXJlVXBkYXRlRm91bmRF
dmVudFVwb25SZXN1bWluZyB7IGZhbHNlIH07CiAgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPj4gbV9wZW5kaW5nQWN0aXZpdHlGb3JFdmVudERpc3Bh
dGNoOwotICAgIFRpbWVyIG1fc29mdFVwZGF0ZVRpbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCBhNmRlN2QyZTM5MzA1NDdkYzhkOGRh
NWEyOTAwODFhMDlmMDIyZGZlLi5lMmQ4MTFiYWM3MjI4Mjg3YzdkY2RjZmNlMTQ4OGVlNDIzMDJk
N2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTA4LDE1ICsxMDgsNiBAQCB2b2lkIFNX
Q29udGV4dE1hbmFnZXI6OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiAgICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkuZmlyZUFjdGl2YXRlRXZl
bnQoKTsKIH0KIAotdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzb2Z0VXBkYXRlKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byogc2VydmljZVdvcmtlciA9IG1f
d29ya2VyTWFwLmdldChpZGVudGlmaWVyKTsKLSAgICBpZiAoIXNlcnZpY2VXb3JrZXIpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnNvZnRVcGRhdGUoKTsK
LX0KLQogdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBzZXJ2aWNlV29ya2VyID0gbV93b3Jr
ZXJNYXAudGFrZShpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCA0OTM0NjNlY2E5
OWZlZWY5NTExNmUxOTA2N2I2ZTk4Y2NkOTBmNDBhLi5iYTJiY2U0ZTQ2ZGE3NWVlMmZiOTYzOTIz
OTAwYWM0NDMyOWRiYWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC04Myw3ICs4Myw2IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2Vy
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYmLCBTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNvZnRVcGRhdGUoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlV29y
a2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQsIEZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAKICAgICB2b2lkIGZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFdU
Rjo6RnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkmKT4mKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyRmV0Y2guY3BwCmluZGV4IDQ0OTY5YWYwNmY0ZjhjMWU3N2E1YzFlYmE5ZmQ0YjAyMjNh
MDY3YTIuLjk3ODNhOWQ5ZTY3MWI3MmQxOTQ4ZTQyN2JjMTk0MzVmNTNmNGIxNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJG
ZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlckZldGNoLmNwcApAQCAtMTQwLDcgKzE0MCw2IEBAIHZvaWQgZGlzcGF0Y2hGZXRj
aEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIGds
b2JhbFNjCiAgICAgRmV0Y2hPcHRpb25zOjpSZWRpcmVjdCByZWRpcmVjdCA9IG9wdGlvbnMucmVk
aXJlY3Q7CiAKICAgICBib29sIGlzTmF2aWdhdGlvbiA9IG9wdGlvbnMubW9kZSA9PSBGZXRjaE9w
dGlvbnM6Ok1vZGU6Ok5hdmlnYXRlOwotICAgIGJvb2wgaXNOb25TdWJyZXNvdXJjZVJlcXVlc3Qg
PSBXZWJDb3JlOjppc05vblN1YnJlc291cmNlUmVxdWVzdChvcHRpb25zLmRlc3RpbmF0aW9uKTsK
IAogICAgIEFTU0VSVChnbG9iYWxTY29wZS5yZWdpc3RyYXRpb24oKS5hY3RpdmUoKSk7CiAgICAg
QVNTRVJUKGdsb2JhbFNjb3BlLnJlZ2lzdHJhdGlvbigpLmFjdGl2ZSgpLT5pZGVudGlmaWVyKCkg
PT0gZ2xvYmFsU2NvcGUudGhyZWFkKCkuaWRlbnRpZmllcigpKTsKQEAgLTE4OCwxMCArMTg3LDYg
QEAgdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQsIFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2MKICAgICB9CiAKICAgICBnbG9iYWxTY29wZS51cGRh
dGVFeHRlbmRlZEV2ZW50c1NldChldmVudC5wdHIoKSk7Ci0KLSAgICBhdXRvJiByZWdpc3RyYXRp
b24gPSBnbG9iYWxTY29wZS5yZWdpc3RyYXRpb24oKTsKLSAgICBpZiAoaXNOb25TdWJyZXNvdXJj
ZVJlcXVlc3QgfHwgcmVnaXN0cmF0aW9uLm5lZWRzVXBkYXRlKCkpCi0gICAgICAgIHJlZ2lzdHJh
dGlvbi5zY2hlZHVsZVNvZnRVcGRhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgU2VydmljZVdv
cmtlckZldGNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGU0ZWVjYTBmYWE5N2Fh
OTZiMjlhMzg0N2EwMzNjYWE2NTMzZTZmNGMuLjA0ZTljODg0ZWE1ZjBhNDFlZmNhYzQ4MGVhNjdm
MjNjZWMxMmViOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0xNzUsMTQgKzE3
NSw2IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6ZmlyZUFjdGl2YXRlRXZlbnQoKQogICAg
IH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnNvZnRVcGRhdGUoKQotewotICAg
IHJ1bkxvb3AoKS5wb3N0VGFzayhbXShhdXRvJiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAg
YXV0byYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckds
b2JhbFNjb3BlPihjb250ZXh0KTsKLSAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnJl
Z2lzdHJhdGlvbigpLnNjaGVkdWxlU29mdFVwZGF0ZSgpOwotICAgIH0pOwotfQotCiB2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpCiB7CiAgICAgbV9k
b2VzSGFuZGxlRmV0Y2ggPSB3b3JrZXJHbG9iYWxTY29wZSgpLT5oYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkuZmV0Y2hFdmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggMDcz
Y2Q2MjI2MzNiNWI1ZjYxZTNhOTBiNGRjOGYwNjZmN2UzMjFmOC4uYTQyNTc5ZmQ4ZGU1MWU5NGRm
MDQ4ZjNhZmZiZjRhODBkNTZjMzMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtNjEs
NyArNjEsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoKTsKICAgICB2
b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7Ci0gICAgdm9pZCBzb2Z0VXBkYXRlKCk7CiAKICAgICBj
b25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGNvbnRleHREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5jcHAKaW5kZXggYzc2NGJhYTk5ZTczZTdkZmFmMzE4MTc1MWQ1NTg5ZDU3
ZDYyYmYwOS4uNmU0NDBkNjI1YjU4Zjc5MWFhZDZlNTQzODYwNzkyYmUzYjk3NzI3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAK
QEAgLTI4OCwxMiArMjg4LDEyIEBAIHZvaWQgU1dTZXJ2ZXI6OmNsZWFyKGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyCiAKIHZvaWQgU1dT
ZXJ2ZXI6OkNvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2Vy
dmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCiB7Ci0gICAgbV9zZXJ2ZXIuc2NyaXB0RmV0
Y2hGaW5pc2hlZCgqdGhpcywgcmVzdWx0KTsKKyAgICBtX3NlcnZlci5zY3JpcHRGZXRjaEZpbmlz
aGVkKHJlc3VsdCk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZFJlc29sdmVS
ZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtl
eSkKIHsKLSAgICBtX3NlcnZlci5kaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSgqdGhpcywg
a2V5KTsKKyAgICBtX3NlcnZlci5kaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSh0aGlzLCBr
ZXkpOwogfQogCiB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjphZGRTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllcikKQEAgLTMxMiwxMSArMzEyLDEyIEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246
OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllCiAg
ICAgICAgIG1fc2VydmVyLnN5bmNUZXJtaW5hdGVXb3JrZXIoKndvcmtlcik7CiB9CiAKLVNXU2Vy
dmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwgYm9v
bCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRh
dGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENyZWF0ZUNvbnRleHRD
b25uZWN0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK1NXU2VydmVyOjpTV1NlcnZlcihVbmlxdWVS
ZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwgYm9vbCBwcm9jZXNzVGVybWluYXRpb25E
ZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNvZnRVcGRhdGVDYWxsYmFjayYmIHNvZnRVcGRhdGVDYWxs
YmFjaywgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIDog
bV9vcmlnaW5TdG9yZShXVEZNb3ZlKG9yaWdpblN0b3JlKSkKICAgICAsIG1fc2Vzc2lvbklEKHNl
c3Npb25JRCkKICAgICAsIG1faXNQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQocHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKQogICAgICwgbV9jcmVhdGVDb250ZXh0Q29ubmVjdGlv
bkNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQorICAgICwgbV9zb2Z0VXBkYXRlQ2FsbGJhY2so
V1RGTW92ZShzb2Z0VXBkYXRlQ2FsbGJhY2spKQogewogICAgIEFTU0VSVCghcmVnaXN0cmF0aW9u
RGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpIHx8IG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkp
OwogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKQEAgLTMzMSwxNiArMzMyLDI2
IEBAIFNXU2VydmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5T
dG9yZSwgYm9vbCBwcm9jZXNzVGVybWluYXRpCiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2Vy
dmljZVdvcmtlci8jc2NoZWR1bGUtam9iLWFsZ29yaXRobQogdm9pZCBTV1NlcnZlcjo6c2NoZWR1
bGVKb2IoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogewotICAgIEFTU0VSVChtX2Nv
bm5lY3Rpb25zLmNvbnRhaW5zKGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSkpOwotCi0g
ICAgLy8gRklYTUU6IFBlciB0aGUgc3BlYywgY2hlY2sgaWYgdGhpcyBqb2IgaXMgZXF1aXZhbGVu
dCB0byB0aGUgbGFzdCBqb2Igb24gdGhlIHF1ZXVlLgotICAgIC8vIElmIGl0IGlzLCBzdGFjayBp
dCBhbG9uZyB3aXRoIHRoYXQgam9iLgorICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5z
KGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSkgfHwgam9iRGF0YS5jb25uZWN0aW9uSWRl
bnRpZmllcigpID09IFByb2Nlc3M6OmlkZW50aWZpZXIoKSk7CiAKICAgICBhdXRvJiBqb2JRdWV1
ZSA9ICptX2pvYlF1ZXVlcy5lbnN1cmUoam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgW3RoaXMs
ICZqb2JEYXRhXSB7CiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNXU2VydmVySm9iUXVldWU+
KCp0aGlzLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpKTsKICAgICB9KS5pdGVyYXRvci0+dmFs
dWU7CiAKLSAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKGpvYkRhdGEpOworICAgIGlmICgham9iUXVl
dWUuc2l6ZSgpKSB7CisgICAgICAgIGpvYlF1ZXVlLmVucXVldWVKb2IoV1RGTW92ZShqb2JEYXRh
KSk7CisgICAgICAgIGpvYlF1ZXVlLnJ1bk5leHRKb2IoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBhdXRvJiBsYXN0Sm9iID0gam9iUXVldWUubGFzdEpvYigpOworICAgIGlmIChqb2JE
YXRhLmlzRXF1aXZhbGVudChsYXN0Sm9iKSkgeworICAgICAgICAvLyBGSVhNRTogUGVyIHRoZSBz
cGVjLCBjaGVjayBpZiB0aGlzIGpvYiBpcyBlcXVpdmFsZW50IHRvIHRoZSBsYXN0IGpvYiBvbiB0
aGUgcXVldWUuCisgICAgICAgIC8vIElmIGl0IGlzLCBzdGFjayBpdCBhbG9uZyB3aXRoIHRoYXQg
am9iLiBGb3Igbm93LCB3ZSBqdXN0IG1ha2Ugc3VyZSB0byBub3QgY2FsbCBzb2Z0LXVwZGF0ZSB0
b28gb2Z0ZW4uCisgICAgICAgIGlmIChqb2JEYXRhLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5
cGU6OlVwZGF0ZSAmJiBqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6
aWRlbnRpZmllcigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGpvYlF1ZXVl
LmVucXVldWVKb2IoV1RGTW92ZShqb2JEYXRhKSk7CiAgICAgaWYgKGpvYlF1ZXVlLnNpemUoKSA9
PSAxKQogICAgICAgICBqb2JRdWV1ZS5ydW5OZXh0Sm9iKCk7CiB9CkBAIC0zNTksOCArMzcwLDEx
IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmIGpvYkRhdGEsIGNvbnN0CiB7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJS
ZXNvbHZlZCBTZXJ2aWNlV29ya2VyIGpvYiAlcyBpbiBzZXJ2ZXIgd2l0aCByZWdpc3RyYXRpb24g
JXMiLCBqb2JEYXRhLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
cmVnaXN0cmF0aW9uRGF0YS5pZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKICAgICBhdXRvKiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoam9iRGF0YS5jb25u
ZWN0aW9uSWRlbnRpZmllcigpKTsKLSAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAgaWYgKCFjb25u
ZWN0aW9uKSB7CisgICAgICAgIGlmIChzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgPT0gU2hvdWxk
Tm90aWZ5V2hlblJlc29sdmVkOjpZZXMgJiYgam9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigp
ID09IFByb2Nlc3M6OmlkZW50aWZpZXIoKSkKKyAgICAgICAgICAgIGRpZFJlc29sdmVSZWdpc3Ry
YXRpb25Qcm9taXNlKG51bGxwdHIsIHJlZ2lzdHJhdGlvbkRhdGEua2V5KTsKICAgICAgICAgcmV0
dXJuOworICAgIH0KIAogICAgIGNvbm5lY3Rpb24tPnJlc29sdmVSZWdpc3RyYXRpb25Kb2JJbkNs
aWVudChqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLCByZWdpc3RyYXRpb25EYXRh
LCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpOwogfQpAQCAtMzc0LDI2ICszODgsNjMgQEAgdm9p
ZCBTV1NlcnZlcjo6cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJK
b2JEYXRhJiBqb2JEYXRhLCBjb24KICAgICBjb25uZWN0aW9uLT5yZXNvbHZlVW5yZWdpc3RyYXRp
b25Kb2JJbkNsaWVudChqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLCByZWdpc3Ry
YXRpb25LZXksIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6c3Rh
cnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgRmV0Y2hP
cHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKK1VSTCBzdGF0aWMgaW5saW5lIG9yaWdpblVSTChj
b25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQoreworICAgIFVSTCB1cmw7CisgICAgdXJsLnNl
dFByb3RvY29sKG9yaWdpbi5wcm90b2NvbCgpKTsKKyAgICB1cmwuc2V0SG9zdChvcmlnaW4uaG9z
dCgpKTsKKyAgICBpZiAob3JpZ2luLnBvcnQoKSkKKyAgICAgICAgdXJsLnNldFBvcnQoKm9yaWdp
bi5wb3J0KCkpOworICAgIHJldHVybiB1cmw7Cit9CisKK3ZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2Ny
aXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIGJvb2wgc2hvdWxk
UmVmcmVzaENhY2hlKQogewogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmVyIGlzc3Vpbmcg
c3RhcnRTY3JpcHRGZXRjaCBmb3IgY3VycmVudCBqb2IgJXMgaW4gY2xpZW50Iiwgam9iRGF0YS5p
ZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGF1dG8qIGNv
bm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVy
KCkpOworICAgIGlmIChjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24tPnN0YXJ0U2Ny
aXB0RmV0Y2hJbkNsaWVudChqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLCBqb2JE
YXRhLnJlZ2lzdHJhdGlvbktleSgpLCBzaG91bGRSZWZyZXNoQ2FjaGUgPyBGZXRjaE9wdGlvbnM6
OkNhY2hlOjpOb0NhY2hlIDogRmV0Y2hPcHRpb25zOjpDYWNoZTo6RGVmYXVsdCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSA9
PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpIHsKKyAgICAgICAgQVNTRVJUKGpvYkRhdGEudHlwZSA9
PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlKTsKKyAgICAgICAgLy8gVGhpcyBpcyBhIHNv
ZnQtdXBkYXRlIGpvYiwgY3JlYXRlIGRpcmVjdGx5IGEgbmV0d29yayBsb2FkIHRvIGZldGNoIHRo
ZSBzY3JpcHQuCisgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0IHsgam9iRGF0YS5zY3Jp
cHRVUkwgfTsKKworICAgICAgICBhdXRvIHRvcE9yaWdpbiA9IGpvYkRhdGEudG9wT3JpZ2luLnNl
Y3VyaXR5T3JpZ2luKCk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShqb2JEYXRhLnNjcmlwdFVSTCk7CisKKyAgICAgICAgcmVxdWVzdC5zZXREb21haW5Gb3JD
YWNoZVBhcnRpdGlvbih0b3BPcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOworICAg
ICAgICByZXF1ZXN0LnNldEFsbG93Q29va2llcyh0cnVlKTsKKyAgICAgICAgcmVxdWVzdC5zZXRG
aXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5VUkwodG9wT3JpZ2luKSk7CisKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6Ok9yaWdpbiwgb3JpZ2luLT50
b1N0cmluZygpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OlNlcnZpY2VXb3JrZXIsICJzY3JpcHQiX3MpOworICAgICAgICByZXF1ZXN0LnNldEhU
VFBSZWZlcnJlcihvcmlnaW5VUkwob3JpZ2luKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFVz
ZXJBZ2VudChzZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KENsaWVudE9yaWdpbiB7IGpvYkRh
dGEudG9wT3JpZ2luLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRhdGEuc2NyaXB0VVJMKS0+
ZGF0YSgpIH0pKTsKKyAgICAgICAgcmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlv
cml0eTo6TG93KTsKKworICAgICAgICBtX3NvZnRVcGRhdGVDYWxsYmFjayhTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSB7IGpvYkRhdGEgfSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byYgcmVzdWx0KSB7Cisg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIHNjcmlwdEZldGNoRmluaXNoZWQocmVzdWx0KTsKKyAgICAgICAgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShjb25uZWN0aW9uLCAiSWYg
dGhlIGNvbm5lY3Rpb24gd2FzIGxvc3QsIHRoaXMgam9iIHNob3VsZCBoYXZlIGJlZW4gY2FuY2Vs
bGVkIik7Ci0gICAgaWYgKGNvbm5lY3Rpb24pCi0gICAgICAgIGNvbm5lY3Rpb24tPnN0YXJ0U2Ny
aXB0RmV0Y2hJbkNsaWVudChqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLCBqb2JE
YXRhLnJlZ2lzdHJhdGlvbktleSgpLCBjYWNoZVBvbGljeSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6
OnNjcmlwdEZldGNoRmluaXNoZWQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2Vydmlj
ZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCit2b2lkIFNXU2VydmVyOjpzY3JpcHRGZXRjaEZp
bmlzaGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQogewogICAgIExP
RyhTZXJ2aWNlV29ya2VyLCAiU2VydmVyIGhhbmRsaW5nIHNjcmlwdEZldGNoRmluaXNoZWQgZm9y
IGN1cnJlbnQgam9iICVzIGluIGNsaWVudCIsIHJlc3VsdC5qb2JEYXRhSWRlbnRpZmllci5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5j
b250YWlucyhyZXN1bHQuam9iRGF0YUlkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXIpKTsK
KyAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhyZXN1bHQuam9iRGF0YUlkZW50aWZp
ZXIuY29ubmVjdGlvbklkZW50aWZpZXIpIHx8IHJlc3VsdC5qb2JEYXRhSWRlbnRpZmllci5jb25u
ZWN0aW9uSWRlbnRpZmllciA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpOwogCiAgICAgYXV0byBq
b2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZXN1bHQucmVnaXN0cmF0aW9uS2V5KTsKICAgICBp
ZiAoIWpvYlF1ZXVlKQogICAgICAgICByZXR1cm47CiAKLSAgICBqb2JRdWV1ZS0+c2NyaXB0RmV0
Y2hGaW5pc2hlZChjb25uZWN0aW9uLCByZXN1bHQpOworICAgIGpvYlF1ZXVlLT5zY3JpcHRGZXRj
aEZpbmlzaGVkKHJlc3VsdCk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnNjcmlwdENvbnRleHRGYWls
ZWRUb1N0YXJ0KGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4m
IGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlcldvcmtlciYgd29ya2VyLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCkBAIC01MTcsOSArNTY4LDkgQEAgdm9pZCBTV1NlcnZlcjo6Y2xhaW0oU1dTZXJ2
ZXJXb3JrZXImIHdvcmtlcikKICAgICB9KTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6ZGlkUmVzb2x2
ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQordm9pZCBTV1NlcnZlcjo6
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQogewotICAg
IEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0
aW9uLmlkZW50aWZpZXIoKSkpOworICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgIWNvbm5l
Y3Rpb24gfHwgbV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLT5pZGVudGlmaWVyKCkp
KTsKIAogICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRp
b25LZXkpKQogICAgICAgICBqb2JRdWV1ZS0+ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2Uo
KTsKQEAgLTU0Miw3ICs1OTMsNyBAQCB2b2lkIFNXU2VydmVyOjpyZW1vdmVDbGllbnRTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcgogICAgICAgICBy
ZWdpc3RyYXRpb24tPnJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oY29ubmVj
dGlvbi5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoQ29u
bmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlk
ZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCit2b2lkIFNXU2Vy
dmVyOjp1cGRhdGVXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBq
b2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgU3RyaW5n
JiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKIHsK
ICAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoeyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0
aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHNjcmlwdCwg
Y29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwg
V1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CiB9CkBAIC05OTgsNiArMTA0OSwxNyBAQCBi
b29sIFNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUoU3RyaW5nVmlldyBzY2hlbWUpIGNvbnN0CiAg
ICAgcmV0dXJuIHNjaGVtZS5sZW5ndGgoKSA9PSA0OwogfQogCisvLyBodHRwczovL3czYy5naXRo
dWIuaW8vU2VydmljZVdvcmtlci8jc29mdC11cGRhdGUKK3ZvaWQgU1dTZXJ2ZXI6OnNvZnRVcGRh
dGUoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKK3sKKyAgICBTZXJ2aWNlV29y
a2VySm9iRGF0YSBqb2JEYXRhKFByb2Nlc3M6OmlkZW50aWZpZXIoKSwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIGpvYkRhdGEuc2NyaXB0VVJMID0gcmVnaXN0cmF0
aW9uLnNjcmlwdFVSTCgpOworICAgIGpvYkRhdGEudG9wT3JpZ2luID0gcmVnaXN0cmF0aW9uLmtl
eSgpLnRvcE9yaWdpbigpOworICAgIGpvYkRhdGEuc2NvcGVVUkwgPSByZWdpc3RyYXRpb24uc2Nv
cGVVUkxXaXRob3V0RnJhZ21lbnQoKTsKKyAgICBqb2JEYXRhLnR5cGUgPSBTZXJ2aWNlV29ya2Vy
Sm9iVHlwZTo6VXBkYXRlOworICAgIHNjaGVkdWxlSm9iKFdURk1vdmUoam9iRGF0YSkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmgKaW5kZXggZDYyNzI3Nzg3YmY1ZTVkNmJhYWI3MTc3MDIzMDYwZWZhYTIwYTY4ZS4uYmMxMTI3
NmExM2VkYjUwOGM1YzM2YzE3NjQwM2IxMWYxZmY5MjgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTI0LDggKzEyNCw5IEBA
IHB1YmxpYzoKICAgICAgICAgVmVjdG9yPFJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdD4gbV9yZWdp
c3RyYXRpb25SZWFkeVJlcXVlc3RzOwogICAgIH07CiAKKyAgICB1c2luZyBTb2Z0VXBkYXRlQ2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9v
bCBzaG91bGRSZWZyZXNoQ2FjaGUsIFJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpPiYmKT47CiAgICAgdXNpbmcg
Q3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mKT47Ci0gICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIo
VW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlF
bmFibGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNz
aW9uSUQsIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2smJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgU1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYsIGJvb2wgcHJvY2Vzc1Rl
cm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVj
dG9yeSwgUEFMOjpTZXNzaW9uSUQsIFNvZnRVcGRhdGVDYWxsYmFjayYmLCBDcmVhdGVDb250ZXh0
Q29ubmVjdGlvbkNhbGxiYWNrJiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgflNXU2VydmVyKCk7
CiAKQEAgLTEzNSw2ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
dGFydFN1c3BlbnNpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGVuZFN1c3BlbnNpb24oKTsKIAorICAgIFNXU2VydmVyUmVnaXN0cmF0aW9u
KiBnZXRSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllcikgeyByZXR1cm4gbV9yZWdpc3RyYXRpb25zLmdldChpZGVudGlmaWVyKTsgfQogICAg
IFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyUmVnaXN0cmF0aW9uKiBnZXRSZWdpc3RyYXRpb24oY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpOwogICAgIHZvaWQgYWRkUmVnaXN0cmF0
aW9uKHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4mJik7CiAgICAgdm9pZCBy
ZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwpA
QCAtMTQ0LDkgKzE0Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlamVjdEpvYihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmKTsKICAgICB2b2lkIHJlc29s
dmVSZWdpc3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7CiAg
ICAgdm9pZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGEmLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgYm9vbCB1bnJlZ2lzdHJh
dGlvblJlc3VsdCk7Ci0gICAgdm9pZCBzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiwgRmV0Y2hPcHRpb25zOjpDYWNoZSk7CisgICAgdm9pZCBzdGFydFNjcmlwdEZl
dGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUp
OwogCi0gICAgdm9pZCB1cGRhdGVXb3JrZXIoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNl
SGVhZGVycyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIEhhc2hN
YXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKKyAg
ICB2b2lkIHVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIm
LCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0
LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3Jr
ZXIoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN5bmNUZXJtaW5h
dGVXb3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU1dT
ZXJ2ZXJXb3JrZXImKTsKQEAgLTIwNiwxMCArMjA4LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGlz
SW1wb3J0Q29tcGxldGVkKCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRDb21wbGV0ZWQ7IH0KICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdoZW5JbXBvcnRJc0NvbXBsZXRlZChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCisgICAgdm9pZCBzb2Z0VXBkYXRlKFNXU2VydmVyUmVnaXN0cmF0
aW9uJik7CisKIHByaXZhdGU6Ci0gICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKENvbm5lY3Rp
b24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKKyAgICB2b2lkIHNjcmlwdEZl
dGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7CiAKLSAgICB2b2lk
IGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CisgICAgdm9pZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9u
UHJvbWlzZShDb25uZWN0aW9uKiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYp
OwogCiAgICAgdm9pZCBhZGRDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rp
b24mLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAgICAgdm9pZCByZW1v
dmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rpb24mLCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CkBAIC0yNjYsNiArMjcwLDcgQEAgcHJpdmF0ZToK
ICAgICBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrIG1fY3JlYXRlQ29udGV4dENvbm5l
Y3Rpb25DYWxsYmFjazsKICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBt
X3BlbmRpbmdDb25uZWN0aW9uRG9tYWluczsKICAgICBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPj4gbV9pbXBvcnRDb21wbGV0ZWRDYWxsYmFja3M7CisgICAgU29mdFVwZGF0ZUNhbGxi
YWNrIG1fc29mdFVwZGF0ZUNhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAKaW5kZXggNDg3Y2M3NWQ1ZjNlNjI4OGY5ZmNjZjBiNjhkZDUyNjA5
ODJjYWNkYi4uODk0MGViOTJiZmQyYjI2YTM2OGRmY2Y0YjFjZGEyM2QyMDMwM2JkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuY3BwCkBAIC01Niw3ICs1Niw3IEBAIGJvb2wgU1dTZXJ2ZXJKb2JRdWV1ZTo6
aXNDdXJyZW50bHlQcm9jZXNzaW5nSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
CiAgICAgcmV0dXJuICFtX2pvYlF1ZXVlLmlzRW1wdHkoKSAmJiBmaXJzdEpvYigpLmlkZW50aWZp
ZXIoKSA9PSBqb2JEYXRhSWRlbnRpZmllcjsKIH0KIAotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpz
Y3JpcHRGZXRjaEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1
ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJl
c3VsdCkKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5UHJvY2Vzc2luZ0pvYihyZXN1bHQuam9iRGF0
YUlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm47CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBT
V1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb24KICAgICAvLyBGSVhNRTogVXBkYXRlIGFsbCB0aGUgaW1wb3J0ZWQg
c2NyaXB0cyBhcyBwZXIgc3BlYy4gRm9yIG5vdywgd2UganVzdCBkbyBhcyBpZiB0aGVyZSBpcyBu
b25lLgogCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgdGhlIHByb3BlciB3b3JrZXIgdHlwZSAoY2xh
c3NpYyB2cyBtb2R1bGUpCi0gICAgbV9zZXJ2ZXIudXBkYXRlV29ya2VyKGNvbm5lY3Rpb24sIGpv
Yi5pZGVudGlmaWVyKCksICpyZWdpc3RyYXRpb24sIGpvYi5zY3JpcHRVUkwsIHJlc3VsdC5zY3Jp
cHQsIHJlc3VsdC5jb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlc3VsdC5yZWZlcnJlclBvbGljeSwg
V29ya2VyVHlwZTo6Q2xhc3NpYywgeyB9KTsKKyAgICBtX3NlcnZlci51cGRhdGVXb3JrZXIoam9i
LmlkZW50aWZpZXIoKSwgKnJlZ2lzdHJhdGlvbiwgam9iLnNjcmlwdFVSTCwgcmVzdWx0LnNjcmlw
dCwgcmVzdWx0LmNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVzdWx0LnJlZmVycmVyUG9saWN5LCBX
b3JrZXJUeXBlOjpDbGFzc2ljLCB7IH0pOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jdXBkYXRlLWFsZ29yaXRobQpAQCAtMzMyLDE3ICszMzIsMTMgQEAgdm9p
ZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5VcGRhdGVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGEmIGpvYikKICAgICBpZiAoam9iLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0
ZSAmJiBuZXdlc3RXb3JrZXIgJiYgIWVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoam9i
LnNjcmlwdFVSTCwgbmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSkpCiAgICAgICAgIHJldHVybiBy
ZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsICJDYW5ub3QgdXBkYXRl
IGEgc2VydmljZSB3b3JrZXIgd2l0aCBhIHJlcXVlc3RlZCBzY3JpcHQgVVJMIHdob3NlIG5ld2Vz
dCB3b3JrZXIgaGFzIGEgZGlmZmVyZW50IHNjcmlwdCBVUkwiX3MgfSk7CiAKLSAgICBGZXRjaE9w
dGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5ID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6RGVmYXVsdDsK
ICAgICAvLyBTZXQgcmVxdWVzdCdzIGNhY2hlIG1vZGUgdG8gIm5vLWNhY2hlIiBpZiBhbnkgb2Yg
dGhlIGZvbGxvd2luZyBhcmUgdHJ1ZToKICAgICAvLyAtIHJlZ2lzdHJhdGlvbidzIHVwZGF0ZSB2
aWEgY2FjaGUgbW9kZSBpcyBub3QgImFsbCIuCiAgICAgLy8gLSBqb2IncyBmb3JjZSBieXBhc3Mg
Y2FjaGUgZmxhZyBpcyBzZXQuCiAgICAgLy8gLSBuZXdlc3RXb3JrZXIgaXMgbm90IG51bGwsIGFu
ZCByZWdpc3RyYXRpb24ncyBsYXN0IHVwZGF0ZSBjaGVjayB0aW1lIGlzIG5vdCBudWxsIGFuZCB0
aGUgdGltZSBkaWZmZXJlbmNlIGluIHNlY29uZHMgY2FsY3VsYXRlZCBieSB0aGUKICAgICAvLyAg
IGN1cnJlbnQgdGltZSBtaW51cyByZWdpc3RyYXRpb24ncyBsYXN0IHVwZGF0ZSBjaGVjayB0aW1l
IGlzIGdyZWF0ZXIgdGhhbiA4NjQwMC4KLSAgICBpZiAocmVnaXN0cmF0aW9uLT51cGRhdGVWaWFD
YWNoZSgpICE9IFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6QWxsCi0gICAgICAgIHx8IChu
ZXdlc3RXb3JrZXIgJiYgcmVnaXN0cmF0aW9uLT5pc1N0YWxlKCkpKSB7Ci0gICAgICAgIGNhY2hl
UG9saWN5ID0gRmV0Y2hPcHRpb25zOjpDYWNoZTo6Tm9DYWNoZTsKLSAgICB9Ci0gICAgbV9zZXJ2
ZXIuc3RhcnRTY3JpcHRGZXRjaChqb2IsIGNhY2hlUG9saWN5KTsKKyAgICBib29sIHNob3VsZFJl
ZnJlc2hDYWNoZSA9IHJlZ2lzdHJhdGlvbi0+dXBkYXRlVmlhQ2FjaGUoKSAhPSBTZXJ2aWNlV29y
a2VyVXBkYXRlVmlhQ2FjaGU6OkFsbCB8fCAobmV3ZXN0V29ya2VyICYmIHJlZ2lzdHJhdGlvbi0+
aXNTdGFsZSgpKTsKKyAgICBtX3NlcnZlci5zdGFydFNjcmlwdEZldGNoKGpvYiwgc2hvdWxkUmVm
cmVzaENhY2hlKTsKIH0KIAogdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpyZWplY3RDdXJyZW50Sm9i
KGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbkRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCmluZGV4
IDBhOTc3N2ViYjkwY2QwMTg0YWNhMGU3ZjVmNTdiMjZkMGFkMGQxYzAuLmViOTMxZTA0MTQ3MDBl
ZDU5NjdhYWI2MWQ2NDgyNzU4MTI1OWM0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCkBAIC00NSwxMiAr
NDUsMTIgQEAgcHVibGljOgogCiAgICAgY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGZpcnN0
Sm9iKCkgY29uc3QgeyByZXR1cm4gbV9qb2JRdWV1ZS5maXJzdCgpOyB9CiAgICAgY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGEmIGxhc3RKb2IoKSBjb25zdCB7IHJldHVybiBtX2pvYlF1ZXVlLmxh
c3QoKTsgfQotICAgIHZvaWQgZW5xdWV1ZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYg
am9iRGF0YSkgeyBtX2pvYlF1ZXVlLmFwcGVuZChqb2JEYXRhKTsgfQorICAgIHZvaWQgZW5xdWV1
ZUpvYihTZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEpIHsgbV9qb2JRdWV1ZS5hcHBlbmQo
V1RGTW92ZShqb2JEYXRhKSk7IH0KICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
am9iUXVldWUuc2l6ZSgpOyB9CiAKICAgICB2b2lkIHJ1bk5leHRKb2IoKTsKIAotICAgIHZvaWQg
c2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VX
b3JrZXJGZXRjaFJlc3VsdCYpOworICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKICAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRU
b1N0YXJ0KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2NyaXB0Q29u
dGV4dFN0YXJ0ZWQoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkRmluaXNoSW5zdGFsbChjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImLCBTV1NlcnZlcldvcmtlciYsIGJvb2wgd2FzU3Vj
Y2Vzc2Z1bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDAyYTBjOTY3ZjEyOWVh
Nzk3ZjhmYzgxNzJmYTg1NTczYTNmNDBiOTYuLmMyOWI0NjI3ODkwZWY5YjY3NzhkMjc5N2RmNjRi
ZjdmMTlmM2I5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC00OSw2ICs0OSw3
IEBAIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1NlcnZlciYg
c2VydmVyLCBjb25zdCBTZXJ2aWNlV29ya2VyCiAgICAgLCBtX3NjcmlwdFVSTChzY3JpcHRVUkwp
CiAgICAgLCBtX3NlcnZlcihzZXJ2ZXIpCiAgICAgLCBtX2NyZWF0aW9uVGltZShNb25vdG9uaWNU
aW1lOjpub3coKSkKKyAgICAsIG1fc29mdFVwZGF0ZVRpbWVyIHsgKnRoaXMsICZTV1NlcnZlclJl
Z2lzdHJhdGlvbjo6c29mdFVwZGF0ZSB9CiB7CiAgICAgbV9zY29wZVVSTC5yZW1vdmVGcmFnbWVu
dElkZW50aWZpZXIoKTsKIH0KQEAgLTM2MywxOCArMzY0LDE2IEBAIGJvb2wgU1dTZXJ2ZXJSZWdp
c3RyYXRpb246OnNob3VsZFNvZnRVcGRhdGUoY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zKSBj
b25zdAogICAgIHJldHVybiBXZWJDb3JlOjppc05vblN1YnJlc291cmNlUmVxdWVzdChvcHRpb25z
LmRlc3RpbmF0aW9uKSAmJiBpc1N0YWxlKCk7CiB9CiAKLS8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9TZXJ2aWNlV29ya2VyLyNzb2Z0LXVwZGF0ZQogdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6
c29mdFVwZGF0ZSgpCiB7Ci0gICAgYXV0byogd29ya2VyID0gZ2V0TmV3ZXN0V29ya2VyKCk7Ci0g
ICAgaWYgKCF3b3JrZXIpCi0gICAgICAgIHJldHVybjsKKyAgICBtX3NlcnZlci5zb2Z0VXBkYXRl
KCp0aGlzKTsKK30KIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc2NoZWR1bGUgYW4gdXBkYXRl
IGpvYi4KLSAgICBtX3NlcnZlci5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnkod29ya2VyLT5p
ZGVudGlmaWVyKCksIFtzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHdvcmtlci0+aWRlbnRpZmll
cigpXShhdXRvKiBjb250ZXh0Q29ubmVjdGlvbikgewotICAgICAgICBpZiAoY29udGV4dENvbm5l
Y3Rpb24pCi0gICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+c29mdFVwZGF0ZShzZXJ2aWNl
V29ya2VySWRlbnRpZmllcik7Ci0gICAgfSk7Cit2b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpz
Y2hlZHVsZVNvZnRVcGRhdGUoKQoreworICAgIC8vIFRvIGF2b2lkIHNjaGVkdWxpbmcgbWFueSB1
cGRhdGVzIGR1cmluZyBhIHNpbmdsZSBwYWdlIGxvYWQsIHdlIGRvIHNvZnQgdXBkYXRlcyBvbiBh
IDEgc2Vjb25kIGRlbGF5IGFuZCBrZWVwIGRlbGF5aW5nCisgICAgLy8gYXMgbG9uZyBhcyBzb2Z0
IHVwZGF0ZSByZXF1ZXN0cyBrZWVwIGNvbWluZy4gVGhpcyBzZWVtcyB0byBtYXRjaCBDaHJvbWUn
cyBiZWhhdmlvci4KKyAgICBtX3NvZnRVcGRhdGVUaW1lci5zdGFydE9uZVNob3Qoc29mdFVwZGF0
ZURlbGF5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlv
bi5oCmluZGV4IGQwYjYyYzFjZDg3MzU0OTM5YTMxNjEyOTE2MDE3YWE1NjQ2ODdjNjYuLjcwNWU2
YTcwNmEyM2E0MjNhN2YzZmQ3M2I3ZjdjMzljYzZiZmNkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0
aW9uLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNs
dWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtOTgsMTMgKzk5LDE2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGZvckVhY2hDb25uZWN0aW9uKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChTV1Nl
cnZlcjo6Q29ubmVjdGlvbiYpPiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRT
b2Z0VXBkYXRlKGNvbnN0IEZldGNoT3B0aW9ucyYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc29mdFVwZGF0ZSgpOwotICAgIAotICAgIFN0cmluZyBzY29wZVVSTFdpdGhvdXRGcmFn
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVVUkw7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNjaGVkdWxlU29mdFVwZGF0ZSgpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBz
b2Z0VXBkYXRlRGVsYXkgeyAxX3MgfTsKKworICAgIFVSTCBzY29wZVVSTFdpdGhvdXRGcmFnbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVVUkw7IH0KKyAgICBVUkwgc2NyaXB0VVJMKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JpcHRVUkw7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGFjdGl2YXRl
KCk7CiAgICAgdm9pZCBoYW5kbGVDbGllbnRVbmxvYWQoKTsKKyAgICB2b2lkIHNvZnRVcGRhdGUo
KTsKIAogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IG1fcmVnaXN0cmF0aW9uS2V5OwpA
QCAtMTI0LDYgKzEyOCw4IEBAIHByaXZhdGU6CiAKICAgICBNb25vdG9uaWNUaW1lIG1fY3JlYXRp
b25UaW1lOwogICAgIEhhc2hNYXA8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgSGFzaFNl
dDxEb2N1bWVudElkZW50aWZpZXI+PiBtX2NsaWVudHNVc2luZ1JlZ2lzdHJhdGlvbjsKKworICAg
IFdlYkNvcmU6OlRpbWVyIG1fc29mdFVwZGF0ZVRpbWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggZDQ3ZTlm
MTg3ZGE0ZTAwOGZlZmJmNjU3YmJkYzhhZDllZmRhNjNjZi4uODIyMjk5OTFkNjIxODk4ZTliNmNl
ODcyZmIwZjNjNzc5ZGM1YmFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCkBAIC01Miw3ICs1Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFNl
cnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpcmVJbnN0YWxsRXZl
bnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmlyZUFj
dGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgc29mdFVwZGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMTNmY2UyZTdjNTljNGE0
NDIzZmFmNzJhNjM1YzljOWRlNDlhNGUxZS4uNjg1ZjdkMThkOTgyMmE3ODBkNjYxMDI5ZWE1MGVl
YzBlMDM0Yjg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKQEAgLTIzNTMsNyArMjM1Myw5IEBAIFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vz
czo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAg
Ly8gSWYgdGhlcmUncyBub3QsIHRoZW4gd2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9uSUQgY29t
ZSBmcm9tPwogICAgICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgfHwgIXBhdGgu
aXNFbXB0eSgpKTsKIAotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVu
aXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBpbmZvLnByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5
RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklELCBbdGhpcywgc2Vzc2lvbklEXShhdXRv
JiByZWdpc3RyYWJsZURvbWFpbikgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZl
cj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBpbmZvLnByb2Nlc3NUZXJtaW5h
dGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklELCBbdGhpcywgc2Vzc2lv
bklEXShhdXRvJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIGF1dG8mJiByZXF1
ZXN0LCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgICAgICAgICAgU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnN0YXJ0KG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCksIFdURk1vdmUoam9iRGF0YSksIHNob3VsZFJlZnJlc2hDYWNoZSwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB9LCBbdGhpcywgc2Vzc2lv
bklEXShhdXRvJiByZWdpc3RyYWJsZURvbWFpbikgewogICAgICAgICAgICAgQVNTRVJUKCFyZWdp
c3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpOwogICAgICAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVEb21haW4s
IHNlc3Npb25JRCB9LCAwKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggNjk4Y2UwZDc0MjJjZjE1NDNkZDJmM2E0NjEy
ZGU4NDdjNDJhYWE4OC4uNWM4ZWRlZjQ1Y2I5OGM5ZDBhYWQzMzQ0YzlmNDM3ZmEyZGIwYjQxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiUHJlZmV0Y2hDYWNoZS5oIgogI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQWRDbGlja0F0dHJpYnV0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9i
UmVnaXN0cnlJbXBsLmg+CkBAIC0xMjcsNiArMTI4LDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
aXNTdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RhbGVX
aGlsZVJldmFsaWRhdGVFbmFibGVkOyB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisg
ICAgdm9pZCBhZGRTb2Z0VXBkYXRlTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlcj4mJiBsb2FkZXIpIHsgbV9zb2Z0VXBkYXRlTG9hZGVycy5hZGQoV1RG
TW92ZShsb2FkZXIpKTsgfQorICAgIHZvaWQgcmVtb3ZlU29mdFVwZGF0ZUxvYWRlcihTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlciogbG9hZGVyKSB7IG1fc29mdFVwZGF0ZUxvYWRlcnMucmVt
b3ZlKGxvYWRlcik7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgTmV0d29ya1Nlc3Npb24o
TmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYp
OwogCkBAIC0xNjAsNiArMTY2LDEwIEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8TmV0d29ya0Nh
Y2hlOjpDYWNoZT4gbV9jYWNoZTsKICAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsIG1fYmxv
YlJlZ2lzdHJ5OwogICAgIHVuc2lnbmVkIG1fdGVzdFNwZWVkTXVsdGlwbGllciB7IDEgfTsKKwor
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcj4+IG1fc29mdFVwZGF0ZUxvYWRlcnM7CisjZW5k
aWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suY3BwCmluZGV4IGEwZWJhMzdhNGFkNjZlODkwM2NhMTNjNmY4YjA2Mzc4NjZi
NjNlZjQuLjYzMmQ1Yzg2OGM0MzJhMWNiZGRkZjQ0ZGFhNTk5ZTlhNmE4MzJiODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNp
bmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaD4KIAog
I2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRiht
X2xvYWRlci5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdv
cmtlciwgIiVwIC0gU2VydmljZVdvcmtlckZldGNoVGFzazo6IiBmbXQsIHRoaXMsICMjX19WQV9B
UkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0VSUk9SX0lGKG1fbG9hZGVyLnNlc3Npb25JRCgpLmlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAiJXAgLSBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKQEAgLTQ5LDEzICs1MCwxNSBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2Fk
ZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKK1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2Fk
ZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgYm9vbCBzaG91bGRTb2Z0VXBk
YXRlKQogICAgIDogbV9sb2FkZXIobG9hZGVyKQogICAgICwgbV9mZXRjaElkZW50aWZpZXIoV2Vi
Q29yZTo6RmV0Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogICAgICwgbV9zZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1fc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAgICAgLCBtX2N1cnJl
bnRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywg
JlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnRpbWVvdXRUaW1lckZpcmVkKQorICAgICwgbV9zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcihzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcikKKyAgICAsIG1fc2hvdWxkU29mdFVwZGF0ZShzaG91bGRTb2Z0VXBkYXRlKQog
ewogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChsb2FkZXIuY29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpLm5ldHdvcmtQcm9jZXNzKCkuc2VydmljZVdvcmtlckZldGNoVGltZW91dCgpKTsK
IH0KQEAgLTEwNiw3ICsxMDksOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0
RmV0Y2goKQogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVkaXJlY3RS
ZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiB7CiAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2U6ICVzIiwgbV9mZXRjaElkZW50
aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fd2FzSGFuZGxlZCA9
IHRydWU7CisgICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIHNvZnRVcGRhdGVJZk5lZWRl
ZCgpOwogCiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6
U2VydmljZVdvcmtlcik7CiAgICAgYXV0byBuZXdSZXF1ZXN0ID0gbV9jdXJyZW50UmVxdWVzdC5y
ZWRpcmVjdGVkUmVxdWVzdChyZXNwb25zZSwgbV9sb2FkZXIucGFyYW1ldGVycygpLnNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOwpAQCAtMTE4LDcgKzEyMiw3IEBAIHZv
aWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgYm9vCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
UmVjZWl2ZVJlc3BvbnNlOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7Ci0gICAgbV93YXNIYW5k
bGVkID0gdHJ1ZTsKKyAgICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAogICAgIHJlc3BvbnNlLnNl
dFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOwogICAgIHNl
bmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVSZXNwb25z
ZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9KTsK
QEAgLTE0Niw3ICsxNTAsMTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGaW5p
c2goKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIGlmICht
X3RpbWVvdXRUaW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgIG1fdGltZW91dFRpbWVyLnN0b3Ao
KTsKKyAgICAgICAgc29mdFVwZGF0ZUlmTmVlZGVkKCk7CisgICAgfQogICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1f
ZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX2xv
YWRlci5kaWRGYWlsTG9hZGluZyhlcnJvcik7CiB9CkBAIC0xNTUsNiArMTYyLDggQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWROb3RIYW5kbGUoKQogewogICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZE5vdEhhbmRsZUZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9m
ZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIG1fdGlt
ZW91dFRpbWVyLnN0b3AoKTsKKyAgICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKKwogICAgIG1fbG9h
ZGVyLnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoKTsKIH0KIApAQCAtMTcxLDYgKzE4MCw3IEBA
IHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNw
b25zZSgpCiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y29udGludWVGZXRjaFRhc2tX
aXRoKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CisgICAgbV90aW1lb3V0VGltZXIuc3Rh
cnRPbmVTaG90KG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5uZXR3b3JrUHJvY2Vz
cygpLnNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoKSk7CiAgICAgaWYgKCFtX3NlcnZpY2VXb3Jr
ZXJDb25uZWN0aW9uKSB7CiAgICAgICAgIG1fbG9hZGVyLnNlcnZpY2VXb3JrZXJEaWROb3RIYW5k
bGUoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTgxLDExICsxOTEsMjEgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGltZXJGaXJl
ZCgpCiB7CisgICAgc29mdFVwZGF0ZUlmTmVlZGVkKCk7CisKICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJ0aW1lb3V0VGltZXJGaXJlZDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJ
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAobV9zZXJ2
aWNlV29ya2VyQ29ubmVjdGlvbikKICAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+
ZmV0Y2hUYXNrVGltZWRPdXQoc2VydmljZVdvcmtlcklkZW50aWZpZXIoKSk7CiB9CiAKK3ZvaWQg
U2VydmljZVdvcmtlckZldGNoVGFzazo6c29mdFVwZGF0ZUlmTmVlZGVkKCkKK3sKKyAgICBpZiAo
IW1fc2hvdWxkU29mdFVwZGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRvKiByZWdp
c3RyYXRpb24gPSBtX2xvYWRlci5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuc3dDb25uZWN0aW9u
KCkuc2VydmVyKCkuZ2V0UmVnaXN0cmF0aW9uKG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIpKQorICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxlU29mdFVwZGF0ZSgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQ3MTZiYmUw
MmU2OWNmYWQxYzRkMzQ2MGUzZWQ0ZGFlZWVjOWM0MDIuLjVkYjkzYzFiMGI2ZGYyYjFmOTAyMWRk
ZjkxYTczZjE2MjcwNmMxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
aApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247
CiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOworICAgIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciwgYm9vbCBzaG91bGRTb2Z0VXBkYXRlKTsKICAgICB+U2VydmljZVdvcmtlckZldGNoVGFz
aygpOwogCiAgICAgdm9pZCBzdGFydChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsK
QEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0RmV0Y2goKTsKIAogICAg
IHZvaWQgdGltZW91dFRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIHNvZnRVcGRhdGVJZk5lZWRlZCgp
OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBzZW5kVG9TZXJ2aWNlV29y
a2VyKE1lc3NhZ2UmJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBzZW5k
VG9DbGllbnQoTWVzc2FnZSYmKTsKQEAgLTEwMCw2ICsxMDEsOCBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIFdlYkNvcmU6OlRp
bWVyIG1fdGltZW91dFRpbWVyOwogICAgIGJvb2wgbV93YXNIYW5kbGVkIHsgZmFsc2UgfTsKKyAg
ICBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBtX3NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGJvb2wgbV9zaG91bGRTb2Z0VXBkYXRl
IHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlNzJhMjU3YzM5MjliZWMzZjliZDQzN2M0
NTA3ZDRmNTg0YzRiYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBA
IC0wLDAgKzEsMTk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgiCisKKyNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya0NhY2hl
LmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoUmVzdWx0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySm9iLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0UmVz
b3VyY2VEZWNvZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJTY3JpcHRMb2FkZXIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCit2b2lk
IFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpzdGFydChOZXR3b3JrU2Vzc2lvbiogc2Vz
c2lvbiwgU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hD
YWNoZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHNlcnZpY2VXb3JrZXJGZXRjaEVycm9yKGpvYkRhdGEuaWRlbnRpZmllcigpLCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5IHsgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSB9LCBSZXNv
dXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pKTsKKyAgICBz
ZXNzaW9uLT5hZGRTb2Z0VXBkYXRlTG9hZGVyKG1ha2VVbmlxdWU8U2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI+KCpzZXNzaW9uLCBXVEZNb3ZlKGpvYkRhdGEpLCBzaG91bGRSZWZyZXNoQ2Fj
aGUsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7Cit9CisK
K1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlcihOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JE
YXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAsIG1fam9iRGF0YShXVEZNb3ZlKGpvYkRh
dGEpKQorICAgICwgbV9zZXNzaW9uKG1ha2VXZWFrUHRyKHNlc3Npb24pKQoreworICAgIEFTU0VS
VCghcmVxdWVzdC5pc0NvbmRpdGlvbmFsKCkpOworCisgICAgaWYgKHNlc3Npb24uY2FjaGUoKSkg
eworICAgICAgICAvLyBXZSBzZXQgY2FjaGUgcG9saWN5IHRvIGRpc2FibGUgc3BlY3VsYXRpdmUg
bG9hZGluZy9hc3luYyByZXZhbGlkYXRpb24gZnJvbSB0aGUgY2FjaGUuCisgICAgICAgIHJlcXVl
c3Quc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJldHVybkNhY2hl
RGF0YURvbnRMb2FkKTsKKyAgICAgICAgCisgICAgICAgIHNlc3Npb24uY2FjaGUoKS0+cmV0cmll
dmUocmVxdWVzdCwgTmV0d29ya0NhY2hlOjpHbG9iYWxGcmFtZUlEIHsgfSwgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0LCBzaG91bGRSZWZyZXNoQ2FjaGVdKGF1
dG8mJiBlbnRyeSwgYXV0byYmKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKCFtX3Nlc3Npb24pIHsK
KyAgICAgICAgICAgICAgICBmYWlsKFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBl
OjpDYW5jZWxsYXRpb24gfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKCFzaG91bGRSZWZyZXNoQ2FjaGUgJiYgZW50cnkgJiYgIWVudHJ5
LT5uZWVkc1ZhbGlkYXRpb24oKSkgeworICAgICAgICAgICAgICAgIGxvYWRXaXRoQ2FjaGVFbnRy
eSgqZW50cnkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGlj
eTo6UmVmcmVzaEFueUNhY2hlRGF0YSk7CisgICAgICAgICAgICBpZiAoZW50cnkpIHsKKyAgICAg
ICAgICAgICAgICBtX2NhY2hlRW50cnkgPSBXVEZNb3ZlKGVudHJ5KTsKKworICAgICAgICAgICAg
ICAgIFN0cmluZyBlVGFnID0gbV9jYWNoZUVudHJ5LT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6RVRhZyk7CisgICAgICAgICAgICAgICAgaWYgKCFlVGFnLmlzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OklmTm9uZU1hdGNoLCBlVGFnKTsKKworICAgICAgICAgICAgICAgIFN0cmlu
ZyBsYXN0TW9kaWZpZWQgPSBtX2NhY2hlRW50cnktPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpMYXN0TW9kaWZpZWQpOworICAgICAgICAgICAgICAgIGlmICghbGFz
dE1vZGlmaWVkLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
SGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OklmTW9kaWZpZWRTaW5jZSwgbGFzdE1vZGlmaWVk
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxvYWRGcm9tTmV0d29yaygqbV9zZXNzaW9u
LCBXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgbG9hZEZyb21OZXR3b3JrKHNlc3Npb24sIFdURk1vdmUocmVxdWVzdCkpOworfQorCitT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6flNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyKCkKK3sKKyAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgbV9jb21wbGV0
aW9uSGFuZGxlcihzZXJ2aWNlV29ya2VyRmV0Y2hFcnJvcihtX2pvYkRhdGEuaWRlbnRpZmllcigp
LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHsgbV9qb2JEYXRhLnJlZ2lzdHJhdGlvbktl
eSgpIH0sIFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24g
fSkpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpmYWlsKFJlc291
cmNlRXJyb3ImJiBlcnJvcikKK3sKKyAgICBpZiAoIW1fY29tcGxldGlvbkhhbmRsZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fY29tcGxldGlvbkhhbmRsZXIoc2VydmljZVdvcmtlckZldGNo
RXJyb3IobV9qb2JEYXRhLmlkZW50aWZpZXIoKSwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSB7IG1fam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSB9LCBXVEZNb3ZlKGVycm9yKSkpOworICAg
IGRpZENvbXBsZXRlKCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6
OmxvYWRXaXRoQ2FjaGVFbnRyeShOZXR3b3JrQ2FjaGU6OkVudHJ5JiBlbnRyeSkKK3sKKyAgICBk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSB7IGVudHJ5LnJlc3BvbnNlKCkgfSwg
W10oYXV0bykgeyB9KTsKKyAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlciAmJiBlbnRyeS5idWZm
ZXIoKSkKKyAgICAgICAgZGlkUmVjZWl2ZUJ1ZmZlcihtYWtlUmVmKCplbnRyeS5idWZmZXIoKSks
IDApOworICAgIGlmIChtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBkaWRGaW5pc2hMb2Fk
aW5nKHsgfSk7CisgICAgZGlkQ29tcGxldGUoKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlcjo6bG9hZEZyb21OZXR3b3JrKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQoreworICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBw
YXJhbWV0ZXJzOworICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOworICAgIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5n
UG9saWN5ID0gQ29udGVudFNuaWZmaW5nUG9saWN5OjpEb05vdFNuaWZmQ29udGVudDsKKyAgICBw
YXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID0gQ29udGVudEVuY29kaW5n
U25pZmZpbmdQb2xpY3k6OlNuaWZmOworICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUo
cmVxdWVzdCk7CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0
aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBzZXNzaW9uKTsKK30KKwordm9pZCBT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2UmJikK
K3sKKyAgICBmYWlsKFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxs
YXRpb24gfSk7Cit9CisKKy8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN1
cGRhdGUtYWxnb3JpdGhtLCBzdGVwcyA5LjcgdG8gOS4xNwordm9pZCBTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNw
b25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNCAmJiBtX2NhY2hlRW50cnkp
IHsKKyAgICAgICAgbG9hZFdpdGhDYWNoZUVudHJ5KCptX2NhY2hlRW50cnkpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvIGVycm9yID0gV29ya2VyU2NyaXB0TG9hZGVyOjp2YWxpZGF0ZVdv
cmtlclJlc3BvbnNlKHJlc3BvbnNlLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpTZXJ2aWNl
d29ya2VyKTsKKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIGZhaWwoV1RGTW92
ZShlcnJvcikpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9y
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZXJyb3IgPSBTZXJ2aWNlV29ya2VySm9i
Ojp2YWxpZGF0ZVNlcnZpY2VXb3JrZXJSZXNwb25zZShtX2pvYkRhdGEsIHJlc3BvbnNlKTsKKyAg
ICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIGZhaWwoV1RGTW92ZShlcnJvcikpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSA9IENvbnRlbnRT
ZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyB7IHJlc3BvbnNlIH07CisgICAgbV9yZWZlcnJl
clBvbGljeSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmVmZXJy
ZXJQb2xpY3kpOworICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IHJlc3BvbnNlLnRleHRFbmNvZGlu
Z05hbWUoKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKK30K
Kwordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgp
Cit7CisgICAgaWYgKCFtX2RlY29kZXIpIHsKKyAgICAgICAgaWYgKCFtX3Jlc3BvbnNlRW5jb2Rp
bmcuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rl
cjo6Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQiX3MsIG1fcmVzcG9uc2VFbmNvZGluZyk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNy
ZWF0ZSgidGV4dC9qYXZhc2NyaXB0Il9zLCAiVVRGLTgiKTsKKyAgICB9CisKKyAgICBpZiAoYXV0
byBzaXplID0gYnVmZmVyLT5zaXplKCkpCisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29k
ZXItPmRlY29kZShidWZmZXItPmRhdGEoKSwgc2l6ZSkpOworfQorCit2b2lkIFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYpCit7CisgICAgaWYgKG1fZGVjb2RlcikKKyAgICAgICAgbV9zY3JpcHQu
YXBwZW5kKG1fZGVjb2Rlci0+Zmx1c2goKSk7CisgICAgbV9jb21wbGV0aW9uSGFuZGxlcih7IG1f
am9iRGF0YS5pZGVudGlmaWVyKCksIG1fam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSwgbV9zY3Jp
cHQudG9TdHJpbmcoKSwgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fcmVmZXJyZXJQb2xpY3ks
IHsgfSB9KTsKKyAgICBkaWRDb21wbGV0ZSgpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyOjpkaWRGYWlsTG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
K3sKKyAgICBmYWlsKFJlc291cmNlRXJyb3IoZXJyb3IpKTsKK30KKwordm9pZCBTZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkQ29tcGxldGUoKQoreworICAgIG1fbmV0d29ya0xvYWQg
PSBudWxscHRyOworICAgIGlmIChtX3Nlc3Npb24pCisgICAgICAgIG1fc2Vzc2lvbi0+cmVtb3Zl
U29mdFVwZGF0ZUxvYWRlcih0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2M2I1YzY2MDYzOGFiZWExMjNh
YmNkYjM5YzA3Mjk0OTMyNWZhMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
aApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGVFbnRyeS5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtMb2FkQ2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0
aW9ucy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckpvYkRhdGEuaD4KKyNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Owor
c3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhOworY2xhc3MgVGV4dFJlc291cmNlRGVjb2RlcjsK
K30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtMb2FkOworY2xhc3MgTmV0
d29ya1Nlc3Npb247CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyIGZpbmFs
IDogcHVibGljIE5ldHdvcmtMb2FkQ2xpZW50LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICB1c2luZyBIYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKT47CisgICAgc3RhdGljIHZvaWQg
c3RhcnQoTmV0d29ya1Nlc3Npb24qLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYmLCBi
b29sIHNob3VsZFJlZnJlc2hDYWNoZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEhhbmRs
ZXImJik7CisKKyAgICBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcihOZXR3b3JrU2Vzc2lv
biYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhJiYsIGJvb2wgc2hvdWxkUmVmcmVzaENh
Y2hlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSGFuZGxlciYmKTsKKyAgICB+U2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgLy8gTmV0d29y
a0xvYWRDbGllbnQuCisgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0
ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbCB7IH0K
KyAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJl
Y3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkg
ZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlk
UmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRF
bmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFpbExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworCisgICAgdm9pZCBs
b2FkV2l0aENhY2hlRW50cnkoTmV0d29ya0NhY2hlOjpFbnRyeSYpOworICAgIHZvaWQgbG9hZEZy
b21OZXR3b3JrKE5ldHdvcmtTZXNzaW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwor
ICAgIHZvaWQgZmFpbChXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOworICAgIHZvaWQgZGlkQ29t
cGxldGUoKTsKKworICAgIEhhbmRsZXIgbV9jb21wbGV0aW9uSGFuZGxlcjsKKyAgICBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySm9iRGF0YSBtX2pvYkRhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtMb2FkPiBtX25ldHdvcmtMb2FkOworICAgIFdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IG1f
c2Vzc2lvbjsKKworICAgIFN0cmluZyBtX3Jlc3BvbnNlRW5jb2Rpbmc7CisgICAgU3RyaW5nIG1f
cmVmZXJyZXJQb2xpY3k7CisgICAgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzIG1fY29udGVudFNlY3VyaXR5UG9saWN5OworCisgICAgc3RkOjp1bmlxdWVfcHRy
PE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOworICAgIFN0cmluZ0J1aWxkZXIgbV9zY3Jp
cHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRl
eCA1NjA2NTcwNTlmOTU4NzQzYmI4Y2YyY2U3MDBmODUwMDAzYzExOGVkLi45YzI0YzI4MDZhYzAw
Mzk0Mzk5OTlhNGVmNTFkNDZkOGQ0ODJjMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcApAQCAtMTc3LDE0ICsxNzcsMTUgQEAgc3RkOjp1bmlxdWVfcHRyPFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNr
KE4KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCisgICAgYXV0byogcmVnaXN0cmF0
aW9uID0gc2VydmVyKCkuZ2V0UmVnaXN0cmF0aW9uKCpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcik7CisgICAgYm9vbCBzaG91bGRTb2Z0VXBkYXRlID0gcmVnaXN0cmF0aW9uICYm
IHJlZ2lzdHJhdGlvbi0+c2hvdWxkU29mdFVwZGF0ZShsb2FkZXIucGFyYW1ldGVycygpLm9wdGlv
bnMpOwogICAgIGlmICh3b3JrZXItPnNob3VsZFNraXBGZXRjaEV2ZW50KCkpIHsKLSAgICAgICAg
YXV0byogcmVnaXN0cmF0aW9uID0gc2VydmVyKCkuZ2V0UmVnaXN0cmF0aW9uKHdvcmtlci0+cmVn
aXN0cmF0aW9uS2V5KCkpOwotICAgICAgICBpZiAocmVnaXN0cmF0aW9uICYmIHJlZ2lzdHJhdGlv
bi0+c2hvdWxkU29mdFVwZGF0ZShsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMpKQotICAgICAg
ICAgICAgcmVnaXN0cmF0aW9uLT5zb2Z0VXBkYXRlKCk7CisgICAgICAgIGlmIChzaG91bGRTb2Z0
VXBkYXRlKQorICAgICAgICAgICAgcmVnaXN0cmF0aW9uLT5zY2hlZHVsZVNvZnRVcGRhdGUoKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byB0YXNrID0gbWFrZVVu
aXF1ZTxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPihsb2FkZXIsIFJlc291cmNlUmVxdWVzdCB7IHJl
cXVlc3QgfSwgaWRlbnRpZmllcigpLCB3b3JrZXItPmlkZW50aWZpZXIoKSwgKnNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKKyAgICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+KGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9
LCBpZGVudGlmaWVyKCksIHdvcmtlci0+aWRlbnRpZmllcigpLCAqc2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIsIHNob3VsZFNvZnRVcGRhdGUpOwogICAgIHN0YXJ0RmV0Y2goKnRh
c2ssICp3b3JrZXIpOwogICAgIHJldHVybiB0YXNrOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBiODM1YzU2NWFiZDJjM2Zk
ODU2YWY4ZTQ2MDI0YTg3YTEzMzg2NDcwLi40ZjJiZjFiNDhhNjIzZWY1NWVjYjJiZTc2YzY4Mjk4
Nzk1M2I2ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcApAQCAtMTAwLDExICsxMDAsNiBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIg
cwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaXJl
QWN0aXZhdGVFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOwogfQogCi12b2lkIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c29mdFVwZGF0ZShTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKLXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U29mdFVwZGF0ZShzZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikpOwotfQotCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWlu
YXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KQogewogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpU
ZXJtaW5hdGVXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBlZjRmNDEzZDNiYTBi
NGZjZjgwY2IxNDI4YjhmOGExYmFlZGQ0ZjFlLi4wNGM4ZDYzMGEzMmUxMzljNTFkYTcxODdlNDU1
ZjM4NTFmYTFjZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCkBAIC04OCw3ICs4OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnN0YWxs
U2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpIGZpbmFsOwogICAgIHZvaWQgZmlyZUluc3Rh
bGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9p
ZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmlu
YWw7Ci0gICAgdm9pZCBzb2Z0VXBkYXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGZpbmRDbGllbnRCeUlk
ZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlF
cnJvcikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAppbmRleCBmMjRlNjcxNzVmOWZi
ODE5M2NlZmNmYzYyNmU5ZTM3MWNlOGRkYTEwLi41NmE2ZDY1NTM4ODliOWI1YmRiZWYxOTE1ODgx
NTRlZTIwNGE4ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIu
aCIKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRvd25s
b2FkLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCkBAIC0xMTAsNyArMTEx
LDggQEAgVmVjdG9yPHVpbnQ2NF90PiBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNvYWxlc2NlQ2hh
bGxlbmdlc01hdGNoaW5nKHVpbnQ2NF90IGNoYWwKIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFn
ZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEqIHRvcE9yaWdpbiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIEFTU0VSVChwYWdlSUQpOworICAgIGlmICghcGFnZUlEKQorICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZywgeyB9KTsKIAogICAgIHVpbnQ2NF90IGNoYWxs
ZW5nZUlEID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoeyBwYWdlSUQsIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
aW5kZXggM2Y3ZDNmYjYyMTZmZmZjNmYzYmNiMmQzZmQ1M2JlZmExMDQxODY2MC4uNDQ5NDgwZWQ5
M2FlNzQ4YmM5MzQyNDI0MWVjZWUwZDgzZTgzYWQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC02MSw2ICs2
MSw3IEBAIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCiBOZXR3
b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAogCiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIEBuby11
bmlmeQorTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5jcHAKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9y
ZS5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1Y2I4MWNjYzIwMmNl
NjIxYjNhZDg1MWY1YWJhOWU1ZTQ3YmIyZmNjLi4zZmVmMzg3YjYwZTBmMzg1ODM4MjZiZjVlNTA5
Y2NhMDQ2ZmM1NTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTMxODgsNiArMzE4OCw4IEBACiAJCTQxQzUzNzhGMjFGMTM2MkQwMDhC
MUZBRCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQxQzg1ODE5MUY1MTBERUUwMDY1RTA4NSAvKiBDYWNoZVN0b3Jh
Z2VFbmdpbmVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxRDEyOUQ5MUYzRDEwMTQwMEQxNUU0NyAvKiBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MUQ1QzZEODIzOEVCMjBEMDBCOUIzQ0IgLyogU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDFENUM2RDkyMzhFQjIwRTAwQjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEQzQ1
OTQxRTNENkUxRTAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUlRDUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFEQzQ1OTUxRTNENkUxRTAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92
aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrUlRD
UHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MURDNDU5ODFFM0Q2
RUQ2MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3ZpZGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IE5ldHdvcmtSVENQcm92aWRlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTc0NjksNiArNzQ3MSw4IEBACiAJCQkJNDE1MTg1MzYyMjI3MDRG
NjAwNTQzMEM2IC8qIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwICovLAogCQkJCTQxNTE4NTM1
MjIyNzA0RjUwMDU0MzBDNiAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggKi8sCiAJCQkJNDE1
MTg1MzgyMjI3MEY1MzAwNTQzMEM2IC8qIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMu
aW4gKi8sCisJCQkJNDFENUM2RDkyMzhFQjIwRTAwQjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmNwcCAqLywKKwkJCQk0MUQ1QzZEODIzOEVCMjBEMDBCOUIzQ0IgLyogU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCAqLywKIAkJCQk5M0JBMDRERjIxNTFBREY0MDA3
RjQ1NUYgLyogV2ViU1dPcmlnaW5TdG9yZS5jcHAgKi8sCiAJCQkJOTNCQTA0REUyMTUxQURGNDAw
N0Y0NTVGIC8qIFdlYlNXT3JpZ2luU3RvcmUuaCAqLywKIAkJCQk5M0JBMDRFMTIxNTFBREY0MDA3
RjQ1NUYgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCAqLywKQEAgLTk4MjAsNyArOTgyNCw2
IEBACiAJCQkJNTExRjhBN0IxMzhCNDYwOTAwQTk1RjQ0IC8qIFNlY0l0ZW1TaGltTGlicmFyeS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4RTY5MEMxNjlCNTYzRjAwOUI2NjcwIC8qIFNlY0l0ZW1T
aGltUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOEU2OTE4MTY5QjY2N0IwMDlCNjY3MCAv
KiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCTdBQTc0NkQ1
MjM1OTNEODEwMDA5NTA1MCAvKiBTZWNJdGVtU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzBB
QjhGMzIwQUUzQkQ3MDBCOEJFODcgLyogU2VjS2V5UHJveHlTdG9yZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFGREU2NUExOTU0QTQyQjAwQzQ4RkZBIC8qIFNlc3Npb25TdGF0
ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5k
ZXggZWNmN2EzYmYxYmZhODkzMzUxMWYwM2Y3MTM3MGU4NWJjNzI1MTY4ZC4uMmRkNzVjYzBlODA5
Y2JlMjI1YmExOTAwZDY4ODY0Yjk2YmE5MDQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcApAQCAtMjU2LDExICsyNTYsNiBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZAog
ICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVBY3RpdmF0ZUV2ZW50KGlkZW50
aWZpZXIpOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzb2Z0VXBk
YXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAg
U1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc29mdFVwZGF0ZShpZGVudGlmaWVyKTsKLX0K
LQogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dGVybWluYXRlV29ya2VyKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgU1dDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkudGVybWluYXRlV29ya2VyKGlkZW50aWZpZXIsIFNXQ29udGV4dE1hbmFn
ZXI6OndvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaAppbmRleCAyOTczNTFmMmI4NmI4MmQ4NDNhMGVlYWMxMTQwMTA2YzZlMjI2
YjQ5Li42OTkwMzMyZWE3ZWQ4Yzk3NGI5MzljNTRjZjhlMTc3OTMyNzAyYjgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTkwLDcgKzkwLDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSYmIHNvdXJjZURhdGEp
OwogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7Ci0gICAgdm9pZCBzb2Z0VXBkYXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXJEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBmaW5k
Q2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBP
cHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNTZWN1
cml0eUVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KaW5kZXggMWJlMjlhYWFkOTc4NzE0ZTRiNDIxNzViMmE5N2M0ODY2NzBlZmMwNi4uMWQz
MzljY2IxNTFhNjE0ZjllMDJjNjliNDBjZjRiOTFmYTI2YzIxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDYgQEAgbWVz
c2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAg
ICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSBz
b3VyY2VEYXRhKQogICAgIEZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBGaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIFNvZnRVcGRhdGUoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBUZXJtaW5hdGVXb3JrZXIo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBTeW5jVGVy
bWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
IC0+ICgpIFN5bmNocm9ub3VzCiAgICAgRmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1
aW50NjRfdCBjbGllbnRJZFJlcXVlc3RJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4gZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy93b3JrZXItaW1w
b3J0U2NyaXB0cy1leHBlY3RlZC50eHQKaW5kZXggMzE3MWRiODExZWY2ZWVlZTEwNTM3NTdmMTBh
ODRmYWZmMTFkNWFiNy4uYTEyYmZkMjY3NzAyYjhhZDc0NWRhZjFkOTAxYTQ0NWJiZDgzNjZmOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1pbXBvcnRT
Y3JpcHRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMv
d29ya2VyLWltcG9ydFNjcmlwdHMtZXhwZWN0ZWQudHh0CkBAIC0yNCw3ICsyNCw3IEBAIExvYWRl
ZCBtZXNzYWdlIGZyb20gZGlmZmVyZW50IG9yaWdpbgogTG9hZGVkIHJlc291cmNlIDIKIFBBU1M6
IGFsbCByZXNvdXJjZXMgZXhlY3V0ZWQuCiBMb2FkZWQgcmVzb3VyY2UgMQotUEFTUzogVGhyZXcg
TmV0d29ya0Vycm9yOiBGYWlsZWQgdG8gbG9hZCBzY3JpcHQgd2hlbiBsb2FkIGZhaWxlZAorUEFT
UzogVGhyZXcgTmV0d29ya0Vycm9yOiBSZXNwb25zZSBpcyBub3QgMnh4IHdoZW4gbG9hZCBmYWls
ZWQKIFBBU1M6IHNvbWUgcmVzb3VyY2VzIHdlcmUgbG9hZGVkIGRlc3BpdGUgdGhlIG5ldHdvcmsg
ZXJyb3IKIExvYWRlZCByZXNvdXJjZSAxCiBQQVNTOiBUaHJldyBTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCBpZGVudGlmaWVyICdzeW50YXgnIHdoZW4gZW5jb3VudGVyaW5nIGEgc3ludGF4IGVycm9y
IGluIGltcG9ydGVkIHNjcmlwdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384697</attachid>
            <date>2019-12-03 01:37:32 -0800</date>
            <delta_ts>2019-12-04 03:50:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-204678-20191203103730.patch</filename>
            <type>text/plain</type>
            <size>77537</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZkOGVkMTIxNzA0N2Yz
MzhjNmY1NTEzNGQzMGVkMDZhOTgxM2VhMy4uMWZjNDFkZDY4NDgxNGIzMzUzN2U1MDk1NDg4ODQ1
MzNkYzc0NDhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTEyLTAyICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHNvZnQgdXBkYXRl
IGhhbmRsaW5nIHRvIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0Njc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OnZhbGlkYXRlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc0VxdWl2YWxlbnQgY29uc3QpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24pOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZFJlc29sdmVSZWdpc3RyYXRp
b25Qcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpTV1NlcnZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25Kb2IpOgorICAgICAgICAoV2ViQ29yZTo6b3Jp
Z2luVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OmdldFJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnJ1
blVwZGF0ZUpvYik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpv
YlF1ZXVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjplbnF1ZXVlSm9i
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJl
Z2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2V0
VXBkYXRlVmlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246
OnNvZnRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNj
aGVkdWxlU29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRp
b246OnNjb3BlVVJMV2l0aG91dEZyYWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVyUmVnaXN0cmF0aW9uOjpzY3JpcHRVUkwgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisKIDIwMTktMTIt
MDIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jvc3MtdGhy
ZWFkIHZlcnNpb24gU3RvcmFnZVF1b3RhTWFuYWdlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzOTAyYzdhYjE2YTg2
OGE5YzQwYWE0MDgwNDhlY2ViMDhiODc0M2U0Li5kOWFjZmI2ZDQ5ZDIzMzcxM2E5Zjc5YzgyMGFm
ODQ4MGNmYzdiNjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE5LTEyLTAyICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHNvZnQgdXBkYXRl
IGhhbmRsaW5nIHRvIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0Njc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Npb24pOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uOjphZGRTb2Z0VXBkYXRlTG9hZGVyKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnJlbW92ZVNvZnRVcGRhdGVMb2FkZXIpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2spOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpkaWROb3RIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNvZnRVcGRhdGVJZk5lZWRlZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlcjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlcjo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIpOgorICAgICAgICAoV2Vi
S2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6flNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXI6OmZhaWwpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
cjo6bG9hZFdpdGhDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXI6OmxvYWRGcm9tTmV0d29yayk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkQ29tcGxldGUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXIuaDogQWRkZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OmNyZWF0ZUZldGNoVGFzayk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lmg6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbjoKKwogMjAxOS0xMi0wMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KIAogICAgICAgICBDcm9zcy10aHJlYWQgdmVyc2lvbiBTdG9yYWdlUXVvdGFNYW5hZ2VyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJOYW1l
cy5pbiBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck5hbWVzLmlu
CmluZGV4IGQzZDk2NWU3YzNlNjdlYjU5YTFmZDEyY2IzM2NiNzFhODRhM2NlYTEuLjAxY2RlM2Ni
ZjY3NDMxYjc2MjU5MjEwMjY1NmJjNmZlMTU2MzI0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck5hbWVzLmluCkBAIC04NCw2ICs4NCw3IEBA
IFNlYy1XZWJTb2NrZXQtS2V5CiBTZWMtV2ViU29ja2V0LVByb3RvY29sCiBTZWMtV2ViU29ja2V0
LVZlcnNpb24KIFNlcnZlci1UaW1pbmcKK1NlcnZpY2UtV29ya2VyCiBTZXJ2aWNlLVdvcmtlci1B
bGxvd2VkCiBTZXQtQ29va2llCiBTZXQtQ29va2llMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDIyOGYzZDE3ZmYwMDIyZTYyZTYzNjQ1MzJk
NTU2Yjk1MDdhMDE4ZjIuLjMxZGQ4YTk4ZThmMTQ3YmEyMjNmYzMxODY0YjY2YmEyOWM5NjQxZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAg
LTE1MywyMyArMTUzLDI4IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IFdvcmtl
clNjcmlwdExvYWRlcjo6Y3JlYXRlUmVzb3VyY2VSZXF1ZXN0KGNvbnN0CiAgICAgcmV0dXJuIHJl
cXVlc3Q7CiB9CiAKLXZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK1Jlc291cmNlRXJyb3IgV29ya2VyU2NyaXB0TG9hZGVyOjp2YWxpZGF0ZVdvcmtlclJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBGZXRjaE9wdGlvbnM6OkRlc3Rp
bmF0aW9uIGRlc3RpbmF0aW9uKQogewotICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
IC8gMTAwICE9IDIgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkgewotICAgICAgICBtX2Zh
aWxlZCA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkgLyAxMDAgIT0gMiAmJiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKQor
ICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWws
IDAsIHJlc3BvbnNlLnVybCgpLCAiUmVzcG9uc2UgaXMgbm90IDJ4eCJfcywgUmVzb3VyY2VFcnJv
cjo6VHlwZTo6R2VuZXJhbCB9OwogCiAgICAgaWYgKCFpc1NjcmlwdEFsbG93ZWRCeU5vc25pZmYo
cmVzcG9uc2UpKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNl
ZCB0byBleGVjdXRlICIsIHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xl
bmd0aCgpLCAiIGFzIHNjcmlwdCBiZWNhdXNlIFwiWC1Db250ZW50LVR5cGU6IG5vc25pZmZcIiB3
YXMgZ2l2ZW4gYW5kIGl0cyBDb250ZW50LVR5cGUgaXMgbm90IGEgc2NyaXB0IE1JTUUgdHlwZS4i
KTsKLSAgICAgICAgbV9lcnJvciA9IFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCB1cmwoKSwgbWVzc2FnZSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9
OwotICAgICAgICBtX2ZhaWxlZCA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25z
ZS51cmwoKSwgV1RGTW92ZShtZXNzYWdlKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9
OwogICAgIH0KIAotICAgIGlmIChzaG91bGRCbG9ja1Jlc3BvbnNlRHVlVG9NSU1FVHlwZShyZXNw
b25zZSwgbV9kZXN0aW5hdGlvbikpIHsKKyAgICBpZiAoc2hvdWxkQmxvY2tSZXNwb25zZUR1ZVRv
TUlNRVR5cGUocmVzcG9uc2UsIGRlc3RpbmF0aW9uKSkgewogICAgICAgICBTdHJpbmcgbWVzc2Fn
ZSA9IG1ha2VTdHJpbmcoIlJlZnVzZWQgdG8gZXhlY3V0ZSAiLCByZXNwb25zZS51cmwoKS5zdHJp
bmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiBhcyBzY3JpcHQgYmVjYXVzZSAiLCByZXNw
b25zZS5taW1lVHlwZSgpLCAiIGlzIG5vdCBhIHNjcmlwdCBNSU1FIHR5cGUuIik7Ci0gICAgICAg
IG1fZXJyb3IgPSBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwg
cmVzcG9uc2UudXJsKCksIG1lc3NhZ2UsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwgfTsK
KyAgICAgICAgcmV0dXJuIFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFs
LCAwLCByZXNwb25zZS51cmwoKSwgV1RGTW92ZShtZXNzYWdlKSwgUmVzb3VyY2VFcnJvcjo6VHlw
ZTo6R2VuZXJhbCB9OworICAgIH0KKworICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgV29ya2Vy
U2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBtX2Vycm9yID0gdmFs
aWRhdGVXb3JrZXJSZXNwb25zZShyZXNwb25zZSwgbV9kZXN0aW5hdGlvbik7CisgICAgaWYgKCFt
X2Vycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5o
CmluZGV4IDlhMGY0ODc4MGM3YzgxZjdiYTM3YmUyNGQ2Nzg0NzcyOThlNDE1NDguLmU1MTQ2YTU3
YjVjN2Y5NzQ5MjZhYTgzZDEwZDdmNTk4YmZmODdmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaApAQCAtNzcsNiArNzcsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNhbmNlbCgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlc291cmNlRXJy
b3IgdmFsaWRhdGVXb3JrZXJSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgRmV0Y2hP
cHRpb25zOjpEZXN0aW5hdGlvbik7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6
UmVmQ291bnRlZDxXb3JrZXJTY3JpcHRMb2FkZXI+OwogICAgIGZyaWVuZCBzdHJ1Y3Qgc3RkOjpk
ZWZhdWx0X2RlbGV0ZTxXb3JrZXJTY3JpcHRMb2FkZXI+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCmluZGV4IGM2ZDJhMjhkMjhj
ZDdlYmNmYjE0NTA2MjU4YzNjN2FlZmQyOTVhOTAuLmU5ZjBjMTRiNzc4YzYwOWMyNzhiOWZhMWQ4
MjA5OTBkZWRkNmJkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYi5jcHAKQEAgLTExMyw0NiArMTEzLDQ1IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBGCiAgICAgbV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShjb250
ZXh0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKG9wdGlvbnMpLCBDb250ZW50U2VjdXJpdHlQ
b2xpY3lFbmZvcmNlbWVudDo6RG9Ob3RFbmZvcmNlLCBTZXJ2aWNlV29ya2Vyc01vZGU6Ok5vbmUs
ICp0aGlzKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
dW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitSZXNvdXJj
ZUVycm9yIFNlcnZpY2VXb3JrZXJKb2I6OnZhbGlkYXRlU2VydmljZVdvcmtlclJlc3BvbnNlKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhy
ZWFkOjpjdXJyZW50KCkpOwotICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwotICAgIEFTU0VSVCht
X3NjcmlwdExvYWRlcik7Ci0KICAgICAvLyBFeHRyYWN0IGEgTUlNRSB0eXBlIGZyb20gdGhlIHJl
c3BvbnNlJ3MgaGVhZGVyIGxpc3QuIElmIHRoaXMgTUlNRSB0eXBlIChpZ25vcmluZyBwYXJhbWV0
ZXJzKSBpcyBub3QgYSBKYXZhU2NyaXB0IE1JTUUgdHlwZSwgdGhlbjoKLSAgICBpZiAoIU1JTUVU
eXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKHJlc3BvbnNlLm1pbWVU
eXBlKCkpKSB7Ci0gICAgICAgIG1fc2NyaXB0TG9hZGVyLT5jYW5jZWwoKTsKLSAgICAgICAgbV9z
Y3JpcHRMb2FkZXIgPSBudWxscHRyOwotCi0gICAgICAgIC8vIEludm9rZSBSZWplY3QgSm9iIFBy
b21pc2Ugd2l0aCBqb2IgYW5kICJTZWN1cml0eUVycm9yIiBET01FeGNlcHRpb24uCi0gICAgICAg
IEV4Y2VwdGlvbiBleGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiTUlNRSBUeXBlIGlzIG5vdCBh
IEphdmFTY3JpcHQgTUlNRSB0eXBlIl9zIH07Ci0gICAgICAgIC8vIEFzeW5jaHJvbm91c2x5IGNv
bXBsZXRlIHRoZXNlIHN0ZXBzIHdpdGggYSBuZXR3b3JrIGVycm9yLgotICAgICAgICBSZXNvdXJj
ZUVycm9yIGVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJs
KCksICJVbmV4cGVjdGVkIE1JTUUgdHlwZSJfcyB9OwotICAgICAgICBtX2NsaWVudC5qb2JGYWls
ZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBXVEZNb3ZlKGVycm9yKSwgV1RGTW92ZShleGNlcHRpb24p
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6Omlz
U3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKQorICAgICAg
ICByZXR1cm4geyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwg
Ik1JTUUgVHlwZSBpcyBub3QgYSBKYXZhU2NyaXB0IE1JTUUgdHlwZSJfcyB9OwogCiAgICAgU3Ry
aW5nIHNlcnZpY2VXb3JrZXJBbGxvd2VkID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpTZXJ2aWNlV29ya2VyQWxsb3dlZCk7CiAgICAgU3RyaW5nIG1heFNjb3BlU3Ry
aW5nOwogICAgIGlmIChzZXJ2aWNlV29ya2VyQWxsb3dlZC5pc051bGwoKSkgewotICAgICAgICBT
dHJpbmcgcGF0aCA9IG1fam9iRGF0YS5zY3JpcHRVUkwucGF0aCgpOworICAgICAgICBTdHJpbmcg
cGF0aCA9IGpvYkRhdGEuc2NyaXB0VVJMLnBhdGgoKTsKICAgICAgICAgLy8gTGFzdCBwYXJ0IG9m
IHRoZSBwYXRoIGlzIHRoZSBzY3JpcHQncyBmaWxlbmFtZS4KICAgICAgICAgbWF4U2NvcGVTdHJp
bmcgPSBwYXRoLnN1YnN0cmluZygwLCBwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxKTsKICAgICB9
IGVsc2UgewotICAgICAgICBhdXRvIG1heFNjb3BlID0gVVJMKG1fam9iRGF0YS5zY3JpcHRVUkws
IHNlcnZpY2VXb3JrZXJBbGxvd2VkKTsKLSAgICAgICAgaWYgKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUobWF4U2NvcGUpLT5pc1NhbWVPcmlnaW5BcyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fam9i
RGF0YS5zY3JpcHRVUkwpKSkKKyAgICAgICAgYXV0byBtYXhTY29wZSA9IFVSTChqb2JEYXRhLnNj
cmlwdFVSTCwgc2VydmljZVdvcmtlckFsbG93ZWQpOworICAgICAgICBpZiAoU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShtYXhTY29wZSktPmlzU2FtZU9yaWdpbkFzKFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUoam9iRGF0YS5zY3JpcHRVUkwpKSkKICAgICAgICAgICAgIG1heFNjb3BlU3RyaW5nID0gbWF4
U2NvcGUucGF0aCgpOwogICAgIH0KIAotICAgIFN0cmluZyBzY29wZVN0cmluZyA9IG1fam9iRGF0
YS5zY29wZVVSTC5wYXRoKCk7Ci0gICAgaWYgKHNjb3BlU3RyaW5nLnN0YXJ0c1dpdGgobWF4U2Nv
cGVTdHJpbmcpKQorICAgIFN0cmluZyBzY29wZVN0cmluZyA9IGpvYkRhdGEuc2NvcGVVUkwucGF0
aCgpOworICAgIGlmICghc2NvcGVTdHJpbmcuc3RhcnRzV2l0aChtYXhTY29wZVN0cmluZykpCisg
ICAgICAgIHJldHVybiB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVy
bCgpLCAiU2NvcGUgVVJMIHNob3VsZCBzdGFydCB3aXRoIHRoZSBnaXZlbiBzY3JpcHQgVVJMIl9z
IH07CisKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmRpZFJl
Y2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKK3sKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOworICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOworICAgIEFTU0VSVChtX3Njcmlw
dExvYWRlcik7CisKKyAgICBhdXRvIGVycm9yID0gdmFsaWRhdGVTZXJ2aWNlV29ya2VyUmVzcG9u
c2UobV9qb2JEYXRhLCByZXNwb25zZSk7CisgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBtX3NjcmlwdExvYWRlci0+Y2FuY2VsKCk7CiAgICAgbV9zY3JpcHRM
b2FkZXIgPSBudWxscHRyOwogCi0gICAgRXhjZXB0aW9uIGV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJy
b3IsICJTY29wZSBVUkwgc2hvdWxkIHN0YXJ0IHdpdGggdGhlIGdpdmVuIHNjcmlwdCBVUkwiX3Mg
fTsKLSAgICBSZXNvdXJjZUVycm9yIGVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwg
MCwgcmVzcG9uc2UudXJsKCksICJTY29wZSBVUkwgc2hvdWxkIHN0YXJ0IHdpdGggdGhlIGdpdmVu
IHNjcmlwdCBVUkwiX3MgfTsKKyAgICBFeGNlcHRpb24gZXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJv
ciwgZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSB9OwogICAgIG1fY2xpZW50LmpvYkZhaWxl
ZExvYWRpbmdTY3JpcHQoKnRoaXMsIFdURk1vdmUoZXJyb3IpLCBXVEZNb3ZlKGV4Y2VwdGlvbikp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2IuaAppbmRleCA3ZGJiN2QzYmFjZTIwZTNjYWVkNzYyNjE5ZTg4NGZjZjVkMDg3NGFiLi45
M2E0NzRjMmM2YjVlOWVhN2IxNjNlYjEwNjZiMjViM2FjZjQ5ZTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmgKQEAgLTcwLDYgKzcw
LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBjYW5jZWxQZW5kaW5nTG9hZCgpOwogCisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlc291cmNlRXJyb3IgdmFsaWRhdGVTZXJ2aWNlV29ya2VyUmVz
cG9uc2UoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jik7CisKIHByaXZhdGU6CiAgICAgLy8gV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcAppbmRleCA0N2E3OWYwYTNmNzY2ZGQ1
ZTU0ODIxYTliMmVkMjMyNTVkNmNmNDFlLi5hMGYzNjQ1OGZiZjZkOWRiMTZlNjgxYjE5ZjcxMDgx
YWNhZjdkYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckpvYkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAKQEAgLTY3LDYgKzY3LDI1IEBAIFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhIFNlcnZpY2VXb3JrZXJKb2JEYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKKy8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29y
a2VyLyNkZm4tam9iLWVxdWl2YWxlbnQKK2Jvb2wgU2VydmljZVdvcmtlckpvYkRhdGE6OmlzRXF1
aXZhbGVudChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKSBjb25zdAoreworICAgIGlm
ICh0eXBlICE9IGpvYi50eXBlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKKyAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjoKKyAgICBj
YXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGU6CisgICAgICAgIHJldHVybiBzY29wZVVS
TCA9PSBqb2Iuc2NvcGVVUkwKKyAgICAgICAgICAgICYmIHNjcmlwdFVSTCA9PSBqb2Iuc2NyaXB0
VVJMCisgICAgICAgICAgICAmJiByZWdpc3RyYXRpb25PcHRpb25zLnR5cGUgPT0gam9iLnJlZ2lz
dHJhdGlvbk9wdGlvbnMudHlwZQorICAgICAgICAgICAgJiYgcmVnaXN0cmF0aW9uT3B0aW9ucy51
cGRhdGVWaWFDYWNoZSA9PSBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZTsK
KyAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVbnJlZ2lzdGVyOgorICAgICAgICByZXR1
cm4gc2NvcGVVUkwgPT0gam9iLnNjb3BlVVJMOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2JEYXRhLmgKaW5kZXggYzIwODUzN2YwODUzNzUyZmExMmE5Y2E5MGM3Yjc0ODMzZjU3
ZTEyZC4uNWYzMzdjYmFhODM5MTZlNWFlMzFkYzI3MDc3OWEwYTQxMWEwOWM0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRh
LmgKQEAgLTQ2LDYgKzQ2LDggQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhIHsKIAogICAg
IFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXI7IH0KIAorICAgIGJv
b2wgaXNFcXVpdmFsZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgY29uc3Q7CisKICAg
ICBVUkwgc2NyaXB0VVJMOwogICAgIFVSTCBjbGllbnRDcmVhdGlvblVSTDsKICAgICBTZWN1cml0
eU9yaWdpbkRhdGEgdG9wT3JpZ2luOwpAQCAtNTYsNyArNTgsNyBAQCBzdHJ1Y3QgU2VydmljZVdv
cmtlckpvYkRhdGEgewogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25PcHRpb25zIHJlZ2lz
dHJhdGlvbk9wdGlvbnM7CiAKICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHJl
Z2lzdHJhdGlvbktleSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5KCkgY29uc3Q7CiAgICAgU2VydmljZVdvcmtl
ckpvYkRhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAK
aW5kZXggZjIxODkwNzBlYWI3OGQ4YzUyNzkxYjNiNWRlMzA0YzBmNTNkMjNjNy4uMTE2YmJiNGZm
NzljYWNlZWZkNzkwMjViZDNjYzhhNzIwMzM5NjhlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNw
cApAQCAtNDYsOCArNDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKTsKIAotY29uc3QgU2Vjb25k
cyBzb2Z0VXBkYXRlRGVsYXkgeyAxX3MgfTsKLQogUmVmPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFJlZjxTZXJ2aWNlV29ya2VyQ29udGFpbmVyPiYmIGNvbnRhaW5l
ciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiBkYXRhKQogewogICAgIGlmIChhdXRv
KiByZWdpc3RyYXRpb24gPSBjb250YWluZXItPnJlZ2lzdHJhdGlvbihkYXRhLmlkZW50aWZpZXIp
KSB7CkBAIC02Miw3ICs2MCw2IEBAIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OlNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29uCiAgICAgOiBBY3Rp
dmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbkRhdGEoV1RGTW92ZShy
ZWdpc3RyYXRpb25EYXRhKSkKICAgICAsIG1fY29udGFpbmVyKFdURk1vdmUoY29udGFpbmVyKSkK
LSAgICAsIG1fc29mdFVwZGF0ZVRpbWVyKFt0aGlzXSB7IHNvZnRVcGRhdGUoKTsgfSkKIHsKICAg
ICBMT0coU2VydmljZVdvcmtlciwgIkNyZWF0aW5nIHJlZ2lzdHJhdGlvbiAlcCBmb3IgcmVnaXN0
cmF0aW9uIGtleSAlcyIsIHRoaXMsIG1fcmVnaXN0cmF0aW9uRGF0YS5rZXkubG9nZ2luZ1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwpAQCAtMTU2LDI4ICsx
NTMsNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnVwZGF0ZShSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgbV9jb250YWluZXItPnVwZGF0ZVJlZ2lzdHJhdGlv
bihtX3JlZ2lzdHJhdGlvbkRhdGEuc2NvcGVVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCks
IFdvcmtlclR5cGU6OkNsYXNzaWMsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCi0vLyBUbyBhdm9p
ZCBzY2hlZHVsaW5nIG1hbnkgdXBkYXRlcyBkdXJpbmcgYSBzaW5nbGUgcGFnZSBsb2FkLCB3ZSBk
byBzb2Z0IHVwZGF0ZXMgb24gYSAxIHNlY29uZCBkZWxheSBhbmQga2VlcCBkZWxheWluZwotLy8g
YXMgbG9uZyBhcyBzb2Z0IHVwZGF0ZSByZXF1ZXN0cyBrZWVwIGNvbWluZy4gVGhpcyBzZWVtcyB0
byBtYXRjaCBDaHJvbWUncyBiZWhhdmlvci4KLXZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bjo6c2NoZWR1bGVTb2Z0VXBkYXRlKCkKLXsKLSAgICBpZiAobV9zb2Z0VXBkYXRlVGltZXIuaXNB
Y3RpdmUoKSkKLSAgICAgICAgbV9zb2Z0VXBkYXRlVGltZXIuc3RvcCgpOwotICAgIG1fc29mdFVw
ZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChzb2Z0VXBkYXRlRGVsYXkpOwotfQotCi12b2lkIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb246OnNvZnRVcGRhdGUoKQotewotICAgIGlmIChtX2lzU3RvcHBl
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogbmV3ZXN0V29ya2VyID0gZ2V0TmV3ZXN0
V29ya2VyKCk7Ci0gICAgaWYgKCFuZXdlc3RXb3JrZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIEZJWE1FOiBTdXBwb3J0IHdvcmtlciB0eXBlcy4KLSAgICBtX2NvbnRhaW5lci0+dXBkYXRl
UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uRGF0YS5zY29wZVVSTCwgbmV3ZXN0V29ya2VyLT5z
Y3JpcHRVUkwoKSwgV29ya2VyVHlwZTo6Q2xhc3NpYywgbnVsbHB0cik7Ci19Ci0KIHZvaWQgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dW5yZWdpc3RlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiB7CiAgICAgaWYgKG1faXNTdG9wcGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaApp
bmRleCAxOTFmYTQwYjhmYTc3ZDI5MmIxM2RjZDFmMmFkNWRmNzFhYzRmNzBlLi42YjgwNjhlZDU0
OGYyYjg4NTJiNzJlMTczNDI0MDdmMzRkMjBjMmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKQEAg
LTY4LDggKzY4LDYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYpOwogICAgIHZvaWQgdW5yZWdpc3RlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAot
ICAgIHZvaWQgc2NoZWR1bGVTb2Z0VXBkYXRlKCk7Ci0KICAgICB1c2luZyBSZWZDb3VudGVkOjpy
ZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAgICAgCkBAIC04Nyw4ICs4NSw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAg
ICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgIHZvaWQg
c29mdFVwZGF0ZSgpOwotCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIq
IGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHN1c3BlbmQoUmVh
c29uRm9yU3VzcGVuc2lvbikgZmluYWw7CkBAIC0xMDYsNyArMTAyLDYgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRGaXJlVXBk
YXRlRm91bmRFdmVudFVwb25SZXN1bWluZyB7IGZhbHNlIH07CiAgICAgUmVmUHRyPFBlbmRpbmdB
Y3Rpdml0eTxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPj4gbV9wZW5kaW5nQWN0aXZpdHlGb3JF
dmVudERpc3BhdGNoOwotICAgIFRpbWVyIG1fc29mdFVwZGF0ZVRpbWVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCA0NzBjMTg5ODk3Y2Fi
MmI2ZGVkMmU3NzI1ZmFlNTk2M2YxOGIwYTI3Li44MmQzZTY5YmIwZWUyMTIxYzJjYTc3NDlkOTA4
NTYwNzY2YmEwMzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTA4LDE1ICsxMDgsNiBA
QCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkuZmlyZUFj
dGl2YXRlRXZlbnQoKTsKIH0KIAotdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzb2Z0VXBkYXRlKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgYXV0byogc2VydmljZVdv
cmtlciA9IG1fd29ya2VyTWFwLmdldChpZGVudGlmaWVyKTsKLSAgICBpZiAoIXNlcnZpY2VXb3Jr
ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnNvZnRV
cGRhdGUoKTsKLX0KLQogdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVXb3JrZXIoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlv
bjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBzZXJ2aWNlV29ya2Vy
ID0gbV93b3JrZXJNYXAudGFrZShpZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCA2
YTA1YTNjMTE5YmE5OWUzN2QyNzA2MGNmODZkMGVjY2U3NjNlMWM2Li4wOWJiY2I1MzVmOTYwMjll
MWY2ZjRmOTA4ZTE3MDkwMWQzNmRkMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC04Myw3ICs4
Myw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmLCBTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNvZnRVcGRh
dGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVy
bWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQsIEZ1
bmN0aW9uPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFk
KGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkmKT4mKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3BwCmluZGV4IDQ0OTY5YWYwNmY0ZjhjMWU3N2E1YzFlYmE5
ZmQ0YjAyMjNhMDY3YTIuLjk3ODNhOWQ5ZTY3MWI3MmQxOTQ4ZTQyN2JjMTk0MzVmNTNmNGIxNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJGZXRjaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApAQCAtMTQwLDcgKzE0MCw2IEBAIHZvaWQgZGlz
cGF0Y2hGZXRjaEV2ZW50KFJlZjxDbGllbnQ+JiYgY2xpZW50LCBTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUmIGdsb2JhbFNjCiAgICAgRmV0Y2hPcHRpb25zOjpSZWRpcmVjdCByZWRpcmVjdCA9IG9w
dGlvbnMucmVkaXJlY3Q7CiAKICAgICBib29sIGlzTmF2aWdhdGlvbiA9IG9wdGlvbnMubW9kZSA9
PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlOwotICAgIGJvb2wgaXNOb25TdWJyZXNvdXJj
ZVJlcXVlc3QgPSBXZWJDb3JlOjppc05vblN1YnJlc291cmNlUmVxdWVzdChvcHRpb25zLmRlc3Rp
bmF0aW9uKTsKIAogICAgIEFTU0VSVChnbG9iYWxTY29wZS5yZWdpc3RyYXRpb24oKS5hY3RpdmUo
KSk7CiAgICAgQVNTRVJUKGdsb2JhbFNjb3BlLnJlZ2lzdHJhdGlvbigpLmFjdGl2ZSgpLT5pZGVu
dGlmaWVyKCkgPT0gZ2xvYmFsU2NvcGUudGhyZWFkKCkuaWRlbnRpZmllcigpKTsKQEAgLTE4OCwx
MCArMTg3LDYgQEAgdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4mJiBjbGllbnQs
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2MKICAgICB9CiAKICAgICBnbG9iYWxT
Y29wZS51cGRhdGVFeHRlbmRlZEV2ZW50c1NldChldmVudC5wdHIoKSk7Ci0KLSAgICBhdXRvJiBy
ZWdpc3RyYXRpb24gPSBnbG9iYWxTY29wZS5yZWdpc3RyYXRpb24oKTsKLSAgICBpZiAoaXNOb25T
dWJyZXNvdXJjZVJlcXVlc3QgfHwgcmVnaXN0cmF0aW9uLm5lZWRzVXBkYXRlKCkpCi0gICAgICAg
IHJlZ2lzdHJhdGlvbi5zY2hlZHVsZVNvZnRVcGRhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
U2VydmljZVdvcmtlckZldGNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IGU0ZWVj
YTBmYWE5N2FhOTZiMjlhMzg0N2EwMzNjYWE2NTMzZTZmNGMuLjA0ZTljODg0ZWE1ZjBhNDFlZmNh
YzQ4MGVhNjdmMjNjZWMxMmViOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0x
NzUsMTQgKzE3NSw2IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6ZmlyZUFjdGl2YXRlRXZl
bnQoKQogICAgIH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnNvZnRVcGRhdGUo
KQotewotICAgIHJ1bkxvb3AoKS5wb3N0VGFzayhbXShhdXRvJiBjb250ZXh0KSBtdXRhYmxlIHsK
LSAgICAgICAgYXV0byYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKLSAgICAgICAgc2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLnJlZ2lzdHJhdGlvbigpLnNjaGVkdWxlU29mdFVwZGF0ZSgpOwotICAgIH0pOwotfQot
CiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpCiB7
CiAgICAgbV9kb2VzSGFuZGxlRmV0Y2ggPSB3b3JrZXJHbG9iYWxTY29wZSgpLT5oYXNFdmVudExp
c3RlbmVycyhldmVudE5hbWVzKCkuZmV0Y2hFdmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgK
aW5kZXggMDczY2Q2MjI2MzNiNWI1ZjYxZTNhOTBiNGRjOGYwNjZmN2UzMjFmOC4uYTQyNTc5ZmQ4
ZGU1MWU5NGRmMDQ4ZjNhZmZiZjRhODBkNTZjMzMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
aApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQo
KTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7Ci0gICAgdm9pZCBzb2Z0VXBkYXRlKCk7
CiAKICAgICBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGNvbnRleHREYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMGRkZmNmY2QwODg3NDVhZjdjZWJlMTdl
ZDU4MmU1ZGJhZDhlOWYxYi4uNmU0NDBkNjI1YjU4Zjc5MWFhZDZlNTQzODYwNzkyYmUzYjk3NzI3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpm
aW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaAogCiB2
b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCiB7Ci0gICAgbV9zZXJ2ZXIu
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoKnRoaXMsIGtleSk7CisgICAgbV9zZXJ2ZXIu
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UodGhpcywga2V5KTsKIH0KIAogdm9pZCBTV1Nl
cnZlcjo6Q29ubmVjdGlvbjo6YWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC0zMTIsMTEg
KzMxMiwxMiBAQCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2Vy
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZQogICAgICAgICBtX3NlcnZlci5zeW5j
VGVybWluYXRlV29ya2VyKCp3b3JrZXIpOwogfQogCi1TV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVl
UmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYg
Y2FsbGJhY2spCitTV1NlcnZlcjo6U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYg
b3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcm
JiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBTb2Z0VXBkYXRlQ2FsbGJhY2smJiBzb2Z0VXBkYXRlQ2FsbGJhY2ssIENyZWF0ZUNvbnRleHRD
b25uZWN0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICA6IG1fb3JpZ2luU3RvcmUoV1RGTW92
ZShvcmlnaW5TdG9yZSkpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX2lz
UHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5h
YmxlZCkKICAgICAsIG1fY3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayhXVEZNb3ZlKGNh
bGxiYWNrKSkKKyAgICAsIG1fc29mdFVwZGF0ZUNhbGxiYWNrKFdURk1vdmUoc29mdFVwZGF0ZUNh
bGxiYWNrKSkKIHsKICAgICBBU1NFUlQoIXJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5Lmlz
RW1wdHkoKSB8fCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKTsKICAgICBpZiAoIW1fc2Vzc2lv
bklELmlzRXBoZW1lcmFsKCkpCkBAIC0zMzEsMTYgKzMzMiwyNiBAQCBTV1NlcnZlcjo6U1dTZXJ2
ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vzc1Rl
cm1pbmF0aQogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3NjaGVkdWxl
LWpvYi1hbGdvcml0aG0KIHZvaWQgU1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJK
b2JEYXRhJiYgam9iRGF0YSkKIHsKLSAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhq
b2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpKTsKLQotICAgIC8vIEZJWE1FOiBQZXIgdGhl
IHNwZWMsIGNoZWNrIGlmIHRoaXMgam9iIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGxhc3Qgam9iIG9u
IHRoZSBxdWV1ZS4KLSAgICAvLyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0IGpv
Yi4KKyAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhqb2JEYXRhLmNvbm5lY3Rpb25J
ZGVudGlmaWVyKCkpIHx8IGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSA9PSBQcm9jZXNz
OjppZGVudGlmaWVyKCkpOwogCiAgICAgYXV0byYgam9iUXVldWUgPSAqbV9qb2JRdWV1ZXMuZW5z
dXJlKGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIFt0aGlzLCAmam9iRGF0YV0gewogICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdp
c3RyYXRpb25LZXkoKSk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgam9iUXVldWUu
ZW5xdWV1ZUpvYihqb2JEYXRhKTsKKyAgICBpZiAoIWpvYlF1ZXVlLnNpemUoKSkgeworICAgICAg
ICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKFdURk1vdmUoam9iRGF0YSkpOworICAgICAgICBqb2JRdWV1
ZS5ydW5OZXh0Sm9iKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byYgbGFzdEpv
YiA9IGpvYlF1ZXVlLmxhc3RKb2IoKTsKKyAgICBpZiAoam9iRGF0YS5pc0VxdWl2YWxlbnQobGFz
dEpvYikpIHsKKyAgICAgICAgLy8gRklYTUU6IFBlciB0aGUgc3BlYywgY2hlY2sgaWYgdGhpcyBq
b2IgaXMgZXF1aXZhbGVudCB0byB0aGUgbGFzdCBqb2Igb24gdGhlIHF1ZXVlLgorICAgICAgICAv
LyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0IGpvYi4gRm9yIG5vdywgd2UganVz
dCBtYWtlIHN1cmUgdG8gbm90IGNhbGwgc29mdC11cGRhdGUgdG9vIG9mdGVuLgorICAgICAgICBp
ZiAoam9iRGF0YS50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUgJiYgam9iRGF0
YS5jb25uZWN0aW9uSWRlbnRpZmllcigpID09IFByb2Nlc3M6OmlkZW50aWZpZXIoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKFdURk1vdmUo
am9iRGF0YSkpOwogICAgIGlmIChqb2JRdWV1ZS5zaXplKCkgPT0gMSkKICAgICAgICAgam9iUXVl
dWUucnVuTmV4dEpvYigpOwogfQpAQCAtMzU5LDggKzM3MCwxMSBAQCB2b2lkIFNXU2VydmVyOjpy
ZXNvbHZlUmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRh
LCBjb25zdAogewogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiUmVzb2x2ZWQgU2VydmljZVdvcmtl
ciBqb2IgJXMgaW4gc2VydmVyIHdpdGggcmVnaXN0cmF0aW9uICVzIiwgam9iRGF0YS5pZGVudGlm
aWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlZ2lzdHJhdGlvbkRhdGEuaWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgYXV0byogY29ubmVj
dGlvbiA9IG1fY29ubmVjdGlvbnMuZ2V0KGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSk7
Ci0gICAgaWYgKCFjb25uZWN0aW9uKQorICAgIGlmICghY29ubmVjdGlvbikgeworICAgICAgICBp
ZiAoc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkID09IFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZDo6
WWVzICYmIGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlm
aWVyKCkpCisgICAgICAgICAgICBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShudWxscHRy
LCByZWdpc3RyYXRpb25EYXRhLmtleSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBj
b25uZWN0aW9uLT5yZXNvbHZlUmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoam9iRGF0YS5pZGVudGlm
aWVyKCkuam9iSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uRGF0YSwgc2hvdWxkTm90aWZ5V2hlblJl
c29sdmVkKTsKIH0KQEAgLTM3NCwyMCArMzg4LDU3IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlc29sdmVV
bnJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgY29u
CiAgICAgY29ubmVjdGlvbi0+cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iSW5DbGllbnQoam9iRGF0
YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCB1bnJlZ2lzdHJh
dGlvblJlc3VsdCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQ
b2xpY3kpCitVUkwgc3RhdGljIGlubGluZSBvcmlnaW5VUkwoY29uc3QgU2VjdXJpdHlPcmlnaW4m
IG9yaWdpbikKK3sKKyAgICBVUkwgdXJsOworICAgIHVybC5zZXRQcm90b2NvbChvcmlnaW4ucHJv
dG9jb2woKSk7CisgICAgdXJsLnNldEhvc3Qob3JpZ2luLmhvc3QoKSk7CisgICAgaWYgKG9yaWdp
bi5wb3J0KCkpCisgICAgICAgIHVybC5zZXRQb3J0KCpvcmlnaW4ucG9ydCgpKTsKKyAgICByZXR1
cm4gdXJsOworfQorCit2b2lkIFNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSkKIHsKICAg
ICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZlciBpc3N1aW5nIHN0YXJ0U2NyaXB0RmV0Y2ggZm9y
IGN1cnJlbnQgam9iICVzIGluIGNsaWVudCIsIGpvYkRhdGEuaWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBhdXRvKiBjb25uZWN0aW9uID0gbV9jb25uZWN0
aW9ucy5nZXQoam9iRGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKyAgICBpZiAoY29ubmVj
dGlvbikgeworICAgICAgICBjb25uZWN0aW9uLT5zdGFydFNjcmlwdEZldGNoSW5DbGllbnQoam9i
RGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllciwgam9iRGF0YS5yZWdpc3RyYXRpb25LZXko
KSwgc2hvdWxkUmVmcmVzaENhY2hlID8gRmV0Y2hPcHRpb25zOjpDYWNoZTo6Tm9DYWNoZSA6IEZl
dGNoT3B0aW9uczo6Q2FjaGU6OkRlZmF1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmIChqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgPT0gUHJvY2Vzczo6aWRlbnRpZmll
cigpKSB7CisgICAgICAgIEFTU0VSVChqb2JEYXRhLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5
cGU6OlVwZGF0ZSk7CisgICAgICAgIC8vIFRoaXMgaXMgYSBzb2Z0LXVwZGF0ZSBqb2IsIGNyZWF0
ZSBkaXJlY3RseSBhIG5ldHdvcmsgbG9hZCB0byBmZXRjaCB0aGUgc2NyaXB0LgorICAgICAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCB7IGpvYkRhdGEuc2NyaXB0VVJMIH07CisKKyAgICAgICAg
YXV0byB0b3BPcmlnaW4gPSBqb2JEYXRhLnRvcE9yaWdpbi5zZWN1cml0eU9yaWdpbigpOworICAg
ICAgICBhdXRvIG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRV
UkwpOworCisgICAgICAgIHJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24odG9wT3Jp
Z2luLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRBbGxv
d0Nvb2tpZXModHJ1ZSk7CisgICAgICAgIHJlcXVlc3Quc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMo
b3JpZ2luVVJMKHRvcE9yaWdpbikpOworCisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpPcmlnaW4sIG9yaWdpbi0+dG9TdHJpbmcoKSk7CisgICAgICAg
IHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZXJ2aWNlV29ya2Vy
LCAic2NyaXB0Il9zKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIob3JpZ2luVVJM
KG9yaWdpbikpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoc2VydmljZVdvcmtl
ckNsaWVudFVzZXJBZ2VudChDbGllbnRPcmlnaW4geyBqb2JEYXRhLnRvcE9yaWdpbiwgU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShqb2JEYXRhLnNjcmlwdFVSTCktPmRhdGEoKSB9KSk7CisgICAgICAg
IHJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7CisKKyAgICAg
ICAgbV9zb2Z0VXBkYXRlQ2FsbGJhY2soU2VydmljZVdvcmtlckpvYkRhdGEgeyBqb2JEYXRhIH0s
IHNob3VsZFJlZnJlc2hDYWNoZSwgV1RGTW92ZShyZXF1ZXN0KSwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldKGF1dG8mIHJlc3VsdCkgeworICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBzY3JpcHRGZXRjaEZp
bmlzaGVkKHJlc3VsdCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQogICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoY29ubmVjdGlvbiwgIklmIHRoZSBjb25uZWN0aW9uIHdhcyBs
b3N0LCB0aGlzIGpvYiBzaG91bGQgaGF2ZSBiZWVuIGNhbmNlbGxlZCIpOwotICAgIGlmIChjb25u
ZWN0aW9uKQotICAgICAgICBjb25uZWN0aW9uLT5zdGFydFNjcmlwdEZldGNoSW5DbGllbnQoam9i
RGF0YS5pZGVudGlmaWVyKCkuam9iSWRlbnRpZmllciwgam9iRGF0YS5yZWdpc3RyYXRpb25LZXko
KSwgY2FjaGVQb2xpY3kpOwogfQogCiB2b2lkIFNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVk
KGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQogewogICAgIExPRyhTZXJ2
aWNlV29ya2VyLCAiU2VydmVyIGhhbmRsaW5nIHNjcmlwdEZldGNoRmluaXNoZWQgZm9yIGN1cnJl
bnQgam9iICVzIGluIGNsaWVudCIsIHJlc3VsdC5qb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlu
cyhyZXN1bHQuam9iRGF0YUlkZW50aWZpZXIuY29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAgICBB
U1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhyZXN1bHQuam9iRGF0YUlkZW50aWZpZXIuY29u
bmVjdGlvbklkZW50aWZpZXIpIHx8IHJlc3VsdC5qb2JEYXRhSWRlbnRpZmllci5jb25uZWN0aW9u
SWRlbnRpZmllciA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpOwogCiAgICAgYXV0byBqb2JRdWV1
ZSA9IG1fam9iUXVldWVzLmdldChyZXN1bHQucmVnaXN0cmF0aW9uS2V5KTsKICAgICBpZiAoIWpv
YlF1ZXVlKQpAQCAtNTE3LDkgKzU2OCw5IEBAIHZvaWQgU1dTZXJ2ZXI6OmNsYWltKFNXU2VydmVy
V29ya2VyJiB3b3JrZXIpCiAgICAgfSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmRpZFJlc29sdmVS
ZWdpc3RyYXRpb25Qcm9taXNlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKK3ZvaWQgU1dTZXJ2ZXI6OmRp
ZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKIHsKLSAgICBB
U1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sIG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlv
bi5pZGVudGlmaWVyKCkpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sICFjb25uZWN0
aW9uIHx8IG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi0+aWRlbnRpZmllcigpKSk7
CiAKICAgICBpZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVnaXN0cmF0aW9u
S2V5KSkKICAgICAgICAgam9iUXVldWUtPmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKCk7
CkBAIC05OTgsNiArMTA0OSwxNyBAQCBib29sIFNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUoU3Ry
aW5nVmlldyBzY2hlbWUpIGNvbnN0CiAgICAgcmV0dXJuIHNjaGVtZS5sZW5ndGgoKSA9PSA0Owog
fQogCisvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jc29mdC11cGRhdGUK
K3ZvaWQgU1dTZXJ2ZXI6OnNvZnRVcGRhdGUoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJh
dGlvbikKK3sKKyAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSBqb2JEYXRhKFByb2Nlc3M6OmlkZW50
aWZpZXIoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIGpvYkRh
dGEuc2NyaXB0VVJMID0gcmVnaXN0cmF0aW9uLnNjcmlwdFVSTCgpOworICAgIGpvYkRhdGEudG9w
T3JpZ2luID0gcmVnaXN0cmF0aW9uLmtleSgpLnRvcE9yaWdpbigpOworICAgIGpvYkRhdGEuc2Nv
cGVVUkwgPSByZWdpc3RyYXRpb24uc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKTsKKyAgICBqb2JE
YXRhLnR5cGUgPSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlOworICAgIHNjaGVkdWxlSm9i
KFdURk1vdmUoam9iRGF0YSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggOWNkYTliMzg5YzQ1OWFkN2UwMWIxNzg0
ZjRlODRjZjkzNDkwMWFiMC4uYmMxMTI3NmExM2VkYjUwOGM1YzM2YzE3NjQwM2IxMWYxZmY5Mjgz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuaApAQCAtMTI0LDggKzEyNCw5IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPFJlZ2lzdHJh
dGlvblJlYWR5UmVxdWVzdD4gbV9yZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzOwogICAgIH07CiAK
KyAgICB1c2luZyBTb2Z0VXBkYXRlQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIFJlc291cmNlUmVx
dWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJl
c3VsdCYpPiYmKT47CiAgICAgdXNpbmcgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKT47Ci0gICAg
V0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYsIGJvb2wg
cHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRh
YmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQsIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2Fs
bGJhY2smJik7CisgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2lu
U3RvcmU+JiYsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiBy
ZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQsIFNvZnRVcGRhdGVD
YWxsYmFjayYmLCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgflNXU2VydmVyKCk7CiAKQEAgLTEzNSw2ICsxMzYsNyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydFN1c3BlbnNpb24oQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuZFN1c3BlbnNpb24oKTsKIAor
ICAgIFNXU2VydmVyUmVnaXN0cmF0aW9uKiBnZXRSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gbV9yZWdpc3RyYXRpb25z
LmdldChpZGVudGlmaWVyKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyUmVnaXN0cmF0
aW9uKiBnZXRSZWdpc3RyYXRpb24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYp
OwogICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lz
dHJhdGlvbj4mJik7CiAgICAgdm9pZCByZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIpOwpAQCAtMTQ0LDcgKzE0Niw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlamVjdEpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIGNvbnN0IEV4Y2VwdGlv
bkRhdGEmKTsKICAgICB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYsIFNob3Vs
ZE5vdGlmeVdoZW5SZXNvbHZlZCk7CiAgICAgdm9pZCByZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2Io
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7Ci0gICAgdm9pZCBzdGFydFNjcmlw
dEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgRmV0Y2hPcHRpb25zOjpDYWNoZSk7
CisgICAgdm9pZCBzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwg
Ym9vbCBzaG91bGRSZWZyZXNoQ2FjaGUpOwogCiAgICAgdm9pZCB1cGRhdGVXb3JrZXIoY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2Vy
VHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3Jp
cHQ+JiYpOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFNXU2VydmVyV29ya2VyJik7CkBAIC0y
MDYsMTAgKzIwOCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ltcG9ydENvbXBsZXRlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faW1wb3J0Q29tcGxldGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3aGVuSW1wb3J0SXNDb21wbGV0ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAor
ICAgIHZvaWQgc29mdFVwZGF0ZShTV1NlcnZlclJlZ2lzdHJhdGlvbiYpOworCiBwcml2YXRlOgog
ICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQmKTsKIAotICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29ubmVjdGlv
biYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKKyAgICB2b2lkIGRpZFJl
c29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKENvbm5lY3Rpb24qLCBjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5Jik7CiAKICAgICB2b2lkIGFkZENsaWVudFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24oQ29ubmVjdGlvbiYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KTsKICAgICB2b2lkIHJlbW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVj
dGlvbiYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKQEAgLTI2Niw2ICsy
NzAsNyBAQCBwcml2YXRlOgogICAgIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2sgbV9j
cmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrOwogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IG1fcGVuZGluZ0Nvbm5lY3Rpb25Eb21haW5zOwogICAgIFZlY3RvcjxD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX2ltcG9ydENvbXBsZXRlZENhbGxiYWNrczsKKyAg
ICBTb2Z0VXBkYXRlQ2FsbGJhY2sgbV9zb2Z0VXBkYXRlQ2FsbGJhY2s7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAppbmRleCAzYTk3MjdjOGQzYzg2Njc3
MGYxOWU0OTlhMzk5YTEyNDZlMzhlYTdlLi44OTQwZWI5MmJmZDJiMjZhMzY4ZGZjZjRiMWNkYTIz
ZDIwMzAzYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTMzMiwxNyArMzMyLDEzIEBAIHZv
aWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuVXBkYXRlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhJiBqb2IpCiAgICAgaWYgKGpvYi50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRh
dGUgJiYgbmV3ZXN0V29ya2VyICYmICFlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGpv
Yi5zY3JpcHRVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCkpKQogICAgICAgICByZXR1cm4g
cmVqZWN0Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAiQ2Fubm90IHVwZGF0
ZSBhIHNlcnZpY2Ugd29ya2VyIHdpdGggYSByZXF1ZXN0ZWQgc2NyaXB0IFVSTCB3aG9zZSBuZXdl
c3Qgd29ya2VyIGhhcyBhIGRpZmZlcmVudCBzY3JpcHQgVVJMIl9zIH0pOwogCi0gICAgRmV0Y2hP
cHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSA9IEZldGNoT3B0aW9uczo6Q2FjaGU6OkRlZmF1bHQ7
CiAgICAgLy8gU2V0IHJlcXVlc3QncyBjYWNoZSBtb2RlIHRvICJuby1jYWNoZSIgaWYgYW55IG9m
IHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6CiAgICAgLy8gLSByZWdpc3RyYXRpb24ncyB1cGRhdGUg
dmlhIGNhY2hlIG1vZGUgaXMgbm90ICJhbGwiLgogICAgIC8vIC0gam9iJ3MgZm9yY2UgYnlwYXNz
IGNhY2hlIGZsYWcgaXMgc2V0LgogICAgIC8vIC0gbmV3ZXN0V29ya2VyIGlzIG5vdCBudWxsLCBh
bmQgcmVnaXN0cmF0aW9uJ3MgbGFzdCB1cGRhdGUgY2hlY2sgdGltZSBpcyBub3QgbnVsbCBhbmQg
dGhlIHRpbWUgZGlmZmVyZW5jZSBpbiBzZWNvbmRzIGNhbGN1bGF0ZWQgYnkgdGhlCiAgICAgLy8g
ICBjdXJyZW50IHRpbWUgbWludXMgcmVnaXN0cmF0aW9uJ3MgbGFzdCB1cGRhdGUgY2hlY2sgdGlt
ZSBpcyBncmVhdGVyIHRoYW4gODY0MDAuCi0gICAgaWYgKHJlZ2lzdHJhdGlvbi0+dXBkYXRlVmlh
Q2FjaGUoKSAhPSBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU6OkFsbAotICAgICAgICB8fCAo
bmV3ZXN0V29ya2VyICYmIHJlZ2lzdHJhdGlvbi0+aXNTdGFsZSgpKSkgewotICAgICAgICBjYWNo
ZVBvbGljeSA9IEZldGNoT3B0aW9uczo6Q2FjaGU6Ok5vQ2FjaGU7Ci0gICAgfQotICAgIG1fc2Vy
dmVyLnN0YXJ0U2NyaXB0RmV0Y2goam9iLCBjYWNoZVBvbGljeSk7CisgICAgYm9vbCBzaG91bGRS
ZWZyZXNoQ2FjaGUgPSByZWdpc3RyYXRpb24tPnVwZGF0ZVZpYUNhY2hlKCkgIT0gU2VydmljZVdv
cmtlclVwZGF0ZVZpYUNhY2hlOjpBbGwgfHwgKG5ld2VzdFdvcmtlciAmJiByZWdpc3RyYXRpb24t
PmlzU3RhbGUoKSk7CisgICAgbV9zZXJ2ZXIuc3RhcnRTY3JpcHRGZXRjaChqb2IsIHNob3VsZFJl
ZnJlc2hDYWNoZSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVqZWN0Q3VycmVudEpv
Yihjb25zdCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb25EYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaAppbmRl
eCA2YzA0MzRlYzRlNTM2ZWE3NDA2MTYyY2E3MWI1YmI3ZTc4YzU3ODc5Li5lYjkzMWUwNDE0NzAw
ZWQ1OTY3YWFiNjFkNjQ4Mjc1ODEyNTljNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaApAQCAtNDUsNyAr
NDUsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgZmlyc3RK
b2IoKSBjb25zdCB7IHJldHVybiBtX2pvYlF1ZXVlLmZpcnN0KCk7IH0KICAgICBjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYgbGFzdEpvYigpIGNvbnN0IHsgcmV0dXJuIG1fam9iUXVldWUubGFz
dCgpOyB9Ci0gICAgdm9pZCBlbnF1ZXVlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBq
b2JEYXRhKSB7IG1fam9iUXVldWUuYXBwZW5kKGpvYkRhdGEpOyB9CisgICAgdm9pZCBlbnF1ZXVl
Sm9iKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSkgeyBtX2pvYlF1ZXVlLmFwcGVuZChX
VEZNb3ZlKGpvYkRhdGEpKTsgfQogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9q
b2JRdWV1ZS5zaXplKCk7IH0KIAogICAgIHZvaWQgcnVuTmV4dEpvYigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVn
aXN0cmF0aW9uLmNwcAppbmRleCAwMmEwYzk2N2YxMjllYTc5N2Y4ZmM4MTcyZmE4NTU3M2EzZjQw
Yjk2Li5jMjliNDYyNzg5MGVmOWI2Nzc4ZDI3OTdkZjY0YmY3ZjE5ZjNiOWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtNDksNiArNDksNyBAQCBTV1NlcnZlclJlZ2lzdHJhdGlv
bjo6U1dTZXJ2ZXJSZWdpc3RyYXRpb24oU1dTZXJ2ZXImIHNlcnZlciwgY29uc3QgU2VydmljZVdv
cmtlcgogICAgICwgbV9zY3JpcHRVUkwoc2NyaXB0VVJMKQogICAgICwgbV9zZXJ2ZXIoc2VydmVy
KQogICAgICwgbV9jcmVhdGlvblRpbWUoTW9ub3RvbmljVGltZTo6bm93KCkpCisgICAgLCBtX3Nv
ZnRVcGRhdGVUaW1lciB7ICp0aGlzLCAmU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNvZnRVcGRhdGUg
fQogewogICAgIG1fc2NvcGVVUkwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiB9CkBAIC0z
NjMsMTggKzM2NCwxNiBAQCBib29sIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzaG91bGRTb2Z0VXBk
YXRlKGNvbnN0IEZldGNoT3B0aW9ucyYgb3B0aW9ucykgY29uc3QKICAgICByZXR1cm4gV2ViQ29y
ZTo6aXNOb25TdWJyZXNvdXJjZVJlcXVlc3Qob3B0aW9ucy5kZXN0aW5hdGlvbikgJiYgaXNTdGFs
ZSgpOwogfQogCi0vLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jc29mdC11
cGRhdGUKIHZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNvZnRVcGRhdGUoKQogewotICAgIGF1
dG8qIHdvcmtlciA9IGdldE5ld2VzdFdvcmtlcigpOwotICAgIGlmICghd29ya2VyKQotICAgICAg
ICByZXR1cm47CisgICAgbV9zZXJ2ZXIuc29mdFVwZGF0ZSgqdGhpcyk7Cit9CiAKLSAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHNjaGVkdWxlIGFuIHVwZGF0ZSBqb2IuCi0gICAgbV9zZXJ2ZXIucnVu
U2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KHdvcmtlci0+aWRlbnRpZmllcigpLCBbc2VydmljZVdv
cmtlcklkZW50aWZpZXIgPSB3b3JrZXItPmlkZW50aWZpZXIoKV0oYXV0byogY29udGV4dENvbm5l
Y3Rpb24pIHsKLSAgICAgICAgaWYgKGNvbnRleHRDb25uZWN0aW9uKQotICAgICAgICAgICAgY29u
dGV4dENvbm5lY3Rpb24tPnNvZnRVcGRhdGUoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAg
IH0pOwordm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0VXBkYXRlKCkKK3sK
KyAgICAvLyBUbyBhdm9pZCBzY2hlZHVsaW5nIG1hbnkgdXBkYXRlcyBkdXJpbmcgYSBzaW5nbGUg
cGFnZSBsb2FkLCB3ZSBkbyBzb2Z0IHVwZGF0ZXMgb24gYSAxIHNlY29uZCBkZWxheSBhbmQga2Vl
cCBkZWxheWluZworICAgIC8vIGFzIGxvbmcgYXMgc29mdCB1cGRhdGUgcmVxdWVzdHMga2VlcCBj
b21pbmcuIFRoaXMgc2VlbXMgdG8gbWF0Y2ggQ2hyb21lJ3MgYmVoYXZpb3IuCisgICAgbV9zb2Z0
VXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KHNvZnRVcGRhdGVEZWxheSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaAppbmRleCBkMGI2MmMxY2Q4NzM1
NDkzOWEzMTYxMjkxNjAxN2FhNTY0Njg3YzY2Li43MDVlNmE3MDZhMjNhNDIzYTdmM2ZkNzNiN2Y3
YzM5Y2M2YmZjZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJU
eXBlcy5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRp
bWUuaD4KQEAgLTk4LDEzICs5OSwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBmb3JFYWNoQ29ubmVj
dGlvbihjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mKT4mKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkU29mdFVwZGF0ZShjb25zdCBGZXRjaE9w
dGlvbnMmKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNvZnRVcGRhdGUoKTsKLSAg
ICAKLSAgICBTdHJpbmcgc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBt
X3Njb3BlVVJMOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZVNvZnRVcGRhdGUo
KTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgc29mdFVwZGF0ZURlbGF5IHsgMV9zIH07
CisKKyAgICBVUkwgc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX3Nj
b3BlVVJMOyB9CisgICAgVVJMIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0VVJM
OyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhY3RpdmF0ZSgpOwogICAgIHZvaWQgaGFuZGxlQ2xp
ZW50VW5sb2FkKCk7CisgICAgdm9pZCBzb2Z0VXBkYXRlKCk7CiAKICAgICBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSBtX3JlZ2lzdHJhdGlvbktleTsKQEAgLTEyNCw2ICsxMjgsOCBAQCBwcml2
YXRlOgogCiAgICAgTW9ub3RvbmljVGltZSBtX2NyZWF0aW9uVGltZTsKICAgICBIYXNoTWFwPFNX
U2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEhhc2hTZXQ8RG9jdW1lbnRJZGVudGlmaWVyPj4g
bV9jbGllbnRzVXNpbmdSZWdpc3RyYXRpb247CisKKyAgICBXZWJDb3JlOjpUaW1lciBtX3NvZnRV
cGRhdGVUaW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGQ0N2U5ZjE4N2RhNGUwMDhmZWZiZjY1N2JiZGM4
YWQ5ZWZkYTYzY2YuLjgyMjI5OTkxZDYyMTg5OGU5YjZjZTg3MmZiMGYzYzc3OWRjNWJhYjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTIsNyArNTIsNiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25z
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNvZnRVcGRhdGUoU2VydmljZVdv
cmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNUZXJtaW5h
dGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1
cml0eUVycm9yKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IDRlNWIzYjA3ZTkwZTExZTgwZjA0OTgyMjhlOTVkZmMxNjhkMDU1
ZGEuLjQ5NDRiNzAxM2I2MWY1NjcyNzEwMmZkOTZiOTJlZTRlMzJiMmYwNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMzY3LDcg
KzIzNjcsOSBAQCBTV1NlcnZlciYgTmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAgIC8vIElmIHRoZXJlJ3Mgbm90LCB0aGVu
IHdoZXJlIGRpZCB0aGlzIFBBTDo6U2Vzc2lvbklEIGNvbWUgZnJvbT8KICAgICAgICAgQVNTRVJU
KHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpIHx8ICFwYXRoLmlzRW1wdHkoKSk7CiAKLSAgICAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9y
ZT4oKSwgaW5mby5wcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGF0aCks
IHNlc3Npb25JRCwgW3RoaXMsIHNlc3Npb25JRF0oYXV0byYgcmVnaXN0cmFibGVEb21haW4pIHsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dP
cmlnaW5TdG9yZT4oKSwgaW5mby5wcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1v
dmUocGF0aCksIHNlc3Npb25JRCwgW3RoaXMsIHNlc3Npb25JRF0oYXV0byYmIGpvYkRhdGEsIGJv
b2wgc2hvdWxkUmVmcmVzaENhY2hlLCBhdXRvJiYgcmVxdWVzdCwgYXV0byYmIGNvbXBsZXRpb25I
YW5kbGVyKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyOjpzdGFydChuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLCBXVEZNb3ZlKGpvYkRhdGEpLCBz
aG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICAgICAgfSwgW3RoaXMsIHNlc3Npb25JRF0oYXV0byYgcmVnaXN0cmFibGVE
b21haW4pIHsKICAgICAgICAgICAgIEFTU0VSVCghcmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgp
KTsKICAgICAgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyB7IHJlZ2lzdHJhYmxlRG9tYWluLCBzZXNzaW9uSUQgfSwgMCk7CiAgICAg
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
CmluZGV4IDY5OGNlMGQ3NDIyY2YxNTQzZGQyZjNhNDYxMmRlODQ3YzQyYWFhODguLjVjOGVkZWY0
NWNiOThjOWQwYWFkMzM0NGM5ZjQzN2ZhMmRiMGI0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1
ZGUgIlByZWZldGNoQ2FjaGUuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5j
bHVkZSAiU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCIKICNpbmNsdWRlICJXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FkQ2xpY2tBdHRy
aWJ1dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQmxvYlJlZ2lzdHJ5SW1wbC5oPgpAQCAtMTI3
LDYgKzEyOCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU3RhbGVXaGlsZVJldmFsaWRhdGVF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0YWxlV2hpbGVSZXZhbGlkYXRlRW5hYmxlZDsg
fQogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgYWRkU29mdFVwZGF0ZUxv
YWRlcihzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI+JiYgbG9h
ZGVyKSB7IG1fc29mdFVwZGF0ZUxvYWRlcnMuYWRkKFdURk1vdmUobG9hZGVyKSk7IH0KKyAgICB2
b2lkIHJlbW92ZVNvZnRVcGRhdGVMb2FkZXIoU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIq
IGxvYWRlcikgeyBtX3NvZnRVcGRhdGVMb2FkZXJzLnJlbW92ZShsb2FkZXIpOyB9CisjZW5kaWYK
KwogcHJvdGVjdGVkOgogICAgIE5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiwgY29uc3Qg
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKIApAQCAtMTYwLDYgKzE2NiwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7CiAg
ICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCBtX2Jsb2JSZWdpc3RyeTsKICAgICB1bnNpZ25l
ZCBtX3Rlc3RTcGVlZE11bHRpcGxpZXIgeyAxIH07CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXI+PiBtX3NvZnRVcGRhdGVMb2FkZXJzOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCBh
MGViYTM3YTRhZDY2ZTg5MDNjYTEzYzZmOGIwNjM3ODY2YjYzZWY0Li42MzJkNWM4NjhjNDMyYTFj
YmRkZGY0NGRhYTU5OWU5YTZhODMyYjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJG
ZXRjaFRhc2suY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg+CiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9sb2FkZXIuc2Vzc2lvbklEKCkuaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFNlcnZpY2VXb3JrZXIsICIlcCAtIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihtX2xv
YWRlci5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2VydmljZVdvcmtl
ciwgIiVwIC0gU2VydmljZVdvcmtlckZldGNoVGFzazo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdT
X18pCkBAIC00OSwxMyArNTAsMTUgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIpCitTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIsIGJvb2wgc2hvdWxkU29mdFVwZGF0ZSkKICAgICA6IG1fbG9hZGVyKGxv
YWRlcikKICAgICAsIG1fZmV0Y2hJZGVudGlmaWVyKFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSkKICAgICAsIG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIpCiAgICAgLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyKHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKQogICAgICwgbV9jdXJyZW50UmVxdWVzdChXVEZNb3ZlKHJlcXVl
c3QpKQogICAgICwgbV90aW1lb3V0VGltZXIoKnRoaXMsICZTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Ojp0aW1lb3V0VGltZXJGaXJlZCkKKyAgICAsIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCisgICAgLCBtX3No
b3VsZFNvZnRVcGRhdGUoc2hvdWxkU29mdFVwZGF0ZSkKIHsKICAgICBtX3RpbWVvdXRUaW1lci5z
dGFydE9uZVNob3QobG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5uZXR3b3JrUHJvY2Vz
cygpLnNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoKSk7CiB9CkBAIC0xMDYsNyArMTA5LDggQEAg
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpzdGFydEZldGNoKCkKIHZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKLSAgICBtX3dhc0hhbmRsZWQgPSB0cnVlOworICAgIG1fdGltZW91dFRp
bWVyLnN0b3AoKTsKKyAgICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAogICAgIHJlc3BvbnNlLnNl
dFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOwogICAgIGF1
dG8gbmV3UmVxdWVzdCA9IG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RlZFJlcXVlc3QocmVzcG9u
c2UsIG1fbG9hZGVyLnBhcmFtZXRlcnMoKS5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0KTsKQEAgLTExOCw3ICsxMjIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvbwog
ewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogJXMiLCBt
X2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV90
aW1lb3V0VGltZXIuc3RvcCgpOwotICAgIG1fd2FzSGFuZGxlZCA9IHRydWU7CisgICAgc29mdFVw
ZGF0ZUlmTmVlZGVkKCk7CiAKICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25z
ZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyKTsKICAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSk7CkBAIC0xNDYsNyArMTUwLDEwIEBAIHZv
aWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIAogdm9pZCBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAg
IG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV90aW1lb3V0VGltZXIuaXNBY3RpdmUo
KSkgeworICAgICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CisgICAgICAgIHNvZnRVcGRhdGVJ
Zk5lZWRlZCgpOworICAgIH0KICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJkaWRG
YWlsRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgbV9sb2FkZXIuZGlkRmFpbExvYWRpbmcoZXJy
b3IpOwogfQpAQCAtMTU1LDYgKzE2Miw4IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkTm90SGFuZGxlKCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWROb3RIYW5k
bGVGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CisgICAg
c29mdFVwZGF0ZUlmTmVlZGVkKCk7CisKICAgICBtX2xvYWRlci5zZXJ2aWNlV29ya2VyRGlkTm90
SGFuZGxlKCk7CiB9CiAKQEAgLTE3MSw2ICsxODAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoKQogCiB2b2lkIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OmNvbnRpbnVlRmV0Y2hUYXNrV2l0aChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0KQogeworICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChtX2xvYWRlci5jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hU
aW1lb3V0KCkpOwogICAgIGlmICghbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikgewogICAgICAg
ICBtX2xvYWRlci5zZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKCk7CiAgICAgICAgIHJldHVybjsK
QEAgLTE4MSwxMSArMTkxLDIxIEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y29udGlu
dWVGZXRjaFRhc2tXaXRoKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAKIHZvaWQgU2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6dGltZW91dFRpbWVyRmlyZWQoKQogeworICAgIHNvZnRVcGRhdGVJ
Zk5lZWRlZCgpOworCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgidGltZW91dFRpbWVyRmly
ZWQ6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2ZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgaWYgKG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24pCiAg
ICAgICAgIG1fc2VydmljZVdvcmtlckNvbm5lY3Rpb24tPmZldGNoVGFza1RpbWVkT3V0KHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKCkpOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OnNvZnRVcGRhdGVJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX3Nob3VsZFNvZnRVcGRhdGUpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9sb2FkZXIuY29u
bmVjdGlvblRvV2ViUHJvY2VzcygpLnN3Q29ubmVjdGlvbigpLnNlcnZlcigpLmdldFJlZ2lzdHJh
dGlvbihtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSkKKyAgICAgICAgcmVn
aXN0cmF0aW9uLT5zY2hlZHVsZVNvZnRVcGRhdGUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNo
VGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCBkNzE2YmJlMDJlNjljZmFkMWM0ZDM0NjBlM2VkNGRh
ZWVlYzljNDAyLi41ZGI5M2MxYjBiNmRmMmIxZjkwMjFkZGY5MWE3M2YxNjI3MDZjMTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTU2LDcgKzU2LDcgQEAgY2xh
c3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwogY2xhc3MgU2VydmljZVdvcmtlckZl
dGNoVGFzayA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU2VydmljZVdvcmtl
ckZldGNoVGFzayhOZXR3b3JrUmVzb3VyY2VMb2FkZXImLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKTsKKyAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxv
YWRlciYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGJvb2wgc2hvdWxkU29mdFVw
ZGF0ZSk7CiAgICAgflNlcnZpY2VXb3JrZXJGZXRjaFRhc2soKTsKIAogICAgIHZvaWQgc3RhcnQo
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJik7CkBAIC04OCw2ICs4OCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdGFydEZldGNoKCk7CiAKICAgICB2b2lkIHRpbWVvdXRUaW1lckZpcmVk
KCk7CisgICAgdm9pZCBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE1lc3NhZ2U+IGJvb2wgc2VuZFRvU2VydmljZVdvcmtlcihNZXNzYWdlJiYpOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIE1lc3NhZ2U+IGJvb2wgc2VuZFRvQ2xpZW50KE1lc3NhZ2UmJik7CkBA
IC0xMDAsNiArMTAxLDggQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
bV9jdXJyZW50UmVxdWVzdDsKICAgICBXZWJDb3JlOjpUaW1lciBtX3RpbWVvdXRUaW1lcjsKICAg
ICBib29sIG1fd2FzSGFuZGxlZCB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllcjsKKyAgICBib29sIG1fc2hvdWxkU29mdFVwZGF0ZSB7IGZhbHNlIH07CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44ZTcyYTI1N2MzOTI5YmVjM2Y5YmQ0MzdjNDUwN2Q0ZjU4NGM0YmFiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMCwwICsxLDE5NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlci5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtDYWNoZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtM
b2FkLmgiCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Nl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtl
ckpvYi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dFJlc291cmNlRGVjb2Rlci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvV29ya2VyU2NyaXB0TG9hZGVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6c3RhcnQoTmV0d29ya1Nlc3Npb24qIHNlc3Npb24sIFNlcnZpY2VXb3JrZXJKb2JE
YXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIEhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIXNlc3Np
b24pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihzZXJ2aWNlV29ya2VyRmV0Y2hF
cnJvcihqb2JEYXRhLmlkZW50aWZpZXIoKSwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSB7
IGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkgfSwgUmVzb3VyY2VFcnJvciB7IFJlc291cmNlRXJy
b3I6OlR5cGU6OkNhbmNlbGxhdGlvbiB9KSk7CisgICAgc2Vzc2lvbi0+YWRkU29mdFVwZGF0ZUxv
YWRlcihtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyPigqc2Vzc2lvbiwg
V1RGTW92ZShqb2JEYXRhKSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworfQorCitTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIoTmV0d29ya1Nlc3Npb24mIHNl
c3Npb24sIFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNo
Q2FjaGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKKyAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpCisgICAgLCBtX2pvYkRhdGEoV1RGTW92ZShqb2JEYXRhKSkKKyAgICAsIG1fc2Vzc2lvbiht
YWtlV2Vha1B0cihzZXNzaW9uKSkKK3sKKyAgICBBU1NFUlQoIXJlcXVlc3QuaXNDb25kaXRpb25h
bCgpKTsKKworICAgIGlmIChzZXNzaW9uLmNhY2hlKCkpIHsKKyAgICAgICAgLy8gV2Ugc2V0IGNh
Y2hlIHBvbGljeSB0byBkaXNhYmxlIHNwZWN1bGF0aXZlIGxvYWRpbmcvYXN5bmMgcmV2YWxpZGF0
aW9uIGZyb20gdGhlIGNhY2hlLgorICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlc291
cmNlUmVxdWVzdENhY2hlUG9saWN5OjpSZXR1cm5DYWNoZURhdGFEb250TG9hZCk7CisgICAgICAg
IAorICAgICAgICBzZXNzaW9uLmNhY2hlKCktPnJldHJpZXZlKHJlcXVlc3QsIE5ldHdvcmtDYWNo
ZTo6R2xvYmFsRnJhbWVJRCB7IH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgcmVxdWVzdCwgc2hvdWxkUmVmcmVzaENhY2hlXShhdXRvJiYgZW50cnksIGF1dG8mJikgbXV0
YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIGlmICghbV9zZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgZmFpbChS
ZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghc2hv
dWxkUmVmcmVzaENhY2hlICYmIGVudHJ5ICYmICFlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpIHsK
KyAgICAgICAgICAgICAgICBsb2FkV2l0aENhY2hlRW50cnkoKmVudHJ5KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0Q2Fj
aGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlDYWNoZURhdGEp
OworICAgICAgICAgICAgaWYgKGVudHJ5KSB7CisgICAgICAgICAgICAgICAgbV9jYWNoZUVudHJ5
ID0gV1RGTW92ZShlbnRyeSk7CisKKyAgICAgICAgICAgICAgICBTdHJpbmcgZVRhZyA9IG1fY2Fj
aGVFbnRyeS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkVUYWcp
OworICAgICAgICAgICAgICAgIGlmICghZVRhZy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk5vbmVNYXRj
aCwgZVRhZyk7CisKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGFzdE1vZGlmaWVkID0gbV9jYWNo
ZUVudHJ5LT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6TGFzdE1v
ZGlmaWVkKTsKKyAgICAgICAgICAgICAgICBpZiAoIWxhc3RNb2RpZmllZC5pc0VtcHR5KCkpCisg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lOjpJZk1vZGlmaWVkU2luY2UsIGxhc3RNb2RpZmllZCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBsb2FkRnJvbU5ldHdvcmsoKm1fc2Vzc2lvbiwgV1RGTW92ZShyZXF1ZXN0KSk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGxvYWRGcm9tTmV0d29yayhz
ZXNzaW9uLCBXVEZNb3ZlKHJlcXVlc3QpKTsKK30KKworU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXI6On5TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcigpCit7CisgICAgaWYgKG1fY29t
cGxldGlvbkhhbmRsZXIpCisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoc2VydmljZVdvcmtl
ckZldGNoRXJyb3IobV9qb2JEYXRhLmlkZW50aWZpZXIoKSwgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSB7IG1fam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSB9LCBSZXNvdXJjZUVycm9yIHsg
UmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pKTsKK30KKwordm9pZCBTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZmFpbChSZXNvdXJjZUVycm9yJiYgZXJyb3IpCit7Cisg
ICAgaWYgKCFtX2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Nv
bXBsZXRpb25IYW5kbGVyKHNlcnZpY2VXb3JrZXJGZXRjaEVycm9yKG1fam9iRGF0YS5pZGVudGlm
aWVyKCksIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgeyBtX2pvYkRhdGEucmVnaXN0cmF0
aW9uS2V5KCkgfSwgV1RGTW92ZShlcnJvcikpKTsKKyAgICBkaWRDb21wbGV0ZSgpOworfQorCit2
b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpsb2FkV2l0aENhY2hlRW50cnkoTmV0
d29ya0NhY2hlOjpFbnRyeSYgZW50cnkpCit7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UgeyBlbnRyeS5yZXNwb25zZSgpIH0sIFtdKGF1dG8pIHsgfSk7CisgICAgaWYg
KG1fY29tcGxldGlvbkhhbmRsZXIgJiYgZW50cnkuYnVmZmVyKCkpCisgICAgICAgIGRpZFJlY2Vp
dmVCdWZmZXIobWFrZVJlZigqZW50cnkuYnVmZmVyKCkpLCAwKTsKKyAgICBpZiAobV9jb21wbGV0
aW9uSGFuZGxlcikKKyAgICAgICAgZGlkRmluaXNoTG9hZGluZyh7IH0pOworICAgIGRpZENvbXBs
ZXRlKCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmxvYWRGcm9t
TmV0d29yayhOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCkKK3sKKyAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBwYXJhbWV0
ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVz
ZTsKKyAgICBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRTbmlmZmlu
Z1BvbGljeTo6RG9Ob3RTbmlmZkNvbnRlbnQ7CisgICAgcGFyYW1ldGVycy5jb250ZW50RW5jb2Rp
bmdTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsK
KyAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOworICAgIG1fbmV0d29y
a0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShw
YXJhbWV0ZXJzKSwgc2Vzc2lvbik7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291
cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpCit7CisgICAgZmFpbChSZXNvdXJjZUVy
cm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pOworfQorCisvLyBodHRw
czovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jdXBkYXRlLWFsZ29yaXRobSwgc3RlcHMg
OS43IHRvIDkuMTcKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAocmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSA9PSAzMDQgJiYgbV9jYWNoZUVudHJ5KSB7CisgICAgICAgIGxvYWRXaXRoQ2Fj
aGVFbnRyeSgqbV9jYWNoZUVudHJ5KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5
QWN0aW9uOjpJZ25vcmUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBlcnJv
ciA9IFdvcmtlclNjcmlwdExvYWRlcjo6dmFsaWRhdGVXb3JrZXJSZXNwb25zZShyZXNwb25zZSwg
RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6U2VydmljZXdvcmtlcik7CisgICAgaWYgKCFlcnJv
ci5pc051bGwoKSkgeworICAgICAgICBmYWlsKFdURk1vdmUoZXJyb3IpKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGVycm9yID0gU2VydmljZVdvcmtlckpvYjo6dmFsaWRhdGVTZXJ2aWNlV29ya2Vy
UmVzcG9uc2UobV9qb2JEYXRhLCByZXNwb25zZSk7CisgICAgaWYgKCFlcnJvci5pc051bGwoKSkg
eworICAgICAgICBmYWlsKFdURk1vdmUoZXJyb3IpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMgeyByZXNwb25zZSB9OworICAgIG1fcmVmZXJyZXJQb2xpY3kgPSByZXNwb25zZS5odHRw
SGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJlZmVycmVyUG9saWN5KTsKKyAgICBtX3Jlc3Bv
bnNlRW5jb2RpbmcgPSByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7CisKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246OlVzZSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIGlmICghbV9kZWNvZGVy
KSB7CisgICAgICAgIGlmICghbV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2Ny
aXB0Il9zLCBtX3Jlc3BvbnNlRW5jb2RpbmcpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvamF2YXNjcmlwdCJf
cywgIlVURi04Iik7CisgICAgfQorCisgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgp
KQorICAgICAgICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRh
KCksIHNpemUpKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlk
RmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQoreworICAg
IGlmIChtX2RlY29kZXIpCisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmZsdXNo
KCkpOworICAgIG1fY29tcGxldGlvbkhhbmRsZXIoeyBtX2pvYkRhdGEuaWRlbnRpZmllcigpLCBt
X2pvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIG1fc2NyaXB0LnRvU3RyaW5nKCksIG1fY29udGVu
dFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCB7IH0gfSk7CisgICAgZGlkQ29tcGxl
dGUoKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmFpbExv
YWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgZmFpbChSZXNvdXJjZUVy
cm9yKGVycm9yKSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRp
ZENvbXBsZXRlKCkKK3sKKyAgICBtX25ldHdvcmtMb2FkID0gbnVsbHB0cjsKKyAgICBpZiAobV9z
ZXNzaW9uKQorICAgICAgICBtX3Nlc3Npb24tPnJlbW92ZVNvZnRVcGRhdGVMb2FkZXIodGhpcyk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNjNiNWM2NjA2MzhhYmVhMTIzYWJjZGIzOWMwNzI5NDkzMjVmYTE0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKQEAgLTAsMCArMSw5MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisj
aW5jbHVkZSAiTmV0d29ya0NhY2hlRW50cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZENsaWVu
dC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaE9wdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
c3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBTZXJ2aWNlV29ya2VySm9i
RGF0YTsKK2NsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBOZXR3b3JrTG9hZDsKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworCitjbGFzcyBT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlciBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrTG9hZENs
aWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdXNpbmcgSGFu
ZGxlciA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtl
ckZldGNoUmVzdWx0Jik+OworICAgIHN0YXRpYyB2b2lkIHN0YXJ0KE5ldHdvcmtTZXNzaW9uKiwg
V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEmJiwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBIYW5kbGVyJiYpOworCisgICAgU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIoTmV0d29ya1Nlc3Npb24mLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySm9iRGF0YSYmLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIEhhbmRsZXImJik7CisgICAgflNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
KCk7CisgICAgCitwcml2YXRlOgorICAgIC8vIE5ldHdvcmtMb2FkQ2xpZW50LgorICAgIHZvaWQg
ZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgZmluYWwgeyB9CisgICAgYm9vbCBpc1N5bmNocm9ub3Vz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQWxsb3dlZFRvQXNr
VXNlckZvckNyZWRlbnRpYWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIGZpbmFs
OworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKKworICAgIHZvaWQgbG9hZFdpdGhDYWNoZUVudHJ5KE5ldHdv
cmtDYWNoZTo6RW50cnkmKTsKKyAgICB2b2lkIGxvYWRGcm9tTmV0d29yayhOZXR3b3JrU2Vzc2lv
biYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKKyAgICB2b2lkIGZhaWwoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYmKTsKKyAgICB2b2lkIGRpZENvbXBsZXRlKCk7CisKKyAgICBIYW5kbGVy
IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEg
bV9qb2JEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4gbV9uZXR3b3JrTG9h
ZDsKKyAgICBXZWFrUHRyPE5ldHdvcmtTZXNzaW9uPiBtX3Nlc3Npb247CisKKyAgICBTdHJpbmcg
bV9yZXNwb25zZUVuY29kaW5nOworICAgIFN0cmluZyBtX3JlZmVycmVyUG9saWN5OworICAgIFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBtX2NvbnRlbnRTZWN1
cml0eVBvbGljeTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBt
X2NhY2hlRW50cnk7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRleHRSZXNvdXJjZURlY29kZXI+IG1f
ZGVjb2RlcjsKKyAgICBTdHJpbmdCdWlsZGVyIG1fc2NyaXB0OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNTYwNjU3MDU5Zjk1ODc0M2JiOGNm
MmNlNzAwZjg1MDAwM2MxMThlZC4uOWMyNGMyODA2YWMwMDM5NDM5OTk5YTRlZjUxZDQ2ZDhkNDgy
YzBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTE3Nywx
NCArMTc3LDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBXZWJT
V1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayhOCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAorICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHNlcnZlcigpLmdldFJlZ2lz
dHJhdGlvbigqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOworICAgIGJvb2wg
c2hvdWxkU29mdFVwZGF0ZSA9IHJlZ2lzdHJhdGlvbiAmJiByZWdpc3RyYXRpb24tPnNob3VsZFNv
ZnRVcGRhdGUobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zKTsKICAgICBpZiAod29ya2VyLT5z
aG91bGRTa2lwRmV0Y2hFdmVudCgpKSB7Ci0gICAgICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHNl
cnZlcigpLmdldFJlZ2lzdHJhdGlvbih3b3JrZXItPnJlZ2lzdHJhdGlvbktleSgpKTsKLSAgICAg
ICAgaWYgKHJlZ2lzdHJhdGlvbiAmJiByZWdpc3RyYXRpb24tPnNob3VsZFNvZnRVcGRhdGUobG9h
ZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zKSkKLSAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c29m
dFVwZGF0ZSgpOworICAgICAgICBpZiAoc2hvdWxkU29mdFVwZGF0ZSkKKyAgICAgICAgICAgIHJl
Z2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBkYXRlKCk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZldGNo
VGFzaz4obG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH0sIGlkZW50aWZpZXIoKSwg
d29ya2VyLT5pZGVudGlmaWVyKCksICpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cik7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPihs
b2FkZXIsIFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfSwgaWRlbnRpZmllcigpLCB3b3JrZXIt
PmlkZW50aWZpZXIoKSwgKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBzaG91
bGRTb2Z0VXBkYXRlKTsKICAgICBzdGFydEZldGNoKCp0YXNrLCAqd29ya2VyKTsKICAgICByZXR1
cm4gdGFzazsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAKaW5kZXggYjgzNWM1NjVhYmQyYzNmZDg1NmFmOGU0NjAyNGE4N2ExMzM4NjQ3
MC4uNGYyYmYxYjQ4YTYyM2VmNTVlY2IyYmU3NmM2ODI5ODc5NTNiNmUzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTEwMCwx
MSArMTAwLDYgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmZpcmVBY3Rp
dmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHMKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RmlyZUFjdGl2YXRlRXZlbnQoc2VydmljZVdv
cmtlcklkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b246OnNvZnRVcGRhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIpCi17Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlNvZnRVcGRhdGUoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKLX0KLQogdm9pZCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKIHsKICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlV29ya2VyKHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKaW5kZXggZWY0ZjQxM2QzYmEwYjRmY2Y4MGNiMTQyOGI4ZjhhMWJhZWRk
NGYxZS4uMDRjOGQ2MzBhMzJlMTM5YzUxZGE3MTg3ZTQ1NWYzODUxZmExY2Y3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtODgsNyAr
ODgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNv
bnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50KSBmaW5hbDsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgc29mdFVwZGF0
ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB0ZXJt
aW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAg
IHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgZmluYWw7CiAgICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5jcHAKaW5kZXggZjI0ZTY3MTc1ZjlmYjgxOTNjZWZjZmM2MjZlOWUzNzFjZThk
ZGExMC4uNTZhNmQ2NTUzODg5YjliNWJkYmVmMTkxNTg4MTU0ZWUyMDRhOGRmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25N
YW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNZXNzYWdlcy5oIgpAQCAtMTEwLDcgKzExMSw4IEBAIFZlY3Rvcjx1aW50NjRfdD4g
QXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb2FsZXNjZUNoYWxsZW5nZXNNYXRjaGluZyh1aW50NjRf
dCBjaGFsCiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVu
dGlmaWVyIHBhZ2VJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhKiB0b3BPcmlnaW4sIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBBU1NFUlQo
cGFnZUlEKTsKKyAgICBpZiAoIXBhZ2VJRCkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFu
ZGxpbmcsIHsgfSk7CiAKICAgICB1aW50NjRfdCBjaGFsbGVuZ2VJRCA9IGFkZENoYWxsZW5nZVRv
Q2hhbGxlbmdlTWFwKHsgcGFnZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDNmN2QzZmI2MjE2ZmZmYzZm
M2JjYjJkM2ZkNTNiZWZhMTA0MTg2NjAuLjQ0OTQ4MGVkOTNhZTc0OGJjOTM0MjQyNDFlY2VlMGQ4
M2U4M2FkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNjEsNiArNjEsNyBAQCBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAKIAogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBAbm8tdW5pZnkKK05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQogTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11bmlm
eQogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZDlhNzgxNTEyNDM3M2FjMjI2YjMxYzFlZTE4M2FiZmMwNDE4
NjQxOC4uODgyZGI4MzgyNDUyYzRmMjBkY2Q0ZTZmYzQ3MTQyYjAzNzM3MDdkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMTg5LDYg
KzMxODksOCBAQAogCQk0MUM1Mzc4RjIxRjEzNjJEMDA4QjFGQUQgLyogX1dLV2Vic2l0ZURhdGFT
dG9yZURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNp
dGVEYXRhU3RvcmVEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUM4
NTgxOTFGNTEwREVFMDA2NUUwODUgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUQxMjlEOTFGM0QxMDE0MDBEMTVF
NDcgLyogV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ2FjaGVT
dG9yYWdlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFENUM2RDgy
MzhFQjIwRDAwQjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRDVDNkQ5MjM4RUIyMEUwMEI5QjND
QiAvKiBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxREM0NTk0MUUzRDZFMUUwMEIxMUY1MSAvKiBO
ZXR3b3JrUlRDUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0
d29ya1JUQ1Byb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxREM0NTk1
MUUzRDZFMUUwMEIxMUY1MSAvKiBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1JUQ1Byb3ZpZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEQzQ1OTgxRTNENkVENjAwQjExRjUxIC8qIE5ldHdvcmtS
VENQcm92aWRlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOZXR3b3JrUlRD
UHJvdmlkZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NDc0
LDYgKzc0NzYsOCBAQAogCQkJCTQxNTE4NTM2MjIyNzA0RjYwMDU0MzBDNiAvKiBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmNwcCAqLywKIAkJCQk0MTUxODUzNTIyMjcwNEY1MDA1NDMwQzYgLyogU2Vy
dmljZVdvcmtlckZldGNoVGFzay5oICovLAogCQkJCTQxNTE4NTM4MjIyNzBGNTMwMDU0MzBDNiAv
KiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluICovLAorCQkJCTQxRDVDNkQ5MjM4
RUIyMEUwMEI5QjNDQiAvKiBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgKi8sCisJ
CQkJNDFENUM2RDgyMzhFQjIwRDAwQjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmggKi8sCiAJCQkJOTNCQTA0REYyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXT3JpZ2luU3Rv
cmUuY3BwICovLAogCQkJCTkzQkEwNERFMjE1MUFERjQwMDdGNDU1RiAvKiBXZWJTV09yaWdpblN0
b3JlLmggKi8sCiAJCQkJOTNCQTA0RTEyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXU2VydmVyQ29u
bmVjdGlvbi5jcHAgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXgg
ZWNmN2EzYmYxYmZhODkzMzUxMWYwM2Y3MTM3MGU4NWJjNzI1MTY4ZC4uMmRkNzVjYzBlODA5Y2Jl
MjI1YmExOTAwZDY4ODY0Yjk2YmE5MDQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcApAQCAtMjU2LDExICsyNTYsNiBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZAogICAg
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZpcmVBY3RpdmF0ZUV2ZW50KGlkZW50aWZp
ZXIpOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzb2Z0VXBkYXRl
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCi17Ci0gICAgU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc29mdFVwZGF0ZShpZGVudGlmaWVyKTsKLX0KLQog
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dGVybWluYXRlV29ya2VyKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CiAgICAgU1dDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkudGVybWluYXRlV29ya2VyKGlkZW50aWZpZXIsIFNXQ29udGV4dE1hbmFnZXI6
OndvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaAppbmRleCAyOTczNTFmMmI4NmI4MmQ4NDNhMGVlYWMxMTQwMTA2YzZlMjI2YjQ5
Li42OTkwMzMyZWE3ZWQ4Yzk3NGI5MzljNTRjZjhlMTc3OTMyNzAyYjgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTkwLDcgKzkwLDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMmJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSYmIHNvdXJjZURhdGEpOwog
ICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7Ci0gICAgdm9pZCBzb2Z0VXBkYXRlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CiAgICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OlN5bmNUZXJtaW5hdGVXb3JrZXJEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBmaW5kQ2xp
ZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBPcHRp
b25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNTZWN1cml0
eUVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KaW5kZXggMWJlMjlhYWFkOTc4NzE0ZTRiNDIxNzViMmE5N2M0ODY2NzBlZmMwNi4uMWQzMzlj
Y2IxNTFhNjE0ZjllMDJjNjliNDBjZjRiOTFmYTI2YzIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDYgQEAgbWVzc2Fn
ZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAg
UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgZGVzdGluYXRpb25JZGVudGlmaWVyLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSBzb3Vy
Y2VEYXRhKQogICAgIEZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllcikKICAgICBGaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQotICAgIFNvZnRVcGRhdGUoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBUZXJtaW5hdGVXb3JrZXIoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBTeW5jVGVybWlu
YXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+
ICgpIFN5bmNocm9ub3VzCiAgICAgRmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50
NjRfdCBjbGllbnRJZFJlcXVlc3RJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YT4gZGF0YSwgYm9vbCBoYXNTZWN1cml0eUVycm9yKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy93b3JrZXItaW1wb3J0
U2NyaXB0cy1leHBlY3RlZC50eHQKaW5kZXggMzE3MWRiODExZWY2ZWVlZTEwNTM3NTdmMTBhODRm
YWZmMTFkNWFiNy4uYTEyYmZkMjY3NzAyYjhhZDc0NWRhZjFkOTAxYTQ0NWJiZDgzNjZmOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3Jp
cHRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvd29y
a2VyLWltcG9ydFNjcmlwdHMtZXhwZWN0ZWQudHh0CkBAIC0yNCw3ICsyNCw3IEBAIExvYWRlZCBt
ZXNzYWdlIGZyb20gZGlmZmVyZW50IG9yaWdpbgogTG9hZGVkIHJlc291cmNlIDIKIFBBU1M6IGFs
bCByZXNvdXJjZXMgZXhlY3V0ZWQuCiBMb2FkZWQgcmVzb3VyY2UgMQotUEFTUzogVGhyZXcgTmV0
d29ya0Vycm9yOiBGYWlsZWQgdG8gbG9hZCBzY3JpcHQgd2hlbiBsb2FkIGZhaWxlZAorUEFTUzog
VGhyZXcgTmV0d29ya0Vycm9yOiBSZXNwb25zZSBpcyBub3QgMnh4IHdoZW4gbG9hZCBmYWlsZWQK
IFBBU1M6IHNvbWUgcmVzb3VyY2VzIHdlcmUgbG9hZGVkIGRlc3BpdGUgdGhlIG5ldHdvcmsgZXJy
b3IKIExvYWRlZCByZXNvdXJjZSAxCiBQQVNTOiBUaHJldyBTeW50YXhFcnJvcjogVW5leHBlY3Rl
ZCBpZGVudGlmaWVyICdzeW50YXgnIHdoZW4gZW5jb3VudGVyaW5nIGEgc3ludGF4IGVycm9yIGlu
IGltcG9ydGVkIHNjcmlwdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384802</attachid>
            <date>2019-12-04 03:50:21 -0800</date>
            <delta_ts>2019-12-04 05:47:58 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-204678-20191204125018.patch</filename>
            <type>text/plain</type>
            <size>77587</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA5ZjEyNDFlM2MzZTBm
YTY3MmY4ODM0MTY3NGU3M2JkYzcxZTg0NS4uYmRkNzgwN2UxZjYzZTg5MTVkYzMxZTE2MTU0ODJk
OGIyYTE2MWY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE5LTEyLTA0ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHNvZnQgdXBkYXRl
IGhhbmRsaW5nIHRvIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0Njc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMg
RHVtZXouCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2FkZXI6OnZhbGlkYXRlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJKb2JEYXRhOjppc0VxdWl2YWxlbnQgY29uc3QpOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24pOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0Y2g6OmRpc3BhdGNoRmV0Y2hFdmVudCk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5o
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Q
cm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpTV1NlcnZlcik6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25Kb2IpOgorICAgICAgICAoV2ViQ29yZTo6b3JpZ2lu
VVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzdGFydFNjcmlwdEZldGNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6Omdl
dFJlZ2lzdHJhdGlvbik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnJ1blVw
ZGF0ZUpvYik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjplbnF1ZXVlSm9iKToK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJlZ2lz
dHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2V0VXBk
YXRlVmlhQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNv
ZnRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNjaGVk
dWxlU29mdFVwZGF0ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clJlZ2lzdHJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246
OnNjb3BlVVJMV2l0aG91dEZyYWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVyUmVnaXN0cmF0aW9uOjpzY3JpcHRVUkwgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisKIDIwMTktMTItMDQg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9k
dWNlIGEgR1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGI5MmM3NDYzNTRiZTFlNjIwYTg2ZGQwOTEy
ZTZhNmZmZGZjNjdmMy4uNzkyNjI0NWYwYTQxOWE1OWEwYmI3ZmQyMjFlZDBiZGJjMmYyYzljZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxOS0xMi0wNCAgeW91ZW5uIGZhYmxldCAgPHlv
dWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBzb2Z0IHVwZGF0ZSBoYW5kbGluZyB0byBu
ZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNDY3OAorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6YWRkU29mdFVwZGF0ZUxvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
OjpyZW1vdmVTb2Z0VXBkYXRlTG9hZGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKToKKyAgICAgICAg
KFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRG
YWlsKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkTm90SGFu
ZGxlKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6Y29udGludWVG
ZXRjaFRhc2tXaXRoKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
dGltZW91dFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpzb2Z0VXBkYXRlSWZOZWVkZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnN0YXJ0
KToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OlNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXI6On5TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcik6CisgICAg
ICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpmYWlsKToKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmxvYWRXaXRoQ2FjaGVF
bnRyeSk6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjps
b2FkRnJvbU5ldHdvcmspOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXI6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXI6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmg6IEFkZGVkLgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVGZXRj
aFRhc2spOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFNo
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKIDIw
MTktMTItMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW50cm9kdWNlIGEgR1BVIHByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQSGVhZGVyTmFtZXMuaW4KaW5kZXggZDNkOTY1ZTdjM2U2N2ViNTlhMWZk
MTJjYjMzY2I3MWE4NGEzY2VhMS4uMDFjZGUzY2JmNjc0MzFiNzYyNTkyMTAyNjU2YmM2ZmUxNTYz
MjRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTmFtZXMuaW4KQEAgLTg0LDYgKzg0LDcgQEAgU2VjLVdlYlNvY2tldC1LZXkKIFNlYy1XZWJT
b2NrZXQtUHJvdG9jb2wKIFNlYy1XZWJTb2NrZXQtVmVyc2lvbgogU2VydmVyLVRpbWluZworU2Vy
dmljZS1Xb3JrZXIKIFNlcnZpY2UtV29ya2VyLUFsbG93ZWQKIFNldC1Db29raWUKIFNldC1Db29r
aWUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5k
ZXggMjI4ZjNkMTdmZjAwMjJlNjJlNjM2NDUzMmQ1NTZiOTUwN2EwMThmMi4uMzFkZDhhOThlOGYx
NDdiYTIyM2ZjMzE4NjRiNjZiYTI5Yzk2NDFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtMTUzLDIzICsxNTMsMjggQEAgc3RkOjp1bmlx
dWVfcHRyPFJlc291cmNlUmVxdWVzdD4gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGVSZXNvdXJj
ZVJlcXVlc3QoY29uc3QKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotdm9pZCBXb3JrZXJTY3Jp
cHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVzb3VyY2VFcnJvciBXb3JrZXJTY3Jp
cHRMb2FkZXI6OnZhbGlkYXRlV29ya2VyUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIEZldGNoT3B0aW9uczo6RGVzdGluYXRpb24gZGVzdGluYXRpb24pCiB7Ci0gICAg
aWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgLyAxMDAgIT0gMiAmJiByZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpKSB7Ci0gICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSAvIDEwMCAhPSAyICYm
IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpCisgICAgICAgIHJldHVybiBSZXNvdXJjZUVycm9y
IHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksICJSZXNwb25z
ZSBpcyBub3QgMnh4Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsIH07CiAKICAgICBp
ZiAoIWlzU2NyaXB0QWxsb3dlZEJ5Tm9zbmlmZihyZXNwb25zZSkpIHsKICAgICAgICAgU3RyaW5n
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgIiwgcmVzcG9uc2UudXJs
KCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIgYXMgc2NyaXB0IGJlY2F1c2Ug
XCJYLUNvbnRlbnQtVHlwZTogbm9zbmlmZlwiIHdhcyBnaXZlbiBhbmQgaXRzIENvbnRlbnQtVHlw
ZSBpcyBub3QgYSBzY3JpcHQgTUlNRSB0eXBlLiIpOwotICAgICAgICBtX2Vycm9yID0gUmVzb3Vy
Y2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCgpLCBtZXNzYWdlLCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsIH07Ci0gICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJvciB7IGVycm9yRG9t
YWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBS
ZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsIH07CiAgICAgfQogCi0gICAgaWYgKHNob3VsZEJs
b2NrUmVzcG9uc2VEdWVUb01JTUVUeXBlKHJlc3BvbnNlLCBtX2Rlc3RpbmF0aW9uKSkgeworICAg
IGlmIChzaG91bGRCbG9ja1Jlc3BvbnNlRHVlVG9NSU1FVHlwZShyZXNwb25zZSwgZGVzdGluYXRp
b24pKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiUmVmdXNlZCB0byBl
eGVjdXRlICIsIHJlc3BvbnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
LCAiIGFzIHNjcmlwdCBiZWNhdXNlICIsIHJlc3BvbnNlLm1pbWVUeXBlKCksICIgaXMgbm90IGEg
c2NyaXB0IE1JTUUgdHlwZS4iKTsKLSAgICAgICAgbV9lcnJvciA9IFJlc291cmNlRXJyb3IgeyBl
cnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgbWVzc2FnZSwgUmVz
b3VyY2VFcnJvcjo6VHlwZTo6R2VuZXJhbCB9OworICAgICAgICByZXR1cm4gUmVzb3VyY2VFcnJv
ciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCBXVEZNb3Zl
KG1lc3NhZ2UpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFsIH07CisgICAgfQorCisgICAg
cmV0dXJuIHsgfTsKK30KKwordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQoreworICAgIG1fZXJyb3IgPSB2YWxpZGF0ZVdvcmtlclJlc3BvbnNlKHJlc3BvbnNl
LCBtX2Rlc3RpbmF0aW9uKTsKKyAgICBpZiAoIW1fZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAg
bV9mYWlsZWQgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggOWEwZjQ4NzgwYzdjODFmN2JhMzdi
ZTI0ZDY3ODQ3NzI5OGU0MTU0OC4uZTUxNDZhNTdiNWM3Zjk3NDkyNmFhODNkMTBkN2Y1OThiZmY4
N2Y0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBA
IC03Nyw2ICs3Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FuY2VsKCk7CiAKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVzb3VyY2VFcnJvciB2YWxpZGF0ZVdvcmtlclJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uKTsKKwogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgV1RGOjpSZWZDb3VudGVkPFdvcmtlclNjcmlwdExvYWRl
cj47CiAgICAgZnJpZW5kIHN0cnVjdCBzdGQ6OmRlZmF1bHRfZGVsZXRlPFdvcmtlclNjcmlwdExv
YWRlcj47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckpvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYi5jcHAKaW5kZXggYzZkMmEyOGQyOGNkN2ViY2ZiMTQ1MDYyNThjM2M3YWVmZDI5NWE5
MC4uZTlmMGMxNGI3NzhjNjA5YzI3OGI5ZmExZDgyMDk5MGRlZGQ2YmQ0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcApAQCAt
MTEzLDQ2ICsxMTMsNDUgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpmZXRjaFNjcmlwdFdpdGhD
b250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEYKICAgICBtX3NjcmlwdExv
YWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KGNvbnRleHQsIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUob3B0aW9ucyksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9y
Y2UsIFNlcnZpY2VXb3JrZXJzTW9kZTo6Tm9uZSwgKnRoaXMpOwogfQogCi12b2lkIFNlcnZpY2VX
b3JrZXJKb2I6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKK1Jlc291cmNlRXJyb3IgU2VydmljZVdvcmtlckpvYjo6dmFs
aWRhdGVTZXJ2aWNlV29ya2VyUmVzcG9uc2UoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpv
YkRhdGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIEFTU0VSVCht
X2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7Ci0gICAgQVNTRVJU
KCFtX2NvbXBsZXRlZCk7Ci0gICAgQVNTRVJUKG1fc2NyaXB0TG9hZGVyKTsKLQogICAgIC8vIEV4
dHJhY3QgYSBNSU1FIHR5cGUgZnJvbSB0aGUgcmVzcG9uc2UncyBoZWFkZXIgbGlzdC4gSWYgdGhp
cyBNSU1FIHR5cGUgKGlnbm9yaW5nIHBhcmFtZXRlcnMpIGlzIG5vdCBhIEphdmFTY3JpcHQgTUlN
RSB0eXBlLCB0aGVuOgotICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZh
U2NyaXB0TUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSkpIHsKLSAgICAgICAgbV9zY3JpcHRM
b2FkZXItPmNhbmNlbCgpOwotICAgICAgICBtX3NjcmlwdExvYWRlciA9IG51bGxwdHI7Ci0KLSAg
ICAgICAgLy8gSW52b2tlIFJlamVjdCBKb2IgUHJvbWlzZSB3aXRoIGpvYiBhbmQgIlNlY3VyaXR5
RXJyb3IiIERPTUV4Y2VwdGlvbi4KLSAgICAgICAgRXhjZXB0aW9uIGV4Y2VwdGlvbiB7IFNlY3Vy
aXR5RXJyb3IsICJNSU1FIFR5cGUgaXMgbm90IGEgSmF2YVNjcmlwdCBNSU1FIHR5cGUiX3MgfTsK
LSAgICAgICAgLy8gQXN5bmNocm9ub3VzbHkgY29tcGxldGUgdGhlc2Ugc3RlcHMgd2l0aCBhIG5l
dHdvcmsgZXJyb3IuCi0gICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IgeyBlcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgIlVuZXhwZWN0ZWQgTUlNRSB0eXBlIl9z
IH07Ci0gICAgICAgIG1fY2xpZW50LmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoKnRoaXMsIFdURk1v
dmUoZXJyb3IpLCBXVEZNb3ZlKGV4Y2VwdGlvbikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGUo
cmVzcG9uc2UubWltZVR5cGUoKSkpCisgICAgICAgIHJldHVybiB7IGVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCAiTUlNRSBUeXBlIGlzIG5vdCBhIEphdmFTY3Jp
cHQgTUlNRSB0eXBlIl9zIH07CiAKICAgICBTdHJpbmcgc2VydmljZVdvcmtlckFsbG93ZWQgPSBy
ZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlNlcnZpY2VXb3JrZXJBbGxv
d2VkKTsKICAgICBTdHJpbmcgbWF4U2NvcGVTdHJpbmc7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJB
bGxvd2VkLmlzTnVsbCgpKSB7Ci0gICAgICAgIFN0cmluZyBwYXRoID0gbV9qb2JEYXRhLnNjcmlw
dFVSTC5wYXRoKCk7CisgICAgICAgIFN0cmluZyBwYXRoID0gam9iRGF0YS5zY3JpcHRVUkwucGF0
aCgpOwogICAgICAgICAvLyBMYXN0IHBhcnQgb2YgdGhlIHBhdGggaXMgdGhlIHNjcmlwdCdzIGZp
bGVuYW1lLgogICAgICAgICBtYXhTY29wZVN0cmluZyA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgu
cmV2ZXJzZUZpbmQoJy8nKSArIDEpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gbWF4U2Nv
cGUgPSBVUkwobV9qb2JEYXRhLnNjcmlwdFVSTCwgc2VydmljZVdvcmtlckFsbG93ZWQpOwotICAg
ICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYXhTY29wZSktPmlzU2FtZU9yaWdpbkFz
KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9qb2JEYXRhLnNjcmlwdFVSTCkpKQorICAgICAgICBh
dXRvIG1heFNjb3BlID0gVVJMKGpvYkRhdGEuc2NyaXB0VVJMLCBzZXJ2aWNlV29ya2VyQWxsb3dl
ZCk7CisgICAgICAgIGlmIChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1heFNjb3BlKS0+aXNTYW1l
T3JpZ2luQXMoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShqb2JEYXRhLnNjcmlwdFVSTCkpKQogICAg
ICAgICAgICAgbWF4U2NvcGVTdHJpbmcgPSBtYXhTY29wZS5wYXRoKCk7CiAgICAgfQogCi0gICAg
U3RyaW5nIHNjb3BlU3RyaW5nID0gbV9qb2JEYXRhLnNjb3BlVVJMLnBhdGgoKTsKLSAgICBpZiAo
c2NvcGVTdHJpbmcuc3RhcnRzV2l0aChtYXhTY29wZVN0cmluZykpCisgICAgU3RyaW5nIHNjb3Bl
U3RyaW5nID0gam9iRGF0YS5zY29wZVVSTC5wYXRoKCk7CisgICAgaWYgKCFzY29wZVN0cmluZy5z
dGFydHNXaXRoKG1heFNjb3BlU3RyaW5nKSkKKyAgICAgICAgcmV0dXJuIHsgZXJyb3JEb21haW5X
ZWJLaXRJbnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksICJTY29wZSBVUkwgc2hvdWxkIHN0YXJ0
IHdpdGggdGhlIGdpdmVuIHNjcmlwdCBVUkwiX3MgfTsKKworICAgIHJldHVybiB7IH07Cit9CisK
K3ZvaWQgU2VydmljZVdvcmtlckpvYjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIEFTU0VSVChtX2NyZWF0
aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CisgICAgQVNTRVJUKCFtX2Nv
bXBsZXRlZCk7CisgICAgQVNTRVJUKG1fc2NyaXB0TG9hZGVyKTsKKworICAgIGF1dG8gZXJyb3Ig
PSB2YWxpZGF0ZVNlcnZpY2VXb3JrZXJSZXNwb25zZShtX2pvYkRhdGEsIHJlc3BvbnNlKTsKKyAg
ICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2NyaXB0TG9h
ZGVyLT5jYW5jZWwoKTsKICAgICBtX3NjcmlwdExvYWRlciA9IG51bGxwdHI7CiAKLSAgICBFeGNl
cHRpb24gZXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlNjb3BlIFVSTCBzaG91bGQgc3RhcnQg
d2l0aCB0aGUgZ2l2ZW4gc2NyaXB0IFVSTCJfcyB9OwotICAgIFJlc291cmNlRXJyb3IgZXJyb3Ig
eyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgIlNjb3BlIFVS
TCBzaG91bGQgc3RhcnQgd2l0aCB0aGUgZ2l2ZW4gc2NyaXB0IFVSTCJfcyB9OworICAgIEV4Y2Vw
dGlvbiBleGNlcHRpb24geyBTZWN1cml0eUVycm9yLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlv
bigpIH07CiAgICAgbV9jbGllbnQuam9iRmFpbGVkTG9hZGluZ1NjcmlwdCgqdGhpcywgV1RGTW92
ZShlcnJvciksIFdURk1vdmUoZXhjZXB0aW9uKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCmluZGV4IDdkYmI3ZDNiYWNlMjBl
M2NhZWQ3NjI2MTllODg0ZmNmNWQwODc0YWIuLjkzYTQ3NGMyYzZiNWU5ZWE3YjE2M2ViMTA2NmIy
NWIzYWNmNDllOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VySm9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJKb2IuaApAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNh
bmNlbFBlbmRpbmdMb2FkKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVzb3VyY2VF
cnJvciB2YWxpZGF0ZVNlcnZpY2VXb3JrZXJSZXNwb25zZShjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKwogcHJpdmF0ZToKICAgICAvLyBXb3Jr
ZXJTY3JpcHRMb2FkZXJDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRh
dGEuY3BwCmluZGV4IDQ3YTc5ZjBhM2Y3NjZkZDVlNTQ4MjFhOWIyZWQyMzI1NWQ2Y2Y0MWUuLmEw
ZjM2NDU4ZmJmNmQ5ZGIxNmU2ODFiMTlmNzEwODFhY2FmN2RhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmNwcApA
QCAtNjcsNiArNjcsMjUgQEAgU2VydmljZVdvcmtlckpvYkRhdGEgU2VydmljZVdvcmtlckpvYkRh
dGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLy8gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI2Rmbi1qb2ItZXF1aXZhbGVudAorYm9v
bCBTZXJ2aWNlV29ya2VySm9iRGF0YTo6aXNFcXVpdmFsZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJK
b2JEYXRhJiBqb2IpIGNvbnN0Cit7CisgICAgaWYgKHR5cGUgIT0gam9iLnR5cGUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgU2VydmljZVdv
cmtlckpvYlR5cGU6OlJlZ2lzdGVyOgorICAgIGNhc2UgU2VydmljZVdvcmtlckpvYlR5cGU6OlVw
ZGF0ZToKKyAgICAgICAgcmV0dXJuIHNjb3BlVVJMID09IGpvYi5zY29wZVVSTAorICAgICAgICAg
ICAgJiYgc2NyaXB0VVJMID09IGpvYi5zY3JpcHRVUkwKKyAgICAgICAgICAgICYmIHJlZ2lzdHJh
dGlvbk9wdGlvbnMudHlwZSA9PSBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy50eXBlCisgICAgICAg
ICAgICAmJiByZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlID09IGpvYi5yZWdpc3Ry
YXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlOworICAgIGNhc2UgU2VydmljZVdvcmtlckpvYlR5
cGU6OlVucmVnaXN0ZXI6CisgICAgICAgIHJldHVybiBzY29wZVVSTCA9PSBqb2Iuc2NvcGVVUkw7
CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaAppbmRleCBjMjA4NTM3
ZjA4NTM3NTJmYTEyYTljYTkwYzdiNzQ4MzNmNTdlMTJkLi41ZjMzN2NiYWE4MzkxNmU1YWUzMWRj
MjcwNzc5YTBhNDExYTA5YzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkRhdGEuaApAQCAtNDYsNiArNDYsOCBAQCBzdHJ1Y3Qg
U2VydmljZVdvcmtlckpvYkRhdGEgewogCiAgICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciBjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllci5jb25u
ZWN0aW9uSWRlbnRpZmllcjsgfQogCisgICAgYm9vbCBpc0VxdWl2YWxlbnQoY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGEmKSBjb25zdDsKKwogICAgIFVSTCBzY3JpcHRVUkw7CiAgICAgVVJMIGNs
aWVudENyZWF0aW9uVVJMOwogICAgIFNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW47CkBAIC01
Niw3ICs1OCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YSB7CiAgICAgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMgcmVnaXN0cmF0aW9uT3B0aW9uczsKIAogICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAgIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgcmVnaXN0cmF0aW9uS2V5KCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSByZWdpc3RyYXRpb25L
ZXkoKSBjb25zdDsKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSBpc29sYXRlZENvcHkoKSBjb25z
dDsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAppbmRleCBmMjE4OTA3MGVhYjc4ZDhjNTI3OTFi
M2I1ZGUzMDRjMGY1M2QyM2M3Li4xMTZiYmI0ZmY3OWNhY2VlZmQ3OTAyNWJkM2NjOGE3MjAzMzk2
OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCkBAIC00Niw4ICs0Niw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24pOwogCi1jb25zdCBTZWNvbmRzIHNvZnRVcGRhdGVEZWxheSB7IDFfcyB9Owot
CiBSZWY8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bjo6Z2V0T3JDcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPFNlcnZp
Y2VXb3JrZXJDb250YWluZXI+JiYgY29udGFpbmVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YSYmIGRhdGEpCiB7CiAgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IGNvbnRhaW5lci0+
cmVnaXN0cmF0aW9uKGRhdGEuaWRlbnRpZmllcikpIHsKQEAgLTYyLDcgKzYwLDYgQEAgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbjo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb24KICAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAs
IG1fcmVnaXN0cmF0aW9uRGF0YShXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpKQogICAgICwgbV9j
b250YWluZXIoV1RGTW92ZShjb250YWluZXIpKQotICAgICwgbV9zb2Z0VXBkYXRlVGltZXIoW3Ro
aXNdIHsgc29mdFVwZGF0ZSgpOyB9KQogewogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiQ3JlYXRp
bmcgcmVnaXN0cmF0aW9uICVwIGZvciByZWdpc3RyYXRpb24ga2V5ICVzIiwgdGhpcywgbV9yZWdp
c3RyYXRpb25EYXRhLmtleS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgc3Vz
cGVuZElmTmVlZGVkKCk7CkBAIC0xNTYsMjggKzE1Myw2IEBAIHZvaWQgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbjo6dXBkYXRlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICBt
X2NvbnRhaW5lci0+dXBkYXRlUmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uRGF0YS5zY29wZVVS
TCwgbmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgV29ya2VyVHlwZTo6Q2xhc3NpYywgV1RGTW92
ZShwcm9taXNlKSk7CiB9CiAKLS8vIFRvIGF2b2lkIHNjaGVkdWxpbmcgbWFueSB1cGRhdGVzIGR1
cmluZyBhIHNpbmdsZSBwYWdlIGxvYWQsIHdlIGRvIHNvZnQgdXBkYXRlcyBvbiBhIDEgc2Vjb25k
IGRlbGF5IGFuZCBrZWVwIGRlbGF5aW5nCi0vLyBhcyBsb25nIGFzIHNvZnQgdXBkYXRlIHJlcXVl
c3RzIGtlZXAgY29taW5nLiBUaGlzIHNlZW1zIHRvIG1hdGNoIENocm9tZSdzIGJlaGF2aW9yLgot
dm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzY2hlZHVsZVNvZnRVcGRhdGUoKQotewot
ICAgIGlmIChtX3NvZnRVcGRhdGVUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3NvZnRVcGRh
dGVUaW1lci5zdG9wKCk7Ci0gICAgbV9zb2Z0VXBkYXRlVGltZXIuc3RhcnRPbmVTaG90KHNvZnRV
cGRhdGVEZWxheSk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c29mdFVw
ZGF0ZSgpCi17Ci0gICAgaWYgKG1faXNTdG9wcGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBh
dXRvKiBuZXdlc3RXb3JrZXIgPSBnZXROZXdlc3RXb3JrZXIoKTsKLSAgICBpZiAoIW5ld2VzdFdv
cmtlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgd29ya2VyIHR5
cGVzLgotICAgIG1fY29udGFpbmVyLT51cGRhdGVSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25E
YXRhLnNjb3BlVVJMLCBuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpLCBXb3JrZXJUeXBlOjpDbGFz
c2ljLCBudWxscHRyKTsKLX0KLQogdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjp1bnJl
Z2lzdGVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAobV9pc1N0
b3BwZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oCmluZGV4IDE5MWZhNDBiOGZhNzdkMjkyYjEzZGNk
MWYyYWQ1ZGY3MWFjNGY3MGUuLjZiODA2OGVkNTQ4ZjJiODg1MmI3MmUxNzM0MjQwN2YzNGQyMGMy
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaApAQCAtNjgsOCArNjgsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1cGRhdGUoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgdm9pZCB1bnJlZ2lzdGVy
KFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCi0gICAgdm9pZCBzY2hlZHVsZVNvZnRVcGRhdGUo
KTsKLQogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpk
ZXJlZjsKICAgICAKQEAgLTg3LDggKzg1LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZp
bmFsIHsgZGVyZWYoKTsgfQogCi0gICAgdm9pZCBzb2Z0VXBkYXRlKCk7Ci0KICAgICAvLyBBY3Rp
dmVET01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOwogICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKQEAg
LTEwNiw3ICsxMDIsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3Nob3VsZEZpcmVVcGRhdGVGb3VuZEV2ZW50VXBvblJlc3VtaW5nIHsg
ZmFsc2UgfTsKICAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24+PiBtX3BlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2g7Ci0gICAgVGltZXIgbV9z
b2Z0VXBkYXRlVGltZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwCmluZGV4IDQ3MGMxODk4OTdjYWIyYjZkZWQyZTc3MjVmYWU1OTYzZjE4YjBhMjcu
LjgyZDNlNjliYjBlZTIxMjFjMmNhNzc0OWQ5MDg1NjA3NjZiYTAzOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwCkBAIC0xMDgsMTUgKzEwOCw2IEBAIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6Zmly
ZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBz
ZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5maXJlQWN0aXZhdGVFdmVudCgpOwogfQogCi12b2lkIFNX
Q29udGV4dE1hbmFnZXI6OnNvZnRVcGRhdGUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKLXsKLSAgICBhdXRvKiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJNYXAuZ2V0KGlkZW50
aWZpZXIpOwotICAgIGlmICghc2VydmljZVdvcmtlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
c2VydmljZVdvcmtlci0+dGhyZWFkKCkuc29mdFVwZGF0ZSgpOwotfQotCiB2b2lkIFNXQ29udGV4
dE1hbmFnZXI6OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlm
aWVyLCBTZWNvbmRzIHRpbWVvdXQsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBhdXRvIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC50YWtlKGlkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IDZhMDVhM2MxMTliYTk5ZTM3ZDI3MDYwY2Y4NmQw
ZWNjZTc2M2UxYzYuLjA5YmJjYjUzNWY5NjAyOWUxZjZmNGY5MDhlMTcwOTAxZDM2ZGQxNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmgKQEAgLTgzLDcgKzgzLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgZGVzdGluYXRpb24sIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFNlcnZpY2VXb3Jr
ZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZp
cmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc29mdFVwZGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFNlY29uZHMgdGltZW91dCwgRnVuY3Rpb248dm9pZCgpPiYmKTsKIAogICAgIHZv
aWQgZm9yRWFjaFNlcnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eSYpPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJGZXRjaC5jcHAKaW5k
ZXggNDQ5NjlhZjA2ZjRmOGMxZTc3YTVjMWViYTlmZDRiMDIyM2EwNjdhMi4uOTc4M2E5ZDllNjcx
YjcyZDE5NDhlNDI3YmMxOTQzNWY1M2Y0YjE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyRmV0Y2guY3Bw
CkBAIC0xNDAsNyArMTQwLDYgQEAgdm9pZCBkaXNwYXRjaEZldGNoRXZlbnQoUmVmPENsaWVudD4m
JiBjbGllbnQsIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYgZ2xvYmFsU2MKICAgICBGZXRjaE9w
dGlvbnM6OlJlZGlyZWN0IHJlZGlyZWN0ID0gb3B0aW9ucy5yZWRpcmVjdDsKIAogICAgIGJvb2wg
aXNOYXZpZ2F0aW9uID0gb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdh
dGU7Ci0gICAgYm9vbCBpc05vblN1YnJlc291cmNlUmVxdWVzdCA9IFdlYkNvcmU6OmlzTm9uU3Vi
cmVzb3VyY2VSZXF1ZXN0KG9wdGlvbnMuZGVzdGluYXRpb24pOwogCiAgICAgQVNTRVJUKGdsb2Jh
bFNjb3BlLnJlZ2lzdHJhdGlvbigpLmFjdGl2ZSgpKTsKICAgICBBU1NFUlQoZ2xvYmFsU2NvcGUu
cmVnaXN0cmF0aW9uKCkuYWN0aXZlKCktPmlkZW50aWZpZXIoKSA9PSBnbG9iYWxTY29wZS50aHJl
YWQoKS5pZGVudGlmaWVyKCkpOwpAQCAtMTg4LDEwICsxODcsNiBAQCB2b2lkIGRpc3BhdGNoRmV0
Y2hFdmVudChSZWY8Q2xpZW50PiYmIGNsaWVudCwgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBn
bG9iYWxTYwogICAgIH0KIAogICAgIGdsb2JhbFNjb3BlLnVwZGF0ZUV4dGVuZGVkRXZlbnRzU2V0
KGV2ZW50LnB0cigpKTsKLQotICAgIGF1dG8mIHJlZ2lzdHJhdGlvbiA9IGdsb2JhbFNjb3BlLnJl
Z2lzdHJhdGlvbigpOwotICAgIGlmIChpc05vblN1YnJlc291cmNlUmVxdWVzdCB8fCByZWdpc3Ry
YXRpb24ubmVlZHNVcGRhdGUoKSkKLSAgICAgICAgcmVnaXN0cmF0aW9uLnNjaGVkdWxlU29mdFVw
ZGF0ZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBTZXJ2aWNlV29ya2VyRmV0Y2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAKaW5kZXggZTRlZWNhMGZhYTk3YWE5NmIyOWEzODQ3YTAzM2NhYTY1
MzNlNmY0Yy4uMDRlOWM4ODRlYTVmMGE0MWVmY2FjNDgwZWE2N2YyM2NlYzEyZWI4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTE3NSwxNCArMTc1LDYgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpmaXJlQWN0aXZhdGVFdmVudCgpCiAgICAgfSk7CiB9CiAKLXZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZDo6c29mdFVwZGF0ZSgpCi17Ci0gICAgcnVuTG9vcCgpLnBvc3RUYXNr
KFtdKGF1dG8mIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICBhdXRvJiBzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
OwotICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUucmVnaXN0cmF0aW9uKCkuc2NoZWR1
bGVTb2Z0VXBkYXRlKCk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6
ZmluaXNoZWRFdmFsdWF0aW5nU2NyaXB0KCkKIHsKICAgICBtX2RvZXNIYW5kbGVGZXRjaCA9IHdv
cmtlckdsb2JhbFNjb3BlKCktPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5mZXRjaEV2
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAppbmRleCAwNzNjZDYyMjYzM2I1YjVmNjFlM2E5
MGI0ZGM4ZjA2NmY3ZTMyMWY4Li5hNDI1NzlmZDhkZTUxZTk0ZGYwNDhmM2FmZmJmNGE4MGQ1NmMz
MzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCgpOwogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZl
bnQoKTsKLSAgICB2b2lkIHNvZnRVcGRhdGUoKTsKIAogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYgY29udGV4dERhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApp
bmRleCAwZGRmY2ZjZDA4ODc0NWFmN2NlYmUxN2VkNTgyZTVkYmFkOGU5ZjFiLi42ZTQ0MGQ2MjVi
NThmNzkxYWFkNmU1NDM4NjA3OTJiZTNiOTc3Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMjkzLDcgKzI5Myw3IEBA
IHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIo
Y29uc3QgU2VydmljZVdvcmtlckZldGNoCiAKIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OmRp
ZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIGtleSkKIHsKLSAgICBtX3NlcnZlci5kaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlz
ZSgqdGhpcywga2V5KTsKKyAgICBtX3NlcnZlci5kaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlz
ZSh0aGlzLCBrZXkpOwogfQogCiB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjphZGRTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgaWRlbnRpZmllcikKQEAgLTMxMiwxMSArMzEyLDEyIEBAIHZvaWQgU1dTZXJ2ZXI6OkNv
bm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRl
bnRpZmllCiAgICAgICAgIG1fc2VydmVyLnN5bmNUZXJtaW5hdGVXb3JrZXIoKndvcmtlcik7CiB9
CiAKLVNXU2VydmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5T
dG9yZSwgYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lz
dHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENyZWF0
ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2smJiBjYWxsYmFjaykKK1NXU2VydmVyOjpTV1NlcnZl
cihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmlnaW5TdG9yZSwgYm9vbCBwcm9jZXNzVGVy
bWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0
b3J5LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNvZnRVcGRhdGVDYWxsYmFjayYmIHNvZnRV
cGRhdGVDYWxsYmFjaywgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmIGNhbGxiYWNr
KQogICAgIDogbV9vcmlnaW5TdG9yZShXVEZNb3ZlKG9yaWdpblN0b3JlKSkKICAgICAsIG1fc2Vz
c2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1faXNQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJs
ZWQocHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKQogICAgICwgbV9jcmVhdGVDb250ZXh0
Q29ubmVjdGlvbkNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2spKQorICAgICwgbV9zb2Z0VXBkYXRl
Q2FsbGJhY2soV1RGTW92ZShzb2Z0VXBkYXRlQ2FsbGJhY2spKQogewogICAgIEFTU0VSVCghcmVn
aXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpIHx8IG1fc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkpOwogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKQEAgLTMzMSwx
NiArMzMyLDI2IEBAIFNXU2VydmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4m
JiBvcmlnaW5TdG9yZSwgYm9vbCBwcm9jZXNzVGVybWluYXRpCiAvLyBodHRwczovL3czYy5naXRo
dWIuaW8vU2VydmljZVdvcmtlci8jc2NoZWR1bGUtam9iLWFsZ29yaXRobQogdm9pZCBTV1NlcnZl
cjo6c2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQogewotICAgIEFT
U0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIo
KSkpOwotCi0gICAgLy8gRklYTUU6IFBlciB0aGUgc3BlYywgY2hlY2sgaWYgdGhpcyBqb2IgaXMg
ZXF1aXZhbGVudCB0byB0aGUgbGFzdCBqb2Igb24gdGhlIHF1ZXVlLgotICAgIC8vIElmIGl0IGlz
LCBzdGFjayBpdCBhbG9uZyB3aXRoIHRoYXQgam9iLgorICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25z
LmNvbnRhaW5zKGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZpZXIoKSkgfHwgam9iRGF0YS5jb25u
ZWN0aW9uSWRlbnRpZmllcigpID09IFByb2Nlc3M6OmlkZW50aWZpZXIoKSk7CiAKICAgICBhdXRv
JiBqb2JRdWV1ZSA9ICptX2pvYlF1ZXVlcy5lbnN1cmUoam9iRGF0YS5yZWdpc3RyYXRpb25LZXko
KSwgW3RoaXMsICZqb2JEYXRhXSB7CiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNXU2VydmVy
Sm9iUXVldWU+KCp0aGlzLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpKTsKICAgICB9KS5pdGVy
YXRvci0+dmFsdWU7CiAKLSAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKGpvYkRhdGEpOworICAgIGlm
ICgham9iUXVldWUuc2l6ZSgpKSB7CisgICAgICAgIGpvYlF1ZXVlLmVucXVldWVKb2IoV1RGTW92
ZShqb2JEYXRhKSk7CisgICAgICAgIGpvYlF1ZXVlLnJ1bk5leHRKb2IoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBhdXRvJiBsYXN0Sm9iID0gam9iUXVldWUubGFzdEpvYigpOworICAg
IGlmIChqb2JEYXRhLmlzRXF1aXZhbGVudChsYXN0Sm9iKSkgeworICAgICAgICAvLyBGSVhNRTog
UGVyIHRoZSBzcGVjLCBjaGVjayBpZiB0aGlzIGpvYiBpcyBlcXVpdmFsZW50IHRvIHRoZSBsYXN0
IGpvYiBvbiB0aGUgcXVldWUuCisgICAgICAgIC8vIElmIGl0IGlzLCBzdGFjayBpdCBhbG9uZyB3
aXRoIHRoYXQgam9iLiBGb3Igbm93LCB3ZSBqdXN0IG1ha2Ugc3VyZSB0byBub3QgY2FsbCBzb2Z0
LXVwZGF0ZSB0b28gb2Z0ZW4uCisgICAgICAgIGlmIChqb2JEYXRhLnR5cGUgPT0gU2VydmljZVdv
cmtlckpvYlR5cGU6OlVwZGF0ZSAmJiBqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkgPT0g
UHJvY2Vzczo6aWRlbnRpZmllcigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGpvYlF1ZXVlLmVucXVldWVKb2IoV1RGTW92ZShqb2JEYXRhKSk7CiAgICAgaWYgKGpvYlF1ZXVl
LnNpemUoKSA9PSAxKQogICAgICAgICBqb2JRdWV1ZS5ydW5OZXh0Sm9iKCk7CiB9CkBAIC0zNTks
OCArMzcwLDExIEBAIHZvaWQgU1dTZXJ2ZXI6OnJlc29sdmVSZWdpc3RyYXRpb25Kb2IoY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIGNvbnN0CiB7CiAgICAgTE9HKFNlcnZpY2VX
b3JrZXIsICJSZXNvbHZlZCBTZXJ2aWNlV29ya2VyIGpvYiAlcyBpbiBzZXJ2ZXIgd2l0aCByZWdp
c3RyYXRpb24gJXMiLCBqb2JEYXRhLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgcmVnaXN0cmF0aW9uRGF0YS5pZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKICAgICBhdXRvKiBjb25uZWN0aW9uID0gbV9jb25uZWN0aW9ucy5nZXQoam9i
RGF0YS5jb25uZWN0aW9uSWRlbnRpZmllcigpKTsKLSAgICBpZiAoIWNvbm5lY3Rpb24pCisgICAg
aWYgKCFjb25uZWN0aW9uKSB7CisgICAgICAgIGlmIChzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQg
PT0gU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkOjpZZXMgJiYgam9iRGF0YS5jb25uZWN0aW9uSWRl
bnRpZmllcigpID09IFByb2Nlc3M6OmlkZW50aWZpZXIoKSkKKyAgICAgICAgICAgIGRpZFJlc29s
dmVSZWdpc3RyYXRpb25Qcm9taXNlKG51bGxwdHIsIHJlZ2lzdHJhdGlvbkRhdGEua2V5KTsKICAg
ICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGNvbm5lY3Rpb24tPnJlc29sdmVSZWdpc3RyYXRp
b25Kb2JJbkNsaWVudChqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLCByZWdpc3Ry
YXRpb25EYXRhLCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpOwogfQpAQCAtMzc0LDIwICszODgs
NTcgQEAgdm9pZCBTV1NlcnZlcjo6cmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhLCBjb24KICAgICBjb25uZWN0aW9uLT5yZXNvbHZlVW5y
ZWdpc3RyYXRpb25Kb2JJbkNsaWVudChqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVy
LCByZWdpc3RyYXRpb25LZXksIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKIH0KIAotdm9pZCBTV1Nl
cnZlcjo6c3RhcnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0
YSwgRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKK1VSTCBzdGF0aWMgaW5saW5lIG9y
aWdpblVSTChjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQoreworICAgIFVSTCB1cmw7Cisg
ICAgdXJsLnNldFByb3RvY29sKG9yaWdpbi5wcm90b2NvbCgpKTsKKyAgICB1cmwuc2V0SG9zdChv
cmlnaW4uaG9zdCgpKTsKKyAgICBpZiAob3JpZ2luLnBvcnQoKSkKKyAgICAgICAgdXJsLnNldFBv
cnQoKm9yaWdpbi5wb3J0KCkpOworICAgIHJldHVybiB1cmw7Cit9CisKK3ZvaWQgU1dTZXJ2ZXI6
OnN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEsIGJv
b2wgc2hvdWxkUmVmcmVzaENhY2hlKQogewogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmVy
IGlzc3Vpbmcgc3RhcnRTY3JpcHRGZXRjaCBmb3IgY3VycmVudCBqb2IgJXMgaW4gY2xpZW50Iiwg
am9iRGF0YS5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAg
IGF1dG8qIGNvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25zLmdldChqb2JEYXRhLmNvbm5lY3Rpb25J
ZGVudGlmaWVyKCkpOworICAgIGlmIChjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24t
PnN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudChqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlm
aWVyLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBzaG91bGRSZWZyZXNoQ2FjaGUgPyBGZXRj
aE9wdGlvbnM6OkNhY2hlOjpOb0NhY2hlIDogRmV0Y2hPcHRpb25zOjpDYWNoZTo6RGVmYXVsdCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGpvYkRhdGEuY29ubmVjdGlvbklkZW50
aWZpZXIoKSA9PSBQcm9jZXNzOjppZGVudGlmaWVyKCkpIHsKKyAgICAgICAgQVNTRVJUKGpvYkRh
dGEudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlKTsKKyAgICAgICAgLy8gVGhp
cyBpcyBhIHNvZnQtdXBkYXRlIGpvYiwgY3JlYXRlIGRpcmVjdGx5IGEgbmV0d29yayBsb2FkIHRv
IGZldGNoIHRoZSBzY3JpcHQuCisgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0IHsgam9i
RGF0YS5zY3JpcHRVUkwgfTsKKworICAgICAgICBhdXRvIHRvcE9yaWdpbiA9IGpvYkRhdGEudG9w
T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShqb2JEYXRhLnNjcmlwdFVSTCk7CisKKyAgICAgICAgcmVxdWVzdC5zZXRE
b21haW5Gb3JDYWNoZVBhcnRpdGlvbih0b3BPcmlnaW4tPmRvbWFpbkZvckNhY2hlUGFydGl0aW9u
KCkpOworICAgICAgICByZXF1ZXN0LnNldEFsbG93Q29va2llcyh0cnVlKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhvcmlnaW5VUkwodG9wT3JpZ2luKSk7CisKKyAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6Ok9yaWdpbiwg
b3JpZ2luLT50b1N0cmluZygpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlNlcnZpY2VXb3JrZXIsICJzY3JpcHQiX3MpOworICAgICAgICByZXF1
ZXN0LnNldEhUVFBSZWZlcnJlcihvcmlnaW5VUkwob3JpZ2luKSk7CisgICAgICAgIHJlcXVlc3Qu
c2V0SFRUUFVzZXJBZ2VudChzZXJ2aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KENsaWVudE9yaWdp
biB7IGpvYkRhdGEudG9wT3JpZ2luLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRhdGEuc2Ny
aXB0VVJMKS0+ZGF0YSgpIH0pKTsKKyAgICAgICAgcmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJj
ZUxvYWRQcmlvcml0eTo6TG93KTsKKworICAgICAgICBtX3NvZnRVcGRhdGVDYWxsYmFjayhTZXJ2
aWNlV29ya2VySm9iRGF0YSB7IGpvYkRhdGEgfSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3Zl
KHJlcXVlc3QpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byYgcmVz
dWx0KSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIHNjcmlwdEZldGNoRmluaXNoZWQocmVzdWx0KTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShjb25uZWN0
aW9uLCAiSWYgdGhlIGNvbm5lY3Rpb24gd2FzIGxvc3QsIHRoaXMgam9iIHNob3VsZCBoYXZlIGJl
ZW4gY2FuY2VsbGVkIik7Ci0gICAgaWYgKGNvbm5lY3Rpb24pCi0gICAgICAgIGNvbm5lY3Rpb24t
PnN0YXJ0U2NyaXB0RmV0Y2hJbkNsaWVudChqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlm
aWVyLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBjYWNoZVBvbGljeSk7CiB9CiAKIHZvaWQg
U1dTZXJ2ZXI6OnNjcmlwdEZldGNoRmluaXNoZWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVz
dWx0JiByZXN1bHQpCiB7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2ZXIgaGFuZGxpbmcg
c2NyaXB0RmV0Y2hGaW5pc2hlZCBmb3IgY3VycmVudCBqb2IgJXMgaW4gY2xpZW50IiwgcmVzdWx0
LmpvYkRhdGFJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAg
IEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKHJlc3VsdC5qb2JEYXRhSWRlbnRpZmllci5j
b25uZWN0aW9uSWRlbnRpZmllcikpOworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5z
KHJlc3VsdC5qb2JEYXRhSWRlbnRpZmllci5jb25uZWN0aW9uSWRlbnRpZmllcikgfHwgcmVzdWx0
LmpvYkRhdGFJZGVudGlmaWVyLmNvbm5lY3Rpb25JZGVudGlmaWVyID09IFByb2Nlc3M6OmlkZW50
aWZpZXIoKSk7CiAKICAgICBhdXRvIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJlc3VsdC5y
ZWdpc3RyYXRpb25LZXkpOwogICAgIGlmICgham9iUXVldWUpCkBAIC01MTcsOSArNTY4LDkgQEAg
dm9pZCBTV1NlcnZlcjo6Y2xhaW0oU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKICAgICB9KTsKIH0K
IAotdm9pZCBTV1NlcnZlcjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29ubmVjdGlv
biYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0
cmF0aW9uS2V5KQordm9pZCBTV1NlcnZlcjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2Uo
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYgcmVnaXN0cmF0aW9uS2V5KQogewotICAgIEFTU0VSVF9VTlVTRUQoY29ubmVjdGlvbiwgbV9j
b25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOworICAgIEFTU0VS
VF9VTlVTRUQoY29ubmVjdGlvbiwgIWNvbm5lY3Rpb24gfHwgbV9jb25uZWN0aW9ucy5jb250YWlu
cyhjb25uZWN0aW9uLT5pZGVudGlmaWVyKCkpKTsKIAogICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9
IG1fam9iUXVldWVzLmdldChyZWdpc3RyYXRpb25LZXkpKQogICAgICAgICBqb2JRdWV1ZS0+ZGlk
UmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoKTsKQEAgLTk5OCw2ICsxMDQ5LDE3IEBAIGJvb2wg
U1dTZXJ2ZXI6OmNhbkhhbmRsZVNjaGVtZShTdHJpbmdWaWV3IHNjaGVtZSkgY29uc3QKICAgICBy
ZXR1cm4gc2NoZW1lLmxlbmd0aCgpID09IDQ7CiB9CiAKKy8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9TZXJ2aWNlV29ya2VyLyNzb2Z0LXVwZGF0ZQordm9pZCBTV1NlcnZlcjo6c29mdFVwZGF0ZShT
V1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQoreworICAgIFNlcnZpY2VXb3JrZXJK
b2JEYXRhIGpvYkRhdGEoUHJvY2Vzczo6aWRlbnRpZmllcigpLCBTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSk7CisgICAgam9iRGF0YS5zY3JpcHRVUkwgPSByZWdpc3RyYXRpb24u
c2NyaXB0VVJMKCk7CisgICAgam9iRGF0YS50b3BPcmlnaW4gPSByZWdpc3RyYXRpb24ua2V5KCku
dG9wT3JpZ2luKCk7CisgICAgam9iRGF0YS5zY29wZVVSTCA9IHJlZ2lzdHJhdGlvbi5zY29wZVVS
TFdpdGhvdXRGcmFnbWVudCgpOworICAgIGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JU
eXBlOjpVcGRhdGU7CisgICAgc2NoZWR1bGVKb2IoV1RGTW92ZShqb2JEYXRhKSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApp
bmRleCA5Y2RhOWIzODljNDU5YWQ3ZTAxYjE3ODRmNGU4NGNmOTM0OTAxYWIwLi5iYzExMjc2YTEz
ZWRiNTA4YzVjMzZjMTc2NDAzYjExZjFmZjkyODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0xMjQsOCArMTI0LDkgQEAgcHVi
bGljOgogICAgICAgICBWZWN0b3I8UmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0PiBtX3JlZ2lzdHJh
dGlvblJlYWR5UmVxdWVzdHM7CiAgICAgfTsKIAorICAgIHVzaW5nIFNvZnRVcGRhdGVDYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhLCBib29sIHNo
b3VsZFJlZnJlc2hDYWNoZSwgUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik+JiYpPjsKICAgICB1c2luZyBDcmVh
dGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYpPjsKLSAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcihVbmlx
dWVSZWY8U1dPcmlnaW5TdG9yZT4mJiwgYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJs
ZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Npb25J
RCwgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiwgYm9vbCBwcm9jZXNzVGVybWlu
YXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5
LCBQQUw6OlNlc3Npb25JRCwgU29mdFVwZGF0ZUNhbGxiYWNrJiYsIENyZWF0ZUNvbnRleHRDb25u
ZWN0aW9uQ2FsbGJhY2smJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+U1dTZXJ2ZXIoKTsKIApA
QCAtMTM1LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0
U3VzcGVuc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZW5kU3VzcGVuc2lvbigpOwogCisgICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIGdl
dFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlm
aWVyKSB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbnMuZ2V0KGlkZW50aWZpZXIpOyB9CiAgICAgV0VC
Q09SRV9FWFBPUlQgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIGdldFJlZ2lzdHJhdGlvbihjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb24o
c3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmKTsKICAgICB2b2lkIHJlbW92
ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CkBAIC0x
NDQsNyArMTQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVqZWN0Sm9iKGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhJiwgY29uc3QgRXhjZXB0aW9uRGF0YSYpOwogICAgIHZvaWQgcmVzb2x2ZVJl
Z2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKTsKICAgICB2
b2lkIHJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBib29sIHVucmVnaXN0cmF0aW9u
UmVzdWx0KTsKLSAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2goY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGEmLCBGZXRjaE9wdGlvbnM6OkNhY2hlKTsKKyAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2go
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSk7CiAK
ICAgICB2b2lkIHVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CiAgICAgdm9pZCB0ZXJtaW5hdGVX
b3JrZXIoU1dTZXJ2ZXJXb3JrZXImKTsKQEAgLTIwNiwxMCArMjA4LDEyIEBAIHB1YmxpYzoKICAg
ICBib29sIGlzSW1wb3J0Q29tcGxldGVkKCkgY29uc3QgeyByZXR1cm4gbV9pbXBvcnRDb21wbGV0
ZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdoZW5JbXBvcnRJc0NvbXBsZXRlZChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCisgICAgdm9pZCBzb2Z0VXBkYXRlKFNXU2VydmVy
UmVnaXN0cmF0aW9uJik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVk
KGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwogCi0gICAgdm9pZCBkaWRSZXNvbHZl
UmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYpOworICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoQ29u
bmVjdGlvbiosIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKIAogICAgIHZv
aWQgYWRkQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiwgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwogICAgIHZvaWQgcmVtb3ZlQ2xpZW50U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiwgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIpOwpAQCAtMjY2LDYgKzI3MCw3IEBAIHByaXZhdGU6CiAgICAgQ3JlYXRl
Q29udGV4dENvbm5lY3Rpb25DYWxsYmFjayBtX2NyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJh
Y2s7CiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9wZW5kaW5nQ29u
bmVjdGlvbkRvbWFpbnM7CiAgICAgVmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1f
aW1wb3J0Q29tcGxldGVkQ2FsbGJhY2tzOworICAgIFNvZnRVcGRhdGVDYWxsYmFjayBtX3NvZnRV
cGRhdGVDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuY3BwCmluZGV4IDNhOTcyN2M4ZDNjODY2NzcwZjE5ZTQ5OWEzOTlhMTI0NmUzOGVhN2UuLjg5
NDBlYjkyYmZkMmIyNmEzNjhkZmNmNGIxY2RhMjNkMjAzMDNiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVl
LmNwcApAQCAtMzMyLDE3ICszMzIsMTMgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5VcGRh
dGVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKICAgICBpZiAoam9iLnR5cGUg
PT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSAmJiBuZXdlc3RXb3JrZXIgJiYgIWVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoam9iLnNjcmlwdFVSTCwgbmV3ZXN0V29ya2VyLT5z
Y3JpcHRVUkwoKSkpCiAgICAgICAgIHJldHVybiByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRh
dGEgeyBUeXBlRXJyb3IsICJDYW5ub3QgdXBkYXRlIGEgc2VydmljZSB3b3JrZXIgd2l0aCBhIHJl
cXVlc3RlZCBzY3JpcHQgVVJMIHdob3NlIG5ld2VzdCB3b3JrZXIgaGFzIGEgZGlmZmVyZW50IHNj
cmlwdCBVUkwiX3MgfSk7CiAKLSAgICBGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5ID0g
RmV0Y2hPcHRpb25zOjpDYWNoZTo6RGVmYXVsdDsKICAgICAvLyBTZXQgcmVxdWVzdCdzIGNhY2hl
IG1vZGUgdG8gIm5vLWNhY2hlIiBpZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBhcmUgdHJ1ZToKICAg
ICAvLyAtIHJlZ2lzdHJhdGlvbidzIHVwZGF0ZSB2aWEgY2FjaGUgbW9kZSBpcyBub3QgImFsbCIu
CiAgICAgLy8gLSBqb2IncyBmb3JjZSBieXBhc3MgY2FjaGUgZmxhZyBpcyBzZXQuCiAgICAgLy8g
LSBuZXdlc3RXb3JrZXIgaXMgbm90IG51bGwsIGFuZCByZWdpc3RyYXRpb24ncyBsYXN0IHVwZGF0
ZSBjaGVjayB0aW1lIGlzIG5vdCBudWxsIGFuZCB0aGUgdGltZSBkaWZmZXJlbmNlIGluIHNlY29u
ZHMgY2FsY3VsYXRlZCBieSB0aGUKICAgICAvLyAgIGN1cnJlbnQgdGltZSBtaW51cyByZWdpc3Ry
YXRpb24ncyBsYXN0IHVwZGF0ZSBjaGVjayB0aW1lIGlzIGdyZWF0ZXIgdGhhbiA4NjQwMC4KLSAg
ICBpZiAocmVnaXN0cmF0aW9uLT51cGRhdGVWaWFDYWNoZSgpICE9IFNlcnZpY2VXb3JrZXJVcGRh
dGVWaWFDYWNoZTo6QWxsCi0gICAgICAgIHx8IChuZXdlc3RXb3JrZXIgJiYgcmVnaXN0cmF0aW9u
LT5pc1N0YWxlKCkpKSB7Ci0gICAgICAgIGNhY2hlUG9saWN5ID0gRmV0Y2hPcHRpb25zOjpDYWNo
ZTo6Tm9DYWNoZTsKLSAgICB9Ci0gICAgbV9zZXJ2ZXIuc3RhcnRTY3JpcHRGZXRjaChqb2IsIGNh
Y2hlUG9saWN5KTsKKyAgICBib29sIHNob3VsZFJlZnJlc2hDYWNoZSA9IHJlZ2lzdHJhdGlvbi0+
dXBkYXRlVmlhQ2FjaGUoKSAhPSBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU6OkFsbCB8fCAo
bmV3ZXN0V29ya2VyICYmIHJlZ2lzdHJhdGlvbi0+aXNTdGFsZSgpKTsKKyAgICBtX3NlcnZlci5z
dGFydFNjcmlwdEZldGNoKGpvYiwgc2hvdWxkUmVmcmVzaENhY2hlKTsKIH0KIAogdm9pZCBTV1Nl
cnZlckpvYlF1ZXVlOjpyZWplY3RDdXJyZW50Sm9iKGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2Vw
dGlvbkRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCmluZGV4IDZjMDQzNGVjNGU1MzZlYTc0MDYxNjJjYTcx
YjViYjdlNzhjNTc4NzkuLmViOTMxZTA0MTQ3MDBlZDU5NjdhYWI2MWQ2NDgyNzU4MTI1OWM0Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJKb2JRdWV1ZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBmaXJzdEpvYigpIGNvbnN0IHsgcmV0dXJuIG1fam9iUXVl
dWUuZmlyc3QoKTsgfQogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBsYXN0Sm9iKCkg
Y29uc3QgeyByZXR1cm4gbV9qb2JRdWV1ZS5sYXN0KCk7IH0KLSAgICB2b2lkIGVucXVldWVKb2Io
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpIHsgbV9qb2JRdWV1ZS5hcHBlbmQo
am9iRGF0YSk7IH0KKyAgICB2b2lkIGVucXVldWVKb2IoU2VydmljZVdvcmtlckpvYkRhdGEmJiBq
b2JEYXRhKSB7IG1fam9iUXVldWUuYXBwZW5kKFdURk1vdmUoam9iRGF0YSkpOyB9CiAgICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2pvYlF1ZXVlLnNpemUoKTsgfQogCiAgICAgdm9p
ZCBydW5OZXh0Sm9iKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDAyYTBjOTY3
ZjEyOWVhNzk3ZjhmYzgxNzJmYTg1NTczYTNmNDBiOTYuLmMyOWI0NjI3ODkwZWY5YjY3NzhkMjc5
N2RmNjRiZjdmMTlmM2I5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC00OSw2
ICs0OSw3IEBAIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1Nl
cnZlciYgc2VydmVyLCBjb25zdCBTZXJ2aWNlV29ya2VyCiAgICAgLCBtX3NjcmlwdFVSTChzY3Jp
cHRVUkwpCiAgICAgLCBtX3NlcnZlcihzZXJ2ZXIpCiAgICAgLCBtX2NyZWF0aW9uVGltZShNb25v
dG9uaWNUaW1lOjpub3coKSkKKyAgICAsIG1fc29mdFVwZGF0ZVRpbWVyIHsgKnRoaXMsICZTV1Nl
cnZlclJlZ2lzdHJhdGlvbjo6c29mdFVwZGF0ZSB9CiB7CiAgICAgbV9zY29wZVVSTC5yZW1vdmVG
cmFnbWVudElkZW50aWZpZXIoKTsKIH0KQEAgLTM2MywxOCArMzY0LDE2IEBAIGJvb2wgU1dTZXJ2
ZXJSZWdpc3RyYXRpb246OnNob3VsZFNvZnRVcGRhdGUoY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRp
b25zKSBjb25zdAogICAgIHJldHVybiBXZWJDb3JlOjppc05vblN1YnJlc291cmNlUmVxdWVzdChv
cHRpb25zLmRlc3RpbmF0aW9uKSAmJiBpc1N0YWxlKCk7CiB9CiAKLS8vIGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNzb2Z0LXVwZGF0ZQogdm9pZCBTV1NlcnZlclJlZ2lzdHJh
dGlvbjo6c29mdFVwZGF0ZSgpCiB7Ci0gICAgYXV0byogd29ya2VyID0gZ2V0TmV3ZXN0V29ya2Vy
KCk7Ci0gICAgaWYgKCF3b3JrZXIpCi0gICAgICAgIHJldHVybjsKKyAgICBtX3NlcnZlci5zb2Z0
VXBkYXRlKCp0aGlzKTsKK30KIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc2NoZWR1bGUgYW4g
dXBkYXRlIGpvYi4KLSAgICBtX3NlcnZlci5ydW5TZXJ2aWNlV29ya2VySWZOZWNlc3Nhcnkod29y
a2VyLT5pZGVudGlmaWVyKCksIFtzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHdvcmtlci0+aWRl
bnRpZmllcigpXShhdXRvKiBjb250ZXh0Q29ubmVjdGlvbikgewotICAgICAgICBpZiAoY29udGV4
dENvbm5lY3Rpb24pCi0gICAgICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+c29mdFVwZGF0ZShz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7Ci0gICAgfSk7Cit2b2lkIFNXU2VydmVyUmVnaXN0cmF0
aW9uOjpzY2hlZHVsZVNvZnRVcGRhdGUoKQoreworICAgIC8vIFRvIGF2b2lkIHNjaGVkdWxpbmcg
bWFueSB1cGRhdGVzIGR1cmluZyBhIHNpbmdsZSBwYWdlIGxvYWQsIHdlIGRvIHNvZnQgdXBkYXRl
cyBvbiBhIDEgc2Vjb25kIGRlbGF5IGFuZCBrZWVwIGRlbGF5aW5nCisgICAgLy8gYXMgbG9uZyBh
cyBzb2Z0IHVwZGF0ZSByZXF1ZXN0cyBrZWVwIGNvbWluZy4gVGhpcyBzZWVtcyB0byBtYXRjaCBD
aHJvbWUncyBiZWhhdmlvci4KKyAgICBtX3NvZnRVcGRhdGVUaW1lci5zdGFydE9uZVNob3Qoc29m
dFVwZGF0ZURlbGF5KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lz
dHJhdGlvbi5oCmluZGV4IGQwYjYyYzFjZDg3MzU0OTM5YTMxNjEyOTE2MDE3YWE1NjQ2ODdjNjYu
LjcwNWU2YTcwNmEyM2E0MjNhN2YzZmQ3M2I3ZjdjMzljYzZiZmNkNjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVn
aXN0cmF0aW9uLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCisjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3Rvbmlj
VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAtOTgsMTMgKzk5LDE2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZvckVhY2hDb25uZWN0aW9uKGNvbnN0IFdURjo6RnVuY3Rpb248dm9p
ZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYpPiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
aG91bGRTb2Z0VXBkYXRlKGNvbnN0IEZldGNoT3B0aW9ucyYpIGNvbnN0OwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc29mdFVwZGF0ZSgpOwotICAgIAotICAgIFN0cmluZyBzY29wZVVSTFdpdGhv
dXRGcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVVUkw7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNjaGVkdWxlU29mdFVwZGF0ZSgpOworICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vj
b25kcyBzb2Z0VXBkYXRlRGVsYXkgeyAxX3MgfTsKKworICAgIFVSTCBzY29wZVVSTFdpdGhvdXRG
cmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVVUkw7IH0KKyAgICBVUkwgc2NyaXB0VVJM
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHRVUkw7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGFj
dGl2YXRlKCk7CiAgICAgdm9pZCBoYW5kbGVDbGllbnRVbmxvYWQoKTsKKyAgICB2b2lkIHNvZnRV
cGRhdGUoKTsKIAogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IG1fcmVnaXN0cmF0aW9u
S2V5OwpAQCAtMTI0LDYgKzEyOCw4IEBAIHByaXZhdGU6CiAKICAgICBNb25vdG9uaWNUaW1lIG1f
Y3JlYXRpb25UaW1lOwogICAgIEhhc2hNYXA8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
SGFzaFNldDxEb2N1bWVudElkZW50aWZpZXI+PiBtX2NsaWVudHNVc2luZ1JlZ2lzdHJhdGlvbjsK
KworICAgIFdlYkNvcmU6OlRpbWVyIG1fc29mdFVwZGF0ZVRpbWVyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXgg
ZDQ3ZTlmMTg3ZGE0ZTAwOGZlZmJmNjU3YmJkYzhhZDllZmRhNjNjZi4uODIyMjk5OTFkNjIxODk4
ZTliNmNlODcyZmIwZjNjNzc5ZGM1YmFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCkBAIC01Miw3ICs1Miw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5z
dGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYs
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpcmVJbnN0
YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc29mdFVwZGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxl
dGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggOGIzZGEwZWJk
ZTIwMzRmZDQ5MTBhZGVjYjNhNzMxZmUwMDNhYzdiMC4uMWIxOWI2N2U4M2NjODQxOGU4OTE2OGRm
NzQwMmZmNzk4OTQ4ZDY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIzNDksNyArMjM0OSw5IEBAIFNXU2VydmVyJiBOZXR3b3Jr
UHJvY2Vzczo6c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAg
ICAgICAgLy8gSWYgdGhlcmUncyBub3QsIHRoZW4gd2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9u
SUQgY29tZSBmcm9tPwogICAgICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgfHwg
IXBhdGguaXNFbXB0eSgpKTsKIAotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4o
bWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBpbmZvLnByb2Nlc3NUZXJtaW5hdGlv
bkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklELCBbdGhpcywgc2Vzc2lvbklE
XShhdXRvJiByZWdpc3RyYWJsZURvbWFpbikgeworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
V1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBpbmZvLnByb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklELCBbdGhpcywg
c2Vzc2lvbklEXShhdXRvJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIGF1dG8m
JiByZXF1ZXN0LCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgICAgICAg
ICAgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OnN0YXJ0KG5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCksIFdURk1vdmUoam9iRGF0YSksIHNob3VsZFJlZnJlc2hDYWNoZSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICB9LCBbdGhpcywg
c2Vzc2lvbklEXShhdXRvJiByZWdpc3RyYWJsZURvbWFpbikgewogICAgICAgICAgICAgQVNTRVJU
KCFyZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpOwogICAgICAgICAgICAgcGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcmVnaXN0cmFibGVE
b21haW4sIHNlc3Npb25JRCB9LCAwKTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggYmM0MzUxZmExZTExN2IyNzZjMTAz
ZjdiNzgzYmJmM2JlZTQ4YTg3OC4uMmEzODE5Y2EyYTM5ZWY0ZWZlNjAxNmY3ZDg5MGFmNjMyM2Rh
OGNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiUHJlZmV0Y2hDYWNoZS5oIgogI2luY2x1
ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQWRDbGlja0F0dHJpYnV0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9CbG9iUmVnaXN0cnlJbXBsLmg+CkBAIC0xMjcsNiArMTI4LDExIEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNTdGFsZVdoaWxlUmV2YWxpZGF0ZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
U3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkOyB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgdm9pZCBhZGRTb2Z0VXBkYXRlTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZUxvYWRlcj4mJiBsb2FkZXIpIHsgbV9zb2Z0VXBkYXRlTG9hZGVycy5h
ZGQoV1RGTW92ZShsb2FkZXIpKTsgfQorICAgIHZvaWQgcmVtb3ZlU29mdFVwZGF0ZUxvYWRlcihT
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlciogbG9hZGVyKSB7IG1fc29mdFVwZGF0ZUxvYWRl
cnMucmVtb3ZlKGxvYWRlcik7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgTmV0d29ya1Nl
c3Npb24oTmV0d29ya1Byb2Nlc3MmLCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycyYpOwogCkBAIC0xNjIsNiArMTY4LDEwIEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8TmV0
d29ya0NhY2hlOjpDYWNoZT4gbV9jYWNoZTsKICAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBs
IG1fYmxvYlJlZ2lzdHJ5OwogICAgIHVuc2lnbmVkIG1fdGVzdFNwZWVkTXVsdGlwbGllciB7IDEg
fTsKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBIYXNoU2V0PHN0ZDo6dW5pcXVl
X3B0cjxTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcj4+IG1fc29mdFVwZGF0ZUxvYWRlcnM7
CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRh
c2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwCmluZGV4IGEwZWJhMzdhNGFkNjZlODkwM2NhMTNjNmY4YjA2
Mzc4NjZiNjNlZjQuLjYzMmQ1Yzg2OGM0MzJhMWNiZGRkZjQ0ZGFhNTk5ZTlhNmE4MzJiODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTQxLDYgKzQxLDcg
QEAKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2lu
QWNjZXNzQ29udHJvbC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1dTZXJ2ZXJSZWdpc3RyYXRpb24u
aD4KIAogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xP
R19JRihtX2xvYWRlci5zZXNzaW9uSUQoKS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgU2Vy
dmljZVdvcmtlciwgIiVwIC0gU2VydmljZVdvcmtlckZldGNoVGFzazo6IiBmbXQsIHRoaXMsICMj
X19WQV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoZm10LCAu
Li4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKG1fbG9hZGVyLnNlc3Npb25JRCgpLmlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBTZXJ2aWNlV29ya2VyLCAiJXAgLSBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKQEAgLTQ5LDEzICs1MCwxNSBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVy
JiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKK1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVy
JiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgYm9vbCBzaG91bGRT
b2Z0VXBkYXRlKQogICAgIDogbV9sb2FkZXIobG9hZGVyKQogICAgICwgbV9mZXRjaElkZW50aWZp
ZXIoV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKQogICAgICwgbV9zZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllcihzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKICAgICAsIG1f
c2VydmljZVdvcmtlcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAgICAgLCBt
X2N1cnJlbnRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigq
dGhpcywgJlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnRpbWVvdXRUaW1lckZpcmVkKQorICAgICwg
bV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcihzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllcikKKyAgICAsIG1fc2hvdWxkU29mdFVwZGF0ZShzaG91bGRTb2Z0VXBk
YXRlKQogewogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChsb2FkZXIuY29ubmVjdGlv
blRvV2ViUHJvY2VzcygpLm5ldHdvcmtQcm9jZXNzKCkuc2VydmljZVdvcmtlckZldGNoVGltZW91
dCgpKTsKIH0KQEAgLTEwNiw3ICsxMDksOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OnN0YXJ0RmV0Y2goKQogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVk
aXJlY3RSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiB7CiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2U6ICVzIiwgbV9mZXRj
aElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fd2FzSGFu
ZGxlZCA9IHRydWU7CisgICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworICAgIHNvZnRVcGRhdGVJ
Zk5lZWRlZCgpOwogCiAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNv
dXJjZTo6U2VydmljZVdvcmtlcik7CiAgICAgYXV0byBuZXdSZXF1ZXN0ID0gbV9jdXJyZW50UmVx
dWVzdC5yZWRpcmVjdGVkUmVxdWVzdChyZXNwb25zZSwgbV9sb2FkZXIucGFyYW1ldGVycygpLnNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOwpAQCAtMTE4LDcgKzEyMiw3
IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAlcyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7Ci0gICAgbV93
YXNIYW5kbGVkID0gdHJ1ZTsKKyAgICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAogICAgIHJlc3Bv
bnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOwog
ICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OkRpZFJlY2VpdmVS
ZXNwb25zZSB7IHJlc3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2Fn
ZSB9KTsKQEAgLTE0Niw3ICsxNTAsMTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpk
aWRGaW5pc2goKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOworICAg
IGlmIChtX3RpbWVvdXRUaW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgIG1fdGltZW91dFRpbWVy
LnN0b3AoKTsKKyAgICAgICAgc29mdFVwZGF0ZUlmTmVlZGVkKCk7CisgICAgfQogICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAl
cyIsIG1fZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAg
ICBtX2xvYWRlci5kaWRGYWlsTG9hZGluZyhlcnJvcik7CiB9CkBAIC0xNTUsNiArMTYyLDggQEAg
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWROb3RIYW5kbGUoKQogewogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZE5vdEhhbmRsZUZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVz
IiwgbV9mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAg
IG1fdGltZW91dFRpbWVyLnN0b3AoKTsKKyAgICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKKwogICAg
IG1fbG9hZGVyLnNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoKTsKIH0KIApAQCAtMTcxLDYgKzE4
MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y29udGludWVEaWRSZWNlaXZlRmV0
Y2hSZXNwb25zZSgpCiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y29udGludWVGZXRj
aFRhc2tXaXRoKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CisgICAgbV90aW1lb3V0VGlt
ZXIuc3RhcnRPbmVTaG90KG1fbG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5uZXR3b3Jr
UHJvY2VzcygpLnNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoKSk7CiAgICAgaWYgKCFtX3NlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uKSB7CiAgICAgICAgIG1fbG9hZGVyLnNlcnZpY2VXb3JrZXJEaWRO
b3RIYW5kbGUoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTgxLDExICsxOTEsMjEgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZUZldGNoVGFza1dpdGgoUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCkKIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp0aW1lb3V0VGlt
ZXJGaXJlZCgpCiB7CisgICAgc29mdFVwZGF0ZUlmTmVlZGVkKCk7CisKICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJ0aW1lb3V0VGltZXJGaXJlZDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1f
ZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAo
bV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbikKICAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVj
dGlvbi0+ZmV0Y2hUYXNrVGltZWRPdXQoc2VydmljZVdvcmtlcklkZW50aWZpZXIoKSk7CiB9CiAK
K3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6c29mdFVwZGF0ZUlmTmVlZGVkKCkKK3sKKyAg
ICBpZiAoIW1fc2hvdWxkU29mdFVwZGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRv
KiByZWdpc3RyYXRpb24gPSBtX2xvYWRlci5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkuc3dDb25u
ZWN0aW9uKCkuc2VydmVyKCkuZ2V0UmVnaXN0cmF0aW9uKG1fc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIpKQorICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxlU29mdFVwZGF0
ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCmluZGV4IGQ3
MTZiYmUwMmU2OWNmYWQxYzRkMzQ2MGUzZWQ0ZGFlZWVjOWM0MDIuLjVkYjkzYzFiMGI2ZGYyYjFm
OTAyMWRkZjkxYTczZjE2MjcwNmMxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRj
aFRhc2suaApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb247CiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIDogcHVibGljIENhbk1ha2VXZWFr
UHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxv
YWRlciYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOworICAgIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2soTmV0d29ya1Jlc291cmNlTG9hZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgYm9vbCBzaG91bGRTb2Z0VXBkYXRlKTsKICAgICB+U2VydmljZVdvcmtlckZl
dGNoVGFzaygpOwogCiAgICAgdm9pZCBzdGFydChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mKTsKQEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0RmV0Y2goKTsK
IAogICAgIHZvaWQgdGltZW91dFRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIHNvZnRVcGRhdGVJZk5l
ZWRlZCgpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9vbCBzZW5kVG9TZXJ2
aWNlV29ya2VyKE1lc3NhZ2UmJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9v
bCBzZW5kVG9DbGllbnQoTWVzc2FnZSYmKTsKQEAgLTEwMCw2ICsxMDEsOCBAQCBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIFdlYkNv
cmU6OlRpbWVyIG1fdGltZW91dFRpbWVyOwogICAgIGJvb2wgbV93YXNIYW5kbGVkIHsgZmFsc2Ug
fTsKKyAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBtX3Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOworICAgIGJvb2wgbV9zaG91bGRTb2Z0
VXBkYXRlIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3NGRhMjdkZDMwMzdiNjM4MzIy
OGNjOGY4MDYyZjcyODVmN2FjNDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIu
Y3BwCkBAIC0wLDAgKzEsMTk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgiCisKKyNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29y
a0NhY2hlLmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vz
c2lvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoUmVzdWx0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySm9iLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
Cit2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpzdGFydChOZXR3b3JrU2Vzc2lv
biogc2Vzc2lvbiwgU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhLCBib29sIHNob3VsZFJl
ZnJlc2hDYWNoZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKHNlcnZpY2VXb3JrZXJGZXRjaEVycm9yKGpvYkRhdGEuaWRlbnRpZmllcigpLCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHsgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSB9
LCBSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pKTsK
KyAgICBhdXRvIGxvYWRlciA9IHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlcj4obmV3IFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyKCpzZXNzaW9uLCBXVEZN
b3ZlKGpvYkRhdGEpLCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CisgICAgc2Vzc2lvbi0+YWRkU29mdFVwZGF0ZUxvYWRl
cihXVEZNb3ZlKGxvYWRlcikpOworfQorCitTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIFNl
cnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKKyAg
ICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAg
LCBtX2pvYkRhdGEoV1RGTW92ZShqb2JEYXRhKSkKKyAgICAsIG1fc2Vzc2lvbihtYWtlV2Vha1B0
cihzZXNzaW9uKSkKK3sKKyAgICBBU1NFUlQoIXJlcXVlc3QuaXNDb25kaXRpb25hbCgpKTsKKwor
ICAgIGlmIChzZXNzaW9uLmNhY2hlKCkpIHsKKyAgICAgICAgLy8gV2Ugc2V0IGNhY2hlIHBvbGlj
eSB0byBkaXNhYmxlIHNwZWN1bGF0aXZlIGxvYWRpbmcvYXN5bmMgcmV2YWxpZGF0aW9uIGZyb20g
dGhlIGNhY2hlLgorICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlc291cmNlUmVxdWVz
dENhY2hlUG9saWN5OjpSZXR1cm5DYWNoZURhdGFEb250TG9hZCk7CisgICAgICAgIAorICAgICAg
ICBzZXNzaW9uLmNhY2hlKCktPnJldHJpZXZlKHJlcXVlc3QsIE5ldHdvcmtDYWNoZTo6R2xvYmFs
RnJhbWVJRCB7IH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVz
dCwgc2hvdWxkUmVmcmVzaENhY2hlXShhdXRvJiYgZW50cnksIGF1dG8mJikgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGlmICghbV9zZXNzaW9uKSB7CisgICAgICAgICAgICAgICAgZmFpbChSZXNvdXJjZUVy
cm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghc2hvdWxkUmVmcmVz
aENhY2hlICYmIGVudHJ5ICYmICFlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpIHsKKyAgICAgICAg
ICAgICAgICBsb2FkV2l0aENhY2hlRW50cnkoKmVudHJ5KTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3ko
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlDYWNoZURhdGEpOworICAgICAg
ICAgICAgaWYgKGVudHJ5KSB7CisgICAgICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gV1RGTW92
ZShlbnRyeSk7CisKKyAgICAgICAgICAgICAgICBTdHJpbmcgZVRhZyA9IG1fY2FjaGVFbnRyeS0+
cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkVUYWcpOworICAgICAg
ICAgICAgICAgIGlmICghZVRhZy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk5vbmVNYXRjaCwgZVRhZyk7
CisKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGFzdE1vZGlmaWVkID0gbV9jYWNoZUVudHJ5LT5y
ZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6TGFzdE1vZGlmaWVkKTsK
KyAgICAgICAgICAgICAgICBpZiAoIWxhc3RNb2RpZmllZC5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk1v
ZGlmaWVkU2luY2UsIGxhc3RNb2RpZmllZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBs
b2FkRnJvbU5ldHdvcmsoKm1fc2Vzc2lvbiwgV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgIH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGxvYWRGcm9tTmV0d29yayhzZXNzaW9uLCBX
VEZNb3ZlKHJlcXVlc3QpKTsKK30KKworU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6On5T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcigpCit7CisgICAgaWYgKG1fY29tcGxldGlvbkhh
bmRsZXIpCisgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoc2VydmljZVdvcmtlckZldGNoRXJy
b3IobV9qb2JEYXRhLmlkZW50aWZpZXIoKSwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSB7
IG1fam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSB9LCBSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VF
cnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlcjo6ZmFpbChSZXNvdXJjZUVycm9yJiYgZXJyb3IpCit7CisgICAgaWYgKCFt
X2NvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbXBsZXRpb25I
YW5kbGVyKHNlcnZpY2VXb3JrZXJGZXRjaEVycm9yKG1fam9iRGF0YS5pZGVudGlmaWVyKCksIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgeyBtX2pvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkg
fSwgV1RGTW92ZShlcnJvcikpKTsKKyAgICBkaWRDb21wbGV0ZSgpOworfQorCit2b2lkIFNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpsb2FkV2l0aENhY2hlRW50cnkoTmV0d29ya0NhY2hl
OjpFbnRyeSYgZW50cnkpCit7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UgeyBlbnRyeS5yZXNwb25zZSgpIH0sIFtdKGF1dG8pIHsgfSk7CisgICAgaWYgKG1fY29tcGxl
dGlvbkhhbmRsZXIgJiYgZW50cnkuYnVmZmVyKCkpCisgICAgICAgIGRpZFJlY2VpdmVCdWZmZXIo
bWFrZVJlZigqZW50cnkuYnVmZmVyKCkpLCAwKTsKKyAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxl
cikKKyAgICAgICAgZGlkRmluaXNoTG9hZGluZyh7IH0pOworICAgIGRpZENvbXBsZXRlKCk7Cit9
CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmxvYWRGcm9tTmV0d29yayhO
ZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKK3sKKyAg
ICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBwYXJhbWV0ZXJzLnN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5ID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZTsKKyAgICBw
YXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRTbmlmZmluZ1BvbGljeTo6
RG9Ob3RTbmlmZkNvbnRlbnQ7CisgICAgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmlu
Z1BvbGljeSA9IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsKKyAgICBwYXJh
bWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOworICAgIG1fbmV0d29ya0xvYWQgPSBt
YWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJz
KSwgc2Vzc2lvbik7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6Ondp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVxdWVz
dCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYpCit7CisgICAgZmFpbChSZXNvdXJjZUVycm9yIHsgUmVz
b3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pOworfQorCisvLyBodHRwczovL3czYy5n
aXRodWIuaW8vU2VydmljZVdvcmtlci8jdXBkYXRlLWFsZ29yaXRobSwgc3RlcHMgOS43IHRvIDku
MTcKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSA9PSAzMDQgJiYgbV9jYWNoZUVudHJ5KSB7CisgICAgICAgIGxvYWRXaXRoQ2FjaGVFbnRyeSgq
bV9jYWNoZUVudHJ5KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJ
Z25vcmUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBlcnJvciA9IFdvcmtl
clNjcmlwdExvYWRlcjo6dmFsaWRhdGVXb3JrZXJSZXNwb25zZShyZXNwb25zZSwgRmV0Y2hPcHRp
b25zOjpEZXN0aW5hdGlvbjo6U2VydmljZXdvcmtlcik7CisgICAgaWYgKCFlcnJvci5pc051bGwo
KSkgeworICAgICAgICBmYWlsKFdURk1vdmUoZXJyb3IpKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGVycm9yID0gU2VydmljZVdvcmtlckpvYjo6dmFsaWRhdGVTZXJ2aWNlV29ya2VyUmVzcG9uc2Uo
bV9qb2JEYXRhLCByZXNwb25zZSk7CisgICAgaWYgKCFlcnJvci5pc051bGwoKSkgeworICAgICAg
ICBmYWlsKFdURk1vdmUoZXJyb3IpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5
QWN0aW9uOjpJZ25vcmUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb250ZW50
U2VjdXJpdHlQb2xpY3kgPSBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgeyBy
ZXNwb25zZSB9OworICAgIG1fcmVmZXJyZXJQb2xpY3kgPSByZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OlJlZmVycmVyUG9saWN5KTsKKyAgICBtX3Jlc3BvbnNlRW5jb2Rp
bmcgPSByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihQb2xpY3lBY3Rpb246OlVzZSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIGlmICghbV9kZWNvZGVyKSB7CisgICAg
ICAgIGlmICghbV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fZGVj
b2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0Il9zLCBt
X3Jlc3BvbnNlRW5jb2RpbmcpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2RlY29kZXIg
PSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvamF2YXNjcmlwdCJfcywgIlVURi04
Iik7CisgICAgfQorCisgICAgaWYgKGF1dG8gc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpKQorICAgICAg
ICBtX3NjcmlwdC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoYnVmZmVyLT5kYXRhKCksIHNpemUp
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQoreworICAgIGlmIChtX2Rl
Y29kZXIpCisgICAgICAgIG1fc2NyaXB0LmFwcGVuZChtX2RlY29kZXItPmZsdXNoKCkpOworICAg
IG1fY29tcGxldGlvbkhhbmRsZXIoeyBtX2pvYkRhdGEuaWRlbnRpZmllcigpLCBtX2pvYkRhdGEu
cmVnaXN0cmF0aW9uS2V5KCksIG1fc2NyaXB0LnRvU3RyaW5nKCksIG1fY29udGVudFNlY3VyaXR5
UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCB7IH0gfSk7CisgICAgZGlkQ29tcGxldGUoKTsKK30K
Kwordm9pZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgZmFpbChSZXNvdXJjZUVycm9yKGVycm9y
KSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZENvbXBsZXRl
KCkKK3sKKyAgICBtX25ldHdvcmtMb2FkID0gbnVsbHB0cjsKKyAgICBpZiAobV9zZXNzaW9uKQor
ICAgICAgICBtX3Nlc3Npb24tPnJlbW92ZVNvZnRVcGRhdGVMb2FkZXIodGhpcyk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MjJiMTI1MGFhN2U1YmEzYjFjOTIyYzViNzE0NDYyN2Q5MWNhOWU3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAi
TmV0d29ya0NhY2hlRW50cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZENsaWVudC5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9GZXRjaE9wdGlvbnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJKb2JEYXRhLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+Cisj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IFNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKK3N0cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YTsKK2Ns
YXNzIFRleHRSZXNvdXJjZURlY29kZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBOZXR3b3JrTG9hZDsKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworCitjbGFzcyBTZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlciBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrTG9hZENsaWVudCwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyPiB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdXNpbmcgSGFuZGxlciA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckZldGNoUmVz
dWx0Jik+OworICAgIHN0YXRpYyB2b2lkIHN0YXJ0KE5ldHdvcmtTZXNzaW9uKiwgV2ViQ29yZTo6
U2VydmljZVdvcmtlckpvYkRhdGEmJiwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBIYW5kbGVyJiYpOworCisgICAgflNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyKCk7CisgICAgCitwcml2YXRlOgorICAgIFNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyKE5ldHdvcmtTZXNzaW9uJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGEm
JiwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBI
YW5kbGVyJiYpOworCisgICAgLy8gTmV0d29ya0xvYWRDbGllbnQuCisgICAgdm9pZCBkaWRTZW5k
RGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90
YWxCeXRlc1RvQmVTZW50KSBmaW5hbCB7IH0KKyAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9y
Q3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgd2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5k
bGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYp
IGZpbmFsOworICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpIGZpbmFsOworCisgICAgdm9pZCBsb2FkV2l0aENhY2hlRW50cnkoTmV0d29ya0NhY2hl
OjpFbnRyeSYpOworICAgIHZvaWQgbG9hZEZyb21OZXR3b3JrKE5ldHdvcmtTZXNzaW9uJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIHZvaWQgZmFpbChXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiYpOworICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKKworICAgIEhhbmRsZXIgbV9jb21w
bGV0aW9uSGFuZGxlcjsKKyAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSBtX2pvYkRh
dGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiBtX25ldHdvcmtMb2FkOworICAg
IFdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IG1fc2Vzc2lvbjsKKworICAgIFN0cmluZyBtX3Jlc3Bv
bnNlRW5jb2Rpbmc7CisgICAgU3RyaW5nIG1fcmVmZXJyZXJQb2xpY3k7CisgICAgV2ViQ29yZTo6
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIG1fY29udGVudFNlY3VyaXR5UG9s
aWN5OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVF
bnRyeTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVy
OworICAgIFN0cmluZ0J1aWxkZXIgbV9zY3JpcHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA1NjA2NTcwNTlmOTU4NzQzYmI4Y2YyY2U3MDBm
ODUwMDAzYzExOGVkLi45YzI0YzI4MDZhYzAwMzk0Mzk5OTlhNGVmNTFkNDZkOGQ0ODJjMGZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTc3LDE0ICsxNzcs
MTUgQEAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKE4KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCisgICAgYXV0byogcmVnaXN0cmF0aW9uID0gc2VydmVyKCkuZ2V0UmVnaXN0cmF0aW9u
KCpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CisgICAgYm9vbCBzaG91bGRT
b2Z0VXBkYXRlID0gcmVnaXN0cmF0aW9uICYmIHJlZ2lzdHJhdGlvbi0+c2hvdWxkU29mdFVwZGF0
ZShsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMpOwogICAgIGlmICh3b3JrZXItPnNob3VsZFNr
aXBGZXRjaEV2ZW50KCkpIHsKLSAgICAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gc2VydmVyKCku
Z2V0UmVnaXN0cmF0aW9uKHdvcmtlci0+cmVnaXN0cmF0aW9uS2V5KCkpOwotICAgICAgICBpZiAo
cmVnaXN0cmF0aW9uICYmIHJlZ2lzdHJhdGlvbi0+c2hvdWxkU29mdFVwZGF0ZShsb2FkZXIucGFy
YW1ldGVycygpLm9wdGlvbnMpKQotICAgICAgICAgICAgcmVnaXN0cmF0aW9uLT5zb2Z0VXBkYXRl
KCk7CisgICAgICAgIGlmIChzaG91bGRTb2Z0VXBkYXRlKQorICAgICAgICAgICAgcmVnaXN0cmF0
aW9uLT5zY2hlZHVsZVNvZnRVcGRhdGUoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPihs
b2FkZXIsIFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfSwgaWRlbnRpZmllcigpLCB3b3JrZXIt
PmlkZW50aWZpZXIoKSwgKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKKyAg
ICBhdXRvIHRhc2sgPSBtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+KGxvYWRlciwg
UmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9LCBpZGVudGlmaWVyKCksIHdvcmtlci0+aWRlbnRp
ZmllcigpLCAqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHNob3VsZFNvZnRV
cGRhdGUpOwogICAgIHN0YXJ0RmV0Y2goKnRhc2ssICp3b3JrZXIpOwogICAgIHJldHVybiB0YXNr
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAppbmRleCBiODM1YzU2NWFiZDJjM2ZkODU2YWY4ZTQ2MDI0YTg3YTEzMzg2NDcwLi40ZjJi
ZjFiNDhhNjIzZWY1NWVjYjJiZTc2YzY4Mjk4Nzk1M2I2ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTAwLDExICsxMDAs
NiBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZmlyZUFjdGl2YXRlRXZl
bnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgcwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpGaXJlQWN0aXZhdGVFdmVudChzZXJ2aWNlV29ya2VySWRl
bnRpZmllcikpOwogfQogCi12b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c29m
dFVwZGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikK
LXsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U29m
dFVwZGF0ZShzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOwotfQotCiB2b2lkIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogewogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVXb3JrZXIoc2VydmljZVdvcmtlcklk
ZW50aWZpZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaAppbmRleCBlZjRmNDEzZDNiYTBiNGZjZjgwY2IxNDI4YjhmOGExYmFlZGQ0ZjFlLi4w
NGM4ZDYzMGEzMmUxMzljNTFkYTcxODdlNDU1ZjM4NTFmYTFjZjdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC04OCw3ICs4OCw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQp
IGZpbmFsOwogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBzb2Z0VXBkYXRlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZVdv
cmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBz
eW5jVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5h
bDsKICAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmNwcAppbmRleCBmMjRlNjcxNzVmOWZiODE5M2NlZmNmYzYyNmU5ZTM3MWNlOGRkYTEwLi41
NmE2ZDY1NTM4ODliOWI1YmRiZWYxOTE1ODgxNTRlZTIwNGE4ZGZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
TWFuYWdlci5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24uaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXJN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94
eU1lc3NhZ2VzLmgiCkBAIC0xMTAsNyArMTExLDggQEAgVmVjdG9yPHVpbnQ2NF90PiBBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OmNvYWxlc2NlQ2hhbGxlbmdlc01hdGNoaW5nKHVpbnQ2NF90IGNoYWwK
IAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIg
cGFnZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEqIHRvcE9yaWdpbiwgY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVChwYWdlSUQp
OworICAgIGlmICghcGFnZUlEKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZywg
eyB9KTsKIAogICAgIHVpbnQ2NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVu
Z2VNYXAoeyBwYWdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggM2YyZDNkMDU2OTY2ZWVjZDdkZDNiZThh
N2YxODEyZjc3NWM3ZmFmZC4uNzNmZjRkMjdiZWUzZDgyYTExNDY3MTc0OTJiY2I2NjQ1MjM1YjY0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CkBAIC02NSw2ICs2NSw3IEBAIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9QZW5kaW5nRG93bmxvYWQuY3BwCiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29u
bmVjdGlvblRvQ2xpZW50LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwIEBuby11bmlmeQorTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKIE5ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dPcmlnaW5TdG9yZS5jcHAgQG5vLXVuaWZ5CiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgQG5vLXVuaWZ5CiBOZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAgQG5vLXVuaWZ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBjYjgwMTgyMTc0OWIzNDA4YTRlYzc2MzY1NmQ5MGI4OTlhZTg0ZmEyLi5i
NTI0NTVhMjRlZjU2NTgwNjNlYjZiNmU2MmM3NWU0NmU4MTE1Yzk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMyNDEsNiArMzI0MSw4
IEBACiAJCTQxQzUzNzhGMjFGMTM2MkQwMDhCMUZBRCAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlRGVs
ZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZURhdGFT
dG9yZURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQzg1ODE5MUY1
MTBERUUwMDY1RTA4NSAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRDEyOUQ5MUYzRDEwMTQwMEQxNUU0NyAvKiBX
ZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDYWNoZVN0b3JhZ2VQ
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUQ1QzZEODIzOEVCMjBE
MDBCOUIzQ0IgLyogU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFENUM2RDkyMzhFQjIwRTAwQjlCM0NCIC8qIFNl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEQzQ1OTQxRTNENkUxRTAwQjExRjUxIC8qIE5ldHdvcmtS
VENQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrUlRD
UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFEQzQ1OTUxRTNENkUx
RTAwQjExRjUxIC8qIE5ldHdvcmtSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MURDNDU5ODFFM0Q2RUQ2MDBCMTFGNTEgLyogTmV0d29ya1JUQ1Byb3Zp
ZGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5ldHdvcmtSVENQcm92aWRl
ci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MzksNiArNzY0
MSw4IEBACiAJCQkJNDE1MTg1MzYyMjI3MDRGNjAwNTQzMEM2IC8qIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2suY3BwICovLAogCQkJCTQxNTE4NTM1MjIyNzA0RjUwMDU0MzBDNiAvKiBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmggKi8sCiAJCQkJNDE1MTg1MzgyMjI3MEY1MzAwNTQzMEM2IC8qIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2subWVzc2FnZXMuaW4gKi8sCisJCQkJNDFENUM2RDkyMzhFQjIwRTAw
QjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCAqLywKKwkJCQk0MUQ1
QzZEODIzOEVCMjBEMDBCOUIzQ0IgLyogU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCAq
LywKIAkJCQk5M0JBMDRERjIxNTFBREY0MDA3RjQ1NUYgLyogV2ViU1dPcmlnaW5TdG9yZS5jcHAg
Ki8sCiAJCQkJOTNCQTA0REUyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXT3JpZ2luU3RvcmUuaCAq
LywKIAkJCQk5M0JBMDRFMTIxNTFBREY0MDA3RjQ1NUYgLyogV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCBlY2Y3YTNi
ZjFiZmE4OTMzNTExZjAzZjcxMzcwZTg1YmM3MjUxNjhkLi4yZGQ3NWNjMGU4MDljYmUyMjViYTE5
MDBkNjg4NjRiOTZiYTkwNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
CkBAIC0yNTYsMTEgKzI1Niw2IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OmZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkCiAgICAgU1dDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuZmlyZUFjdGl2YXRlRXZlbnQoaWRlbnRpZmllcik7CiB9
CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnNvZnRVcGRhdGUoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKLXsKLSAgICBTV0NvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5zb2Z0VXBkYXRlKGlkZW50aWZpZXIpOwotfQotCiB2b2lkIFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS50ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllciwgU1dDb250ZXh0TWFuYWdlcjo6d29ya2Vy
VGVybWluYXRpb25UaW1lb3V0LCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oCmluZGV4IDI5NzM1MWYyYjg2YjgyZDg0M2EwZWVhYzExNDAxMDZjNmUyMjZiNDkuLjY5OTAz
MzJlYTdlZDhjOTc0YjkzOWM1NGNmOGUxNzc5MzI3MDJiODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaApAQCAtOTAsNyArOTAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVz
dGluYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSk7CiAgICAgdm9p
ZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAg
ICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKLSAgICB2b2lkIHNvZnRVcGRhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKICAgICB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6U3lu
Y1Rlcm1pbmF0ZVdvcmtlckRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGZpbmRDbGllbnRCeUlk
ZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIE9wdGlvbmFsPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmLCBib29sIGhhc1NlY3VyaXR5RXJyb3Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRl
eCAxYmUyOWFhYWQ5Nzg3MTRlNGI0MjE3NWIyYTk3YzQ4NjY3MGVmYzA2Li4xZDMzOWNjYjE1MWE2
MTRmOWUwMmM2OWI0MGNmNGI5MWZhMjZjMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzAsNyArMzAsNiBAQCBtZXNzYWdlcyAtPiBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICAgICBQb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0
aW5hdGlvbklkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhIHNvdXJjZURhdGEp
CiAgICAgRmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIEZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCi0gICAgU29mdFVwZGF0ZShXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIFRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIFN5bmNUZXJtaW5hdGVXb3Jr
ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKCkgU3lu
Y2hyb25vdXMKICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IGNs
aWVudElkUmVxdWVzdElkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
bGllbnREYXRhPiBkYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvd29ya2VyLWltcG9ydFNjcmlwdHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRz
LWV4cGVjdGVkLnR4dAppbmRleCAzMTcxZGI4MTFlZjZlZWVlMTA1Mzc1N2YxMGE4NGZhZmYxMWQ1
YWI3Li5hMTJiZmQyNjc3MDJiOGFkNzQ1ZGFmMWQ5MDFhNDQ1YmJkODM2NmY5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvd29ya2VyLWltcG9ydFNjcmlwdHMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy93b3JrZXItaW1w
b3J0U2NyaXB0cy1leHBlY3RlZC50eHQKQEAgLTI0LDcgKzI0LDcgQEAgTG9hZGVkIG1lc3NhZ2Ug
ZnJvbSBkaWZmZXJlbnQgb3JpZ2luCiBMb2FkZWQgcmVzb3VyY2UgMgogUEFTUzogYWxsIHJlc291
cmNlcyBleGVjdXRlZC4KIExvYWRlZCByZXNvdXJjZSAxCi1QQVNTOiBUaHJldyBOZXR3b3JrRXJy
b3I6IEZhaWxlZCB0byBsb2FkIHNjcmlwdCB3aGVuIGxvYWQgZmFpbGVkCitQQVNTOiBUaHJldyBO
ZXR3b3JrRXJyb3I6IFJlc3BvbnNlIGlzIG5vdCAyeHggd2hlbiBsb2FkIGZhaWxlZAogUEFTUzog
c29tZSByZXNvdXJjZXMgd2VyZSBsb2FkZWQgZGVzcGl0ZSB0aGUgbmV0d29yayBlcnJvcgogTG9h
ZGVkIHJlc291cmNlIDEKIFBBU1M6IFRocmV3IFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGlkZW50
aWZpZXIgJ3N5bnRheCcgd2hlbiBlbmNvdW50ZXJpbmcgYSBzeW50YXggZXJyb3IgaW4gaW1wb3J0
ZWQgc2NyaXB0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>