<?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>193747</bug_id>
          
          <creation_ts>2019-01-23 16:28:26 -0800</creation_ts>
          <short_desc>Refactor ServiceWorkerJob management by ServiceWorkerContainer to make it more memory safe</short_desc>
          <delta_ts>2019-01-30 13:00:37 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1497643</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-23 16:28:26 -0800</bug_when>
    <thetext>This should fix some memory ref cycles and would also ensure that network process does not wait until the end of day for the job to be finished.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497644</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-23 16:28:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/47498196&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497648</commentid>
    <comment_count>2</comment_count>
      <attachid>359971</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-23 16:31:06 -0800</bug_when>
    <thetext>Created attachment 359971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497829</commentid>
    <comment_count>3</comment_count>
      <attachid>359971</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-24 09:08:55 -0800</bug_when>
    <thetext>Comment on attachment 359971
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        Covered by existing tests.

Why were there no changes to existing tests then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497848</commentid>
    <comment_count>4</comment_count>
      <attachid>359971</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2019-01-24 09:31:35 -0800</bug_when>
    <thetext>Comment on attachment 359971
Patch

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

r=me

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +        Covered by existing tests.
&gt; 
&gt; Why were there no changes to existing tests then?

To reproduce the leak, you must run WK2 tests with --leaks flag and have it check the com.apple.WebKit.WebContent.Development process for leaks.  (In other words, this would be caught by a leaks bot if we had a WK2 leaks bot.)

There is an uncommitted patch to do that, but I haven&apos;t had time to clean it up for review.  See Bug 193772.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498339</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-25 11:14:23 -0800</bug_when>
    <thetext>(In reply to youenn fablet from comment #0)
&gt; This should fix some memory ref cycles and would also ensure that network
&gt; process does not wait until the end of day for the job to be finished.

Hum, patch does not fix a pre-existing setPendingActivity/unsetPendingActivity issue...
Let&apos;s do a more complete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498390</commentid>
    <comment_count>6</comment_count>
      <attachid>360146</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-25 12:38:34 -0800</bug_when>
    <thetext>Created attachment 360146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498537</commentid>
    <comment_count>7</comment_count>
      <attachid>360180</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-25 15:57:03 -0800</bug_when>
    <thetext>Created attachment 360180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499100</commentid>
    <comment_count>8</comment_count>
      <attachid>360360</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-28 11:19:45 -0800</bug_when>
    <thetext>Created attachment 360360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500086</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-30 11:00:20 -0800</bug_when>
    <thetext>Ping review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500101</commentid>
    <comment_count>10</comment_count>
      <attachid>360360</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-01-30 11:46:16 -0800</bug_when>
    <thetext>Comment on attachment 360360
Patch

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

r=me with comments

&gt; Source/WebCore/ChangeLog:14
&gt; +        Before the patch, the jobs map was never cleared, which is creating a ref cycle whenever a job is not succesfull.

typo: succesfull

&gt; Source/WebCore/ChangeLog:16
&gt; +        Before the patch, unsetPendingActivity was only called for successful jobs finishing.

&quot;successful&quot;, there it is.

&gt; Source/WebCore/workers/service/ServiceWorkerContainer.h:125
&gt; +        RefPtr&lt;PendingActivity&lt;ServiceWorkerContainer&gt;&gt; pendingActivity;

Can this be a Ref&lt;&gt; ?

&gt; Source/WebCore/workers/service/ServiceWorkerJob.h:50
&gt; +class ServiceWorkerJob : public WorkerScriptLoaderClient {

WTF_MAKE_FAST_ALLOCATED; since you&apos;re dropping RefCounted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500104</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-30 11:57:27 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/workers/service/ServiceWorkerContainer.h:125
&gt; &gt; +        RefPtr&lt;PendingActivity&lt;ServiceWorkerContainer&gt;&gt; pendingActivity;
&gt; 
&gt; Can this be a Ref&lt;&gt; ?

This would need to add type traits for empty value.
This seemed like overkill to me since we are never accessing the pendingActivity.
I guess we could make it private or make OngoingJob a class if we want to.

&gt; &gt; Source/WebCore/workers/service/ServiceWorkerJob.h:50
&gt; &gt; +class ServiceWorkerJob : public WorkerScriptLoaderClient {
&gt; 
&gt; WTF_MAKE_FAST_ALLOCATED; since you&apos;re dropping RefCounted.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500105</commentid>
    <comment_count>12</comment_count>
      <attachid>360602</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-30 12:01:12 -0800</bug_when>
    <thetext>Created attachment 360602
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500128</commentid>
    <comment_count>13</comment_count>
      <attachid>360602</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-30 13:00:36 -0800</bug_when>
    <thetext>Comment on attachment 360602
Patch for landing

Clearing flags on attachment: 360602

Committed r240727: &lt;https://trac.webkit.org/changeset/240727&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500129</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-30 13:00:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359971</attachid>
            <date>2019-01-23 16:31:06 -0800</date>
            <delta_ts>2019-01-25 12:38:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193747-20190123163105.patch</filename>
            <type>text/plain</type>
            <size>1616</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGUzODJiZDBjZjA3ZGQy
NTA0MWFkN2YwMGFlMTQwNWJlODJkNGU3MS4uNDdjNGJkNmRhMTZkNWIzY2YwNWI1ZjM2MDYxZmJm
YzM4YjljZjFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE5LTAxLTIzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlV29ya2VySm9i
IHNob3VsZCBub3RpZnkgaXRzIGNsaWVudCBpbiBjYXNlIGl0cyBqb2IgaXMgY2FuY2VsbGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM3NDcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGNhbmNl
bGxpbmcgYSBzY3JpcHQgbG9hZCwgdGhlIGxvYWQgY2xpZW50IGlzIG5vdCBub3RpZmllZC4KKyAg
ICAgICAgTm90aWZ5IGV4cGxpY2l0bHkgdGhlIGpvYiBjbGllbnQgdG8gZG8gdGhlIG5lY2Vzc2Fy
eSBjbGVhbnVwLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iOjpjYW5jZWxQZW5kaW5nTG9hZCk6CisKIDIwMTktMDEtMTgg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIGdldFVzZXJNZWRp
YSB3aXRoIGEgZGV2aWNlSWQgZXhhY3QgY29uc3RyYWludCB3aXRoIGFuIGVtcHR5IHN0cmluZyB2
YWx1ZSBzaG91bGQgc3VjY2VlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCmluZGV4IDcxZDFlNTI4MWM3MzU1NmRhNWVmODk3YjBh
NDY4OTZiMTQ1NDRhOTAuLjkwYmIzYThlM2RiZjVmYTA5YmUyZWVjMTAyZmUxY2UwNjEzMzE5NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Sm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckpvYi5jcHAKQEAgLTE2Miw2ICsxNjIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmNhbmNl
bFBlbmRpbmdMb2FkKCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc2NyaXB0TG9hZGVyLT5jYW5j
ZWwoKTsKICAgICBtX3NjcmlwdExvYWRlciA9IG51bGxwdHI7CisgICAgbV9jbGllbnQtPmpvYkZh
aWxlZExvYWRpbmdTY3JpcHQoKnRoaXMsIFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktp
dEludGVybmFsLCAwLCBtX2pvYkRhdGEuc2NyaXB0VVJMLCAiTG9hZCBjYW5jZWxsZWQiLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfSwgV1RGOjpudWxsb3B0KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360146</attachid>
            <date>2019-01-25 12:38:34 -0800</date>
            <delta_ts>2019-01-25 15:57:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193747-20190125123834.patch</filename>
            <type>text/plain</type>
            <size>26467</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJlNTI4ZGNkOTk1N2Nl
Zjc2MGRkZGI4YTRlMDRjMjQ2ODM2ZGZiZC4uNGY1NTE0NDI0NzJmYjMyMmNhOGFlMGYzOTJiNzRh
ZDAwMjIyOGE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE5LTAxLTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlV29ya2VySm9i
IHNob3VsZCBub3RpZnkgaXRzIGNsaWVudCBpbiBjYXNlIGl0cyBqb2IgaXMgY2FuY2VsbGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM3NDcKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3NDk4MTk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2FuY2VsbGluZyBhIHNjcmlwdCBsb2FkLCB0
aGUgbG9hZCBjbGllbnQgaXMgbm90IG5vdGlmaWVkLgorICAgICAgICBOb3RpZnkgZXhwbGljaXRs
eSB0aGUgam9iIGNsaWVudCB0byBkbyB0aGUgbmVjZXNzYXJ5IGNsZWFudXAuCisKKyAgICAgICAg
TWFrZSBzdXJlIHRoYXQgc2V0UGVuZGluZ0FjdGl2aXR5L3Vuc2V0UGVuZGluZ0FjdGl2aXR5IGlz
IGJhbGFuY2VkIGJ5IHN0b3JpbmcKKyAgICAgICAgYSBwZW5kaW5nIGFjdGl2aXR5IGluIHRoZSBq
cGIgbWFwIG5leHQgdG8gdGhlIGpvYi4KKworICAgICAgICBNYWtlIFNlcnZpY2VXb3JrZXJKb2Ig
bm8gbG9uZ2VyIHJlZiBjb3VudGVkLgorICAgICAgICBJbnN0ZWFkIGl0cyBsaWZldGltZSBpcyBm
dWxseSBjb250cm9sbGVkIGJ5IFNlcnZpY2VXb3JrZXJDb250YWluZXIuCisKKyAgICAgICAgU2lt
cGxpZmllZCBTZXJ2aWNlV29ya2VySm9iIHByb21pc2UgcmVqZWN0aW9uIGhhbmRsaW5nIHNvIHRo
YXQgaXQgaXMgY2xlYXIgd2hlbiBwcm9taXNlIGlzIHJlamVjdGVkIGFuZCB3aGVuIGl0IGlzIG5v
dC4KKyAgICAgICAgVXBkYXRlZCB0eXBlIG9mIGV4Y2VwdGlvbiB0byBiZSBTZWN1cml0eUVycm9y
IHdoZW4gbG9hZCBmYWlscyBkdWUgdG8gQWNjZXNzQ29udHJvbC4KKworICAgICAgICBDb3ZlcmVk
IGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6YWRkUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3Ry
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVz
b2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JEaWRGaW5pc2gpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJKb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6ZmFp
bGVkV2l0aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpy
ZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckpvYjo6cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYjo6c3RhcnRTY3JpcHRGZXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckpvYjo6Y2FuY2VsUGVuZGluZ0xvYWQpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySm9iOjpoYXNQcm9taXNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJKb2I6OnRha2VQcm9taXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYkNsaWVudC5oOgorCiAyMDE5LTAxLTIyICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3NhYXZl
ZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQnVpbGQgZml4IGZvciBVYnVudHUgTFRT
IDE2LjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggNzQ0MmRkNDU1MzdmMWY0ZjRhZWFkNjI2NTJl
MzZhNzQ2MDlkOTkwYi4uZWM3ZWJmN2M5NDliNmMwYjYzMmFjMzBlMWQ3ZTBiMjNiMGFlMWYyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVTY3JpcHRV
UkwsIGNvCiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVy
OwogICAgIGpvYkRhdGEucmVnaXN0cmF0aW9uT3B0aW9ucyA9IG9wdGlvbnM7CiAKLSAgICBzY2hl
ZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocHJvbWlzZSks
IFdURk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNl
cnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEp
KSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9u
KGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAg
LTIwMiw3ICsyMDIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lz
dHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBSZWY8RGVmZXJyZQogCiAgICAgQ09OVEFJTkVS
X1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlbW92ZVJlZ2lzdHJhdGlvbjogVW5yZWdpc3Rlcmlu
ZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRpZmllcigp
LmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBzY2hlZHVsZUpvYihTZXJ2aWNlV29y
a2VySm9iOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkp
KTsKKyAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0
aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVV
UkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBXb3JrZXJUeXBlLCBSZWZQdHI8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCkBAIC0yMjgsMTAgKzIyOCwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBV
UkwmCiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVtb3ZlUmVnaXN0
cmF0aW9uOiBVcGRhdGluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQsIGpvYkRh
dGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBzY2hlZHVs
ZUpvYihTZXJ2aWNlV29ya2VySm9iOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdU
Rk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZp
Y2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7
CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2IoUmVmPFNlcnZp
Y2VXb3JrZXJKb2I+JiYgam9iKQordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVs
ZUpvYihzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckpvYj4mJiBqb2IpCiB7CiAjaWZuZGVm
IE5ERUJVRwogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CkBAIC0yMzksMTEgKzIzOSwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnNjaGVkdWxlSm9iKFJlZjxTZXJ2aWNlV29ya2VySm9iPiYmIGpvYikKIAogICAgIEFTU0VS
VChtX3N3Q29ubmVjdGlvbik7CiAKLSAgICBzZXRQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOwotCiAg
ICAgYXV0byYgam9iRGF0YSA9IGpvYi0+ZGF0YSgpOwotICAgIGF1dG8gcmVzdWx0ID0gbV9qb2JN
YXAuYWRkKGpvYi0+aWRlbnRpZmllcigpLCBXVEZNb3ZlKGpvYikpOwotICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgYXV0byBqb2JJZGVudGlmaWVyID0g
am9iLT5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKCFtX2pvYk1hcC5jb250YWlucyhqb2JJZGVu
dGlmaWVyKSk7CisgICAgbV9qb2JNYXAuYWRkKGpvYklkZW50aWZpZXIsIE9uZ29pbmdKb2IgeyBX
VEZNb3ZlKGpvYiksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpIH0pOwogCiAgICAgY2FsbE9u
TWFpblRocmVhZChbY29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9uLCBjb250ZXh0SWRlbnRpZmll
ciA9IHRoaXMtPmNvbnRleHRJZGVudGlmaWVyKCksIGpvYkRhdGEgPSBqb2JEYXRhLmlzb2xhdGVk
Q29weSgpXSB7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNjaGVkdWxlSm9iKGNvbnRleHRJZGVudGlm
aWVyLCBqb2JEYXRhKTsKQEAgLTM4NSw3ICszODQsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OmpvYkZhaWxlZFdpdGhFeGNlcHRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25z
dAogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQo
KSk7CiAjZW5kaWYKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoam9iLnByb21pc2UoKSB8fCBq
b2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSwgIk9ubHkgc29m
dCB1cGRhdGVzIGhhdmUgbm8gcHJvbWlzZSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoam9i
Lmhhc1Byb21pc2UoKSB8fCBqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6
OlVwZGF0ZSwgIk9ubHkgc29mdCB1cGRhdGVzIGhhdmUgbm8gcHJvbWlzZSIpOwogCiAgICAgYXV0
byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0gewogICAgICAgICBqb2JE
aWRGaW5pc2goam9iKTsKQEAgLTM5MywxMiArMzkyLDEzIEBAIHZvaWQgU2VydmljZVdvcmtlckNv
bnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNv
bnN0CiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgiam9iRmFp
bGVkV2l0aEV4Y2VwdGlvbjogSm9iICUiIFBSSXU2NCAiIGZhaWxlZCB3aXRoIGVycm9yICVzIiwg
am9iLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBleGNlcHRpb24ubWVzc2FnZSgpLnV0ZjgoKS5k
YXRhKCkpOwogCi0gICAgaWYgKCFqb2IucHJvbWlzZSgpKQorICAgIGF1dG8gcHJvbWlzZSA9IGpv
Yi50YWtlUHJvbWlzZSgpOworICAgIGlmICghcHJvbWlzZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKLSAgICAg
ICAgY29udGV4dC0+cG9zdFRhc2soW2pvYiA9IG1ha2VSZWYoam9iKSwgZXhjZXB0aW9uXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICAgICAgam9iLT5wcm9taXNlKCktPnJlamVj
dChleGNlcHRpb24pOworICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGV4Y2VwdGlvbl0oYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KGV4Y2VwdGlvbik7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTQxOCw3
ICs0MTgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJl
Z2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAjaWZuZGVmIE5ERUJVRwogICAgIEFT
U0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5k
aWYKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGpvYi5wcm9taXNlKCkgfHwgam9iLmRhdGEoKS50
eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUsICJPbmx5IHNvZnQgdXBkYXRlcyBo
YXZlIG5vIHByb21pc2UiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGpvYi5oYXNQcm9taXNl
KCkgfHwgam9iLmRhdGEoKS50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUsICJP
bmx5IHNvZnQgdXBkYXRlcyBoYXZlIG5vIHByb21pc2UiKTsKIAogICAgIGF1dG8gZ3VhcmQgPSBX
VEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsICZqb2JdIHsKICAgICAgICAgam9iRGlkRmluaXNoKGpv
Yik7CkBAIC00NDYsMTMgKzQ0NiwxNCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6Ompv
YlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWpvYi5wcm9taXNlKCkpIHsKKyAgICBhdXRvIHBy
b21pc2UgPSBqb2IudGFrZVByb21pc2UoKTsKKyAgICBpZiAoIXByb21pc2UpIHsKICAgICAgICAg
aWYgKG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkKQogICAgICAgICAgICAgbm90aWZ5V2hlblJl
c29sdmVkSWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgam9iID0gbWFrZVJlZihqb2IpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgbm90aWZ5
V2hlblJlc29sdmVkSWZOZWVkZWQgPSBXVEZNb3ZlKG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVk
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgam9iSWRlbnRpZmllciA9IGpv
Yi5pZGVudGlmaWVyKCksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBub3RpZnlXaGVuUmVzb2x2ZWRJ
Zk5lZWRlZCA9IFdURk1vdmUobm90aWZ5V2hlblJlc29sdmVkSWZOZWVkZWQpXShhdXRvJiBjb250
ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGlzU3RvcHBlZCgpIHx8ICFjb250ZXh0LnNlc3Np
b25JRCgpLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgaWYgKG5vdGlmeVdoZW5SZXNvbHZlZElm
TmVlZGVkKQogICAgICAgICAgICAgICAgIG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkKCk7CkBA
IC00NjEsMTUgKzQ2MiwxNSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29s
dmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAKICAgICAgICAgYXV0
byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRPckNyZWF0ZShj
b250ZXh0LCAqdGhpcywgV1RGTW92ZShkYXRhKSk7CiAKLSAgICAgICAgQ09OVEFJTkVSX1JFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbjogUmVzb2x2aW5n
IHByb21pc2UgZm9yIGpvYiAlIiBQUkl1NjQgIi4gUmVnaXN0cmF0aW9uIElEOiAlIiBQUkl1NjQs
IGpvYi0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigp
LnRvVUludDY0KCkpOworICAgICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uOiBSZXNvbHZpbmcgcHJvbWlzZSBmb3Igam9iICUi
IFBSSXU2NCAiLiBSZWdpc3RyYXRpb24gSUQ6ICUiIFBSSXU2NCwgam9iSWRlbnRpZmllci50b1VJ
bnQ2NCgpLCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgICAg
ICBpZiAobm90aWZ5V2hlblJlc29sdmVkSWZOZWVkZWQpIHsKLSAgICAgICAgICAgIGpvYi0+cHJv
bWlzZSgpLT53aGVuU2V0dGxlZChbbm90aWZ5V2hlblJlc29sdmVkSWZOZWVkZWQgPSBXVEZNb3Zl
KG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkKV0geworICAgICAgICAgICAgcHJvbWlzZS0+d2hl
blNldHRsZWQoW25vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkID0gV1RGTW92ZShub3RpZnlXaGVu
UmVzb2x2ZWRJZk5lZWRlZCldIHsKICAgICAgICAgICAgICAgICBub3RpZnlXaGVuUmVzb2x2ZWRJ
Zk5lZWRlZCgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAotICAgICAgICBqb2ItPnBy
b21pc2UoKS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4+
KFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50
ZXJmYWNlPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+PihXVEZNb3ZlKHJlZ2lzdHJhdGlvbikp
OwogICAgIH0pOwogfQogCkBAIC00NzksNyArNDgwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2Vy
Sm8KICAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50
KCkpOwogI2VuZGlmCiAKLSAgICBBU1NFUlQoam9iLnByb21pc2UoKSk7CisgICAgQVNTRVJUKGpv
Yi5oYXNQcm9taXNlKCkpOwogCiAgICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChb
dGhpcywgJmpvYl0gewogICAgICAgICBqb2JEaWRGaW5pc2goam9iKTsKQEAgLTQ5Myw4ICs0OTQs
OCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0
cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgY29udGV4dC0+cG9zdFRhc2soW2pvYiA9IG1ha2VSZWYoam9iKSwgdW5yZWdpc3RyYXRpb25S
ZXN1bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKLSAgICAgICAgam9iLT5w
cm9taXNlKCktPnJlc29sdmU8SURMQm9vbGVhbj4odW5yZWdpc3RyYXRpb25SZXN1bHQpOworICAg
IGNvbnRleHQtPnBvc3RUYXNrKFtwcm9taXNlID0gam9iLnRha2VQcm9taXNlKCksIHVucmVnaXN0
cmF0aW9uUmVzdWx0XShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8
SURMQm9vbGVhbj4odW5yZWdpc3RyYXRpb25SZXN1bHQpOwogICAgIH0pOwogfQogCkBAIC01MzIs
MjEgKzUzMywyMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZpbmlzaGVkTG9h
ZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbgogICAgIH0pOwogfQogCi12b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYgam9iLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgT3B0aW9uYWw8RXhjZXB0
aW9uPiYmIGV4Y2VwdGlvbikKK3ZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVk
TG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yLCBFeGNlcHRpb24mJiBleGNlcHRpb24pCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIEFT
U0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5k
aWYKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGpvYi5wcm9taXNlKCkgfHwgam9iLmRhdGEoKS50
eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUsICJPbmx5IHNvZnQgdXBkYXRlcyBo
YXZlIG5vIHByb21pc2UiKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGpvYi5oYXNQcm9taXNl
KCkgfHwgam9iLmRhdGEoKS50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUsICJP
bmx5IHNvZnQgdXBkYXRlcyBoYXZlIG5vIHByb21pc2UiKTsKIAogICAgIENPTlRBSU5FUl9SRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQ6IEZhaWxl
ZCB0byBmZXRjaCBzY3JpcHQgZm9yIGpvYiAlIiBQUkl1NjQgIiwgZXJyb3I6ICVzIiwgam9iLmlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgaWYgKGV4Y2VwdGlvbiAmJiBqb2IucHJvbWlzZSgpKQotICAgICAg
ICBqb2IucHJvbWlzZSgpLT5yZWplY3QoKmV4Y2VwdGlvbik7CisgICAgaWYgKGF1dG8gcHJvbWlz
ZSA9IGpvYi50YWtlUHJvbWlzZSgpKQorICAgICAgICBwcm9taXNlLT5yZWplY3QoV1RGTW92ZShl
eGNlcHRpb24pKTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29u
bmVjdGlvbiwgam9iSWRlbnRpZmllciA9IGpvYi5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktl
eSA9IGpvYi5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCkuaXNvbGF0ZWRDb3B5KCksIGVycm9yID0g
ZXJyb3IuaXNvbGF0ZWRDb3B5KCldIHsKICAgICAgICAgY29ubmVjdGlvbi0+ZmFpbGVkRmV0Y2hp
bmdTY3JpcHQoam9iSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCBlcnJvcik7CiAgICAgfSk7
CisKKyAgICBqb2JEaWRGaW5pc2goam9iKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpqb2JEaWRGaW5pc2goU2VydmljZVdvcmtlckpvYiYgam9iKQpAQCAtNTU1LDEwICs1NTgs
OCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkRpZEZpbmlzaChTZXJ2aWNlV29y
a2VySm9iJiBqb2IpCiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVh
ZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCi0gICAgYXV0byB0YWtlbiA9IG1fam9iTWFwLnRha2Uo
am9iLmlkZW50aWZpZXIoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwgIXRha2VuIHx8IHRh
a2VuLT5wdHIoKSA9PSAmam9iKTsKLQotICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsK
KyAgICBBU1NFUlQobV9qb2JNYXAuY29udGFpbnMoam9iLmlkZW50aWZpZXIoKSkpOworICAgIG1f
am9iTWFwLnJlbW92ZShqb2IuaWRlbnRpZmllcigpKTsKIH0KIAogU1dTZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpjb25uZWN0aW9uSWRlbnRpZmllcigp
CkBAIC02MzMsOCArNjM0LDkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdG9wKCkK
ICAgICByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogICAgIG1fcGVuZGluZ1Byb21pc2VzLmNs
ZWFyKCk7CiAgICAgbV9yZWFkeVByb21pc2UgPSBudWxscHRyOwotICAgIGZvciAoYXV0byYgam9i
IDogbV9qb2JNYXAudmFsdWVzKCkpCi0gICAgICAgIGpvYi0+Y2FuY2VsUGVuZGluZ0xvYWQoKTsK
KyAgICBhdXRvIGpvYk1hcCA9IFdURk1vdmUobV9qb2JNYXApOworICAgIGZvciAoYXV0byYgb25n
b2luZ0pvYiA6IGpvYk1hcC52YWx1ZXMoKSkKKyAgICAgICAgb25nb2luZ0pvYi5qb2ItPmNhbmNl
bFBlbmRpbmdMb2FkKCk7CiB9CiAKIERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OmNvbnRleHRJZGVudGlmaWVyKCkKQEAgLTY0OSw2ICs2NTEsMTQgQEAg
RG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Y29udGV4
dElkZW50aWZpZXIoKQogICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkuaWRlbnRpZmllcigpOwogfQogCitTZXJ2aWNlV29ya2VySm9iKiBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpqb2IoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9qb2JNYXAuZmluZChpZGVudGlmaWVyKTsK
KyAgICBpZiAoaXRlcmF0b3IgPT0gbV9qb2JNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWUuam9iLmdldCgpOworfQorCiBib29sIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0CiB7
CiAgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5oCmluZGV4IGZkOGMwN2QyMmNmNjM0OTJmOGRlNTg3MThlYzMwMjYxNGE5NmE1YzEuLmU5ZTYw
NzlmZjFiMTUwNjEyNTIzYjIyY2YxNWYxNWQ3NDA2Mjg1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAt
NzcsMjYgKzc3LDIzIEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uJik7CiAgICAgdm9pZCByZW1vdmVSZWdpc3RyYXRpb24oU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbiYpOwogCi0gICAgU2VydmljZVdvcmtlckpvYiogam9iKFNlcnZp
Y2VXb3JrZXJKb2JJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fam9iTWFwLmdldChp
ZGVudGlmaWVyKTsgfQorICAgIFNlcnZpY2VXb3JrZXJKb2IqIGpvYihTZXJ2aWNlV29ya2VySm9i
SWRlbnRpZmllcik7CiAKICAgICB2b2lkIHN0YXJ0TWVzc2FnZXMoKTsKIAotICAgIHZvaWQgcmVm
KCkgZmluYWwgeyByZWZFdmVudFRhcmdldCgpOyB9Ci0gICAgdm9pZCBkZXJlZigpIGZpbmFsIHsg
ZGVyZWZFdmVudFRhcmdldCgpOyB9Ci0KICAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNTdG9wcGVkOyB9OwogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNjaGVkdWxlSm9iKFJlZjxTZXJ2aWNlV29y
a2VySm9iPiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNl
V29ya2VySm9iPiYmKTsKIAogICAgIHZvaWQgam9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNl
V29ya2VySm9iJiwgY29uc3QgRXhjZXB0aW9uJikgZmluYWw7CiAgICAgdm9pZCBqb2JSZXNvbHZl
ZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYsIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgZmluYWw7CiAgICAgdm9pZCBq
b2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2VySm9iJiwgYm9v
bCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkgZmluYWw7CiAgICAgdm9pZCBzdGFydFNjcmlwdEZldGNo
Rm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImLCBGZXRjaE9wdGlvbnM6OkNhY2hlKSBmaW5hbDsKICAg
ICB2b2lkIGpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3kpIGZpbmFsOwotICAgIHZvaWQgam9iRmFp
bGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgUmVzb3VyY2VFcnJvciYs
IE9wdGlvbmFsPEV4Y2VwdGlvbj4mJikgZmluYWw7CisgICAgdm9pZCBqb2JGYWlsZWRMb2FkaW5n
U2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJiwgRXhjZXB0aW9u
JiYpIGZpbmFsOwogCiAgICAgdm9pZCBqb2JEaWRGaW5pc2goU2VydmljZVdvcmtlckpvYiYpOwog
CkBAIC0xMjEsNyArMTE4LDEyIEBAIHByaXZhdGU6CiAgICAgTmF2aWdhdG9yQmFzZSYgbV9uYXZp
Z2F0b3I7CiAKICAgICBSZWZQdHI8U1dDbGllbnRDb25uZWN0aW9uPiBtX3N3Q29ubmVjdGlvbjsK
LSAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBSZWY8U2VydmljZVdvcmtl
ckpvYj4+IG1fam9iTWFwOworCisgICAgc3RydWN0IE9uZ29pbmdKb2IgeworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckpvYj4gam9iOworICAgICAgICBSZWZQdHI8UGVuZGlu
Z0FjdGl2aXR5PFNlcnZpY2VXb3JrZXJDb250YWluZXI+PiBwZW5kaW5nQWN0aXZpdHk7CisgICAg
fTsKKyAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBPbmdvaW5nSm9iPiBt
X2pvYk1hcDsKIAogICAgIGJvb2wgbV9pc1N0b3BwZWQgeyBmYWxzZSB9OwogICAgIEhhc2hNYXA8
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24qPiBtX3JlZ2lzdHJhdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKaW5kZXggNzFkMWU1MjgxYzczNTU2ZGE1ZWY4
OTdiMGE0Njg5NmIxNDU0NGE5MC4uY2ExZWM1MDBmODQ3Nzg2OTUyZTNjMjEzMmU2YmY5YTgxZjFj
YzBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VySm9iLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmZh
aWxlZFdpdGhFeGNlcHRpb24oY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCiAgICAgQVNTRVJU
KCFtX2NvbXBsZXRlZCk7CiAKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7Ci0gICAgbV9jbGllbnQt
PmpvYkZhaWxlZFdpdGhFeGNlcHRpb24oKnRoaXMsIGV4Y2VwdGlvbik7CisgICAgbV9jbGllbnQu
am9iRmFpbGVkV2l0aEV4Y2VwdGlvbigqdGhpcywgZXhjZXB0aW9uKTsKIH0KIAogdm9pZCBTZXJ2
aWNlV29ya2VySm9iOjpyZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEmJiBkYXRhLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgc2hvdWxkTm90aWZ5
V2hlblJlc29sdmVkKQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnJl
c29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmCiAg
ICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7Ci0gICAg
bV9jbGllbnQtPmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbigqdGhpcywgV1RGTW92ZShkYXRh
KSwgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKTsKKyAgICBtX2NsaWVudC5qb2JSZXNvbHZlZFdp
dGhSZWdpc3RyYXRpb24oKnRoaXMsIFdURk1vdmUoZGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNv
bHZlZCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoVW5yZWdpc3Ry
YXRpb25SZXN1bHQoYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKQEAgLTc1LDcgKzc1LDcgQEAg
dm9pZCBTZXJ2aWNlV29ya2VySm9iOjpyZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChi
b29sIHVucmVnaXN0cmF0aW9uUmVzdWwKICAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsKIAogICAg
IG1fY29tcGxldGVkID0gdHJ1ZTsKLSAgICBtX2NsaWVudC0+am9iUmVzb2x2ZWRXaXRoVW5yZWdp
c3RyYXRpb25SZXN1bHQoKnRoaXMsIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKKyAgICBtX2NsaWVu
dC5qb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdCgqdGhpcywgdW5yZWdpc3RyYXRp
b25SZXN1bHQpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2go
RmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VySm9iOjpzdGFydFNjcmlwdEZldGNoKEZldGNoT3B0aW9uczo6Q2FjaGUgY2Fj
aGVQb2xpY3kpCiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKICAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsKIAotICAgIG1fY2xpZW50LT5z
dGFydFNjcmlwdEZldGNoRm9ySm9iKCp0aGlzLCBjYWNoZVBvbGljeSk7CisgICAgbV9jbGllbnQu
c3RhcnRTY3JpcHRGZXRjaEZvckpvYigqdGhpcywgY2FjaGVQb2xpY3kpOwogfQogCiB2b2lkIFNl
cnZpY2VXb3JrZXJKb2I6OmZldGNoU2NyaXB0V2l0aENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNoZVBvbGljeSkKQEAgLTExNCwx
MyArMTE0LDE3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVu
c2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAKICAgICAvLyBFeHRyYWN0IGEg
TUlNRSB0eXBlIGZyb20gdGhlIHJlc3BvbnNlJ3MgaGVhZGVyIGxpc3QuIElmIHRoaXMgTUlNRSB0
eXBlIChpZ25vcmluZyBwYXJhbWV0ZXJzKSBpcyBub3QgYSBKYXZhU2NyaXB0IE1JTUUgdHlwZSwg
dGhlbjoKICAgICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1J
TUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKSB7CisgICAgICAgIG1fc2NyaXB0TG9hZGVyLT5j
YW5jZWwoKTsKKyAgICAgICAgbV9zY3JpcHRMb2FkZXIgPSBudWxscHRyOworCiAgICAgICAgIC8v
IEludm9rZSBSZWplY3QgSm9iIFByb21pc2Ugd2l0aCBqb2IgYW5kICJTZWN1cml0eUVycm9yIiBE
T01FeGNlcHRpb24uCiAgICAgICAgIEV4Y2VwdGlvbiBleGNlcHRpb24geyBTZWN1cml0eUVycm9y
LCAiTUlNRSBUeXBlIGlzIG5vdCBhIEphdmFTY3JpcHQgTUlNRSB0eXBlIl9zIH07CiAgICAgICAg
IC8vIEFzeW5jaHJvbm91c2x5IGNvbXBsZXRlIHRoZXNlIHN0ZXBzIHdpdGggYSBuZXR3b3JrIGVy
cm9yLgogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRl
cm5hbCwgMCwgcmVzcG9uc2UudXJsKCksICJVbmV4cGVjdGVkIE1JTUUgdHlwZSJfcyB9OwotICAg
ICAgICBtX2NsaWVudC0+am9iRmFpbGVkTG9hZGluZ1NjcmlwdCgqdGhpcywgV1RGTW92ZShlcnJv
ciksIFdURk1vdmUoZXhjZXB0aW9uKSk7Ci0gICAgICAgIG1fc2NyaXB0TG9hZGVyID0gbnVsbHB0
cjsKKyAgICAgICAgbV9jbGllbnQuam9iRmFpbGVkTG9hZGluZ1NjcmlwdCgqdGhpcywgV1RGTW92
ZShlcnJvciksIFdURk1vdmUoZXhjZXB0aW9uKSk7CisgICAgICAgIHJldHVybjsKICAgICB9CisK
ICAgICBTdHJpbmcgc2VydmljZVdvcmtlckFsbG93ZWQgPSByZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OlNlcnZpY2VXb3JrZXJBbGxvd2VkKTsKICAgICBTdHJpbmcgbWF4
U2NvcGVTdHJpbmc7CiAgICAgaWYgKHNlcnZpY2VXb3JrZXJBbGxvd2VkLmlzTnVsbCgpKSB7CkBA
IC0xMzEsMTMgKzEzNSwxNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmRpZFJlY2VpdmVSZXNw
b25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogICAgICAgICBhdXRv
IG1heFNjb3BlID0gVVJMKG1fam9iRGF0YS5zY3JpcHRVUkwsIHNlcnZpY2VXb3JrZXJBbGxvd2Vk
KTsKICAgICAgICAgbWF4U2NvcGVTdHJpbmcgPSBtYXhTY29wZS5wYXRoKCk7CiAgICAgfQorCiAg
ICAgU3RyaW5nIHNjb3BlU3RyaW5nID0gbV9qb2JEYXRhLnNjb3BlVVJMLnBhdGgoKTsKLSAgICBp
ZiAoIXNjb3BlU3RyaW5nLnN0YXJ0c1dpdGgobWF4U2NvcGVTdHJpbmcpKSB7Ci0gICAgICAgIEV4
Y2VwdGlvbiBleGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiU2NvcGUgVVJMIHNob3VsZCBzdGFy
dCB3aXRoIHRoZSBnaXZlbiBzY3JpcHQgVVJMIl9zIH07Ci0gICAgICAgIFJlc291cmNlRXJyb3Ig
ZXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgIlNj
b3BlIFVSTCBzaG91bGQgc3RhcnQgd2l0aCB0aGUgZ2l2ZW4gc2NyaXB0IFVSTCJfcyB9OwotICAg
ICAgICBtX2NsaWVudC0+am9iRmFpbGVkTG9hZGluZ1NjcmlwdCgqdGhpcywgV1RGTW92ZShlcnJv
ciksIFdURk1vdmUoZXhjZXB0aW9uKSk7Ci0gICAgICAgIG1fc2NyaXB0TG9hZGVyID0gbnVsbHB0
cjsKLSAgICB9CisgICAgaWYgKHNjb3BlU3RyaW5nLnN0YXJ0c1dpdGgobWF4U2NvcGVTdHJpbmcp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NjcmlwdExvYWRlci0+Y2FuY2VsKCk7CisgICAg
bV9zY3JpcHRMb2FkZXIgPSBudWxscHRyOworCisgICAgRXhjZXB0aW9uIGV4Y2VwdGlvbiB7IFNl
Y3VyaXR5RXJyb3IsICJTY29wZSBVUkwgc2hvdWxkIHN0YXJ0IHdpdGggdGhlIGdpdmVuIHNjcmlw
dCBVUkwiX3MgfTsKKyAgICBSZXNvdXJjZUVycm9yIGVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksICJTY29wZSBVUkwgc2hvdWxkIHN0YXJ0IHdpdGgg
dGhlIGdpdmVuIHNjcmlwdCBVUkwiX3MgfTsKKyAgICBtX2NsaWVudC5qb2JGYWlsZWRMb2FkaW5n
U2NyaXB0KCp0aGlzLCBXVEZNb3ZlKGVycm9yKSwgV1RGTW92ZShleGNlcHRpb24pKTsKIH0KIAog
dm9pZCBTZXJ2aWNlV29ya2VySm9iOjpub3RpZnlGaW5pc2hlZCgpCkBAIC0xNDUsMjEgKzE1Mywy
NCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6Om5vdGlmeUZpbmlzaGVkKCkKICAgICBBU1NFUlQo
bV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogICAgIEFTU0VS
VChtX3NjcmlwdExvYWRlcik7CiAgICAgCi0gICAgaWYgKCFtX3NjcmlwdExvYWRlci0+ZmFpbGVk
KCkpCi0gICAgICAgIG1fY2xpZW50LT5qb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoKnRoaXMsIG1f
c2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgbV9zY3JpcHRMb2FkZXItPmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLCBtX3NjcmlwdExvYWRlci0+cmVmZXJyZXJQb2xpY3koKSk7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIGF1dG8mIGVycm9yID0gIG1fc2NyaXB0TG9hZGVyLT5lcnJvcigpOwotICAgICAgICBB
U1NFUlQoIWVycm9yLmlzTnVsbCgpKTsKLSAgICAgICAgbV9jbGllbnQtPmpvYkZhaWxlZExvYWRp
bmdTY3JpcHQoKnRoaXMsIGVycm9yLCBXVEY6Om51bGxvcHQpOworICAgIGF1dG8gc2NyaXB0TG9h
ZGVyID0gV1RGTW92ZShtX3NjcmlwdExvYWRlcik7CisKKyAgICBpZiAoIXNjcmlwdExvYWRlci0+
ZmFpbGVkKCkpIHsKKyAgICAgICAgbV9jbGllbnQuam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KCp0
aGlzLCBzY3JpcHRMb2FkZXItPnNjcmlwdCgpLCBzY3JpcHRMb2FkZXItPmNvbnRlbnRTZWN1cml0
eVBvbGljeSgpLCBzY3JpcHRMb2FkZXItPnJlZmVycmVyUG9saWN5KCkpOworICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9zY3JpcHRMb2FkZXIgPSBudWxscHRyOworICAgIGF1dG8mIGVy
cm9yID0gc2NyaXB0TG9hZGVyLT5lcnJvcigpOworICAgIEFTU0VSVCghZXJyb3IuaXNOdWxsKCkp
OworCisgICAgbV9jbGllbnQuam9iRmFpbGVkTG9hZGluZ1NjcmlwdCgqdGhpcywgZXJyb3IsIEV4
Y2VwdGlvbiB7IGVycm9yLmlzQWNjZXNzQ29udHJvbCgpID8gU2VjdXJpdHlFcnJvciA6IFR5cGVF
cnJvciwgIlNjcmlwdCBsb2FkIGZhaWxlZCJfcyB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
Sm9iOjpjYW5jZWxQZW5kaW5nTG9hZCgpCiB7CiAgICAgaWYgKCFtX3NjcmlwdExvYWRlcikKICAg
ICAgICAgcmV0dXJuOworCiAgICAgbV9zY3JpcHRMb2FkZXItPmNhbmNlbCgpOwogICAgIG1fc2Ny
aXB0TG9hZGVyID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYi5oCmluZGV4IDBhYmQyMTk0M2UxZjgwMzY5YjE5NjcyNmZl
NWNiMGRiMWFiNmI1ZGEuLmEyZDk3NjM2N2U4NGUzOTQ2ODUxNzcwZWFhYTliYjJjMDg3MDdhOGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Sm9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2IuaApAQCAtNDYsMTMgKzQ2LDkgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGVu
dW0gY2xhc3MgU2VydmljZVdvcmtlckpvYlR5cGU7CiBzdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGE7CiAKLWNsYXNzIFNlcnZpY2VXb3JrZXJKb2IgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckpvYj4sIHB1YmxpYyBXb3JrZXJTY3JpcHRMb2FkZXJD
bGllbnQgeworY2xhc3MgU2VydmljZVdvcmtlckpvYiA6IHB1YmxpYyBXb3JrZXJTY3JpcHRMb2Fk
ZXJDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckpvYj4gY3Jl
YXRlKFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmIGNsaWVudCwgUmVmUHRyPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlLCBTZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VySm9iKGNsaWVudCwgV1RGTW92
ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwotICAgIH0KLQorICAgIFNlcnZpY2VXb3Jr
ZXJKb2IoU2VydmljZVdvcmtlckpvYkNsaWVudCYsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYs
IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5TZXJ2aWNlV29y
a2VySm9iKCk7CiAKICAgICB2b2lkIGZhaWxlZFdpdGhFeGNlcHRpb24oY29uc3QgRXhjZXB0aW9u
Jik7CkBAIC02NCw3ICs2MCw4IEBAIHB1YmxpYzoKICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2pvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXI7IH0K
IAogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9qb2JEYXRhOyB9Ci0gICAgRGVmZXJyZWRQcm9taXNlKiBwcm9taXNlKCkgeyByZXR1cm4gbV9w
cm9taXNlLmdldCgpOyB9CisgICAgYm9vbCBoYXNQcm9taXNlKCkgY29uc3QgeyByZXR1cm4gISFt
X3Byb21pc2U7IH0KKyAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiB0YWtlUHJvbWlzZSgpIHsg
cmV0dXJuIFdURk1vdmUobV9wcm9taXNlKTsgfQogCiAgICAgdm9pZCBmZXRjaFNjcmlwdFdpdGhD
b250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGZXRjaE9wdGlvbnM6OkNhY2hlKTsKIApA
QCAtNzMsMTMgKzcwLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbFBlbmRpbmdMb2FkKCk7
CiAKIHByaXZhdGU6Ci0gICAgU2VydmljZVdvcmtlckpvYihTZXJ2aWNlV29ya2VySm9iQ2xpZW50
JiwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiwgU2VydmljZVdvcmtlckpvYkRhdGEmJik7Ci0K
ICAgICAvLyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBm
aW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKCkgZmluYWw7CiAKLSAgICBSZWY8U2Vydmlj
ZVdvcmtlckpvYkNsaWVudD4gbV9jbGllbnQ7CisgICAgU2VydmljZVdvcmtlckpvYkNsaWVudCYg
bV9jbGllbnQ7CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGEgbV9qb2JEYXRhOwogICAgIFJlZlB0
cjxEZWZlcnJlZFByb21pc2U+IG1fcHJvbWlzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKaW5kZXggNGQ0MzMx
NGNmNzk4MTIyMmIwOTZiMTg0YjA1ODZiNjFiN2YyMDgzYi4uNmM0ODE4ZWY4ZmJmNGYxYzA4Yzky
Y2JkNTM0NDA3YWUwYWU0OTA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oCkBAIC01MCwxMiArNTAsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVz
dWx0KFNlcnZpY2VXb3JrZXJKb2ImLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYs
IEZldGNoT3B0aW9uczo6Q2FjaGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgam9iRmluaXNoZWRM
b2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlclBvbGljeSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBqb2JGYWlsZWRMb2FkaW5nU2Ny
aXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJiwgT3B0aW9uYWw8RXhj
ZXB0aW9uPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGpvYkZhaWxlZExvYWRpbmdTY3JpcHQo
U2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImLCBFeGNlcHRpb24mJikgPSAw
OwogCiAgICAgdmlydHVhbCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25J
ZGVudGlmaWVyKCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHJlZigpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZGVyZWYoKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA3YzZmMDRlZjdlMWZhYmNkOGQzOTdmNDQ3MmZh
NTljNDMxYjQ5YTZhLi5jNGUyNmYxZTg0NzdkN2ZmZjZiOGI0Y2VlOGJiYzdlNTBhNGY1MDQ0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wMS0y
NSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZVdv
cmtlckpvYiBzaG91bGQgbm90aWZ5IGl0cyBjbGllbnQgaW4gY2FzZSBpdHMgam9iIGlzIGNhbmNl
bGxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkz
NzQ3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzQ5ODE5Nj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVnaXN0cmF0aW9uLXNlY3VyaXR5LWVycm9yLmh0
dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAxOS0wMS0yMiAgT3Jpb2wgQnJ1ZmF1ICA8b2JydWZhdUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtbG9naWNhbF0gSW1wbGVtZW50IGZsb3ctcmVsYXRp
dmUgbWFyZ2luLCBwYWRkaW5nIGFuZCBib3JkZXIgc2hvcnRoYW5kcwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXIvcmVnaXN0cmF0aW9uLXNlY3VyaXR5LWVycm9yLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3JlZ2lzdHJhdGlvbi1zZWN1cml0eS1lcnJvci5odHRw
cy1leHBlY3RlZC50eHQKaW5kZXggMzhkMDY3OGZhZjMxNDFkNGJjYWU1MWYzNWIzNmU1ZGI3NGZk
YTkyMi4uYWE3NWVjOTM4NDQ3MDBmNzU3Y2RjOTlkZDM2MjEwNmE0ZmVjOThhOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXIvcmVnaXN0cmF0aW9uLXNlY3VyaXR5LWVycm9yLmh0dHBzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZWdpc3RyYXRpb24tc2VjdXJpdHkt
ZXJyb3IuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBQQVNTIFJlZ2lzdGVyaW5n
IHNhbWUgc2NvcGUgYXMgdGhlIHNjcmlwdCBkaXJlY3Rvcnkgd2l0aG91dCB0aGUgbGFzdCBzbGFz
aAogUEFTUyBSZWdpc3RyYXRpb24gc2NvcGUgb3V0c2lkZSB0aGUgc2NyaXB0IGRpcmVjdG9yeSAK
IFBBU1MgUmVnaXN0ZXJpbmcgc2NvcGUgb3V0c2lkZSBkb21haW4gCiBQQVNTIFJlZ2lzdGVyaW5n
IHNjcmlwdCBvdXRzaWRlIGRvbWFpbiAKLUZBSUwgUmVnaXN0ZXJpbmcgcmVkaXJlY3RlZCBzY3Jp
cHQgYXNzZXJ0X3Rocm93czogUmVnaXN0cmF0aW9uIG9mIHJlZGlyZWN0ZWQgc2NyaXB0IHNob3Vs
ZCBmYWlsLiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAi
VHlwZUVycm9yOiBTY3JpcHQgVVJMIGh0dHBzOi8vbG9jYWxob3N0Ojk0NDMvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy9yZWRpcmVjdC5weT9SZWRpcmVjdD0lMkZyZXNv
dXJjZXMlMkZyZWdpc3RyYXRpb24td29ya2VyLmpzIGZldGNoIHJlc3VsdGVkIGluIGVycm9yOiBO
b3QgYWxsb3dlZCB0byBmb2xsb3cgYSByZWRpcmVjdGlvbiB3aGlsZSBsb2FkaW5nIGh0dHBzOi8v
bG9jYWxob3N0Ojk0NDMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy9y
ZWRpcmVjdC5weT9SZWRpcmVjdD0lMkZyZXNvdXJjZXMlMkZyZWdpc3RyYXRpb24td29ya2VyLmpz
IiB0aGF0IGlzIG5vdCBhIERPTUV4Y2VwdGlvbiBTZWN1cml0eUVycm9yOiBwcm9wZXJ0eSAiY29k
ZSIgaXMgZXF1YWwgdG8gdW5kZWZpbmVkLCBleHBlY3RlZCAxOAorUEFTUyBSZWdpc3RlcmluZyBy
ZWRpcmVjdGVkIHNjcmlwdCAKIFBBU1MgU2NvcGUgaW5jbHVkaW5nIHBhcmVudC1yZWZlcmVuY2Ug
YW5kIG5vdCB1bmRlciB0aGUgc2NyaXB0IGRpcmVjdG9yeSAKIFBBU1MgU2NyaXB0IFVSTCBpbmNs
dWRpbmcgY29uc2VjdXRpdmUgc2xhc2hlcyAKIFBBU1MgU2NyaXB0IFVSTCBpcyBzYW1lLW9yaWdp
biBmaWxlc3lzdGVtOiBVUkwgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360180</attachid>
            <date>2019-01-25 15:57:03 -0800</date>
            <delta_ts>2019-01-28 11:19:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193747-20190125155702.patch</filename>
            <type>text/plain</type>
            <size>28479</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJlNTI4ZGNkOTk1N2Nl
Zjc2MGRkZGI4YTRlMDRjMjQ2ODM2ZGZiZC4uOWQxOWEzNzZmM2MzNjVhMjA0N2UzM2I4NDIzYjdh
Mzg5OGVmNTg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE5LTAxLTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTZXJ2aWNl
V29ya2VySm9iIG1hbmFnZW1lbnQgYnkgU2VydmljZVdvcmtlckNvbnRhaW5lciB0byBtYWtlIGl0
IG1vcmUgbWVtb3J5IHNhZmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5Mzc0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDc0OTgxOTY+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBTZXJ2aWNl
V29ya2VySm9iIGJlIG5vIGxvbmdlciByZWYgY291bnRlZC4KKyAgICAgICAgSW5zdGVhZCBpdHMg
bGlmZXRpbWUgaXMgZnVsbHkgY29udHJvbGxlZCBieSBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLgor
CisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IGEgZmFpbGluZyBsb2FkIHdpbGwgcmVtb3ZlIHRoZSBq
b2IgZnJvbSB0aGUgbWFwLgorICAgICAgICBUaGlzIGFsbG93cyB0byBlbnN1cmUgdGhhdCB0aGVz
ZSBqb2JzIGRvIG5vdCBzdGF5IGZvcmV2ZXIuICAKKworICAgICAgICBNYWtlIHN1cmUgdGhhdCBz
ZXRQZW5kaW5nQWN0aXZpdHkvdW5zZXRQZW5kaW5nQWN0aXZpdHkgaXMgYmFsYW5jZWQgYnkgc3Rv
cmluZworICAgICAgICBhIHBlbmRpbmcgYWN0aXZpdHkgaW4gdGhlIGpvYiBtYXAgbmV4dCB0byB0
aGUgam9iLgorCisgICAgICAgIFdoZW4gU2VydmljZVdvcmtlckNvbnRhaW5lciBpcyBzdG9wcGVk
LCBub3RpZnkgdGhhdCBhbGwgam9icyBhcmUgY2FuY2VsbGVkIHRvIE5ldHdvcmtQcm9jZXNzLgor
ICAgICAgICBUaGlzIG1ha2VzIHRoZXNlIGpvYnMgaW4gTmV0d29ya1Byb2Nlc3Mtc2lkZSB0byBu
b3Qgc3RheSB1bnRpbCB0aGUgY29vcmVzcG9uZGluZyBXZWJQcm9jZXNzIGlzIGdvbmUuCisKKyAg
ICAgICAgU2ltcGxpZnkgU2VydmljZVdvcmtlckpvYiBwcm9taXNlIHJlamVjdGlvbiBoYW5kbGlu
ZyBzbyB0aGF0IGl0IGlzIGNsZWFyIHdoZW4gcHJvbWlzZSBpcyByZWplY3RlZCBhbmQgd2hlbiBp
dCBpcyBub3QuCisgICAgICAgIFVwZGF0ZSB0eXBlIG9mIGV4Y2VwdGlvbiB0byBiZSBTZWN1cml0
eUVycm9yIHdoZW4gbG9hZCBmYWlscyBkdWUgdG8gQWNjZXNzQ29udHJvbC4KKworICAgICAgICBD
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhS
ZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdCk6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JEaWRGaW5pc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RvcCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJKb2IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpv
Yjo6ZmFpbGVkV2l0aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Sm9iOjpyZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6c3RhcnRTY3JpcHRGZXRjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckpvYjo6Y2FuY2VsUGVuZGluZ0xvYWQpOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iOjpoYXNQcm9taXNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJKb2I6OnRha2VQcm9taXNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckpvYkNsaWVudC5oOgorCiAyMDE5LTAxLTIyICBDbGF1ZGlvIFNhYXZlZHJhICA8
Y3NhYXZlZHJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQnVpbGQgZml4IGZvciBVYnVu
dHUgTFRTIDE2LjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggNzQ0MmRkNDU1MzdmMWY0ZjRhZWFk
NjI2NTJlMzZhNzQ2MDlkOTkwYi4uYjM3ZGE0NzVlMjg2MzczN2NjN2I2MjcxNTZhOTFjMzNjZTA2
MWVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgcmVsYXRpdmVT
Y3JpcHRVUkwsIGNvCiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJl
Z2lzdGVyOwogICAgIGpvYkRhdGEucmVnaXN0cmF0aW9uT3B0aW9ucyA9IG9wdGlvbnM7CiAKLSAg
ICBzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocHJv
bWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5p
cXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpv
YkRhdGEpKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0
cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92
ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBSZWY8RGVmZXJyZQogCiAgICAgQ09O
VEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlbW92ZVJlZ2lzdHJhdGlvbjogVW5yZWdp
c3RlcmluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRp
ZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBzY2hlZHVsZUpvYihTZXJ2
aWNlV29ya2VySm9iOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9i
RGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJK
b2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKIHZv
aWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYg
c2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBXb3JrZXJUeXBlLCBSZWZQdHI8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0yMjgsMjIgKzIyOCwyMiBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBj
b25zdCBVUkwmCiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmVtb3Zl
UmVnaXN0cmF0aW9uOiBVcGRhdGluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQs
IGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBz
Y2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocHJvbWlz
ZSksIFdURk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVl
PFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRh
dGEpKSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2IoUmVm
PFNlcnZpY2VXb3JrZXJKb2I+JiYgam9iKQordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpz
Y2hlZHVsZUpvYihzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckpvYj4mJiBqb2IpCiB7CiAj
aWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIEFTU0VSVChtX3N3Q29ubmVjdGlvbik7Ci0K
LSAgICBzZXRQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOworICAgIEFTU0VSVCghaXNTdG9wcGVkKCkp
OwogCiAgICAgYXV0byYgam9iRGF0YSA9IGpvYi0+ZGF0YSgpOwotICAgIGF1dG8gcmVzdWx0ID0g
bV9qb2JNYXAuYWRkKGpvYi0+aWRlbnRpZmllcigpLCBXVEZNb3ZlKGpvYikpOwotICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgYXV0byBqb2JJZGVudGlm
aWVyID0gam9iLT5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKCFtX2pvYk1hcC5jb250YWlucyhq
b2JJZGVudGlmaWVyKSk7CisgICAgbV9qb2JNYXAuYWRkKGpvYklkZW50aWZpZXIsIE9uZ29pbmdK
b2IgeyBXVEZNb3ZlKGpvYiksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRoaXMpIH0pOwogCiAgICAg
Y2FsbE9uTWFpblRocmVhZChbY29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9uLCBjb250ZXh0SWRl
bnRpZmllciA9IHRoaXMtPmNvbnRleHRJZGVudGlmaWVyKCksIGpvYkRhdGEgPSBqb2JEYXRhLmlz
b2xhdGVkQ29weSgpXSB7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNjaGVkdWxlSm9iKGNvbnRleHRJ
ZGVudGlmaWVyLCBqb2JEYXRhKTsKQEAgLTM4NSwyMCArMzg1LDIxIEBAIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2VySm9iJiBq
b2IsIGNvbnN0CiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6
Y3VycmVudCgpKTsKICNlbmRpZgogCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShqb2IucHJvbWlz
ZSgpIHx8IGpvYi5kYXRhKCkudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlLCAi
T25seSBzb2Z0IHVwZGF0ZXMgaGF2ZSBubyBwcm9taXNlIik7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShqb2IuaGFzUHJvbWlzZSgpIHx8IGpvYi5kYXRhKCkudHlwZSA9PSBTZXJ2aWNlV29ya2Vy
Sm9iVHlwZTo6VXBkYXRlLCAiT25seSBzb2Z0IHVwZGF0ZXMgaGF2ZSBubyBwcm9taXNlIik7CiAK
ICAgICBhdXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9iXSB7Ci0gICAg
ICAgIGpvYkRpZEZpbmlzaChqb2IpOworICAgICAgICBkZXN0cm95Sm9iKGpvYik7CiAgICAgfSk7
CiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgiam9iRmFpbGVk
V2l0aEV4Y2VwdGlvbjogSm9iICUiIFBSSXU2NCAiIGZhaWxlZCB3aXRoIGVycm9yICVzIiwgam9i
LmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBleGNlcHRpb24ubWVzc2FnZSgpLnV0ZjgoKS5kYXRh
KCkpOwogCi0gICAgaWYgKCFqb2IucHJvbWlzZSgpKQorICAgIGF1dG8gcHJvbWlzZSA9IGpvYi50
YWtlUHJvbWlzZSgpOworICAgIGlmICghcHJvbWlzZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKLSAgICAgICAg
Y29udGV4dC0+cG9zdFRhc2soW2pvYiA9IG1ha2VSZWYoam9iKSwgZXhjZXB0aW9uXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JikgewotICAgICAgICAgICAgam9iLT5wcm9taXNlKCktPnJlamVjdChl
eGNlcHRpb24pOworICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIGV4Y2VwdGlvbl0oYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KGV4Y2VwdGlvbik7CiAgICAgICAgIH0pOwogICAgIH0KIH0KQEAgLTQxOCwxMCAr
NDE5LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVn
aXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNT
RVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRp
ZgotICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoam9iLnByb21pc2UoKSB8fCBqb2IuZGF0YSgpLnR5
cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSwgIk9ubHkgc29mdCB1cGRhdGVzIGhh
dmUgbm8gcHJvbWlzZSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoam9iLmhhc1Byb21pc2Uo
KSB8fCBqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSwgIk9u
bHkgc29mdCB1cGRhdGVzIGhhdmUgbm8gcHJvbWlzZSIpOwogCiAgICAgYXV0byBndWFyZCA9IFdU
Rjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0gewotICAgICAgICBqb2JEaWRGaW5pc2goam9i
KTsKKyAgICAgICAgZGVzdHJveUpvYihqb2IpOwogICAgIH0pOwogCiAgICAgaWYgKGpvYi5kYXRh
KCkudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpCkBAIC00NDYsMTMgKzQ0
NywxNCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lz
dHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBpZiAoIWpvYi5wcm9taXNlKCkpIHsKKyAgICBhdXRvIHByb21pc2UgPSBqb2IudGFrZVBy
b21pc2UoKTsKKyAgICBpZiAoIXByb21pc2UpIHsKICAgICAgICAgaWYgKG5vdGlmeVdoZW5SZXNv
bHZlZElmTmVlZGVkKQogICAgICAgICAgICAgbm90aWZ5V2hlblJlc29sdmVkSWZOZWVkZWQoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
cG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgam9iID0gbWFr
ZVJlZihqb2IpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgbm90aWZ5V2hlblJlc29sdmVkSWZOZWVk
ZWQgPSBXVEZNb3ZlKG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgam9iSWRlbnRpZmllciA9IGpvYi5pZGVudGlmaWVyKCksIGRh
dGEgPSBXVEZNb3ZlKGRhdGEpLCBub3RpZnlXaGVuUmVzb2x2ZWRJZk5lZWRlZCA9IFdURk1vdmUo
bm90aWZ5V2hlblJlc29sdmVkSWZOZWVkZWQpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGlzU3RvcHBlZCgpIHx8ICFjb250ZXh0LnNlc3Np
b25JRCgpLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgaWYgKG5vdGlmeVdoZW5SZXNvbHZlZElm
TmVlZGVkKQogICAgICAgICAgICAgICAgIG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkKCk7CkBA
IC00NjEsMTUgKzQ2MywxNSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29s
dmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAKICAgICAgICAgYXV0
byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRPckNyZWF0ZShj
b250ZXh0LCAqdGhpcywgV1RGTW92ZShkYXRhKSk7CiAKLSAgICAgICAgQ09OVEFJTkVSX1JFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbjogUmVzb2x2aW5n
IHByb21pc2UgZm9yIGpvYiAlIiBQUkl1NjQgIi4gUmVnaXN0cmF0aW9uIElEOiAlIiBQUkl1NjQs
IGpvYi0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigp
LnRvVUludDY0KCkpOworICAgICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uOiBSZXNvbHZpbmcgcHJvbWlzZSBmb3Igam9iICUi
IFBSSXU2NCAiLiBSZWdpc3RyYXRpb24gSUQ6ICUiIFBSSXU2NCwgam9iSWRlbnRpZmllci50b1VJ
bnQ2NCgpLCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgICAg
ICBpZiAobm90aWZ5V2hlblJlc29sdmVkSWZOZWVkZWQpIHsKLSAgICAgICAgICAgIGpvYi0+cHJv
bWlzZSgpLT53aGVuU2V0dGxlZChbbm90aWZ5V2hlblJlc29sdmVkSWZOZWVkZWQgPSBXVEZNb3Zl
KG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkKV0geworICAgICAgICAgICAgcHJvbWlzZS0+d2hl
blNldHRsZWQoW25vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkID0gV1RGTW92ZShub3RpZnlXaGVu
UmVzb2x2ZWRJZk5lZWRlZCldIHsKICAgICAgICAgICAgICAgICBub3RpZnlXaGVuUmVzb2x2ZWRJ
Zk5lZWRlZCgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAotICAgICAgICBqb2ItPnBy
b21pc2UoKS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4+
KFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50
ZXJmYWNlPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+PihXVEZNb3ZlKHJlZ2lzdHJhdGlvbikp
OwogICAgIH0pOwogfQogCkBAIC00NzksMTAgKzQ4MSwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3Jr
ZXJKbwogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSk7CiAjZW5kaWYKIAotICAgIEFTU0VSVChqb2IucHJvbWlzZSgpKTsKKyAgICBBU1NFUlQo
am9iLmhhc1Byb21pc2UoKSk7CiAKICAgICBhdXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0
KFt0aGlzLCAmam9iXSB7Ci0gICAgICAgIGpvYkRpZEZpbmlzaChqb2IpOworICAgICAgICBkZXN0
cm95Sm9iKGpvYik7CiAgICAgfSk7CiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiam9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQ6IFVucmVnaXN0ZXIgam9i
ICUiIFBSSXU2NCAiIGZpbmlzaGVkLiBTdWNjZXNzPyAlZCIsIGpvYi5pZGVudGlmaWVyKCkudG9V
SW50NjQoKSwgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwpAQCAtNDkzLDggKzQ5NSw4IEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1
bHQoU2VydmljZVdvcmtlckpvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb250ZXh0
LT5wb3N0VGFzayhbam9iID0gbWFrZVJlZihqb2IpLCB1bnJlZ2lzdHJhdGlvblJlc3VsdF0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewotICAgICAgICBqb2ItPnByb21pc2UoKS0+
cmVzb2x2ZTxJRExCb29sZWFuPih1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CisgICAgY29udGV4dC0+
cG9zdFRhc2soW3Byb21pc2UgPSBqb2IudGFrZVByb21pc2UoKSwgdW5yZWdpc3RyYXRpb25SZXN1
bHRdKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFu
Pih1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CiAgICAgfSk7CiB9CiAKQEAgLTUwOSwxMCArNTExLDgg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNl
cnZpY2VXb3JrZXJKb2ImIGpvYiwgRmV0Y2gKICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkgewogICAgICAgICBMT0dfRVJST1Io
IlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbiBjYWxs
ZWQgYnV0IHRoZSBjb250YWluZXIncyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IGlzIGdvbmUiKTsK
LSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9uLCBq
b2JJZGVudGlmaWVyID0gam9iLmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9uS2V5ID0gam9iLmRh
dGEoKS5yZWdpc3RyYXRpb25LZXkoKS5pc29sYXRlZENvcHkoKSwgc2NyaXB0VVJMID0gam9iLmRh
dGEoKS5zY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgICAgIGNvbm5lY3Rpb24t
PmZhaWxlZEZldGNoaW5nU2NyaXB0KGpvYklkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleSwgeyBl
cnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBzY3JpcHRVUkwsICJBdHRlbXB0IHRvIGZldGNo
IHNlcnZpY2Ugd29ya2VyIHNjcmlwdCB3aXRoIG5vIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiX3Mg
fSk7Ci0gICAgICAgIH0pOwotICAgICAgICBqb2JEaWRGaW5pc2goam9iKTsKKyAgICAgICAgbm90
aWZ5RmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9iLCB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWws
IDAsIGpvYi5kYXRhKCkuc2NyaXB0VVJMLCAiQXR0ZW1wdCB0byBmZXRjaCBzZXJ2aWNlIHdvcmtl
ciBzY3JpcHQgd2l0aCBubyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Il9zIH0pOworICAgICAgICBk
ZXN0cm95Sm9iKGpvYik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUzMiwzMyArNTMy
LDM3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5nU2Ny
aXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uCiAgICAgfSk7CiB9CiAKLXZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9i
JiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBPcHRpb25hbDxFeGNlcHRpb24+JiYg
ZXhjZXB0aW9uKQordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2FkaW5n
U2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKG1f
Y3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0Uoam9iLnByb21pc2UoKSB8fCBqb2IuZGF0YSgpLnR5cGUgPT0g
U2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSwgIk9ubHkgc29mdCB1cGRhdGVzIGhhdmUgbm8g
cHJvbWlzZSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoam9iLmhhc1Byb21pc2UoKSB8fCBq
b2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSwgIk9ubHkgc29m
dCB1cGRhdGVzIGhhdmUgbm8gcHJvbWlzZSIpOwogCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQoImpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdDogRmFpbGVkIHRvIGZl
dGNoIHNjcmlwdCBmb3Igam9iICUiIFBSSXU2NCAiLCBlcnJvcjogJXMiLCBqb2IuaWRlbnRpZmll
cigpLnRvVUludDY0KCksIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEo
KSk7CiAKLSAgICBpZiAoZXhjZXB0aW9uICYmIGpvYi5wcm9taXNlKCkpCi0gICAgICAgIGpvYi5w
cm9taXNlKCktPnJlamVjdCgqZXhjZXB0aW9uKTsKKyAgICBpZiAoYXV0byBwcm9taXNlID0gam9i
LnRha2VQcm9taXNlKCkpCisgICAgICAgIHByb21pc2UtPnJlamVjdChXVEZNb3ZlKGV4Y2VwdGlv
bikpOwogCisgICAgbm90aWZ5RmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9iLCBlcnJvcik7CisgICAg
ZGVzdHJveUpvYihqb2IpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6Om5vdGlm
eUZhaWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCit7CiAgICAgY2FsbE9uTWFpblRocmVhZChbY29ubmVjdGlvbiA9IG1f
c3dDb25uZWN0aW9uLCBqb2JJZGVudGlmaWVyID0gam9iLmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0
aW9uS2V5ID0gam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXkoKS5pc29sYXRlZENvcHkoKSwgZXJy
b3IgPSBlcnJvci5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBjb25uZWN0aW9uLT5mYWlsZWRG
ZXRjaGluZ1NjcmlwdChqb2JJZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXksIGVycm9yKTsKICAg
ICB9KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JEaWRGaW5pc2goU2Vy
dmljZVdvcmtlckpvYiYgam9iKQordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpkZXN0cm95
Sm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJU
KG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgog
Ci0gICAgYXV0byB0YWtlbiA9IG1fam9iTWFwLnRha2Uoam9iLmlkZW50aWZpZXIoKSk7Ci0gICAg
QVNTRVJUX1VOVVNFRCh0YWtlbiwgIXRha2VuIHx8IHRha2VuLT5wdHIoKSA9PSAmam9iKTsKLQot
ICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKKyAgICBBU1NFUlQobV9qb2JNYXAuY29u
dGFpbnMoam9iLmlkZW50aWZpZXIoKSkpOworICAgIG1fam9iTWFwLnJlbW92ZShqb2IuaWRlbnRp
ZmllcigpKTsKIH0KIAogU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpjb25uZWN0aW9uSWRlbnRpZmllcigpCkBAIC02MzMsOCArNjM3LDExIEBAIHZv
aWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RvcCgpCiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0
ZW5lcnMoKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5jbGVhcigpOwogICAgIG1fcmVhZHlQcm9t
aXNlID0gbnVsbHB0cjsKLSAgICBmb3IgKGF1dG8mIGpvYiA6IG1fam9iTWFwLnZhbHVlcygpKQot
ICAgICAgICBqb2ItPmNhbmNlbFBlbmRpbmdMb2FkKCk7CisgICAgYXV0byBqb2JNYXAgPSBXVEZN
b3ZlKG1fam9iTWFwKTsKKyAgICBmb3IgKGF1dG8mIG9uZ29pbmdKb2IgOiBqb2JNYXAudmFsdWVz
KCkpIHsKKyAgICAgICAgbm90aWZ5RmFpbGVkRmV0Y2hpbmdTY3JpcHQoKm9uZ29pbmdKb2Iuam9i
LmdldCgpLCBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgb25n
b2luZ0pvYi5qb2ItPmRhdGEoKS5zY3JpcHRVUkwsICJKb2IgY2FuY2VsbGVkIl9zLCBSZXNvdXJj
ZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfSk7CisgICAgICAgIG9uZ29pbmdKb2Iuam9iLT5j
YW5jZWxQZW5kaW5nTG9hZCgpOworICAgIH0KIH0KIAogRG9jdW1lbnRPcldvcmtlcklkZW50aWZp
ZXIgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Y29udGV4dElkZW50aWZpZXIoKQpAQCAtNjQ5LDYg
KzY1NiwxNCBAQCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpjb250ZXh0SWRlbnRpZmllcigpCiAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50Pigq
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS5pZGVudGlmaWVyKCk7CiB9CiAKK1NlcnZpY2VXb3Jr
ZXJKb2IqIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYihTZXJ2aWNlV29ya2VySm9iSWRlbnRp
ZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2pvYk1hcC5maW5kKGlk
ZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX2pvYk1hcC5lbmQoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS5qb2IuZ2V0KCk7Cit9
CisKIGJvb2wgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCkgY29uc3QKIHsKICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmgKaW5kZXggZmQ4YzA3ZDIyY2Y2MzQ5MmY4ZGU1ODcxOGVjMzAyNjE0YTk2
YTVjMS4uNjA4MThkZDA3NWVhNWM1MTE5OGUyMWZhMGY5ZTEwOTUzYWNjOGZkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5oCkBAIC03NywyOCArNzcsMjYgQEAgcHVibGljOgogICAgIHZvaWQgYWRkUmVnaXN0cmF0
aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mKTsKICAgICB2b2lkIHJlbW92ZVJlZ2lzdHJh
dGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJik7CiAKLSAgICBTZXJ2aWNlV29ya2VySm9i
KiBqb2IoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gbV9q
b2JNYXAuZ2V0KGlkZW50aWZpZXIpOyB9CisgICAgU2VydmljZVdvcmtlckpvYiogam9iKFNlcnZp
Y2VXb3JrZXJKb2JJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgc3RhcnRNZXNzYWdlcygpOwogCi0g
ICAgdm9pZCByZWYoKSBmaW5hbCB7IHJlZkV2ZW50VGFyZ2V0KCk7IH0KLSAgICB2b2lkIGRlcmVm
KCkgZmluYWwgeyBkZXJlZkV2ZW50VGFyZ2V0KCk7IH0KLQogICAgIGJvb2wgaXNTdG9wcGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1N0b3BwZWQ7IH07CiAKICAgICBib29sIGlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZvaWQgc2NoZWR1bGVKb2IoUmVm
PFNlcnZpY2VXb3JrZXJKb2I+JiYpOworICAgIHZvaWQgc2NoZWR1bGVKb2Ioc3RkOjp1bmlxdWVf
cHRyPFNlcnZpY2VXb3JrZXJKb2I+JiYpOwogCiAgICAgdm9pZCBqb2JGYWlsZWRXaXRoRXhjZXB0
aW9uKFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBFeGNlcHRpb24mKSBmaW5hbDsKICAgICB2b2lk
IGpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiwgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGEmJiwgU2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKSBmaW5hbDsK
ICAgICB2b2lkIGpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3Jr
ZXJKb2ImLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHN0YXJ0
U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYsIEZldGNoT3B0aW9uczo6Q2FjaGUp
IGZpbmFsOwogICAgIHZvaWQgam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJK
b2ImLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSkgZmluYWw7Ci0gICAg
dm9pZCBqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBSZXNv
dXJjZUVycm9yJiwgT3B0aW9uYWw8RXhjZXB0aW9uPiYmKSBmaW5hbDsKKyAgICB2b2lkIGpvYkZh
aWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3Im
LCBFeGNlcHRpb24mJikgZmluYWw7CiAKLSAgICB2b2lkIGpvYkRpZEZpbmlzaChTZXJ2aWNlV29y
a2VySm9iJik7CisgICAgdm9pZCBub3RpZnlGYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29y
a2VySm9iJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQgZGVzdHJveUpvYihTZXJ2
aWNlV29ya2VySm9iJik7CiAKICAgICB2b2lkIGRpZEZpbmlzaEdldFJlZ2lzdHJhdGlvblJlcXVl
c3QodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EYXRhPiYmKTsKICAgICB2b2lkIGRpZEZpbmlzaEdldFJlZ2lzdHJhdGlvbnNSZXF1
ZXN0KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGE+JiYpOwpAQCAtMTIxLDcgKzExOSwxMiBAQCBwcml2YXRlOgogICAgIE5hdmln
YXRvckJhc2UmIG1fbmF2aWdhdG9yOwogCiAgICAgUmVmUHRyPFNXQ2xpZW50Q29ubmVjdGlvbj4g
bV9zd0Nvbm5lY3Rpb247Ci0gICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciwg
UmVmPFNlcnZpY2VXb3JrZXJKb2I+PiBtX2pvYk1hcDsKKworICAgIHN0cnVjdCBPbmdvaW5nSm9i
IHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJKb2I+IGpvYjsKKyAgICAg
ICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxTZXJ2aWNlV29ya2VyQ29udGFpbmVyPj4gcGVuZGlu
Z0FjdGl2aXR5OworICAgIH07CisgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmll
ciwgT25nb2luZ0pvYj4gbV9qb2JNYXA7CiAKICAgICBib29sIG1faXNTdG9wcGVkIHsgZmFsc2Ug
fTsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uKj4gbV9yZWdpc3RyYXRpb25zOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCmluZGV4IDcxZDFl
NTI4MWM3MzU1NmRhNWVmODk3YjBhNDY4OTZiMTQ1NDRhOTAuLjAwOWI5ODc3YjY2MzA1YTRkYTMx
MDRhMDViMTRjNjJiNzdlMGVlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBTZXJ2
aWNlV29ya2VySm9iOjpmYWlsZWRXaXRoRXhjZXB0aW9uKGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0
aW9uKQogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVl
OwotICAgIG1fY2xpZW50LT5qb2JGYWlsZWRXaXRoRXhjZXB0aW9uKCp0aGlzLCBleGNlcHRpb24p
OworICAgIG1fY2xpZW50LmpvYkZhaWxlZFdpdGhFeGNlcHRpb24oKnRoaXMsIGV4Y2VwdGlvbik7
CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgZGF0YSwgU2hvdWxkTm90aWZ5V2hlblJlc29s
dmVkIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBTZXJ2
aWNlV29ya2VySm9iOjpyZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEmJgogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgbV9jb21wbGV0
ZWQgPSB0cnVlOwotICAgIG1fY2xpZW50LT5qb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oKnRo
aXMsIFdURk1vdmUoZGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7CisgICAgbV9jbGll
bnQuam9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKCp0aGlzLCBXVEZNb3ZlKGRhdGEpLCBzaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWQpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnJlc29s
dmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCkBA
IC03NSw3ICs3NSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoVW5yZWdp
c3RyYXRpb25SZXN1bHQoYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsCiAgICAgQVNTRVJUKCFtX2Nv
bXBsZXRlZCk7CiAKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7Ci0gICAgbV9jbGllbnQtPmpvYlJl
c29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KCp0aGlzLCB1bnJlZ2lzdHJhdGlvblJlc3Vs
dCk7CisgICAgbV9jbGllbnQuam9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoKnRo
aXMsIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpz
dGFydFNjcmlwdEZldGNoKEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQb2xpY3kpCkBAIC04Myw3
ICs4Myw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6c3RhcnRTY3JpcHRGZXRjaChGZXRjaE9w
dGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5KQogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0
cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAK
LSAgICBtX2NsaWVudC0+c3RhcnRTY3JpcHRGZXRjaEZvckpvYigqdGhpcywgY2FjaGVQb2xpY3kp
OworICAgIG1fY2xpZW50LnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoKnRoaXMsIGNhY2hlUG9saWN5
KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpmZXRjaFNjcmlwdFdpdGhDb250ZXh0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQ
b2xpY3kpCkBAIC0xMTQsMTMgKzExNCwxNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJKb2I6OmRpZFJl
Y2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogCiAg
ICAgLy8gRXh0cmFjdCBhIE1JTUUgdHlwZSBmcm9tIHRoZSByZXNwb25zZSdzIGhlYWRlciBsaXN0
LiBJZiB0aGlzIE1JTUUgdHlwZSAoaWdub3JpbmcgcGFyYW1ldGVycykgaXMgbm90IGEgSmF2YVNj
cmlwdCBNSU1FIHR5cGUsIHRoZW46CiAgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZEphdmFTY3JpcHRNSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKSkgeworICAgICAgICBt
X3NjcmlwdExvYWRlci0+Y2FuY2VsKCk7CisgICAgICAgIG1fc2NyaXB0TG9hZGVyID0gbnVsbHB0
cjsKKwogICAgICAgICAvLyBJbnZva2UgUmVqZWN0IEpvYiBQcm9taXNlIHdpdGggam9iIGFuZCAi
U2VjdXJpdHlFcnJvciIgRE9NRXhjZXB0aW9uLgogICAgICAgICBFeGNlcHRpb24gZXhjZXB0aW9u
IHsgU2VjdXJpdHlFcnJvciwgIk1JTUUgVHlwZSBpcyBub3QgYSBKYXZhU2NyaXB0IE1JTUUgdHlw
ZSJfcyB9OwogICAgICAgICAvLyBBc3luY2hyb25vdXNseSBjb21wbGV0ZSB0aGVzZSBzdGVwcyB3
aXRoIGEgbmV0d29yayBlcnJvci4KICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvciB7IGVycm9y
RG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCAiVW5leHBlY3RlZCBNSU1F
IHR5cGUiX3MgfTsKLSAgICAgICAgbV9jbGllbnQtPmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoKnRo
aXMsIFdURk1vdmUoZXJyb3IpLCBXVEZNb3ZlKGV4Y2VwdGlvbikpOwotICAgICAgICBtX3Njcmlw
dExvYWRlciA9IG51bGxwdHI7CisgICAgICAgIG1fY2xpZW50LmpvYkZhaWxlZExvYWRpbmdTY3Jp
cHQoKnRoaXMsIFdURk1vdmUoZXJyb3IpLCBXVEZNb3ZlKGV4Y2VwdGlvbikpOworICAgICAgICBy
ZXR1cm47CiAgICAgfQorCiAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJBbGxvd2VkID0gcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZXJ2aWNlV29ya2VyQWxsb3dlZCk7
CiAgICAgU3RyaW5nIG1heFNjb3BlU3RyaW5nOwogICAgIGlmIChzZXJ2aWNlV29ya2VyQWxsb3dl
ZC5pc051bGwoKSkgewpAQCAtMTMxLDEzICsxMzUsMTcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9i
OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYKICAgICAgICAgYXV0byBtYXhTY29wZSA9IFVSTChtX2pvYkRhdGEuc2NyaXB0VVJMLCBzZXJ2
aWNlV29ya2VyQWxsb3dlZCk7CiAgICAgICAgIG1heFNjb3BlU3RyaW5nID0gbWF4U2NvcGUucGF0
aCgpOwogICAgIH0KKwogICAgIFN0cmluZyBzY29wZVN0cmluZyA9IG1fam9iRGF0YS5zY29wZVVS
TC5wYXRoKCk7Ci0gICAgaWYgKCFzY29wZVN0cmluZy5zdGFydHNXaXRoKG1heFNjb3BlU3RyaW5n
KSkgewotICAgICAgICBFeGNlcHRpb24gZXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlNjb3Bl
IFVSTCBzaG91bGQgc3RhcnQgd2l0aCB0aGUgZ2l2ZW4gc2NyaXB0IFVSTCJfcyB9OwotICAgICAg
ICBSZXNvdXJjZUVycm9yIGVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVz
cG9uc2UudXJsKCksICJTY29wZSBVUkwgc2hvdWxkIHN0YXJ0IHdpdGggdGhlIGdpdmVuIHNjcmlw
dCBVUkwiX3MgfTsKLSAgICAgICAgbV9jbGllbnQtPmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoKnRo
aXMsIFdURk1vdmUoZXJyb3IpLCBXVEZNb3ZlKGV4Y2VwdGlvbikpOwotICAgICAgICBtX3Njcmlw
dExvYWRlciA9IG51bGxwdHI7Ci0gICAgfQorICAgIGlmIChzY29wZVN0cmluZy5zdGFydHNXaXRo
KG1heFNjb3BlU3RyaW5nKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zY3JpcHRMb2FkZXIt
PmNhbmNlbCgpOworICAgIG1fc2NyaXB0TG9hZGVyID0gbnVsbHB0cjsKKworICAgIEV4Y2VwdGlv
biBleGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiU2NvcGUgVVJMIHNob3VsZCBzdGFydCB3aXRo
IHRoZSBnaXZlbiBzY3JpcHQgVVJMIl9zIH07CisgICAgUmVzb3VyY2VFcnJvciBlcnJvciB7IGVy
cm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCAiU2NvcGUgVVJMIHNo
b3VsZCBzdGFydCB3aXRoIHRoZSBnaXZlbiBzY3JpcHQgVVJMIl9zIH07CisgICAgbV9jbGllbnQu
am9iRmFpbGVkTG9hZGluZ1NjcmlwdCgqdGhpcywgV1RGTW92ZShlcnJvciksIFdURk1vdmUoZXhj
ZXB0aW9uKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQoKQpA
QCAtMTQ1LDE1ICsxNTMsMTcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpub3RpZnlGaW5pc2hl
ZCgpCiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKICAgICBBU1NFUlQobV9zY3JpcHRMb2FkZXIpOwogICAgIAotICAgIGlmICghbV9zY3Jp
cHRMb2FkZXItPmZhaWxlZCgpKQotICAgICAgICBtX2NsaWVudC0+am9iRmluaXNoZWRMb2FkaW5n
U2NyaXB0KCp0aGlzLCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCksIG1fc2NyaXB0TG9hZGVyLT5j
b250ZW50U2VjdXJpdHlQb2xpY3koKSwgbV9zY3JpcHRMb2FkZXItPnJlZmVycmVyUG9saWN5KCkp
OwotICAgIGVsc2UgewotICAgICAgICBhdXRvJiBlcnJvciA9ICBtX3NjcmlwdExvYWRlci0+ZXJy
b3IoKTsKLSAgICAgICAgQVNTRVJUKCFlcnJvci5pc051bGwoKSk7Ci0gICAgICAgIG1fY2xpZW50
LT5qb2JGYWlsZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBlcnJvciwgV1RGOjpudWxsb3B0KTsKKyAg
ICBhdXRvIHNjcmlwdExvYWRlciA9IFdURk1vdmUobV9zY3JpcHRMb2FkZXIpOworCisgICAgaWYg
KCFzY3JpcHRMb2FkZXItPmZhaWxlZCgpKSB7CisgICAgICAgIG1fY2xpZW50LmpvYkZpbmlzaGVk
TG9hZGluZ1NjcmlwdCgqdGhpcywgc2NyaXB0TG9hZGVyLT5zY3JpcHQoKSwgc2NyaXB0TG9hZGVy
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSwgc2NyaXB0TG9hZGVyLT5yZWZlcnJlclBvbGljeSgp
KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2NyaXB0TG9hZGVyID0gbnVsbHB0
cjsKKyAgICBhdXRvJiBlcnJvciA9IHNjcmlwdExvYWRlci0+ZXJyb3IoKTsKKyAgICBBU1NFUlQo
IWVycm9yLmlzTnVsbCgpKTsKKworICAgIG1fY2xpZW50LmpvYkZhaWxlZExvYWRpbmdTY3JpcHQo
KnRoaXMsIGVycm9yLCBFeGNlcHRpb24geyBlcnJvci5pc0FjY2Vzc0NvbnRyb2woKSA/IFNlY3Vy
aXR5RXJyb3IgOiBUeXBlRXJyb3IsICJTY3JpcHQgbG9hZCBmYWlsZWQiX3MgfSk7CiB9CiAKIHZv
aWQgU2VydmljZVdvcmtlckpvYjo6Y2FuY2VsUGVuZGluZ0xvYWQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmgKaW5kZXggMGFiZDIxOTQz
ZTFmODAzNjliMTk2NzI2ZmU1Y2IwZGIxYWI2YjVkYS4uYTJkOTc2MzY3ZTg0ZTM5NDY4NTE3NzBl
YWFhOWJiMmMwODcwN2E4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYi5oCkBAIC00NiwxMyArNDYsOSBAQCBjbGFzcyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OwogZW51bSBjbGFzcyBTZXJ2aWNlV29ya2VySm9iVHlwZTsKIHN0cnVjdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTsKIAotY2xhc3MgU2VydmljZVdvcmtlckpvYiA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VySm9iPiwgcHVibGljIFdv
cmtlclNjcmlwdExvYWRlckNsaWVudCB7CitjbGFzcyBTZXJ2aWNlV29ya2VySm9iIDogcHVibGlj
IFdvcmtlclNjcmlwdExvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTZXJ2
aWNlV29ya2VySm9iPiBjcmVhdGUoU2VydmljZVdvcmtlckpvYkNsaWVudCYgY2xpZW50LCBSZWZQ
dHI8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9i
RGF0YSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcnZpY2VXb3JrZXJK
b2IoY2xpZW50LCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7Ci0gICAgfQot
CisgICAgU2VydmljZVdvcmtlckpvYihTZXJ2aWNlV29ya2VySm9iQ2xpZW50JiwgUmVmUHRyPERl
ZmVycmVkUHJvbWlzZT4mJiwgU2VydmljZVdvcmtlckpvYkRhdGEmJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgflNlcnZpY2VXb3JrZXJKb2IoKTsKIAogICAgIHZvaWQgZmFpbGVkV2l0aEV4Y2VwdGlv
bihjb25zdCBFeGNlcHRpb24mKTsKQEAgLTY0LDcgKzYwLDggQEAgcHVibGljOgogICAgIElkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fam9iRGF0YS5pZGVudGlmaWVyKCku
am9iSWRlbnRpZmllcjsgfQogCiAgICAgY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2pvYkRhdGE7IH0KLSAgICBEZWZlcnJlZFByb21pc2UqIHByb21p
c2UoKSB7IHJldHVybiBtX3Byb21pc2UuZ2V0KCk7IH0KKyAgICBib29sIGhhc1Byb21pc2UoKSBj
b25zdCB7IHJldHVybiAhIW1fcHJvbWlzZTsgfQorICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+
IHRha2VQcm9taXNlKCkgeyByZXR1cm4gV1RGTW92ZShtX3Byb21pc2UpOyB9CiAKICAgICB2b2lk
IGZldGNoU2NyaXB0V2l0aENvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEZldGNoT3B0
aW9uczo6Q2FjaGUpOwogCkBAIC03MywxMyArNzAsMTEgQEAgcHVibGljOgogICAgIHZvaWQgY2Fu
Y2VsUGVuZGluZ0xvYWQoKTsKIAogcHJpdmF0ZToKLSAgICBTZXJ2aWNlV29ya2VySm9iKFNlcnZp
Y2VXb3JrZXJKb2JDbGllbnQmLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmLCBTZXJ2aWNlV29y
a2VySm9iRGF0YSYmKTsKLQogICAgIC8vIFdvcmtlclNjcmlwdExvYWRlckNsaWVudAogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5hbDsK
IAotICAgIFJlZjxTZXJ2aWNlV29ya2VySm9iQ2xpZW50PiBtX2NsaWVudDsKKyAgICBTZXJ2aWNl
V29ya2VySm9iQ2xpZW50JiBtX2NsaWVudDsKICAgICBTZXJ2aWNlV29ya2VySm9iRGF0YSBtX2pv
YkRhdGE7CiAgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9wcm9taXNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkNsaWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGll
bnQuaAppbmRleCA0ZDQzMzE0Y2Y3OTgxMjIyYjA5NmIxODRiMDU4NmI2MWI3ZjIwODNiLi42YzQ4
MThlZjhmYmY0ZjFjMDhjOTJjYmQ1MzQ0MDdhZTBhZTQ5MDU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKQEAg
LTUwLDEyICs1MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgam9iUmVzb2x2ZWRXaXRo
VW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpvYiYsIGJvb2wgdW5yZWdpc3RyYXRp
b25SZXN1bHQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvckpvYihT
ZXJ2aWNlV29ya2VySm9iJiwgRmV0Y2hPcHRpb25zOjpDYWNoZSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFN0
cmluZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMm
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGpv
YkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJy
b3ImLCBPcHRpb25hbDxFeGNlcHRpb24+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgam9iRmFp
bGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgUmVzb3VyY2VFcnJvciYs
IEV4Y2VwdGlvbiYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIFNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcmVm
KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDdjNmYwNGVmN2Ux
ZmFiY2Q4ZDM5N2Y0NDcyZmE1OWM0MzFiNDlhNmEuLmM0ZTI2ZjFlODQ3N2Q3ZmZmNmI4YjRjZWU4
YmJjN2U1MGE0ZjUwNDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDE5LTAxLTI1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTZXJ2aWNlV29ya2VySm9iIHNob3VsZCBub3RpZnkgaXRzIGNsaWVudCBpbiBjYXNl
IGl0cyBqb2IgaXMgY2FuY2VsbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTM3NDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3NDk4MTk2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZWdpc3RyYXRpb24t
c2VjdXJpdHktZXJyb3IuaHR0cHMtZXhwZWN0ZWQudHh0OgorCiAyMDE5LTAxLTIyICBPcmlvbCBC
cnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1sb2dpY2FsXSBJbXBs
ZW1lbnQgZmxvdy1yZWxhdGl2ZSBtYXJnaW4sIHBhZGRpbmcgYW5kIGJvcmRlciBzaG9ydGhhbmRz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZWdpc3RyYXRpb24tc2VjdXJpdHktZXJy
b3IuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVnaXN0cmF0aW9uLXNl
Y3VyaXR5LWVycm9yLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAzOGQwNjc4ZmFmMzE0MWQ0YmNh
ZTUxZjM1YjM2ZTVkYjc0ZmRhOTIyLi5hYTc1ZWM5Mzg0NDcwMGY3NTdjZGM5OWRkMzYyMTA2YTRm
ZWM5OGE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZWdpc3RyYXRpb24tc2VjdXJp
dHktZXJyb3IuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3JlZ2lz
dHJhdGlvbi1zZWN1cml0eS1lcnJvci5odHRwcy1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw3IEBA
IFBBU1MgUmVnaXN0ZXJpbmcgc2FtZSBzY29wZSBhcyB0aGUgc2NyaXB0IGRpcmVjdG9yeSB3aXRo
b3V0IHRoZSBsYXN0IHNsYXNoCiBQQVNTIFJlZ2lzdHJhdGlvbiBzY29wZSBvdXRzaWRlIHRoZSBz
Y3JpcHQgZGlyZWN0b3J5IAogUEFTUyBSZWdpc3RlcmluZyBzY29wZSBvdXRzaWRlIGRvbWFpbiAK
IFBBU1MgUmVnaXN0ZXJpbmcgc2NyaXB0IG91dHNpZGUgZG9tYWluIAotRkFJTCBSZWdpc3Rlcmlu
ZyByZWRpcmVjdGVkIHNjcmlwdCBhc3NlcnRfdGhyb3dzOiBSZWdpc3RyYXRpb24gb2YgcmVkaXJl
Y3RlZCBzY3JpcHQgc2hvdWxkIGZhaWwuIGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7IHRocm93IGUg
fSIgdGhyZXcgb2JqZWN0ICJUeXBlRXJyb3I6IFNjcmlwdCBVUkwgaHR0cHM6Ly9sb2NhbGhvc3Q6
OTQ0My9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3JlZGlyZWN0LnB5
P1JlZGlyZWN0PSUyRnJlc291cmNlcyUyRnJlZ2lzdHJhdGlvbi13b3JrZXIuanMgZmV0Y2ggcmVz
dWx0ZWQgaW4gZXJyb3I6IE5vdCBhbGxvd2VkIHRvIGZvbGxvdyBhIHJlZGlyZWN0aW9uIHdoaWxl
IGxvYWRpbmcgaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0My9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvcmVzb3VyY2VzL3JlZGlyZWN0LnB5P1JlZGlyZWN0PSUyRnJlc291cmNlcyUyRnJlZ2lz
dHJhdGlvbi13b3JrZXIuanMiIHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9uIFNlY3VyaXR5RXJy
b3I6IHByb3BlcnR5ICJjb2RlIiBpcyBlcXVhbCB0byB1bmRlZmluZWQsIGV4cGVjdGVkIDE4CitQ
QVNTIFJlZ2lzdGVyaW5nIHJlZGlyZWN0ZWQgc2NyaXB0IAogUEFTUyBTY29wZSBpbmNsdWRpbmcg
cGFyZW50LXJlZmVyZW5jZSBhbmQgbm90IHVuZGVyIHRoZSBzY3JpcHQgZGlyZWN0b3J5IAogUEFT
UyBTY3JpcHQgVVJMIGluY2x1ZGluZyBjb25zZWN1dGl2ZSBzbGFzaGVzIAogUEFTUyBTY3JpcHQg
VVJMIGlzIHNhbWUtb3JpZ2luIGZpbGVzeXN0ZW06IFVSTCAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360360</attachid>
            <date>2019-01-28 11:19:45 -0800</date>
            <delta_ts>2019-01-30 12:01:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193747-20190128111940.patch</filename>
            <type>text/plain</type>
            <size>29803</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZhM2EzYjU1MmJlZTJm
ZjI2MzY3YWQ3ODY2YjQ3YWE0MDU2NGM0MC4uMjQyODg2Njc2NTdmYzUwMTc1NjA3YjM2MTM0ZTUx
YjhlMTY1YmYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE5LTAxLTI4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTZXJ2aWNl
V29ya2VySm9iIG1hbmFnZW1lbnQgYnkgU2VydmljZVdvcmtlckNvbnRhaW5lciB0byBtYWtlIGl0
IG1vcmUgbWVtb3J5IHNhZmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5Mzc0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDc0OTgxOTY+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBTZXJ2aWNl
V29ya2VySm9iIGJlIG5vIGxvbmdlciByZWYgY291bnRlZC4KKyAgICAgICAgSW5zdGVhZCBpdHMg
bGlmZXRpbWUgaXMgZnVsbHkgY29udHJvbGxlZCBieSBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLgor
CisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IGEgZmFpbGluZyBsb2FkIHdpbGwgcmVtb3ZlIHRoZSBq
b2IgZnJvbSBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIGpvYiBtYXAuCisgICAgICAgIFRoaXMgYWxs
b3dzIHRvIGVuc3VyZSB0aGF0IHRoZXNlIGpvYnMgZG8gbm90IHN0YXkgZm9yZXZlci4KKyAgICAg
ICAgQmVmb3JlIHRoZSBwYXRjaCwgdGhlIGpvYnMgbWFwIHdhcyBuZXZlciBjbGVhcmVkLCB3aGlj
aCBpcyBjcmVhdGluZyBhIHJlZiBjeWNsZSB3aGVuZXZlciBhIGpvYiBpcyBub3Qgc3VjY2VzZnVs
bC4KKworICAgICAgICBCZWZvcmUgdGhlIHBhdGNoLCB1bnNldFBlbmRpbmdBY3Rpdml0eSB3YXMg
b25seSBjYWxsZWQgZm9yIHN1Y2Nlc3NmdWwgam9icyBmaW5pc2hpbmcuCisgICAgICAgIEluIGNh
c2Ugb2YgZmFpbGluZyBsb2FkcywgU2VydmljZVdvcmtlckNvbnRhaW5lciB3b3VsZCBsZWFrLgor
ICAgICAgICBNYWtlIHN1cmUgdGhhdCBzZXRQZW5kaW5nQWN0aXZpdHkvdW5zZXRQZW5kaW5nQWN0
aXZpdHkgaXMgYmFsYW5jZWQgYnkgc3RvcmluZworICAgICAgICBhIHBlbmRpbmcgYWN0aXZpdHkg
aW4gdGhlIGpvYiBtYXAgbmV4dCB0byB0aGUgam9iLgorCisgICAgICAgIFdoZW4gU2VydmljZVdv
cmtlckNvbnRhaW5lciBpcyBzdG9wcGVkLCBub3RpZnkgdGhhdCBhbGwgam9icyBhcmUgY2FuY2Vs
bGVkIHRvIE5ldHdvcmtQcm9jZXNzLgorICAgICAgICBUaGlzIG1ha2VzIHRoZXNlIGpvYnMgaW4g
TmV0d29ya1Byb2Nlc3Mtc2lkZSB0byBub3Qgc3RheSB1bnRpbCB0aGUgY29ycmVzcG9uZGluZyBX
ZWJQcm9jZXNzIGlzIGdvbmUuCisKKyAgICAgICAgU2ltcGxpZnkgU2VydmljZVdvcmtlckpvYiBw
cm9taXNlIHJlamVjdGlvbiBoYW5kbGluZyBzbyB0aGF0IGl0IGlzIGNsZWFyIHdoZW4gcHJvbWlz
ZSBpcyByZWplY3RlZCBhbmQgd2hlbiBpdCBpcyBub3QuCisgICAgICAgIFVwZGF0ZSB0eXBlIG9m
IGV4Y2VwdGlvbiB0byBiZSBTZWN1cml0eUVycm9yIHdoZW4gbG9hZCBmYWlscyBkdWUgdG8gQWNj
ZXNzQ29udHJvbC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdp
c3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2No
ZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9i
RmFpbGVkV2l0aEV4Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVk
TG9hZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojpqb2JEaWRGaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5l
cjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2Ip
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6ZmFpbGVkV2l0aEV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpyZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRoVW5yZWdpc3Ry
YXRpb25SZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6c3RhcnRT
Y3JpcHRGZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6bm90aWZ5
RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6Y2FuY2VsUGVu
ZGluZ0xvYWQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmg6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpoYXNQcm9taXNlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OnRha2VQcm9taXNlKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKwogMjAxOS0w
MS0yOCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW01h
cmdpbkNvbGxhcHNpbmddW1F1aXJrc10gUXVpcmsgbWFyZ2luIHZhbHVlcyBnZXQgcHJvcGFnYXRl
ZCB0aHJvdWdoIG1hcmdpbiBjb2xsYXBzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggNzQ0MmRk
NDU1MzdmMWY0ZjRhZWFkNjI2NTJlMzZhNzQ2MDlkOTkwYi4uYjM3ZGE0NzVlMjg2MzczN2NjN2I2
MjcxNTZhOTFjMzNjZTA2MWVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtMTc2LDcgKzE3Niw3
IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6YWRkUmVnaXN0cmF0aW9uKGNvbnN0IFN0
cmluZyYgcmVsYXRpdmVTY3JpcHRVUkwsIGNvCiAgICAgam9iRGF0YS50eXBlID0gU2VydmljZVdv
cmtlckpvYlR5cGU6OlJlZ2lzdGVyOwogICAgIGpvYkRhdGEucmVnaXN0cmF0aW9uT3B0aW9ucyA9
IG9wdGlvbnM7CiAKLSAgICBzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iOjpjcmVhdGUoKnRo
aXMsIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpv
YihzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21p
c2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBSZWY8RGVm
ZXJyZQogCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlbW92ZVJlZ2lz
dHJhdGlvbjogVW5yZWdpc3RlcmluZyBzZXJ2aWNlIHdvcmtlci4gSm9iIElEOiAlIiBQUkl1NjQs
IGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKLSAgICBz
Y2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iOjpjcmVhdGUoKnRoaXMsIFdURk1vdmUocHJvbWlz
ZSksIFdURk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihzdGQ6Om1ha2VfdW5pcXVl
PFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRh
dGEpKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0
aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBXb3JrZXJUeXBl
LCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0yMjgsMjIgKzIyOCwyMiBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBV
UkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmCiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgicmVtb3ZlUmVnaXN0cmF0aW9uOiBVcGRhdGluZyBzZXJ2aWNlIHdvcmtlci4gSm9i
IElEOiAlIiBQUkl1NjQsIGpvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXIudG9VSW50
NjQoKSk7CiAKLSAgICBzY2hlZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iOjpjcmVhdGUoKnRoaXMs
IFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUoam9iRGF0YSkpKTsKKyAgICBzY2hlZHVsZUpvYihz
dGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2I+KCp0aGlzLCBXVEZNb3ZlKHByb21pc2Up
LCBXVEZNb3ZlKGpvYkRhdGEpKSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
c2NoZWR1bGVKb2IoUmVmPFNlcnZpY2VXb3JrZXJKb2I+JiYgam9iKQordm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpzY2hlZHVsZUpvYihzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckpv
Yj4mJiBqb2IpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFk
LnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAogICAgIEFTU0VSVChtX3N3
Q29ubmVjdGlvbik7Ci0KLSAgICBzZXRQZW5kaW5nQWN0aXZpdHkoKnRoaXMpOworICAgIEFTU0VS
VCghaXNTdG9wcGVkKCkpOwogCiAgICAgYXV0byYgam9iRGF0YSA9IGpvYi0+ZGF0YSgpOwotICAg
IGF1dG8gcmVzdWx0ID0gbV9qb2JNYXAuYWRkKGpvYi0+aWRlbnRpZmllcigpLCBXVEZNb3ZlKGpv
YikpOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CisgICAg
YXV0byBqb2JJZGVudGlmaWVyID0gam9iLT5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKCFtX2pv
Yk1hcC5jb250YWlucyhqb2JJZGVudGlmaWVyKSk7CisgICAgbV9qb2JNYXAuYWRkKGpvYklkZW50
aWZpZXIsIE9uZ29pbmdKb2IgeyBXVEZNb3ZlKGpvYiksIG1ha2VQZW5kaW5nQWN0aXZpdHkoKnRo
aXMpIH0pOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbY29ubmVjdGlvbiA9IG1fc3dDb25uZWN0
aW9uLCBjb250ZXh0SWRlbnRpZmllciA9IHRoaXMtPmNvbnRleHRJZGVudGlmaWVyKCksIGpvYkRh
dGEgPSBqb2JEYXRhLmlzb2xhdGVkQ29weSgpXSB7CiAgICAgICAgIGNvbm5lY3Rpb24tPnNjaGVk
dWxlSm9iKGNvbnRleHRJZGVudGlmaWVyLCBqb2JEYXRhKTsKQEAgLTM4NSwyMCArMzg1LDIxIEBA
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2
aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0CiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRy
KCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKICNlbmRpZgogCi0gICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShqb2IucHJvbWlzZSgpIHx8IGpvYi5kYXRhKCkudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9i
VHlwZTo6VXBkYXRlLCAiT25seSBzb2Z0IHVwZGF0ZXMgaGF2ZSBubyBwcm9taXNlIik7CisgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShqb2IuaGFzUHJvbWlzZSgpIHx8IGpvYi5kYXRhKCkudHlwZSA9
PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VXBkYXRlLCAiT25seSBzb2Z0IHVwZGF0ZXMgaGF2ZSBu
byBwcm9taXNlIik7CiAKICAgICBhdXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlz
LCAmam9iXSB7Ci0gICAgICAgIGpvYkRpZEZpbmlzaChqb2IpOworICAgICAgICBkZXN0cm95Sm9i
KGpvYik7CiAgICAgfSk7CiAKICAgICBDT05UQUlORVJfUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRCgiam9iRmFpbGVkV2l0aEV4Y2VwdGlvbjogSm9iICUiIFBSSXU2NCAiIGZhaWxlZCB3aXRo
IGVycm9yICVzIiwgam9iLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBleGNlcHRpb24ubWVzc2Fn
ZSgpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgaWYgKCFqb2IucHJvbWlzZSgpKQorICAgIGF1dG8g
cHJvbWlzZSA9IGpvYi50YWtlUHJvbWlzZSgpOworICAgIGlmICghcHJvbWlzZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpIHsKLSAgICAgICAgY29udGV4dC0+cG9zdFRhc2soW2pvYiA9IG1ha2VSZWYoam9iKSwgZXhj
ZXB0aW9uXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICAgICAgam9iLT5wcm9t
aXNlKCktPnJlamVjdChleGNlcHRpb24pOworICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhbcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGV4Y2VwdGlvbl0oYXV0byYpIG11dGFibGUgeworICAg
ICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KGV4Y2VwdGlvbik7CiAgICAgICAgIH0pOwogICAgIH0K
IH0KQEAgLTQxOCwxMCArNDE5LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9i
UmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwKICNpZm5kZWYg
TkRFQlVHCiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3Vy
cmVudCgpKTsKICNlbmRpZgotICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoam9iLnByb21pc2UoKSB8
fCBqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSwgIk9ubHkg
c29mdCB1cGRhdGVzIGhhdmUgbm8gcHJvbWlzZSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
am9iLmhhc1Byb21pc2UoKSB8fCBqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5
cGU6OlVwZGF0ZSwgIk9ubHkgc29mdCB1cGRhdGVzIGhhdmUgbm8gcHJvbWlzZSIpOwogCiAgICAg
YXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0gewotICAgICAgICBq
b2JEaWRGaW5pc2goam9iKTsKKyAgICAgICAgZGVzdHJveUpvYihqb2IpOwogICAgIH0pOwogCiAg
ICAgaWYgKGpvYi5kYXRhKCkudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIp
CkBAIC00NDYsMTMgKzQ0NywxNCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJl
c29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoIWpvYi5wcm9taXNlKCkpIHsKKyAgICBhdXRvIHByb21p
c2UgPSBqb2IudGFrZVByb21pc2UoKTsKKyAgICBpZiAoIXByb21pc2UpIHsKICAgICAgICAgaWYg
KG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkKQogICAgICAgICAgICAgbm90aWZ5V2hlblJlc29s
dmVkSWZOZWVkZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgam9iID0gbWFrZVJlZihqb2IpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgbm90aWZ5V2hl
blJlc29sdmVkSWZOZWVkZWQgPSBXVEZNb3ZlKG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgam9iSWRlbnRpZmllciA9IGpvYi5p
ZGVudGlmaWVyKCksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBub3RpZnlXaGVuUmVzb2x2ZWRJZk5l
ZWRlZCA9IFdURk1vdmUobm90aWZ5V2hlblJlc29sdmVkSWZOZWVkZWQpXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGlzU3RvcHBlZCgpIHx8
ICFjb250ZXh0LnNlc3Npb25JRCgpLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgaWYgKG5vdGlm
eVdoZW5SZXNvbHZlZElmTmVlZGVkKQogICAgICAgICAgICAgICAgIG5vdGlmeVdoZW5SZXNvbHZl
ZElmTmVlZGVkKCk7CkBAIC00NjEsMTUgKzQ2MywxNSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2Is
CiAKICAgICAgICAgYXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
OjpnZXRPckNyZWF0ZShjb250ZXh0LCAqdGhpcywgV1RGTW92ZShkYXRhKSk7CiAKLSAgICAgICAg
Q09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImpvYlJlc29sdmVkV2l0aFJlZ2lzdHJh
dGlvbjogUmVzb2x2aW5nIHByb21pc2UgZm9yIGpvYiAlIiBQUkl1NjQgIi4gUmVnaXN0cmF0aW9u
IElEOiAlIiBQUkl1NjQsIGpvYi0+aWRlbnRpZmllcigpLnRvVUludDY0KCksIHJlZ2lzdHJhdGlv
bi0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBDT05UQUlORVJfUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiam9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uOiBSZXNvbHZpbmcgcHJv
bWlzZSBmb3Igam9iICUiIFBSSXU2NCAiLiBSZWdpc3RyYXRpb24gSUQ6ICUiIFBSSXU2NCwgam9i
SWRlbnRpZmllci50b1VJbnQ2NCgpLCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKIAogICAgICAgICBpZiAobm90aWZ5V2hlblJlc29sdmVkSWZOZWVkZWQpIHsKLSAgICAg
ICAgICAgIGpvYi0+cHJvbWlzZSgpLT53aGVuU2V0dGxlZChbbm90aWZ5V2hlblJlc29sdmVkSWZO
ZWVkZWQgPSBXVEZNb3ZlKG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkKV0geworICAgICAgICAg
ICAgcHJvbWlzZS0+d2hlblNldHRsZWQoW25vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkID0gV1RG
TW92ZShub3RpZnlXaGVuUmVzb2x2ZWRJZk5lZWRlZCldIHsKICAgICAgICAgICAgICAgICBub3Rp
ZnlXaGVuUmVzb2x2ZWRJZk5lZWRlZCgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBqb2ItPnByb21pc2UoKS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbj4+KFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CisgICAgICAgIHByb21pc2Ut
PnJlc29sdmU8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+PihXVEZNb3Zl
KHJlZ2lzdHJhdGlvbikpOwogICAgIH0pOwogfQogCkBAIC00NzksMTAgKzQ4MSwxMCBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVz
dWx0KFNlcnZpY2VXb3JrZXJKbwogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09
ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAotICAgIEFTU0VSVChqb2IucHJvbWlzZSgp
KTsKKyAgICBBU1NFUlQoam9iLmhhc1Byb21pc2UoKSk7CiAKICAgICBhdXRvIGd1YXJkID0gV1RG
OjptYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9iXSB7Ci0gICAgICAgIGpvYkRpZEZpbmlzaChqb2Ip
OworICAgICAgICBkZXN0cm95Sm9iKGpvYik7CiAgICAgfSk7CiAKICAgICBDT05UQUlORVJfUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiam9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQ6
IFVucmVnaXN0ZXIgam9iICUiIFBSSXU2NCAiIGZpbmlzaGVkLiBTdWNjZXNzPyAlZCIsIGpvYi5p
ZGVudGlmaWVyKCkudG9VSW50NjQoKSwgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwpAQCAtNDkzLDgg
KzQ5NSw4IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoVW5y
ZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpvCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBjb250ZXh0LT5wb3N0VGFzayhbam9iID0gbWFrZVJlZihqb2IpLCB1bnJlZ2lzdHJh
dGlvblJlc3VsdF0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewotICAgICAgICBq
b2ItPnByb21pc2UoKS0+cmVzb2x2ZTxJRExCb29sZWFuPih1bnJlZ2lzdHJhdGlvblJlc3VsdCk7
CisgICAgY29udGV4dC0+cG9zdFRhc2soW3Byb21pc2UgPSBqb2IudGFrZVByb21pc2UoKSwgdW5y
ZWdpc3RyYXRpb25SZXN1bHRdKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZTxJRExCb29sZWFuPih1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CiAgICAgfSk7CiB9CiAKQEAg
LTUwOSwxMCArNTExLDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydFNjcmlw
dEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgRmV0Y2gKICAgICBhdXRvKiBjb250
ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkgewogICAg
ICAgICBMT0dfRVJST1IoIlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJl
Z2lzdHJhdGlvbiBjYWxsZWQgYnV0IHRoZSBjb250YWluZXIncyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0IGlzIGdvbmUiKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29ubmVjdGlvbiA9IG1f
c3dDb25uZWN0aW9uLCBqb2JJZGVudGlmaWVyID0gam9iLmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0
aW9uS2V5ID0gam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXkoKS5pc29sYXRlZENvcHkoKSwgc2Ny
aXB0VVJMID0gam9iLmRhdGEoKS5zY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAg
ICAgIGNvbm5lY3Rpb24tPmZhaWxlZEZldGNoaW5nU2NyaXB0KGpvYklkZW50aWZpZXIsIHJlZ2lz
dHJhdGlvbktleSwgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBzY3JpcHRVUkwsICJB
dHRlbXB0IHRvIGZldGNoIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCB3aXRoIG5vIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQiX3MgfSk7Ci0gICAgICAgIH0pOwotICAgICAgICBqb2JEaWRGaW5pc2goam9i
KTsKKyAgICAgICAgbm90aWZ5RmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9iLCB7IGVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIGpvYi5kYXRhKCkuc2NyaXB0VVJMLCAiQXR0ZW1wdCB0byBmZXRj
aCBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgd2l0aCBubyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Il9z
IH0pOworICAgICAgICBkZXN0cm95Sm9iKGpvYik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTUzMiwzMyArNTMyLDM3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmlu
aXNoZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uCiAgICAgfSk7CiB9
CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdChT
ZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBPcHRpb25h
bDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKQordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpq
b2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKIHsKICNpZm5kZWYgTkRFQlVH
CiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKICNlbmRpZgotICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoam9iLnByb21pc2UoKSB8fCBqb2Iu
ZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSwgIk9ubHkgc29mdCB1
cGRhdGVzIGhhdmUgbm8gcHJvbWlzZSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoam9iLmhh
c1Byb21pc2UoKSB8fCBqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVw
ZGF0ZSwgIk9ubHkgc29mdCB1cGRhdGVzIGhhdmUgbm8gcHJvbWlzZSIpOwogCiAgICAgQ09OVEFJ
TkVSX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImpvYkZpbmlzaGVkTG9hZGluZ1Njcmlw
dDogRmFpbGVkIHRvIGZldGNoIHNjcmlwdCBmb3Igam9iICUiIFBSSXU2NCAiLCBlcnJvcjogJXMi
LCBqb2IuaWRlbnRpZmllcigpLnRvVUludDY0KCksIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9u
KCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBpZiAoZXhjZXB0aW9uICYmIGpvYi5wcm9taXNlKCkp
Ci0gICAgICAgIGpvYi5wcm9taXNlKCktPnJlamVjdCgqZXhjZXB0aW9uKTsKKyAgICBpZiAoYXV0
byBwcm9taXNlID0gam9iLnRha2VQcm9taXNlKCkpCisgICAgICAgIHByb21pc2UtPnJlamVjdChX
VEZNb3ZlKGV4Y2VwdGlvbikpOwogCisgICAgbm90aWZ5RmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9i
LCBlcnJvcik7CisgICAgZGVzdHJveUpvYihqb2IpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6Om5vdGlmeUZhaWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpv
YiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CiAgICAgY2FsbE9uTWFpblRocmVhZChb
Y29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9uLCBqb2JJZGVudGlmaWVyID0gam9iLmlkZW50aWZp
ZXIoKSwgcmVnaXN0cmF0aW9uS2V5ID0gam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXkoKS5pc29s
YXRlZENvcHkoKSwgZXJyb3IgPSBlcnJvci5pc29sYXRlZENvcHkoKV0gewogICAgICAgICBjb25u
ZWN0aW9uLT5mYWlsZWRGZXRjaGluZ1NjcmlwdChqb2JJZGVudGlmaWVyLCByZWdpc3RyYXRpb25L
ZXksIGVycm9yKTsKICAgICB9KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpq
b2JEaWRGaW5pc2goU2VydmljZVdvcmtlckpvYiYgam9iKQordm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpkZXN0cm95Sm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIHsKICNpZm5kZWYgTkRF
QlVHCiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVu
dCgpKTsKICNlbmRpZgogCi0gICAgYXV0byB0YWtlbiA9IG1fam9iTWFwLnRha2Uoam9iLmlkZW50
aWZpZXIoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwgIXRha2VuIHx8IHRha2VuLT5wdHIo
KSA9PSAmam9iKTsKLQotICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KCp0aGlzKTsKKyAgICBBU1NF
UlQobV9qb2JNYXAuY29udGFpbnMoam9iLmlkZW50aWZpZXIoKSkpOworICAgIG1fam9iTWFwLnJl
bW92ZShqb2IuaWRlbnRpZmllcigpKTsKIH0KIAogU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpjb25uZWN0aW9uSWRlbnRpZmllcigpCkBAIC02MzMs
OCArNjM3LDExIEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RvcCgpCiAgICAgcmVt
b3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKICAgICBtX3BlbmRpbmdQcm9taXNlcy5jbGVhcigpOwog
ICAgIG1fcmVhZHlQcm9taXNlID0gbnVsbHB0cjsKLSAgICBmb3IgKGF1dG8mIGpvYiA6IG1fam9i
TWFwLnZhbHVlcygpKQotICAgICAgICBqb2ItPmNhbmNlbFBlbmRpbmdMb2FkKCk7CisgICAgYXV0
byBqb2JNYXAgPSBXVEZNb3ZlKG1fam9iTWFwKTsKKyAgICBmb3IgKGF1dG8mIG9uZ29pbmdKb2Ig
OiBqb2JNYXAudmFsdWVzKCkpIHsKKyAgICAgICAgbm90aWZ5RmFpbGVkRmV0Y2hpbmdTY3JpcHQo
Km9uZ29pbmdKb2Iuam9iLmdldCgpLCBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgb25nb2luZ0pvYi5qb2ItPmRhdGEoKS5zY3JpcHRVUkwsICJKb2IgY2FuY2Vs
bGVkIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24gfSk7CisgICAgICAgIG9u
Z29pbmdKb2Iuam9iLT5jYW5jZWxQZW5kaW5nTG9hZCgpOworICAgIH0KIH0KIAogRG9jdW1lbnRP
cldvcmtlcklkZW50aWZpZXIgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Y29udGV4dElkZW50aWZp
ZXIoKQpAQCAtNjQ5LDYgKzY1NiwxNCBAQCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpjb250ZXh0SWRlbnRpZmllcigpCiAgICAgcmV0dXJuIGRvd25j
YXN0PERvY3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS5pZGVudGlmaWVyKCk7CiB9
CiAKK1NlcnZpY2VXb3JrZXJKb2IqIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYihTZXJ2aWNl
V29ya2VySm9iSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBt
X2pvYk1hcC5maW5kKGlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX2pvYk1hcC5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1
ZS5qb2IuZ2V0KCk7Cit9CisKIGJvb2wgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6aXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCkgY29uc3QKIHsKICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5kZXggZmQ4YzA3ZDIyY2Y2MzQ5MmY4ZGU1
ODcxOGVjMzAyNjE0YTk2YTVjMS4uNjA4MThkZDA3NWVhNWM1MTE5OGUyMWZhMGY5ZTEwOTUzYWNj
OGZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC03NywyOCArNzcsMjYgQEAgcHVibGljOgogICAgIHZv
aWQgYWRkUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24mKTsKICAgICB2b2lk
IHJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJik7CiAKLSAgICBT
ZXJ2aWNlV29ya2VySm9iKiBqb2IoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIgaWRlbnRpZmll
cikgeyByZXR1cm4gbV9qb2JNYXAuZ2V0KGlkZW50aWZpZXIpOyB9CisgICAgU2VydmljZVdvcmtl
ckpvYiogam9iKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgc3RhcnRN
ZXNzYWdlcygpOwogCi0gICAgdm9pZCByZWYoKSBmaW5hbCB7IHJlZkV2ZW50VGFyZ2V0KCk7IH0K
LSAgICB2b2lkIGRlcmVmKCkgZmluYWwgeyBkZXJlZkV2ZW50VGFyZ2V0KCk7IH0KLQogICAgIGJv
b2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0b3BwZWQ7IH07CiAKICAgICBib29s
IGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZvaWQg
c2NoZWR1bGVKb2IoUmVmPFNlcnZpY2VXb3JrZXJKb2I+JiYpOworICAgIHZvaWQgc2NoZWR1bGVK
b2Ioc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJKb2I+JiYpOwogCiAgICAgdm9pZCBqb2JG
YWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBFeGNlcHRpb24mKSBm
aW5hbDsKICAgICB2b2lkIGpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2Vy
Sm9iJiwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiwgU2hvdWxkTm90aWZ5V2hlblJl
c29sdmVkKSBmaW5hbDsKICAgICB2b2lkIGpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVz
dWx0KFNlcnZpY2VXb3JrZXJKb2ImLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KSBmaW5hbDsK
ICAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYsIEZldGNo
T3B0aW9uczo6Q2FjaGUpIGZpbmFsOwogICAgIHZvaWQgam9iRmluaXNoZWRMb2FkaW5nU2NyaXB0
KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGlj
eSkgZmluYWw7Ci0gICAgdm9pZCBqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJK
b2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJiwgT3B0aW9uYWw8RXhjZXB0aW9uPiYmKSBmaW5hbDsK
KyAgICB2b2lkIGpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0
IFJlc291cmNlRXJyb3ImLCBFeGNlcHRpb24mJikgZmluYWw7CiAKLSAgICB2b2lkIGpvYkRpZEZp
bmlzaChTZXJ2aWNlV29ya2VySm9iJik7CisgICAgdm9pZCBub3RpZnlGYWlsZWRGZXRjaGluZ1Nj
cmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOworICAgIHZvaWQg
ZGVzdHJveUpvYihTZXJ2aWNlV29ya2VySm9iJik7CiAKICAgICB2b2lkIGRpZEZpbmlzaEdldFJl
Z2lzdHJhdGlvblJlcXVlc3QodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmKTsKICAgICB2b2lkIGRpZEZpbmlzaEdldFJl
Z2lzdHJhdGlvbnNSZXF1ZXN0KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpOwpAQCAtMTIxLDcgKzExOSwxMiBAQCBwcml2
YXRlOgogICAgIE5hdmlnYXRvckJhc2UmIG1fbmF2aWdhdG9yOwogCiAgICAgUmVmUHRyPFNXQ2xp
ZW50Q29ubmVjdGlvbj4gbV9zd0Nvbm5lY3Rpb247Ci0gICAgSGFzaE1hcDxTZXJ2aWNlV29ya2Vy
Sm9iSWRlbnRpZmllciwgUmVmPFNlcnZpY2VXb3JrZXJKb2I+PiBtX2pvYk1hcDsKKworICAgIHN0
cnVjdCBPbmdvaW5nSm9iIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJK
b2I+IGpvYjsKKyAgICAgICAgUmVmUHRyPFBlbmRpbmdBY3Rpdml0eTxTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyPj4gcGVuZGluZ0FjdGl2aXR5OworICAgIH07CisgICAgSGFzaE1hcDxTZXJ2aWNlV29y
a2VySm9iSWRlbnRpZmllciwgT25nb2luZ0pvYj4gbV9qb2JNYXA7CiAKICAgICBib29sIG1faXNT
dG9wcGVkIHsgZmFsc2UgfTsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKj4gbV9yZWdpc3RyYXRpb25zOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2IuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2Iu
Y3BwCmluZGV4IDcxZDFlNTI4MWM3MzU1NmRhNWVmODk3YjBhNDY4OTZiMTQ1NDRhOTAuLjAwOWI5
ODc3YjY2MzA1YTRkYTMxMDRhMDViMTRjNjJiNzdlMGVlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpmYWlsZWRXaXRoRXhjZXB0aW9uKGNvbnN0IEV4
Y2VwdGlvbiYgZXhjZXB0aW9uKQogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAgbV9j
b21wbGV0ZWQgPSB0cnVlOwotICAgIG1fY2xpZW50LT5qb2JGYWlsZWRXaXRoRXhjZXB0aW9uKCp0
aGlzLCBleGNlcHRpb24pOworICAgIG1fY2xpZW50LmpvYkZhaWxlZFdpdGhFeGNlcHRpb24oKnRo
aXMsIGV4Y2VwdGlvbik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVzb2x2ZWRXaXRo
UmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgZGF0YSwgU2hvdWxk
Tm90aWZ5V2hlblJlc29sdmVkIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkKQEAgLTY2LDcgKzY2
LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpyZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJgogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwog
CiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwotICAgIG1fY2xpZW50LT5qb2JSZXNvbHZlZFdpdGhS
ZWdpc3RyYXRpb24oKnRoaXMsIFdURk1vdmUoZGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZl
ZCk7CisgICAgbV9jbGllbnQuam9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKCp0aGlzLCBXVEZN
b3ZlKGRhdGEpLCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpOwogfQogCiB2b2lkIFNlcnZpY2VX
b3JrZXJKb2I6OnJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KGJvb2wgdW5yZWdpc3Ry
YXRpb25SZXN1bHQpCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVz
b2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsCiAg
ICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7Ci0gICAg
bV9jbGllbnQtPmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KCp0aGlzLCB1bnJl
Z2lzdHJhdGlvblJlc3VsdCk7CisgICAgbV9jbGllbnQuam9iUmVzb2x2ZWRXaXRoVW5yZWdpc3Ry
YXRpb25SZXN1bHQoKnRoaXMsIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKIH0KIAogdm9pZCBTZXJ2
aWNlV29ya2VySm9iOjpzdGFydFNjcmlwdEZldGNoKEZldGNoT3B0aW9uczo6Q2FjaGUgY2FjaGVQ
b2xpY3kpCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6c3RhcnRTY3Jp
cHRGZXRjaChGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5KQogICAgIEFTU0VSVChtX2Ny
ZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJUKCFt
X2NvbXBsZXRlZCk7CiAKLSAgICBtX2NsaWVudC0+c3RhcnRTY3JpcHRGZXRjaEZvckpvYigqdGhp
cywgY2FjaGVQb2xpY3kpOworICAgIG1fY2xpZW50LnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoKnRo
aXMsIGNhY2hlUG9saWN5KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpmZXRjaFNjcmlw
dFdpdGhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZldGNoT3B0aW9u
czo6Q2FjaGUgY2FjaGVQb2xpY3kpCkBAIC0xMTQsMTMgKzExNCwxNyBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJKb2I6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJgogCiAgICAgLy8gRXh0cmFjdCBhIE1JTUUgdHlwZSBmcm9tIHRoZSByZXNwb25z
ZSdzIGhlYWRlciBsaXN0LiBJZiB0aGlzIE1JTUUgdHlwZSAoaWdub3JpbmcgcGFyYW1ldGVycykg
aXMgbm90IGEgSmF2YVNjcmlwdCBNSU1FIHR5cGUsIHRoZW46CiAgICAgaWYgKCFNSU1FVHlwZVJl
Z2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgp
KSkgeworICAgICAgICBtX3NjcmlwdExvYWRlci0+Y2FuY2VsKCk7CisgICAgICAgIG1fc2NyaXB0
TG9hZGVyID0gbnVsbHB0cjsKKwogICAgICAgICAvLyBJbnZva2UgUmVqZWN0IEpvYiBQcm9taXNl
IHdpdGggam9iIGFuZCAiU2VjdXJpdHlFcnJvciIgRE9NRXhjZXB0aW9uLgogICAgICAgICBFeGNl
cHRpb24gZXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIk1JTUUgVHlwZSBpcyBub3QgYSBKYXZh
U2NyaXB0IE1JTUUgdHlwZSJfcyB9OwogICAgICAgICAvLyBBc3luY2hyb25vdXNseSBjb21wbGV0
ZSB0aGVzZSBzdGVwcyB3aXRoIGEgbmV0d29yayBlcnJvci4KICAgICAgICAgUmVzb3VyY2VFcnJv
ciBlcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCAi
VW5leHBlY3RlZCBNSU1FIHR5cGUiX3MgfTsKLSAgICAgICAgbV9jbGllbnQtPmpvYkZhaWxlZExv
YWRpbmdTY3JpcHQoKnRoaXMsIFdURk1vdmUoZXJyb3IpLCBXVEZNb3ZlKGV4Y2VwdGlvbikpOwot
ICAgICAgICBtX3NjcmlwdExvYWRlciA9IG51bGxwdHI7CisgICAgICAgIG1fY2xpZW50LmpvYkZh
aWxlZExvYWRpbmdTY3JpcHQoKnRoaXMsIFdURk1vdmUoZXJyb3IpLCBXVEZNb3ZlKGV4Y2VwdGlv
bikpOworICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgU3RyaW5nIHNlcnZpY2VXb3JrZXJB
bGxvd2VkID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpTZXJ2aWNl
V29ya2VyQWxsb3dlZCk7CiAgICAgU3RyaW5nIG1heFNjb3BlU3RyaW5nOwogICAgIGlmIChzZXJ2
aWNlV29ya2VyQWxsb3dlZC5pc051bGwoKSkgewpAQCAtMTMxLDEzICsxMzUsMTcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYKICAgICAgICAgYXV0byBtYXhTY29wZSA9IFVSTChtX2pvYkRhdGEu
c2NyaXB0VVJMLCBzZXJ2aWNlV29ya2VyQWxsb3dlZCk7CiAgICAgICAgIG1heFNjb3BlU3RyaW5n
ID0gbWF4U2NvcGUucGF0aCgpOwogICAgIH0KKwogICAgIFN0cmluZyBzY29wZVN0cmluZyA9IG1f
am9iRGF0YS5zY29wZVVSTC5wYXRoKCk7Ci0gICAgaWYgKCFzY29wZVN0cmluZy5zdGFydHNXaXRo
KG1heFNjb3BlU3RyaW5nKSkgewotICAgICAgICBFeGNlcHRpb24gZXhjZXB0aW9uIHsgU2VjdXJp
dHlFcnJvciwgIlNjb3BlIFVSTCBzaG91bGQgc3RhcnQgd2l0aCB0aGUgZ2l2ZW4gc2NyaXB0IFVS
TCJfcyB9OwotICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgcmVzcG9uc2UudXJsKCksICJTY29wZSBVUkwgc2hvdWxkIHN0YXJ0IHdpdGgg
dGhlIGdpdmVuIHNjcmlwdCBVUkwiX3MgfTsKLSAgICAgICAgbV9jbGllbnQtPmpvYkZhaWxlZExv
YWRpbmdTY3JpcHQoKnRoaXMsIFdURk1vdmUoZXJyb3IpLCBXVEZNb3ZlKGV4Y2VwdGlvbikpOwot
ICAgICAgICBtX3NjcmlwdExvYWRlciA9IG51bGxwdHI7Ci0gICAgfQorICAgIGlmIChzY29wZVN0
cmluZy5zdGFydHNXaXRoKG1heFNjb3BlU3RyaW5nKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9zY3JpcHRMb2FkZXItPmNhbmNlbCgpOworICAgIG1fc2NyaXB0TG9hZGVyID0gbnVsbHB0cjsK
KworICAgIEV4Y2VwdGlvbiBleGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiU2NvcGUgVVJMIHNo
b3VsZCBzdGFydCB3aXRoIHRoZSBnaXZlbiBzY3JpcHQgVVJMIl9zIH07CisgICAgUmVzb3VyY2VF
cnJvciBlcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgp
LCAiU2NvcGUgVVJMIHNob3VsZCBzdGFydCB3aXRoIHRoZSBnaXZlbiBzY3JpcHQgVVJMIl9zIH07
CisgICAgbV9jbGllbnQuam9iRmFpbGVkTG9hZGluZ1NjcmlwdCgqdGhpcywgV1RGTW92ZShlcnJv
ciksIFdURk1vdmUoZXhjZXB0aW9uKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6bm90
aWZ5RmluaXNoZWQoKQpAQCAtMTQ1LDE1ICsxNTMsMTcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9i
Ojpub3RpZnlGaW5pc2hlZCgpCiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKICAgICBBU1NFUlQobV9zY3JpcHRMb2FkZXIpOwogICAgIAot
ICAgIGlmICghbV9zY3JpcHRMb2FkZXItPmZhaWxlZCgpKQotICAgICAgICBtX2NsaWVudC0+am9i
RmluaXNoZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBtX3NjcmlwdExvYWRlci0+c2NyaXB0KCksIG1f
c2NyaXB0TG9hZGVyLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSwgbV9zY3JpcHRMb2FkZXItPnJl
ZmVycmVyUG9saWN5KCkpOwotICAgIGVsc2UgewotICAgICAgICBhdXRvJiBlcnJvciA9ICBtX3Nj
cmlwdExvYWRlci0+ZXJyb3IoKTsKLSAgICAgICAgQVNTRVJUKCFlcnJvci5pc051bGwoKSk7Ci0g
ICAgICAgIG1fY2xpZW50LT5qb2JGYWlsZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBlcnJvciwgV1RG
OjpudWxsb3B0KTsKKyAgICBhdXRvIHNjcmlwdExvYWRlciA9IFdURk1vdmUobV9zY3JpcHRMb2Fk
ZXIpOworCisgICAgaWYgKCFzY3JpcHRMb2FkZXItPmZhaWxlZCgpKSB7CisgICAgICAgIG1fY2xp
ZW50LmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdCgqdGhpcywgc2NyaXB0TG9hZGVyLT5zY3JpcHQo
KSwgc2NyaXB0TG9hZGVyLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSwgc2NyaXB0TG9hZGVyLT5y
ZWZlcnJlclBvbGljeSgpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc2NyaXB0
TG9hZGVyID0gbnVsbHB0cjsKKyAgICBhdXRvJiBlcnJvciA9IHNjcmlwdExvYWRlci0+ZXJyb3Io
KTsKKyAgICBBU1NFUlQoIWVycm9yLmlzTnVsbCgpKTsKKworICAgIG1fY2xpZW50LmpvYkZhaWxl
ZExvYWRpbmdTY3JpcHQoKnRoaXMsIGVycm9yLCBFeGNlcHRpb24geyBlcnJvci5pc0FjY2Vzc0Nv
bnRyb2woKSA/IFNlY3VyaXR5RXJyb3IgOiBUeXBlRXJyb3IsICJTY3JpcHQgbG9hZCBmYWlsZWQi
X3MgfSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6Y2FuY2VsUGVuZGluZ0xvYWQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2IuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmgK
aW5kZXggMGFiZDIxOTQzZTFmODAzNjliMTk2NzI2ZmU1Y2IwZGIxYWI2YjVkYS4uODFiODExYzA3
NTI5N2IwMDA2NGQ2NDJmZWI0NGQ5YTQ2NGM3MmRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZl
cnJlZC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VySm9iQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGEuaCIKQEAg
LTQ2LDEzICs0Nyw5IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBlbnVtIGNsYXNz
IFNlcnZpY2VXb3JrZXJKb2JUeXBlOwogc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhOwogCi1jbGFzcyBTZXJ2aWNlV29ya2VySm9iIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFNlcnZpY2VXb3JrZXJKb2I+LCBwdWJsaWMgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50IHsK
K2NsYXNzIFNlcnZpY2VXb3JrZXJKb2IgOiBwdWJsaWMgV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJKb2I+IGNyZWF0ZShTZXJ2
aWNlV29ya2VySm9iQ2xpZW50JiBjbGllbnQsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSwgU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtlckpvYihjbGllbnQsIFdURk1vdmUocHJvbWlz
ZSksIFdURk1vdmUoam9iRGF0YSkpKTsKLSAgICB9Ci0KKyAgICBTZXJ2aWNlV29ya2VySm9iKFNl
cnZpY2VXb3JrZXJKb2JDbGllbnQmLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmLCBTZXJ2aWNl
V29ya2VySm9iRGF0YSYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+U2VydmljZVdvcmtlckpvYigp
OwogCiAgICAgdm9pZCBmYWlsZWRXaXRoRXhjZXB0aW9uKGNvbnN0IEV4Y2VwdGlvbiYpOwpAQCAt
NjQsNyArNjEsOCBAQCBwdWJsaWM6CiAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9qb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyOyB9CiAKICAgICBj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fam9iRGF0
YTsgfQotICAgIERlZmVycmVkUHJvbWlzZSogcHJvbWlzZSgpIHsgcmV0dXJuIG1fcHJvbWlzZS5n
ZXQoKTsgfQorICAgIGJvb2wgaGFzUHJvbWlzZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9wcm9taXNl
OyB9CisgICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gdGFrZVByb21pc2UoKSB7IHJldHVybiBX
VEZNb3ZlKG1fcHJvbWlzZSk7IH0KIAogICAgIHZvaWQgZmV0Y2hTY3JpcHRXaXRoQ29udGV4dChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRmV0Y2hPcHRpb25zOjpDYWNoZSk7CiAKQEAgLTczLDEz
ICs3MSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxQZW5kaW5nTG9hZCgpOwogCiBwcml2
YXRlOgotICAgIFNlcnZpY2VXb3JrZXJKb2IoU2VydmljZVdvcmtlckpvYkNsaWVudCYsIFJlZlB0
cjxEZWZlcnJlZFByb21pc2U+JiYsIFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYpOwotCiAgICAgLy8g
V29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CiAg
ICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCi0gICAgUmVmPFNlcnZpY2VXb3JrZXJK
b2JDbGllbnQ+IG1fY2xpZW50OworICAgIFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmIG1fY2xpZW50
OwogICAgIFNlcnZpY2VXb3JrZXJKb2JEYXRhIG1fam9iRGF0YTsKICAgICBSZWZQdHI8RGVmZXJy
ZWRQcm9taXNlPiBtX3Byb21pc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oCmluZGV4IDRkNDMzMTRjZjc5ODEy
MjJiMDk2YjE4NGIwNTg2YjYxYjdmMjA4M2IuLjZjNDgxOGVmOGZiZjRmMWMwOGM5MmNiZDUzNDQw
N2FlMGFlNDkwNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaApAQCAtNTAsMTIgKzUwLDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2
aWNlV29ya2VySm9iJiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImLCBGZXRjaE9w
dGlvbnM6OkNhY2hlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGpvYkZpbmlzaGVkTG9hZGluZ1Nj
cmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQ
b2xpY3kpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgam9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2
aWNlV29ya2VySm9iJiwgY29uc3QgUmVzb3VyY2VFcnJvciYsIE9wdGlvbmFsPEV4Y2VwdGlvbj4m
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VX
b3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJiwgRXhjZXB0aW9uJiYpID0gMDsKIAogICAg
IHZpcnR1YWwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmll
cigpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCByZWYoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRlcmVmKCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHAKaW5kZXggOWVjMWJhNjg2NTgzZWM4YzE4ZmY2MTdmNjE0MzYxMjRlZjU4NTA3MS4uMzlk
N2QzZWJlZmQ5OTllZDQ3MGMzMDVhY2Q3NTllZDM0NTFmODdjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUu
Y3BwCkBAIC02NCw3ICs2NCw4IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hG
aW5pc2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uCiAgICAgYXV0byYg
am9iID0gZmlyc3RKb2IoKTsKIAogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdl
dFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7Ci0gICAgQVNTRVJUKHJlZ2lzdHJhdGlv
bik7CisgICAgaWYgKCFyZWdpc3RyYXRpb24pCisgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8q
IG5ld2VzdFdvcmtlciA9IHJlZ2lzdHJhdGlvbi0+Z2V0TmV3ZXN0V29ya2VyKCk7CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGVjMDU3NDEyY2UzNjhiZDc0MDM2ZmYxNDM2YzZh
NWNhZjQ0OWM3YWYuLmY5ZTQ1MWI0MWZlMDJjNGY0MGIyZTkyMThlYTk1MjM2MmE2MTI0NTQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAxLTI4
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlV29y
a2VySm9iIHNob3VsZCBub3RpZnkgaXRzIGNsaWVudCBpbiBjYXNlIGl0cyBqb2IgaXMgY2FuY2Vs
bGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM3
NDcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3NDk4MTk2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZWdpc3RyYXRpb24tc2VjdXJpdHktZXJyb3IuaHR0
cHMtZXhwZWN0ZWQudHh0OgorCiAyMDE5LTAxLTI0ICBDaGFybGVzIFZhemFjICA8Y3ZhemFjQGFr
YW1haS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFBlcmZvcm1hbmNlT2JzZXJ2ZXIuc3VwcG9y
dGVkRW50cnlUeXBlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVnaXN0cmF0aW9u
LXNlY3VyaXR5LWVycm9yLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jl
Z2lzdHJhdGlvbi1zZWN1cml0eS1lcnJvci5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggMzhkMDY3
OGZhZjMxNDFkNGJjYWU1MWYzNWIzNmU1ZGI3NGZkYTkyMi4uYWE3NWVjOTM4NDQ3MDBmNzU3Y2Rj
OTlkZDM2MjEwNmE0ZmVjOThhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVnaXN0
cmF0aW9uLXNlY3VyaXR5LWVycm9yLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci9yZWdpc3RyYXRpb24tc2VjdXJpdHktZXJyb3IuaHR0cHMtZXhwZWN0ZWQudHh0CkBA
IC0zLDcgKzMsNyBAQCBQQVNTIFJlZ2lzdGVyaW5nIHNhbWUgc2NvcGUgYXMgdGhlIHNjcmlwdCBk
aXJlY3Rvcnkgd2l0aG91dCB0aGUgbGFzdCBzbGFzaAogUEFTUyBSZWdpc3RyYXRpb24gc2NvcGUg
b3V0c2lkZSB0aGUgc2NyaXB0IGRpcmVjdG9yeSAKIFBBU1MgUmVnaXN0ZXJpbmcgc2NvcGUgb3V0
c2lkZSBkb21haW4gCiBQQVNTIFJlZ2lzdGVyaW5nIHNjcmlwdCBvdXRzaWRlIGRvbWFpbiAKLUZB
SUwgUmVnaXN0ZXJpbmcgcmVkaXJlY3RlZCBzY3JpcHQgYXNzZXJ0X3Rocm93czogUmVnaXN0cmF0
aW9uIG9mIHJlZGlyZWN0ZWQgc2NyaXB0IHNob3VsZCBmYWlsLiBmdW5jdGlvbiAiZnVuY3Rpb24g
KCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiVHlwZUVycm9yOiBTY3JpcHQgVVJMIGh0dHBz
Oi8vbG9jYWxob3N0Ojk0NDMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNl
cy9yZWRpcmVjdC5weT9SZWRpcmVjdD0lMkZyZXNvdXJjZXMlMkZyZWdpc3RyYXRpb24td29ya2Vy
LmpzIGZldGNoIHJlc3VsdGVkIGluIGVycm9yOiBOb3QgYWxsb3dlZCB0byBmb2xsb3cgYSByZWRp
cmVjdGlvbiB3aGlsZSBsb2FkaW5nIGh0dHBzOi8vbG9jYWxob3N0Ojk0NDMvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy9yZWRpcmVjdC5weT9SZWRpcmVjdD0lMkZyZXNv
dXJjZXMlMkZyZWdpc3RyYXRpb24td29ya2VyLmpzIiB0aGF0IGlzIG5vdCBhIERPTUV4Y2VwdGlv
biBTZWN1cml0eUVycm9yOiBwcm9wZXJ0eSAiY29kZSIgaXMgZXF1YWwgdG8gdW5kZWZpbmVkLCBl
eHBlY3RlZCAxOAorUEFTUyBSZWdpc3RlcmluZyByZWRpcmVjdGVkIHNjcmlwdCAKIFBBU1MgU2Nv
cGUgaW5jbHVkaW5nIHBhcmVudC1yZWZlcmVuY2UgYW5kIG5vdCB1bmRlciB0aGUgc2NyaXB0IGRp
cmVjdG9yeSAKIFBBU1MgU2NyaXB0IFVSTCBpbmNsdWRpbmcgY29uc2VjdXRpdmUgc2xhc2hlcyAK
IFBBU1MgU2NyaXB0IFVSTCBpcyBzYW1lLW9yaWdpbiBmaWxlc3lzdGVtOiBVUkwgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360602</attachid>
            <date>2019-01-30 12:01:12 -0800</date>
            <delta_ts>2019-01-30 13:00:36 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-193747-20190130120111.patch</filename>
            <type>text/plain</type>
            <size>29852</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWVkMzE4NGVmYzI4OTdk
YmU5YThjZmRkMGIxMzExNzZkNmU1YTZlZS4uMWY5NDZmZTYyYWM1YjFlMTE5NjU4ZDcwZjI0MDY1
MTQyODA3MGIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE5LTAxLTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBTZXJ2aWNl
V29ya2VySm9iIG1hbmFnZW1lbnQgYnkgU2VydmljZVdvcmtlckNvbnRhaW5lciB0byBtYWtlIGl0
IG1vcmUgbWVtb3J5IHNhZmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5Mzc0NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDc0OTgxOTY+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgTWFrZSBTZXJ2aWNlV29y
a2VySm9iIGJlIG5vIGxvbmdlciByZWYgY291bnRlZC4KKyAgICAgICAgSW5zdGVhZCBpdHMgbGlm
ZXRpbWUgaXMgZnVsbHkgY29udHJvbGxlZCBieSBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLgorCisg
ICAgICAgIE1ha2Ugc3VyZSB0aGF0IGEgZmFpbGluZyBsb2FkIHdpbGwgcmVtb3ZlIHRoZSBqb2Ig
ZnJvbSBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIGpvYiBtYXAuCisgICAgICAgIFRoaXMgYWxsb3dz
IHRvIGVuc3VyZSB0aGF0IHRoZXNlIGpvYnMgZG8gbm90IHN0YXkgZm9yZXZlci4KKyAgICAgICAg
QmVmb3JlIHRoZSBwYXRjaCwgdGhlIGpvYnMgbWFwIHdhcyBuZXZlciBjbGVhcmVkLCB3aGljaCBp
cyBjcmVhdGluZyBhIHJlZiBjeWNsZSB3aGVuZXZlciBhIGpvYiBpcyBub3Qgc3VjY2VzZnVsLgor
CisgICAgICAgIEJlZm9yZSB0aGUgcGF0Y2gsIHVuc2V0UGVuZGluZ0FjdGl2aXR5IHdhcyBvbmx5
IGNhbGxlZCBmb3Igc3VjY2Vzc2Z1bCBqb2JzIGZpbmlzaGluZy4KKyAgICAgICAgSW4gY2FzZSBv
ZiBmYWlsaW5nIGxvYWRzLCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIHdvdWxkIGxlYWsuCisgICAg
ICAgIE1ha2Ugc3VyZSB0aGF0IHNldFBlbmRpbmdBY3Rpdml0eS91bnNldFBlbmRpbmdBY3Rpdml0
eSBpcyBiYWxhbmNlZCBieSBzdG9yaW5nCisgICAgICAgIGEgcGVuZGluZyBhY3Rpdml0eSBpbiB0
aGUgam9iIG1hcCBuZXh0IHRvIHRoZSBqb2IuCisKKyAgICAgICAgV2hlbiBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyIGlzIHN0b3BwZWQsIG5vdGlmeSB0aGF0IGFsbCBqb2JzIGFyZSBjYW5jZWxsZWQg
dG8gTmV0d29ya1Byb2Nlc3MuCisgICAgICAgIFRoaXMgbWFrZXMgdGhlc2Ugam9icyBpbiBOZXR3
b3JrUHJvY2Vzcy1zaWRlIHRvIG5vdCBzdGF5IHVudGlsIHRoZSBjb3JyZXNwb25kaW5nIFdlYlBy
b2Nlc3MgaXMgZ29uZS4KKworICAgICAgICBTaW1wbGlmeSBTZXJ2aWNlV29ya2VySm9iIHByb21p
c2UgcmVqZWN0aW9uIGhhbmRsaW5nIHNvIHRoYXQgaXQgaXMgY2xlYXIgd2hlbiBwcm9taXNlIGlz
IHJlamVjdGVkIGFuZCB3aGVuIGl0IGlzIG5vdC4KKyAgICAgICAgVXBkYXRlIHR5cGUgb2YgZXhj
ZXB0aW9uIHRvIGJlIFNlY3VyaXR5RXJyb3Igd2hlbiBsb2FkIGZhaWxzIGR1ZSB0byBBY2Nlc3ND
b250cm9sLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVs
ZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWls
ZWRXaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2Fk
aW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6Ompv
YkRpZEZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpz
dG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYik6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iOjpmYWlsZWRXaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpyZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlv
blJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpzdGFydFNjcmlw
dEZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OmRpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpub3RpZnlGaW5p
c2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpjYW5jZWxQZW5kaW5n
TG9hZCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6Omhhc1Byb21pc2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6dGFrZVByb21pc2UpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50Lmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQpOgorCiAyMDE5LTAxLTI5
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjI0MDU1Myk6IFtpT1NdIENyYXNoIGluIFNjcm9sbGluZ1RyZWU6OnVwZGF0ZVRyZWVG
cm9tU3RhdGVOb2RlIHdoZW4gYXR0ZW1wdGluZyB0byBsb2cgaW4gdG8gaWNsb3VkLmNvbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwCmluZGV4IDc0NDJkZDQ1NTM3ZjFmNGY0YWVhZDYyNjUyZTM2YTc0NjA5ZDk5
MGIuLmIzN2RhNDc1ZTI4NjM3MzdjYzdiNjI3MTU2YTkxYzMzY2UwNjFlZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OmFkZFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIHJlbGF0aXZlU2NyaXB0VVJMLCBjbwogICAg
IGpvYkRhdGEudHlwZSA9IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjsKICAgICBqb2JE
YXRhLnJlZ2lzdHJhdGlvbk9wdGlvbnMgPSBvcHRpb25zOwogCi0gICAgc2NoZWR1bGVKb2IoU2Vy
dmljZVdvcmtlckpvYjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpv
YkRhdGEpKSk7CisgICAgc2NoZWR1bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2Vy
Sm9iPigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwm
IHNjb3BlVVJMLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0yMDIsNyArMjAy
LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oY29u
c3QgVVJMJiBzY29wZVVSTCwgUmVmPERlZmVycmUKIAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJyZW1vdmVSZWdpc3RyYXRpb246IFVucmVnaXN0ZXJpbmcgc2VydmljZSB3
b3JrZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlm
aWVyLnRvVUludDY0KCkpOwogCi0gICAgc2NoZWR1bGVKb2IoU2VydmljZVdvcmtlckpvYjo6Y3Jl
YXRlKCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRhdGEpKSk7CisgICAgc2No
ZWR1bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9iPigqdGhpcywgV1RGTW92
ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvbihjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBV
UkwmIHNjcmlwdFVSTCwgV29ya2VyVHlwZSwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQpAQCAtMjI4LDIyICsyMjgsMjIgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1
cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJgogCiAgICAg
Q09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJlbW92ZVJlZ2lzdHJhdGlvbjogVXBk
YXRpbmcgc2VydmljZSB3b3JrZXIuIEpvYiBJRDogJSIgUFJJdTY0LCBqb2JEYXRhLmlkZW50aWZp
ZXIoKS5qb2JJZGVudGlmaWVyLnRvVUludDY0KCkpOwogCi0gICAgc2NoZWR1bGVKb2IoU2Vydmlj
ZVdvcmtlckpvYjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGpvYkRh
dGEpKSk7CisgICAgc2NoZWR1bGVKb2Ioc3RkOjptYWtlX3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9i
PigqdGhpcywgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShqb2JEYXRhKSkpOwogfQogCi12b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlSm9iKFJlZjxTZXJ2aWNlV29ya2VySm9i
PiYmIGpvYikKK3ZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2Ioc3RkOjp1
bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJKb2I+JiYgam9iKQogewogI2lmbmRlZiBOREVCVUcKICAg
ICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwog
I2VuZGlmCiAKICAgICBBU1NFUlQobV9zd0Nvbm5lY3Rpb24pOwotCi0gICAgc2V0UGVuZGluZ0Fj
dGl2aXR5KCp0aGlzKTsKKyAgICBBU1NFUlQoIWlzU3RvcHBlZCgpKTsKIAogICAgIGF1dG8mIGpv
YkRhdGEgPSBqb2ItPmRhdGEoKTsKLSAgICBhdXRvIHJlc3VsdCA9IG1fam9iTWFwLmFkZChqb2It
PmlkZW50aWZpZXIoKSwgV1RGTW92ZShqb2IpKTsKLSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0LmlzTmV3RW50cnkpOworICAgIGF1dG8gam9iSWRlbnRpZmllciA9IGpvYi0+aWRlbnRp
ZmllcigpOworICAgIEFTU0VSVCghbV9qb2JNYXAuY29udGFpbnMoam9iSWRlbnRpZmllcikpOwor
ICAgIG1fam9iTWFwLmFkZChqb2JJZGVudGlmaWVyLCBPbmdvaW5nSm9iIHsgV1RGTW92ZShqb2Ip
LCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSB9KTsKIAogICAgIGNhbGxPbk1haW5UaHJlYWQo
W2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgY29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5j
b250ZXh0SWRlbnRpZmllcigpLCBqb2JEYXRhID0gam9iRGF0YS5pc29sYXRlZENvcHkoKV0gewog
ICAgICAgICBjb25uZWN0aW9uLT5zY2hlZHVsZUpvYihjb250ZXh0SWRlbnRpZmllciwgam9iRGF0
YSk7CkBAIC0zODUsMjAgKzM4NSwyMSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6Ompv
YkZhaWxlZFdpdGhFeGNlcHRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdAogICAgIEFT
U0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5k
aWYKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoam9iLnByb21pc2UoKSB8fCBqb2IuZGF0YSgp
LnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSwgIk9ubHkgc29mdCB1cGRhdGVz
IGhhdmUgbm8gcHJvbWlzZSIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoam9iLmhhc1Byb21p
c2UoKSB8fCBqb2IuZGF0YSgpLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVwZGF0ZSwg
Ik9ubHkgc29mdCB1cGRhdGVzIGhhdmUgbm8gcHJvbWlzZSIpOwogCiAgICAgYXV0byBndWFyZCA9
IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0gewotICAgICAgICBqb2JEaWRGaW5pc2go
am9iKTsKKyAgICAgICAgZGVzdHJveUpvYihqb2IpOwogICAgIH0pOwogCiAgICAgQ09OVEFJTkVS
X1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImpvYkZhaWxlZFdpdGhFeGNlcHRpb246IEpv
YiAlIiBQUkl1NjQgIiBmYWlsZWQgd2l0aCBlcnJvciAlcyIsIGpvYi5pZGVudGlmaWVyKCkudG9V
SW50NjQoKSwgZXhjZXB0aW9uLm1lc3NhZ2UoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIGlmICgh
am9iLnByb21pc2UoKSkKKyAgICBhdXRvIHByb21pc2UgPSBqb2IudGFrZVByb21pc2UoKTsKKyAg
ICBpZiAoIXByb21pc2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiBjb250ZXh0
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7Ci0gICAgICAgIGNvbnRleHQtPnBvc3RUYXNr
KFtqb2IgPSBtYWtlUmVmKGpvYiksIGV4Y2VwdGlvbl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
IHsKLSAgICAgICAgICAgIGpvYi0+cHJvbWlzZSgpLT5yZWplY3QoZXhjZXB0aW9uKTsKKyAgICAg
ICAgY29udGV4dC0+cG9zdFRhc2soW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBleGNlcHRp
b25dKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChleGNlcHRp
b24pOwogICAgICAgICB9KTsKICAgICB9CiB9CkBAIC00MTgsMTAgKzQxOSwxMCBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNl
V29ya2VySm9iJiBqb2IsCiAjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhy
ZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKLSAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKGpvYi5wcm9taXNlKCkgfHwgam9iLmRhdGEoKS50eXBlID09IFNlcnZpY2VXb3Jr
ZXJKb2JUeXBlOjpVcGRhdGUsICJPbmx5IHNvZnQgdXBkYXRlcyBoYXZlIG5vIHByb21pc2UiKTsK
KyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGpvYi5oYXNQcm9taXNlKCkgfHwgam9iLmRhdGEoKS50
eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUsICJPbmx5IHNvZnQgdXBkYXRlcyBo
YXZlIG5vIHByb21pc2UiKTsKIAogICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29wZUV4aXQo
W3RoaXMsICZqb2JdIHsKLSAgICAgICAgam9iRGlkRmluaXNoKGpvYik7CisgICAgICAgIGRlc3Ry
b3lKb2Ioam9iKTsKICAgICB9KTsKIAogICAgIGlmIChqb2IuZGF0YSgpLnR5cGUgPT0gU2Vydmlj
ZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyKQpAQCAtNDQ2LDEzICs0NDcsMTQgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdv
cmtlckpvYiYgam9iLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFqb2IucHJv
bWlzZSgpKSB7CisgICAgYXV0byBwcm9taXNlID0gam9iLnRha2VQcm9taXNlKCk7CisgICAgaWYg
KCFwcm9taXNlKSB7CiAgICAgICAgIGlmIChub3RpZnlXaGVuUmVzb2x2ZWRJZk5lZWRlZCkKICAg
ICAgICAgICAgIG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGpvYiA9IG1ha2VSZWYoam9iKSwgZGF0YSA9
IFdURk1vdmUoZGF0YSksIG5vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkID0gV1RGTW92ZShub3Rp
ZnlXaGVuUmVzb2x2ZWRJZk5lZWRlZCldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IG11dGFibGUgeworICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGpvYklkZW50aWZpZXIgPSBqb2IuaWRlbnRpZmllcigpLCBkYXRhID0gV1RGTW92ZShkYXRh
KSwgbm90aWZ5V2hlblJlc29sdmVkSWZOZWVkZWQgPSBXVEZNb3ZlKG5vdGlmeVdoZW5SZXNvbHZl
ZElmTmVlZGVkKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChpc1N0b3BwZWQoKSB8fCAhY29udGV4dC5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkp
IHsKICAgICAgICAgICAgIGlmIChub3RpZnlXaGVuUmVzb2x2ZWRJZk5lZWRlZCkKICAgICAgICAg
ICAgICAgICBub3RpZnlXaGVuUmVzb2x2ZWRJZk5lZWRlZCgpOwpAQCAtNDYxLDE1ICs0NjMsMTUg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRp
b24oU2VydmljZVdvcmtlckpvYiYgam9iLAogCiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0g
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoY29udGV4dCwgKnRoaXMsIFdU
Rk1vdmUoZGF0YSkpOwogCi0gICAgICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb246IFJlc29sdmluZyBwcm9taXNlIGZvciBqb2Ig
JSIgUFJJdTY0ICIuIFJlZ2lzdHJhdGlvbiBJRDogJSIgUFJJdTY0LCBqb2ItPmlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpLCByZWdpc3RyYXRpb24tPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAg
ICAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImpvYlJlc29sdmVkV2l0aFJl
Z2lzdHJhdGlvbjogUmVzb2x2aW5nIHByb21pc2UgZm9yIGpvYiAlIiBQUkl1NjQgIi4gUmVnaXN0
cmF0aW9uIElEOiAlIiBQUkl1NjQsIGpvYklkZW50aWZpZXIudG9VSW50NjQoKSwgcmVnaXN0cmF0
aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKICAgICAgICAgaWYgKG5vdGlmeVdoZW5S
ZXNvbHZlZElmTmVlZGVkKSB7Ci0gICAgICAgICAgICBqb2ItPnByb21pc2UoKS0+d2hlblNldHRs
ZWQoW25vdGlmeVdoZW5SZXNvbHZlZElmTmVlZGVkID0gV1RGTW92ZShub3RpZnlXaGVuUmVzb2x2
ZWRJZk5lZWRlZCldIHsKKyAgICAgICAgICAgIHByb21pc2UtPndoZW5TZXR0bGVkKFtub3RpZnlX
aGVuUmVzb2x2ZWRJZk5lZWRlZCA9IFdURk1vdmUobm90aWZ5V2hlblJlc29sdmVkSWZOZWVkZWQp
XSB7CiAgICAgICAgICAgICAgICAgbm90aWZ5V2hlblJlc29sdmVkSWZOZWVkZWQoKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICB9CiAKLSAgICAgICAgam9iLT5wcm9taXNlKCktPnJlc29sdmU8
SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+PihXVEZNb3ZlKHJlZ2lzdHJh
dGlvbikpOworICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uPj4oV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKICAgICB9KTsKIH0KIApA
QCAtNDc5LDEwICs0ODEsMTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNv
bHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2VySm8KICAgICBBU1NFUlQo
bV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAK
LSAgICBBU1NFUlQoam9iLnByb21pc2UoKSk7CisgICAgQVNTRVJUKGpvYi5oYXNQcm9taXNlKCkp
OwogCiAgICAgYXV0byBndWFyZCA9IFdURjo6bWFrZVNjb3BlRXhpdChbdGhpcywgJmpvYl0gewot
ICAgICAgICBqb2JEaWRGaW5pc2goam9iKTsKKyAgICAgICAgZGVzdHJveUpvYihqb2IpOwogICAg
IH0pOwogCiAgICAgQ09OVEFJTkVSX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImpvYlJlc29sdmVk
V2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0OiBVbnJlZ2lzdGVyIGpvYiAlIiBQUkl1NjQgIiBmaW5p
c2hlZC4gU3VjY2Vzcz8gJWQiLCBqb2IuaWRlbnRpZmllcigpLnRvVUludDY0KCksIHVucmVnaXN0
cmF0aW9uUmVzdWx0KTsKQEAgLTQ5Myw4ICs0OTUsOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJK
bwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29udGV4dC0+cG9zdFRhc2soW2pvYiA9
IG1ha2VSZWYoam9iKSwgdW5yZWdpc3RyYXRpb25SZXN1bHRdKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSBtdXRhYmxlIHsKLSAgICAgICAgam9iLT5wcm9taXNlKCktPnJlc29sdmU8SURMQm9vbGVh
bj4odW5yZWdpc3RyYXRpb25SZXN1bHQpOworICAgIGNvbnRleHQtPnBvc3RUYXNrKFtwcm9taXNl
ID0gam9iLnRha2VQcm9taXNlKCksIHVucmVnaXN0cmF0aW9uUmVzdWx0XShhdXRvJikgbXV0YWJs
ZSB7CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odW5yZWdpc3RyYXRpb25S
ZXN1bHQpOwogICAgIH0pOwogfQogCkBAIC01MDksMTAgKzUxMSw4IEBAIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6c3RhcnRTY3JpcHRGZXRjaEZvckpvYihTZXJ2aWNlV29ya2VySm9iJiBq
b2IsIEZldGNoCiAgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24gY2FsbGVkIGJ1dCB0aGUgY29udGFp
bmVyJ3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBpcyBnb25lIik7Ci0gICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgam9iSWRlbnRpZmllciA9IGpv
Yi5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktleSA9IGpvYi5kYXRhKCkucmVnaXN0cmF0aW9u
S2V5KCkuaXNvbGF0ZWRDb3B5KCksIHNjcmlwdFVSTCA9IGpvYi5kYXRhKCkuc2NyaXB0VVJMLmlz
b2xhdGVkQ29weSgpXSB7Ci0gICAgICAgICAgICBjb25uZWN0aW9uLT5mYWlsZWRGZXRjaGluZ1Nj
cmlwdChqb2JJZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXksIHsgZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgc2NyaXB0VVJMLCAiQXR0ZW1wdCB0byBmZXRjaCBzZXJ2aWNlIHdvcmtlciBz
Y3JpcHQgd2l0aCBubyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Il9zIH0pOwotICAgICAgICB9KTsK
LSAgICAgICAgam9iRGlkRmluaXNoKGpvYik7CisgICAgICAgIG5vdGlmeUZhaWxlZEZldGNoaW5n
U2NyaXB0KGpvYiwgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBqb2IuZGF0YSgpLnNj
cmlwdFVSTCwgIkF0dGVtcHQgdG8gZmV0Y2ggc2VydmljZSB3b3JrZXIgc2NyaXB0IHdpdGggbm8g
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCJfcyB9KTsKKyAgICAgICAgZGVzdHJveUpvYihqb2IpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MzIsMzMgKzUzMiwzNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2Vy
Sm9iJiBqb2IsIGNvbgogICAgIH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgT3B0aW9uYWw8RXhjZXB0aW9uPiYmIGV4Y2VwdGlvbikKK3ZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29y
a2VySm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBFeGNlcHRpb24mJiBleGNl
cHRpb24pCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0
cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKLSAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGpvYi5wcm9taXNlKCkgfHwgam9iLmRhdGEoKS50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JU
eXBlOjpVcGRhdGUsICJPbmx5IHNvZnQgdXBkYXRlcyBoYXZlIG5vIHByb21pc2UiKTsKKyAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKGpvYi5oYXNQcm9taXNlKCkgfHwgam9iLmRhdGEoKS50eXBlID09
IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVcGRhdGUsICJPbmx5IHNvZnQgdXBkYXRlcyBoYXZlIG5v
IHByb21pc2UiKTsKIAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KCJqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQ6IEZhaWxlZCB0byBmZXRjaCBzY3JpcHQgZm9yIGpv
YiAlIiBQUkl1NjQgIiwgZXJyb3I6ICVzIiwgam9iLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgaWYgKGV4
Y2VwdGlvbiAmJiBqb2IucHJvbWlzZSgpKQotICAgICAgICBqb2IucHJvbWlzZSgpLT5yZWplY3Qo
KmV4Y2VwdGlvbik7CisgICAgaWYgKGF1dG8gcHJvbWlzZSA9IGpvYi50YWtlUHJvbWlzZSgpKQor
ICAgICAgICBwcm9taXNlLT5yZWplY3QoV1RGTW92ZShleGNlcHRpb24pKTsKIAorICAgIG5vdGlm
eUZhaWxlZEZldGNoaW5nU2NyaXB0KGpvYiwgZXJyb3IpOworICAgIGRlc3Ryb3lKb2Ioam9iKTsK
K30KKwordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpub3RpZnlGYWlsZWRGZXRjaGluZ1Nj
cmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQor
ewogICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgam9i
SWRlbnRpZmllciA9IGpvYi5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktleSA9IGpvYi5kYXRh
KCkucmVnaXN0cmF0aW9uS2V5KCkuaXNvbGF0ZWRDb3B5KCksIGVycm9yID0gZXJyb3IuaXNvbGF0
ZWRDb3B5KCldIHsKICAgICAgICAgY29ubmVjdGlvbi0+ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9i
SWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCBlcnJvcik7CiAgICAgfSk7CiB9CiAKLXZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRGlkRmluaXNoKFNlcnZpY2VXb3JrZXJKb2ImIGpv
YikKK3ZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZGVzdHJveUpvYihTZXJ2aWNlV29ya2Vy
Sm9iJiBqb2IpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFk
LnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAjZW5kaWYKIAotICAgIGF1dG8gdGFrZW4g
PSBtX2pvYk1hcC50YWtlKGpvYi5pZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVF9VTlVTRUQodGFr
ZW4sICF0YWtlbiB8fCB0YWtlbi0+cHRyKCkgPT0gJmpvYik7Ci0KLSAgICB1bnNldFBlbmRpbmdB
Y3Rpdml0eSgqdGhpcyk7CisgICAgQVNTRVJUKG1fam9iTWFwLmNvbnRhaW5zKGpvYi5pZGVudGlm
aWVyKCkpKTsKKyAgICBtX2pvYk1hcC5yZW1vdmUoam9iLmlkZW50aWZpZXIoKSk7CiB9CiAKIFNX
U2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Y29ubmVj
dGlvbklkZW50aWZpZXIoKQpAQCAtNjMzLDggKzYzNywxMSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OnN0b3AoKQogICAgIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CiAgICAgbV9w
ZW5kaW5nUHJvbWlzZXMuY2xlYXIoKTsKICAgICBtX3JlYWR5UHJvbWlzZSA9IG51bGxwdHI7Ci0g
ICAgZm9yIChhdXRvJiBqb2IgOiBtX2pvYk1hcC52YWx1ZXMoKSkKLSAgICAgICAgam9iLT5jYW5j
ZWxQZW5kaW5nTG9hZCgpOworICAgIGF1dG8gam9iTWFwID0gV1RGTW92ZShtX2pvYk1hcCk7Cisg
ICAgZm9yIChhdXRvJiBvbmdvaW5nSm9iIDogam9iTWFwLnZhbHVlcygpKSB7CisgICAgICAgIG5v
dGlmeUZhaWxlZEZldGNoaW5nU2NyaXB0KCpvbmdvaW5nSm9iLmpvYi5nZXQoKSwgUmVzb3VyY2VF
cnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG9uZ29pbmdKb2Iuam9iLT5kYXRh
KCkuc2NyaXB0VVJMLCAiSm9iIGNhbmNlbGxlZCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2Fu
Y2VsbGF0aW9uIH0pOworICAgICAgICBvbmdvaW5nSm9iLmpvYi0+Y2FuY2VsUGVuZGluZ0xvYWQo
KTsKKyAgICB9CiB9CiAKIERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OmNvbnRleHRJZGVudGlmaWVyKCkKQEAgLTY0OSw2ICs2NTYsMTQgQEAgRG9jdW1l
bnRPcldvcmtlcklkZW50aWZpZXIgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Y29udGV4dElkZW50
aWZpZXIoKQogICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkuaWRlbnRpZmllcigpOwogfQogCitTZXJ2aWNlV29ya2VySm9iKiBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpqb2IoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIgaWRlbnRpZmllcikK
K3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9qb2JNYXAuZmluZChpZGVudGlmaWVyKTsKKyAgICBp
ZiAoaXRlcmF0b3IgPT0gbV9qb2JNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBpdGVyYXRvci0+dmFsdWUuam9iLmdldCgpOworfQorCiBib29sIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIGNvbnN0CiB7CiAgICAg
YXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmlu
ZGV4IGZkOGMwN2QyMmNmNjM0OTJmOGRlNTg3MThlYzMwMjYxNGE5NmE1YzEuLjYwODE4ZGQwNzVl
YTVjNTExOThlMjFmYTBmOWUxMDk1M2FjYzhmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAtNzcsMjgg
Kzc3LDI2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uJik7CiAgICAgdm9pZCByZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbiYpOwogCi0gICAgU2VydmljZVdvcmtlckpvYiogam9iKFNlcnZpY2VXb3Jr
ZXJKb2JJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsgcmV0dXJuIG1fam9iTWFwLmdldChpZGVudGlm
aWVyKTsgfQorICAgIFNlcnZpY2VXb3JrZXJKb2IqIGpvYihTZXJ2aWNlV29ya2VySm9iSWRlbnRp
Zmllcik7CiAKICAgICB2b2lkIHN0YXJ0TWVzc2FnZXMoKTsKIAotICAgIHZvaWQgcmVmKCkgZmlu
YWwgeyByZWZFdmVudFRhcmdldCgpOyB9Ci0gICAgdm9pZCBkZXJlZigpIGZpbmFsIHsgZGVyZWZF
dmVudFRhcmdldCgpOyB9Ci0KICAgICBib29sIGlzU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNTdG9wcGVkOyB9OwogCiAgICAgYm9vbCBpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNjaGVkdWxlSm9iKFJlZjxTZXJ2aWNlV29ya2VySm9i
PiYmKTsKKyAgICB2b2lkIHNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2Vy
Sm9iPiYmKTsKIAogICAgIHZvaWQgam9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2Vy
Sm9iJiwgY29uc3QgRXhjZXB0aW9uJikgZmluYWw7CiAgICAgdm9pZCBqb2JSZXNvbHZlZFdpdGhS
ZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgZmluYWw7CiAgICAgdm9pZCBqb2JSZXNv
bHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2VySm9iJiwgYm9vbCB1bnJl
Z2lzdHJhdGlvblJlc3VsdCkgZmluYWw7CiAgICAgdm9pZCBzdGFydFNjcmlwdEZldGNoRm9ySm9i
KFNlcnZpY2VXb3JrZXJKb2ImLCBGZXRjaE9wdGlvbnM6OkNhY2hlKSBmaW5hbDsKICAgICB2b2lk
IGpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3kpIGZpbmFsOwotICAgIHZvaWQgam9iRmFpbGVkTG9h
ZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgUmVzb3VyY2VFcnJvciYsIE9wdGlv
bmFsPEV4Y2VwdGlvbj4mJikgZmluYWw7CisgICAgdm9pZCBqb2JGYWlsZWRMb2FkaW5nU2NyaXB0
KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJiwgRXhjZXB0aW9uJiYpIGZp
bmFsOwogCi0gICAgdm9pZCBqb2JEaWRGaW5pc2goU2VydmljZVdvcmtlckpvYiYpOworICAgIHZv
aWQgbm90aWZ5RmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYsIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKKyAgICB2b2lkIGRlc3Ryb3lKb2IoU2VydmljZVdvcmtlckpvYiYpOwog
CiAgICAgdm9pZCBkaWRGaW5pc2hHZXRSZWdpc3RyYXRpb25SZXF1ZXN0KHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4mJik7
CiAgICAgdm9pZCBkaWRGaW5pc2hHZXRSZWdpc3RyYXRpb25zUmVxdWVzdCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllciwgVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmKTsK
QEAgLTEyMSw3ICsxMTksMTIgQEAgcHJpdmF0ZToKICAgICBOYXZpZ2F0b3JCYXNlJiBtX25hdmln
YXRvcjsKIAogICAgIFJlZlB0cjxTV0NsaWVudENvbm5lY3Rpb24+IG1fc3dDb25uZWN0aW9uOwot
ICAgIEhhc2hNYXA8U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIFJlZjxTZXJ2aWNlV29ya2Vy
Sm9iPj4gbV9qb2JNYXA7CisKKyAgICBzdHJ1Y3QgT25nb2luZ0pvYiB7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VySm9iPiBqb2I7CisgICAgICAgIFJlZlB0cjxQZW5kaW5n
QWN0aXZpdHk8U2VydmljZVdvcmtlckNvbnRhaW5lcj4+IHBlbmRpbmdBY3Rpdml0eTsKKyAgICB9
OworICAgIEhhc2hNYXA8U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIE9uZ29pbmdKb2I+IG1f
am9iTWFwOwogCiAgICAgYm9vbCBtX2lzU3RvcHBlZCB7IGZhbHNlIH07CiAgICAgSGFzaE1hcDxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbio+IG1fcmVnaXN0cmF0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAppbmRleCA3MWQxZTUyODFjNzM1NTZkYTVlZjg5
N2IwYTQ2ODk2YjE0NTQ0YTkwLi4wMDliOTg3N2I2NjMwNWE0ZGEzMTA0YTA1YjE0YzYyYjc3ZTBl
ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2IuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6ZmFp
bGVkV2l0aEV4Y2VwdGlvbihjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKICAgICBBU1NFUlQo
IW1fY29tcGxldGVkKTsKIAogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKLSAgICBtX2NsaWVudC0+
am9iRmFpbGVkV2l0aEV4Y2VwdGlvbigqdGhpcywgZXhjZXB0aW9uKTsKKyAgICBtX2NsaWVudC5q
b2JGYWlsZWRXaXRoRXhjZXB0aW9uKCp0aGlzLCBleGNlcHRpb24pOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uRGF0YSYmIGRhdGEsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlX
aGVuUmVzb2x2ZWQpCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6cmVz
b2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYKICAg
ICBBU1NFUlQoIW1fY29tcGxldGVkKTsKIAogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKLSAgICBt
X2NsaWVudC0+am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKCp0aGlzLCBXVEZNb3ZlKGRhdGEp
LCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpOworICAgIG1fY2xpZW50LmpvYlJlc29sdmVkV2l0
aFJlZ2lzdHJhdGlvbigqdGhpcywgV1RGTW92ZShkYXRhKSwgc2hvdWxkTm90aWZ5V2hlblJlc29s
dmVkKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpyZXNvbHZlZFdpdGhVbnJlZ2lzdHJh
dGlvblJlc3VsdChib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQpAQCAtNzUsNyArNzUsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJKb2I6OnJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KGJv
b2wgdW5yZWdpc3RyYXRpb25SZXN1bAogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCiAgICAg
bV9jb21wbGV0ZWQgPSB0cnVlOwotICAgIG1fY2xpZW50LT5qb2JSZXNvbHZlZFdpdGhVbnJlZ2lz
dHJhdGlvblJlc3VsdCgqdGhpcywgdW5yZWdpc3RyYXRpb25SZXN1bHQpOworICAgIG1fY2xpZW50
LmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KCp0aGlzLCB1bnJlZ2lzdHJhdGlv
blJlc3VsdCk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckpvYjo6c3RhcnRTY3JpcHRGZXRjaChG
ZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5KQpAQCAtODMsNyArODMsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJKb2I6OnN0YXJ0U2NyaXB0RmV0Y2goRmV0Y2hPcHRpb25zOjpDYWNoZSBjYWNo
ZVBvbGljeSkKICAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwogCi0gICAgbV9jbGllbnQtPnN0
YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoKnRoaXMsIGNhY2hlUG9saWN5KTsKKyAgICBtX2NsaWVudC5z
dGFydFNjcmlwdEZldGNoRm9ySm9iKCp0aGlzLCBjYWNoZVBvbGljeSk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlckpvYjo6ZmV0Y2hTY3JpcHRXaXRoQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBGZXRjaE9wdGlvbnM6OkNhY2hlIGNhY2hlUG9saWN5KQpAQCAtMTE0LDEz
ICsxMTQsMTcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySm9iOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5z
aWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKIAogICAgIC8vIEV4dHJhY3QgYSBN
SU1FIHR5cGUgZnJvbSB0aGUgcmVzcG9uc2UncyBoZWFkZXIgbGlzdC4gSWYgdGhpcyBNSU1FIHR5
cGUgKGlnbm9yaW5nIHBhcmFtZXRlcnMpIGlzIG5vdCBhIEphdmFTY3JpcHQgTUlNRSB0eXBlLCB0
aGVuOgogICAgIGlmICghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRKYXZhU2NyaXB0TUlN
RVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSkpIHsKKyAgICAgICAgbV9zY3JpcHRMb2FkZXItPmNh
bmNlbCgpOworICAgICAgICBtX3NjcmlwdExvYWRlciA9IG51bGxwdHI7CisKICAgICAgICAgLy8g
SW52b2tlIFJlamVjdCBKb2IgUHJvbWlzZSB3aXRoIGpvYiBhbmQgIlNlY3VyaXR5RXJyb3IiIERP
TUV4Y2VwdGlvbi4KICAgICAgICAgRXhjZXB0aW9uIGV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3Is
ICJNSU1FIFR5cGUgaXMgbm90IGEgSmF2YVNjcmlwdCBNSU1FIHR5cGUiX3MgfTsKICAgICAgICAg
Ly8gQXN5bmNocm9ub3VzbHkgY29tcGxldGUgdGhlc2Ugc3RlcHMgd2l0aCBhIG5ldHdvcmsgZXJy
b3IuCiAgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCByZXNwb25zZS51cmwoKSwgIlVuZXhwZWN0ZWQgTUlNRSB0eXBlIl9zIH07Ci0gICAg
ICAgIG1fY2xpZW50LT5qb2JGYWlsZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBXVEZNb3ZlKGVycm9y
KSwgV1RGTW92ZShleGNlcHRpb24pKTsKLSAgICAgICAgbV9zY3JpcHRMb2FkZXIgPSBudWxscHRy
OworICAgICAgICBtX2NsaWVudC5qb2JGYWlsZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBXVEZNb3Zl
KGVycm9yKSwgV1RGTW92ZShleGNlcHRpb24pKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKwog
ICAgIFN0cmluZyBzZXJ2aWNlV29ya2VyQWxsb3dlZCA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6U2VydmljZVdvcmtlckFsbG93ZWQpOwogICAgIFN0cmluZyBtYXhT
Y29wZVN0cmluZzsKICAgICBpZiAoc2VydmljZVdvcmtlckFsbG93ZWQuaXNOdWxsKCkpIHsKQEAg
LTEzMSwxMyArMTM1LDE3IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAgICAgICAgIGF1dG8g
bWF4U2NvcGUgPSBVUkwobV9qb2JEYXRhLnNjcmlwdFVSTCwgc2VydmljZVdvcmtlckFsbG93ZWQp
OwogICAgICAgICBtYXhTY29wZVN0cmluZyA9IG1heFNjb3BlLnBhdGgoKTsKICAgICB9CisKICAg
ICBTdHJpbmcgc2NvcGVTdHJpbmcgPSBtX2pvYkRhdGEuc2NvcGVVUkwucGF0aCgpOwotICAgIGlm
ICghc2NvcGVTdHJpbmcuc3RhcnRzV2l0aChtYXhTY29wZVN0cmluZykpIHsKLSAgICAgICAgRXhj
ZXB0aW9uIGV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJTY29wZSBVUkwgc2hvdWxkIHN0YXJ0
IHdpdGggdGhlIGdpdmVuIHNjcmlwdCBVUkwiX3MgfTsKLSAgICAgICAgUmVzb3VyY2VFcnJvciBl
cnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHJlc3BvbnNlLnVybCgpLCAiU2Nv
cGUgVVJMIHNob3VsZCBzdGFydCB3aXRoIHRoZSBnaXZlbiBzY3JpcHQgVVJMIl9zIH07Ci0gICAg
ICAgIG1fY2xpZW50LT5qb2JGYWlsZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBXVEZNb3ZlKGVycm9y
KSwgV1RGTW92ZShleGNlcHRpb24pKTsKLSAgICAgICAgbV9zY3JpcHRMb2FkZXIgPSBudWxscHRy
OwotICAgIH0KKyAgICBpZiAoc2NvcGVTdHJpbmcuc3RhcnRzV2l0aChtYXhTY29wZVN0cmluZykp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fc2NyaXB0TG9hZGVyLT5jYW5jZWwoKTsKKyAgICBt
X3NjcmlwdExvYWRlciA9IG51bGxwdHI7CisKKyAgICBFeGNlcHRpb24gZXhjZXB0aW9uIHsgU2Vj
dXJpdHlFcnJvciwgIlNjb3BlIFVSTCBzaG91bGQgc3RhcnQgd2l0aCB0aGUgZ2l2ZW4gc2NyaXB0
IFVSTCJfcyB9OworICAgIFJlc291cmNlRXJyb3IgZXJyb3IgeyBlcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCByZXNwb25zZS51cmwoKSwgIlNjb3BlIFVSTCBzaG91bGQgc3RhcnQgd2l0aCB0
aGUgZ2l2ZW4gc2NyaXB0IFVSTCJfcyB9OworICAgIG1fY2xpZW50LmpvYkZhaWxlZExvYWRpbmdT
Y3JpcHQoKnRoaXMsIFdURk1vdmUoZXJyb3IpLCBXVEZNb3ZlKGV4Y2VwdGlvbikpOwogfQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJKb2I6Om5vdGlmeUZpbmlzaGVkKCkKQEAgLTE0NSwxNSArMTUzLDE3
IEBAIHZvaWQgU2VydmljZVdvcmtlckpvYjo6bm90aWZ5RmluaXNoZWQoKQogICAgIEFTU0VSVCht
X2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CiAgICAgQVNTRVJU
KG1fc2NyaXB0TG9hZGVyKTsKICAgICAKLSAgICBpZiAoIW1fc2NyaXB0TG9hZGVyLT5mYWlsZWQo
KSkKLSAgICAgICAgbV9jbGllbnQtPmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdCgqdGhpcywgbV9z
Y3JpcHRMb2FkZXItPnNjcmlwdCgpLCBtX3NjcmlwdExvYWRlci0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCksIG1fc2NyaXB0TG9hZGVyLT5yZWZlcnJlclBvbGljeSgpKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgYXV0byYgZXJyb3IgPSAgbV9zY3JpcHRMb2FkZXItPmVycm9yKCk7Ci0gICAgICAgIEFT
U0VSVCghZXJyb3IuaXNOdWxsKCkpOwotICAgICAgICBtX2NsaWVudC0+am9iRmFpbGVkTG9hZGlu
Z1NjcmlwdCgqdGhpcywgZXJyb3IsIFdURjo6bnVsbG9wdCk7CisgICAgYXV0byBzY3JpcHRMb2Fk
ZXIgPSBXVEZNb3ZlKG1fc2NyaXB0TG9hZGVyKTsKKworICAgIGlmICghc2NyaXB0TG9hZGVyLT5m
YWlsZWQoKSkgeworICAgICAgICBtX2NsaWVudC5qb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoKnRo
aXMsIHNjcmlwdExvYWRlci0+c2NyaXB0KCksIHNjcmlwdExvYWRlci0+Y29udGVudFNlY3VyaXR5
UG9saWN5KCksIHNjcmlwdExvYWRlci0+cmVmZXJyZXJQb2xpY3koKSk7CisgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3NjcmlwdExvYWRlciA9IG51bGxwdHI7CisgICAgYXV0byYgZXJy
b3IgPSBzY3JpcHRMb2FkZXItPmVycm9yKCk7CisgICAgQVNTRVJUKCFlcnJvci5pc051bGwoKSk7
CisKKyAgICBtX2NsaWVudC5qb2JGYWlsZWRMb2FkaW5nU2NyaXB0KCp0aGlzLCBlcnJvciwgRXhj
ZXB0aW9uIHsgZXJyb3IuaXNBY2Nlc3NDb250cm9sKCkgPyBTZWN1cml0eUVycm9yIDogVHlwZUVy
cm9yLCAiU2NyaXB0IGxvYWQgZmFpbGVkIl9zIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJK
b2I6OmNhbmNlbFBlbmRpbmdMb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckpvYi5oCmluZGV4IDBhYmQyMTk0M2UxZjgwMzY5YjE5NjcyNmZl
NWNiMGRiMWFiNmI1ZGEuLjM5MTVmODVlNDY0NTY5YWM3NGI3M2Y3YzQ2NWQ2Njk0OTE3YjE2MmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Sm9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2IuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisj
aW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkNsaWVudC5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJKb2JEYXRhLmgiCkBAIC00NiwxMyArNDcsMTAgQEAgY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIGVudW0gY2xhc3MgU2VydmljZVdvcmtlckpvYlR5cGU7CiBzdHJ1Y3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE7CiAKLWNsYXNzIFNlcnZpY2VXb3JrZXJKb2Ig
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VydmljZVdvcmtlckpvYj4sIHB1YmxpYyBX
b3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgeworY2xhc3MgU2VydmljZVdvcmtlckpvYiA6IHB1Ymxp
YyBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckpvYj4gY3JlYXRlKFNlcnZp
Y2VXb3JrZXJKb2JDbGllbnQmIGNsaWVudCwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlLCBTZXJ2aWNlV29ya2VySm9iRGF0YSYmIGpvYkRhdGEpCi0gICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VySm9iKGNsaWVudCwgV1RGTW92ZShwcm9taXNl
KSwgV1RGTW92ZShqb2JEYXRhKSkpOwotICAgIH0KLQorICAgIFNlcnZpY2VXb3JrZXJKb2IoU2Vy
dmljZVdvcmtlckpvYkNsaWVudCYsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYsIFNlcnZpY2VX
b3JrZXJKb2JEYXRhJiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5TZXJ2aWNlV29ya2VySm9iKCk7
CiAKICAgICB2b2lkIGZhaWxlZFdpdGhFeGNlcHRpb24oY29uc3QgRXhjZXB0aW9uJik7CkBAIC02
NCw3ICs2Miw4IEBAIHB1YmxpYzoKICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2pvYkRhdGEuaWRlbnRpZmllcigpLmpvYklkZW50aWZpZXI7IH0KIAogICAgIGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9qb2JEYXRh
OyB9Ci0gICAgRGVmZXJyZWRQcm9taXNlKiBwcm9taXNlKCkgeyByZXR1cm4gbV9wcm9taXNlLmdl
dCgpOyB9CisgICAgYm9vbCBoYXNQcm9taXNlKCkgY29uc3QgeyByZXR1cm4gISFtX3Byb21pc2U7
IH0KKyAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiB0YWtlUHJvbWlzZSgpIHsgcmV0dXJuIFdU
Rk1vdmUobV9wcm9taXNlKTsgfQogCiAgICAgdm9pZCBmZXRjaFNjcmlwdFdpdGhDb250ZXh0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGZXRjaE9wdGlvbnM6OkNhY2hlKTsKIApAQCAtNzMsMTMg
KzcyLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbFBlbmRpbmdMb2FkKCk7CiAKIHByaXZh
dGU6Ci0gICAgU2VydmljZVdvcmtlckpvYihTZXJ2aWNlV29ya2VySm9iQ2xpZW50JiwgUmVmUHRy
PERlZmVycmVkUHJvbWlzZT4mJiwgU2VydmljZVdvcmtlckpvYkRhdGEmJik7Ci0KICAgICAvLyBX
b3JrZXJTY3JpcHRMb2FkZXJDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKICAg
ICB2b2lkIG5vdGlmeUZpbmlzaGVkKCkgZmluYWw7CiAKLSAgICBSZWY8U2VydmljZVdvcmtlckpv
YkNsaWVudD4gbV9jbGllbnQ7CisgICAgU2VydmljZVdvcmtlckpvYkNsaWVudCYgbV9jbGllbnQ7
CiAgICAgU2VydmljZVdvcmtlckpvYkRhdGEgbV9qb2JEYXRhOwogICAgIFJlZlB0cjxEZWZlcnJl
ZFByb21pc2U+IG1fcHJvbWlzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKaW5kZXggNGQ0MzMxNGNmNzk4MTIy
MmIwOTZiMTg0YjA1ODZiNjFiN2YyMDgzYi4uNmM0ODE4ZWY4ZmJmNGYxYzA4YzkyY2JkNTM0NDA3
YWUwYWU0OTA1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJKb2JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oCkBAIC01MCwxMiArNTAsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZp
Y2VXb3JrZXJKb2ImLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYsIEZldGNoT3B0
aW9uczo6Q2FjaGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgam9iRmluaXNoZWRMb2FkaW5nU2Ny
aXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlclBv
bGljeSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZp
Y2VXb3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJiwgT3B0aW9uYWw8RXhjZXB0aW9uPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGpvYkZhaWxlZExvYWRpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYiYsIGNvbnN0IFJlc291cmNlRXJyb3ImLCBFeGNlcHRpb24mJikgPSAwOwogCiAgICAg
dmlydHVhbCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVy
KCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHJlZigpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWYoKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVl
LmNwcAppbmRleCA5ZWMxYmE2ODY1ODNlYzhjMThmZjYxN2Y2MTQzNjEyNGVmNTg1MDcxLi4zOWQ3
ZDNlYmVmZDk5OWVkNDcwYzMwNWFjZDc1OWVkMzQ1MWY4N2MzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5j
cHAKQEAgLTY0LDcgKzY0LDggQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZp
bmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb24KICAgICBhdXRvJiBq
b2IgPSBmaXJzdEpvYigpOwogCiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0
UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKLSAgICBBU1NFUlQocmVnaXN0cmF0aW9u
KTsKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byog
bmV3ZXN0V29ya2VyID0gcmVnaXN0cmF0aW9uLT5nZXROZXdlc3RXb3JrZXIoKTsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYTY1MzhjNjQyMDcyMGY4OWQ4NjhhZWYyYmYwM2Iw
NDJkNWZmYWU1NC4uYzU4NjdlN2VmNDJjZDg0OTZhOTJlODZlMWVhNzhmNzRhNmIyZDRkYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDEtMzAg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIFNlcnZpY2VXb3Jr
ZXJKb2Igc2hvdWxkIG5vdGlmeSBpdHMgY2xpZW50IGluIGNhc2UgaXRzIGpvYiBpcyBjYW5jZWxs
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Mzc0
NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDc0OTgxOTY+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyL3JlZ2lzdHJhdGlvbi1zZWN1cml0eS1lcnJvci5odHRwcy1l
eHBlY3RlZC50eHQ6CisKIDIwMTktMDEtMjkgIGNhdGhpZSBjaGVuICA8Y2F0aGllY2hlbkBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIEltcG9ydCBSZXNpemUgT2JzZXJ2ZXIgdGVzdCBjYXNlcyBmcm9t
IFdQVHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3JlZ2lzdHJhdGlvbi1zZWN1cml0
eS1lcnJvci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZWdpc3RyYXRp
b24tc2VjdXJpdHktZXJyb3IuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDM4ZDA2NzhmYWYzMTQx
ZDRiY2FlNTFmMzViMzZlNWRiNzRmZGE5MjIuLmFhNzVlYzkzODQ0NzAwZjc1N2NkYzk5ZGQzNjIx
MDZhNGZlYzk4YTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3JlZ2lzdHJhdGlvbi1z
ZWN1cml0eS1lcnJvci5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIv
cmVnaXN0cmF0aW9uLXNlY3VyaXR5LWVycm9yLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMyw3ICsz
LDcgQEAgUEFTUyBSZWdpc3RlcmluZyBzYW1lIHNjb3BlIGFzIHRoZSBzY3JpcHQgZGlyZWN0b3J5
IHdpdGhvdXQgdGhlIGxhc3Qgc2xhc2gKIFBBU1MgUmVnaXN0cmF0aW9uIHNjb3BlIG91dHNpZGUg
dGhlIHNjcmlwdCBkaXJlY3RvcnkgCiBQQVNTIFJlZ2lzdGVyaW5nIHNjb3BlIG91dHNpZGUgZG9t
YWluIAogUEFTUyBSZWdpc3RlcmluZyBzY3JpcHQgb3V0c2lkZSBkb21haW4gCi1GQUlMIFJlZ2lz
dGVyaW5nIHJlZGlyZWN0ZWQgc2NyaXB0IGFzc2VydF90aHJvd3M6IFJlZ2lzdHJhdGlvbiBvZiBy
ZWRpcmVjdGVkIHNjcmlwdCBzaG91bGQgZmFpbC4gZnVuY3Rpb24gImZ1bmN0aW9uICgpIHsgdGhy
b3cgZSB9IiB0aHJldyBvYmplY3QgIlR5cGVFcnJvcjogU2NyaXB0IFVSTCBodHRwczovL2xvY2Fs
aG9zdDo5NDQzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvcmVkaXJl
Y3QucHk/UmVkaXJlY3Q9JTJGcmVzb3VyY2VzJTJGcmVnaXN0cmF0aW9uLXdvcmtlci5qcyBmZXRj
aCByZXN1bHRlZCBpbiBlcnJvcjogTm90IGFsbG93ZWQgdG8gZm9sbG93IGEgcmVkaXJlY3Rpb24g
d2hpbGUgbG9hZGluZyBodHRwczovL2xvY2FsaG9zdDo5NDQzL3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci9yZXNvdXJjZXMvcmVkaXJlY3QucHk/UmVkaXJlY3Q9JTJGcmVzb3VyY2VzJTJG
cmVnaXN0cmF0aW9uLXdvcmtlci5qcyIgdGhhdCBpcyBub3QgYSBET01FeGNlcHRpb24gU2VjdXJp
dHlFcnJvcjogcHJvcGVydHkgImNvZGUiIGlzIGVxdWFsIHRvIHVuZGVmaW5lZCwgZXhwZWN0ZWQg
MTgKK1BBU1MgUmVnaXN0ZXJpbmcgcmVkaXJlY3RlZCBzY3JpcHQgCiBQQVNTIFNjb3BlIGluY2x1
ZGluZyBwYXJlbnQtcmVmZXJlbmNlIGFuZCBub3QgdW5kZXIgdGhlIHNjcmlwdCBkaXJlY3Rvcnkg
CiBQQVNTIFNjcmlwdCBVUkwgaW5jbHVkaW5nIGNvbnNlY3V0aXZlIHNsYXNoZXMgCiBQQVNTIFNj
cmlwdCBVUkwgaXMgc2FtZS1vcmlnaW4gZmlsZXN5c3RlbTogVVJMIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>