<?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>201584</bug_id>
          
          <creation_ts>2019-09-07 17:51:53 -0700</creation_ts>
          <short_desc>[Service Workers] Drop support for registration resurrection</short_desc>
          <delta_ts>2019-10-06 19:09:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://w3c.github.io/ServiceWorker/#unregister-algorithm</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>201169</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>jaffathecake</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1568944</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-07 17:51:53 -0700</bug_when>
    <thetext>Drop support for registration resurrection (Unregistering then quickly re-registering would resurrect the original registration instead of creating a new one). This behavior is no longer in the specification (No more &quot;isUninstalling&quot; flag on the registration, and the registration is removed from the &quot;scope to registration map&quot; right away upon unregistering).

This resurrection behavior was causing a lot of flakiness in the tests so it is likely we will be able to unskip some tests. This is also what was causing the flakiness that caused Bug 201169 to be rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568946</commentid>
    <comment_count>1</comment_count>
      <attachid>378308</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-07 17:55:35 -0700</bug_when>
    <thetext>Created attachment 378308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568947</commentid>
    <comment_count>2</comment_count>
      <attachid>378309</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-07 18:10:39 -0700</bug_when>
    <thetext>Created attachment 378309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568952</commentid>
    <comment_count>3</comment_count>
      <attachid>378311</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-07 18:57:52 -0700</bug_when>
    <thetext>Created attachment 378311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568978</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-07 22:22:41 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 378311:

media/modern-media-controls/compact-media-controls/compact-media-controls-constructor.html bug 193587 (author: graouts@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568981</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-07 22:22:49 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 378311:

imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay-with-slow-text-tracks.html bug 201588 (author: youennf@gmail.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568986</commentid>
    <comment_count>6</comment_count>
      <attachid>378311</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-07 22:42:57 -0700</bug_when>
    <thetext>Comment on attachment 378311
Patch

Clearing flags on attachment: 378311

Committed r249627: &lt;https://trac.webkit.org/changeset/249627&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568987</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-07 22:42:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568988</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-07 22:43:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/55155689&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577277</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-10-06 19:09:10 -0700</bug_when>
    <thetext>*** Bug 198602 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378308</attachid>
            <date>2019-09-07 17:55:35 -0700</date>
            <delta_ts>2019-09-07 18:10:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201584-20190907175520.patch</filename>
            <type>text/plain</type>
            <size>37485</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2MmU2NmY2MzAzMWVh
ODk2YTQzZWIwNTNmYWJhMjFjMGU5M2M2MC4uMTU1ZTgzZjVkNDUxMTRkNTk4NGZlMjA2NjdhNjI0
OTQ4NWI5MDY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE5LTA5LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1NlcnZpY2UgV29ya2Vyc10g
RHJvcCBzdXBwb3J0IGZvciByZWdpc3RyYXRpb24gcmVzdXJyZWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1ODQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIHN1cHBvcnQgZm9yIHJlZ2lz
dHJhdGlvbiByZXN1cnJlY3Rpb24gKFVucmVnaXN0ZXJpbmcgdGhlbiBxdWlja2x5IHJlLXJlZ2lz
dGVyaW5nIHdvdWxkIHJlc3VycmVjdAorICAgICAgICB0aGUgb3JpZ2luYWwgcmVnaXN0cmF0aW9u
IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lKS4gVGhpcyBiZWhhdmlvciBpcyBubyBsb25n
ZXIgaW4gdGhlCisgICAgICAgIHNwZWNpZmljYXRpb24gKE5vIG1vcmUgImlzVW5pbnN0YWxsaW5n
IiBmbGFnIG9uIHRoZSByZWdpc3RyYXRpb24sIGFuZCB0aGUgcmVnaXN0cmF0aW9uIGlzIHJlbW92
ZWQKKyAgICAgICAgZnJvbSB0aGUgInNjb3BlIHRvIHJlZ2lzdHJhdGlvbiBtYXAiIHJpZ2h0IGF3
YXkgdXBvbiB1bnJlZ2lzdGVyaW5nKS4KKworICAgICAgICBUaGlzIHJlc3VycmVjdGlvbiBiZWhh
dmlvciB3YXMgY2F1c2luZyBhIGxvdCBvZiBmbGFraW5lc3MgaW4gdGhlIHRlc3RzIHNvIGl0IGlz
IGxpa2VseSB3ZSB3aWxsIGJlIGFibGUKKyAgICAgICAgdG8gdW5za2lwIHNvbWUgdGVzdHMuIFRo
aXMgaXMgYWxzbyB3aGF0IHdhcyBjYXVzaW5nIHRoZSBmbGFraW5lc3MgdGhhdCBjYXVzZWQgQnVn
IDIwMTE2OSB0byBiZSByb2xsZWQKKyAgICAgICAgb3V0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgdXBkYXRlZCBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmFjdGl2ZVdv
cmtlckZyb21SZWdpc3RyYXRpb25JRCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Z2V0
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdpc3RyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Z2V0UmVnaXN0cmF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6Y2xlYXJBbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp0ZXJtaW5hdGVQcmVpbnN0YWxs
YXRpb25Xb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRpZEZpbmlzaEFjdGl2
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmNsYWltKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyOjphZGRDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpyZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjppbnN0YWxsQ29udGV4dERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRvUmVnaXN0cmF0aW9uTWF0Y2hpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6OnJlZ2lzdHJhdGlvbkZyb21TZXJ2aWNlV29ya2VySWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVtb3ZlRnJvbVNjb3BlVG9S
ZWdpc3RyYXRpb25NYXApOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnBlcmZvcm1HZXRP
cmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnNDYWxsYmFja3MpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1
ZTo6cnVuUmVnaXN0ZXJKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6
cnVuVW5yZWdpc3RlckpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpy
dW5VcGRhdGVKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjpoYW5kbGVD
bGllbnRVbmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246Omlz
VW5yZWdpc3RlcmVkIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJh
dGlvbjo6c2NvcGVVUkxXaXRob3V0RnJhZ21lbnQgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6Om1fc2NyaXB0
UmVzb3VyY2VNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpza2lwV2FpdGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2V0SGFzUGVuZGluZ0V2ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2V0U3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OnJlZ2lzdHJhdGlvbiBjb25zdCk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDE5LTA5LTA3
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHBvc3RNZXNzYWdlIGJ1ZmZlcmluZyBiZXR3ZWVuIHRoZSBzZXJ2aWNlIHdvcmtlciBhbmQg
d2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwCmluZGV4IDkzMjZhM2JhYzY1OWEyNDY3MDVlOTIwYTg4ODQ2ZGY0ZDBlOTY5YjAu
LjVlMzdhYzYwZjE2NDllYTA2OTc3NTUxNTY0ZmYwOGNlMjhiNTBiMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xMTEs
MTMgKzExMSwxNiBAQCBTdHJpbmcgU1dTZXJ2ZXI6OnNlcnZpY2VXb3JrZXJDbGllbnRVc2VyQWdl
bnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4pCiAKIFNXU2VydmVyV29ya2VyKiBT
V1NlcnZlcjo6YWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byogcmVnaXN0cmF0aW9u
ID0gbV9yZWdpc3RyYXRpb25zQnlJRC5nZXQoaWRlbnRpZmllcik7CisgICAgYXV0byogcmVnaXN0
cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChpZGVudGlmaWVyKTsKICAgICByZXR1cm4gcmVn
aXN0cmF0aW9uID8gcmVnaXN0cmF0aW9uLT5hY3RpdmVXb3JrZXIoKSA6IG51bGxwdHI7CiB9CiAK
IFNXU2VydmVyUmVnaXN0cmF0aW9uKiBTV1NlcnZlcjo6Z2V0UmVnaXN0cmF0aW9uKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKIHsKLSAgICByZXR1
cm4gbV9yZWdpc3RyYXRpb25zLmdldChyZWdpc3RyYXRpb25LZXkpOworICAgIGF1dG8gcmVnaXN0
cmF0aW9uSUQgPSBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuZ2V0KHJlZ2lzdHJhdGlvbktleSk7
CisgICAgaWYgKCFyZWdpc3RyYXRpb25JRCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
cmV0dXJuIG1fcmVnaXN0cmF0aW9ucy5nZXQocmVnaXN0cmF0aW9uSUQpOwogfQogCiB2b2lkIFNX
U2VydmVyOjpyZWdpc3RyYXRpb25TdG9yZUltcG9ydENvbXBsZXRlKCkKQEAgLTE1NiwzNiArMTU5
LDM4IEBAIHZvaWQgU1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmJiBkYXRhKQogCiB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb24o
c3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbikKIHsK
LSAgICBhdXRvIGtleSA9IHJlZ2lzdHJhdGlvbi0+a2V5KCk7Ci0gICAgYXV0byogcmVnaXN0cmF0
aW9uUHRyID0gcmVnaXN0cmF0aW9uLmdldCgpOwotICAgIGF1dG8gYWRkUmVzdWx0MSA9IG1fcmVn
aXN0cmF0aW9ucy5hZGQoa2V5LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbikpOworICAgIG1fb3JpZ2lu
U3RvcmUtPmFkZChyZWdpc3RyYXRpb24tPmtleSgpLnRvcE9yaWdpbigpKTsKKyAgICBhdXRvIHJl
Z2lzdHJhdGlvbklEID0gcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKCFt
X3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuY29udGFpbnMocmVnaXN0cmF0aW9uLT5rZXkoKSkpOwor
ICAgIG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5zZXQocmVnaXN0cmF0aW9uLT5rZXkoKSwgcmVn
aXN0cmF0aW9uSUQpOworICAgIGF1dG8gYWRkUmVzdWx0MSA9IG1fcmVnaXN0cmF0aW9ucy5hZGQo
cmVnaXN0cmF0aW9uSUQsIFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CiAgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQxLCBhZGRSZXN1bHQxLmlzTmV3RW50cnkpOwotCi0gICAgYXV0byBhZGRSZXN1
bHQyID0gbV9yZWdpc3RyYXRpb25zQnlJRC5hZGQocmVnaXN0cmF0aW9uUHRyLT5pZGVudGlmaWVy
KCksIHJlZ2lzdHJhdGlvblB0cik7Ci0gICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQyLCBhZGRS
ZXN1bHQyLmlzTmV3RW50cnkpOwotCi0gICAgbV9vcmlnaW5TdG9yZS0+YWRkKGtleS50b3BPcmln
aW4oKSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCit2b2lkIFNXU2VydmVyOjpyZW1vdmVSZWdp
c3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgcmVnaXN0cmF0aW9u
SUQpCiB7Ci0gICAgYXV0byB0b3BPcmlnaW4gPSBrZXkudG9wT3JpZ2luKCk7Ci0gICAgYXV0byBy
ZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMudGFrZShrZXkpOworICAgIGF1dG8gcmVnaXN0
cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLnRha2UocmVnaXN0cmF0aW9uSUQpOwogICAgIEFTU0VS
VChyZWdpc3RyYXRpb24pOwotICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fcmVnaXN0cmF0aW9uc0J5
SUQucmVtb3ZlKHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpKTsKLSAgICBBU1NFUlRfVU5VU0VE
KHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOworICAgIAorICAgIGF1dG8gaXQgPSBtX3Njb3BlVG9S
ZWdpc3RyYXRpb25NYXAuZmluZChyZWdpc3RyYXRpb24tPmtleSgpKTsKKyAgICBpZiAoaXQgIT0g
bV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLmVuZCgpICYmIGl0LT52YWx1ZSA9PSByZWdpc3RyYXRp
b24tPmlkZW50aWZpZXIoKSkKKyAgICAgICAgbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLnJlbW92
ZShpdCk7CiAKLSAgICBtX29yaWdpblN0b3JlLT5yZW1vdmUodG9wT3JpZ2luKTsKKyAgICBtX29y
aWdpblN0b3JlLT5yZW1vdmUocmVnaXN0cmF0aW9uLT5rZXkoKS50b3BPcmlnaW4oKSk7CiAgICAg
aWYgKG1fcmVnaXN0cmF0aW9uU3RvcmUpCi0gICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUtPnJl
bW92ZVJlZ2lzdHJhdGlvbihrZXkpOworICAgICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlLT5yZW1v
dmVSZWdpc3RyYXRpb24ocmVnaXN0cmF0aW9uLT5rZXkoKSk7CiB9CiAKIFZlY3RvcjxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gU1dTZXJ2ZXI6OmdldFJlZ2lzdHJhdGlvbnMoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMKQogewog
ICAgIFZlY3RvcjxTV1NlcnZlclJlZ2lzdHJhdGlvbio+IG1hdGNoaW5nUmVnaXN0cmF0aW9uczsK
LSAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX3JlZ2lzdHJhdGlvbnMpIHsKLSAgICAgICAgaWYgKCFp
dGVtLnZhbHVlLT5pc1VuaW5zdGFsbGluZygpICYmIGl0ZW0ua2V5Lm9yaWdpbklzTWF0Y2hpbmco
dG9wT3JpZ2luLCBjbGllbnRVUkwpKQotICAgICAgICAgICAgbWF0Y2hpbmdSZWdpc3RyYXRpb25z
LmFwcGVuZChpdGVtLnZhbHVlLmdldCgpKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX3Njb3Bl
VG9SZWdpc3RyYXRpb25NYXApIHsKKyAgICAgICAgaWYgKGl0ZW0ua2V5Lm9yaWdpbklzTWF0Y2hp
bmcodG9wT3JpZ2luLCBjbGllbnRVUkwpKSB7CisgICAgICAgICAgICBhdXRvKiByZWdpc3RyYXRp
b24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KGl0ZW0udmFsdWUpOworICAgICAgICAgICAgQVNTRVJU
KHJlZ2lzdHJhdGlvbik7CisgICAgICAgICAgICBpZiAocmVnaXN0cmF0aW9uKQorICAgICAgICAg
ICAgICAgIG1hdGNoaW5nUmVnaXN0cmF0aW9ucy5hcHBlbmQocmVnaXN0cmF0aW9uKTsKKyAgICAg
ICAgfQogICAgIH0KICAgICAvLyBUaGUgc3BlY2lmaWNhdGlvbiBtYW5kYXRlcyB0aGF0IHJlZ2lz
dHJhdGlvbnMgYXJlIHJldHVybmVkIGluIHRoZSBpbnNlcnRpb24gb3JkZXIuCiAgICAgc3RkOjpz
b3J0KG1hdGNoaW5nUmVnaXN0cmF0aW9ucy5iZWdpbigpLCBtYXRjaGluZ1JlZ2lzdHJhdGlvbnMu
ZW5kKCksIFtdKGF1dG8mIGEsIGF1dG8mIGIpIHsKQEAgLTIxMSw3ICsyMTYsNiBAQCB2b2lkIFNX
U2VydmVyOjpjbGVhckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiAgICAgbV9qb2JRdWV1ZXMuY2xlYXIoKTsKICAgICB3aGlsZSAoIW1fcmVnaXN0cmF0
aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVnaXN0cmF0aW9ucy5iZWdpbigpLT52YWx1ZS0+
Y2xlYXIoKTsKLSAgICBBU1NFUlQobV9yZWdpc3RyYXRpb25zQnlJRC5pc0VtcHR5KCkpOwogICAg
IG1fcGVuZGluZ0NvbnRleHREYXRhcy5jbGVhcigpOwogICAgIG1fb3JpZ2luU3RvcmUtPmNsZWFy
QWxsKCk7CiAgICAgaWYgKG1fcmVnaXN0cmF0aW9uU3RvcmUpCkBAIC0yNDgsOSArMjUyLDkgQEAg
dm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXIKICAgICB9KTsKIAogICAgIFZlY3RvcjxTV1NlcnZlclJl
Z2lzdHJhdGlvbio+IHJlZ2lzdHJhdGlvbnNUb1JlbW92ZTsKLSAgICBmb3IgKGF1dG8mIGtleUFu
ZFZhbHVlIDogbV9yZWdpc3RyYXRpb25zKSB7Ci0gICAgICAgIGlmIChrZXlBbmRWYWx1ZS5rZXku
cmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKLSAgICAgICAgICAgIHJlZ2lzdHJhdGlv
bnNUb1JlbW92ZS5hcHBlbmQoa2V5QW5kVmFsdWUudmFsdWUuZ2V0KCkpOworICAgIGZvciAoYXV0
byYgcmVnaXN0cmF0aW9uIDogbV9yZWdpc3RyYXRpb25zLnZhbHVlcygpKSB7CisgICAgICAgIGlm
IChyZWdpc3RyYXRpb24tPmtleSgpLnJlbGF0ZXNUb09yaWdpbihzZWN1cml0eU9yaWdpbikpCisg
ICAgICAgICAgICByZWdpc3RyYXRpb25zVG9SZW1vdmUuYXBwZW5kKHJlZ2lzdHJhdGlvbi5nZXQo
KSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBjb250ZXh0RGF0YXMgOiBtX3BlbmRpbmdDb250
ZXh0RGF0YXMudmFsdWVzKCkpIHsKQEAgLTQxMyw3ICs0MTcsNyBAQCB2b2lkIFNXU2VydmVyOjpz
Y3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZQogdm9pZCBTV1NlcnZlcjo6dGVybWluYXRlUHJlaW5zdGFsbGF0aW9uV29ya2VyKFNX
U2VydmVyV29ya2VyJiB3b3JrZXIpCiB7CiAgICAgd29ya2VyLnRlcm1pbmF0ZSgpOwotICAgIGF1
dG8qIHJlZ2lzdHJhdGlvbiA9IGdldFJlZ2lzdHJhdGlvbih3b3JrZXIucmVnaXN0cmF0aW9uS2V5
KCkpOworICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHdvcmtlci5yZWdpc3RyYXRpb24oKTsKICAg
ICBpZiAocmVnaXN0cmF0aW9uICYmIHJlZ2lzdHJhdGlvbi0+cHJlSW5zdGFsbGF0aW9uV29ya2Vy
KCkgPT0gJndvcmtlcikKICAgICAgICAgcmVnaXN0cmF0aW9uLT5zZXRQcmVJbnN0YWxsYXRpb25X
b3JrZXIobnVsbHB0cik7CiB9CkBAIC00MzYsNyArNDQwLDcgQEAgdm9pZCBTV1NlcnZlcjo6ZGlk
RmluaXNoQWN0aXZhdGlvbihTV1NlcnZlcldvcmtlciYgd29ya2VyKQogewogICAgIFJFTEVBU0Vf
TE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVyOjpkaWRGaW5pc2hBY3RpdmF0aW9uOiBG
aW5pc2hlZCBhY3RpdmF0aW9uIGZvciBzZXJ2aWNlIHdvcmtlciAlbGx1IiwgdGhpcywgd29ya2Vy
LmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAotICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IGdl
dFJlZ2lzdHJhdGlvbih3b3JrZXIucmVnaXN0cmF0aW9uS2V5KCkpOworICAgIGF1dG8qIHJlZ2lz
dHJhdGlvbiA9IHdvcmtlci5yZWdpc3RyYXRpb24oKTsKICAgICBpZiAoIXJlZ2lzdHJhdGlvbikK
ICAgICAgICAgcmV0dXJuOwogCkBAIC00OTQsNyArNDk4LDcgQEAgdm9pZCBTV1NlcnZlcjo6Y2xh
aW0oU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKICAgICAgICAgICAgIGlmIChwcmV2aW91c0lkZW50
aWZpZXIgPT0gcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHJlZ2lzdHJhdGlvbi0+
aWRlbnRpZmllcigpOwotICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRyb2xsaW5nUmVnaXN0cmF0
aW9uID0gbV9yZWdpc3RyYXRpb25zQnlJRC5nZXQocHJldmlvdXNJZGVudGlmaWVyKSkKKyAgICAg
ICAgICAgIGlmIChhdXRvKiBjb250cm9sbGluZ1JlZ2lzdHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9u
cy5nZXQocHJldmlvdXNJZGVudGlmaWVyKSkKICAgICAgICAgICAgICAgICBjb250cm9sbGluZ1Jl
Z2lzdHJhdGlvbi0+cmVtb3ZlQ2xpZW50VXNpbmdSZWdpc3RyYXRpb24oY2xpZW50RGF0YS5pZGVu
dGlmaWVyKTsKICAgICAgICAgfQogICAgICAgICByZWdpc3RyYXRpb24tPmNvbnRyb2xDbGllbnQo
Y2xpZW50RGF0YS5pZGVudGlmaWVyKTsKQEAgLTUxMSw3ICs1MTUsNyBAQCB2b2lkIFNXU2VydmVy
OjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBj
b25zdCBTZXJ2aQogCiB2b2lkIFNXU2VydmVyOjphZGRDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9yZWdp
c3RyYXRpb25zQnlJRC5nZXQoaWRlbnRpZmllcik7CisgICAgYXV0byogcmVnaXN0cmF0aW9uID0g
bV9yZWdpc3RyYXRpb25zLmdldChpZGVudGlmaWVyKTsKICAgICBpZiAoIXJlZ2lzdHJhdGlvbikg
ewogICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gYWRkIGNsaWVudC1zaWRlIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb24gdG8gbm9uLWV4aXN0ZW50IHNlcnZlci1zaWRlIHJlZ2lzdHJhdGlv
biIpOwogICAgICAgICByZXR1cm47CkBAIC01MjIsNyArNTI2LDcgQEAgdm9pZCBTV1NlcnZlcjo6
YWRkQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBTZXJ2aWMKIAogdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBt
X3JlZ2lzdHJhdGlvbnNCeUlELmdldChpZGVudGlmaWVyKSkKKyAgICBpZiAoYXV0byogcmVnaXN0
cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChpZGVudGlmaWVyKSkKICAgICAgICAgcmVnaXN0
cmF0aW9uLT5yZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKGNvbm5lY3Rpb24u
aWRlbnRpZmllcigpKTsKIH0KIApAQCAtNTczLDcgKzU3Nyw5IEBAIHZvaWQgU1dTZXJ2ZXI6Omlu
c3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9y
ZWdpc3RyYXRpb25zLmdldChkYXRhLnJlZ2lzdHJhdGlvbi5rZXkpOworICAgIGF1dG8gcmVnaXN0
cmF0aW9uSUQgPSBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuZ2V0KGRhdGEucmVnaXN0cmF0aW9u
LmtleSk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVnaXN0cmF0aW9uSUQpOworICAgIGF1dG8qIHJl
Z2lzdHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9ucy5nZXQocmVnaXN0cmF0aW9uSUQpOwogICAgIFJF
TEVBU0VfQVNTRVJUKHJlZ2lzdHJhdGlvbik7CiAKICAgICBhdXRvIHdvcmtlciA9IFNXU2VydmVy
V29ya2VyOjpjcmVhdGUoKnRoaXMsICpyZWdpc3RyYXRpb24sIGRhdGEuc2NyaXB0VVJMLCBkYXRh
LnNjcmlwdCwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIFN0cmluZyB7IGRhdGEucmVmZXJy
ZXJQb2xpY3kgfSwgZGF0YS53b3JrZXJUeXBlLCBkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4g
eyBkYXRhLnNjcmlwdFJlc291cmNlTWFwIH0pOwpAQCAtNjI1LDkgKzYzMSw5IEBAIGJvb2wgU1dT
ZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICBpZiAoIXdvcmtlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gSWYg
dGhlIHJlZ2lzdHJhdGlvbiBmb3IgYSB3b3JraW5nIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiB0aGUg
cmVxdWVzdCB0byBydW4KKyAgICAvLyBJZiB0aGUgcmVnaXN0cmF0aW9uIGZvciBhIHdvcmtlciBo
YXMgYmVlbiByZW1vdmVkIHRoZW4gdGhlIHJlcXVlc3QgdG8gcnVuCiAgICAgLy8gdGhlIHdvcmtl
ciBpcyBtb290LgotICAgIGlmICghZ2V0UmVnaXN0cmF0aW9uKHdvcmtlci0+cmVnaXN0cmF0aW9u
S2V5KCkpKQorICAgIGlmICghd29ya2VyLT5yZWdpc3RyYXRpb24oKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29y
a2Vycy5hZGQoaWRlbnRpZmllciwgKndvcmtlcik7CkBAIC03NDgsMTQgKzc1NCwxNyBAQCB2b2lk
IFNXU2VydmVyOjpyZW1vdmVDb25uZWN0aW9uKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIg
Y29ubmVjdGlvbklkZW50aWZpZQogU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIFNXU2VydmVyOjpkb1Jl
Z2lzdHJhdGlvbk1hdGNoaW5nKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBj
b25zdCBVUkwmIGNsaWVudFVSTCkKIHsKICAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbiogc2VsZWN0
ZWRSZWdpc3RyYXRpb24gPSBudWxscHRyOwotICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDog
bV9yZWdpc3RyYXRpb25zLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmICghcmVnaXN0cmF0aW9uLT5r
ZXkoKS5pc01hdGNoaW5nKHRvcE9yaWdpbiwgY2xpZW50VVJMKSkKKyAgICBmb3IgKGF1dG8mIHBh
aXIgOiBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXApIHsKKyAgICAgICAgaWYgKCFwYWlyLmtleS5p
c01hdGNoaW5nKHRvcE9yaWdpbiwgY2xpZW50VVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBpZiAoIXNlbGVjdGVkUmVnaXN0cmF0aW9uIHx8IHNlbGVjdGVkUmVnaXN0cmF0aW9u
LT5rZXkoKS5zY29wZUxlbmd0aCgpIDwgcmVnaXN0cmF0aW9uLT5rZXkoKS5zY29wZUxlbmd0aCgp
KQotICAgICAgICAgICAgc2VsZWN0ZWRSZWdpc3RyYXRpb24gPSByZWdpc3RyYXRpb24uZ2V0KCk7
CisgICAgICAgIGlmICghc2VsZWN0ZWRSZWdpc3RyYXRpb24gfHwgc2VsZWN0ZWRSZWdpc3RyYXRp
b24tPmtleSgpLnNjb3BlTGVuZ3RoKCkgPCBwYWlyLmtleS5zY29wZUxlbmd0aCgpKSB7CisgICAg
ICAgICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KHBhaXIudmFs
dWUpOworICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7CisgICAgICAgICAgICBzZWxl
Y3RlZFJlZ2lzdHJhdGlvbiA9IHJlZ2lzdHJhdGlvbjsKKyAgICAgICAgfQogICAgIH0KIAotICAg
IHJldHVybiAoc2VsZWN0ZWRSZWdpc3RyYXRpb24gJiYgIXNlbGVjdGVkUmVnaXN0cmF0aW9uLT5p
c1VuaW5zdGFsbGluZygpKSA/IHNlbGVjdGVkUmVnaXN0cmF0aW9uIDogbnVsbHB0cjsKKyAgICBy
ZXR1cm4gc2VsZWN0ZWRSZWdpc3RyYXRpb247CiB9CiAKIFNXU2VydmVyUmVnaXN0cmF0aW9uKiBT
V1NlcnZlcjo6cmVnaXN0cmF0aW9uRnJvbVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC03NjMsOCArNzcyLDcgQEAgU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24qIFNXU2VydmVyOjpyZWdpc3RyYXRpb25Gcm9tU2VydmljZVdvcmtlcklkZW50
aWZpZXIoU2VydmljZVcKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9ydW5uaW5nT3JUZXJtaW5hdGlu
Z1dvcmtlcnMuZmluZChpZGVudGlmaWVyKTsKICAgICBpZiAoaXRlcmF0b3IgPT0gbV9ydW5uaW5n
T3JUZXJtaW5hdGluZ1dvcmtlcnMuZW5kKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgcmV0dXJuIG1fcmVnaXN0cmF0aW9ucy5nZXQoaXRlcmF0b3ItPnZhbHVlLT5yZWdpc3RyYXRp
b25LZXkoKSk7CisgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS0+cmVnaXN0cmF0aW9uKCk7CiB9
CiAKIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChDbGllbnRPcmln
aW4mJiBjbGllbnRPcmlnaW4sIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYgZGF0YSwgY29uc3Qg
T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiBjb250cm9sbGlu
Z1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTdHJpbmcmJiB1c2VyQWdlbnQp
CkBAIC03OTQsNyArODAyLDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2VydmljZVcKICAgICBpZiAoIWNv
bnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8qIGNvbnRyb2xsaW5nUmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRp
b25zQnlJRC5nZXQoKmNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIpOworICAgIGF1dG8qIGNvbnRyb2xsaW5nUmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25z
LmdldCgqY29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAg
ICAgaWYgKCFjb250cm9sbGluZ1JlZ2lzdHJhdGlvbiB8fCAhY29udHJvbGxpbmdSZWdpc3RyYXRp
b24tPmFjdGl2ZVdvcmtlcigpKQogICAgICAgICByZXR1cm47CiAKQEAgLTg1MCwxMiArODU4LDE3
IEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENs
aWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAgICAgaWYgKHJlZ2lzdHJhdGlvbkl0ZXJhdG9y
ID09IG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbi5lbmQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9uc0J5SUQu
Z2V0KHJlZ2lzdHJhdGlvbkl0ZXJhdG9yLT52YWx1ZSkpCisgICAgaWYgKGF1dG8qIHJlZ2lzdHJh
dGlvbiA9IG1fcmVnaXN0cmF0aW9ucy5nZXQocmVnaXN0cmF0aW9uSXRlcmF0b3ItPnZhbHVlKSkK
ICAgICAgICAgcmVnaXN0cmF0aW9uLT5yZW1vdmVDbGllbnRVc2luZ1JlZ2lzdHJhdGlvbihjbGll
bnRJZGVudGlmaWVyKTsKIAogICAgIG1fY2xpZW50VG9Db250cm9sbGluZ1JlZ2lzdHJhdGlvbi5y
ZW1vdmUocmVnaXN0cmF0aW9uSXRlcmF0b3IpOwogfQogCit2b2lkIFNXU2VydmVyOjpyZW1vdmVG
cm9tU2NvcGVUb1JlZ2lzdHJhdGlvbk1hcChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiBrZXkpCit7CisgICAgbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLnJlbW92ZShrZXkpOwor
fQorCiBib29sIFNXU2VydmVyOjpuZWVkc1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25Gb3JSZWdp
c3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4p
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uY29udGFp
bnMocmVnaXN0cmFibGVEb21haW4pOwpAQCAtOTE1LDcgKzkyOCw3IEBAIHZvaWQgU1dTZXJ2ZXI6
OnBlcmZvcm1HZXRPcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnNDYWxsYmFja3MoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBIYXNoU2V0PFNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luc1dpdGhSZWdp
c3RyYXRpb25zOwotICAgIGZvciAoYXV0byYga2V5IDogbV9yZWdpc3RyYXRpb25zLmtleXMoKSkg
eworICAgIGZvciAoYXV0byYga2V5IDogbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLmtleXMoKSkg
ewogICAgICAgICBvcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnMuYWRkKGtleS50b3BPcmlnaW4oKSk7
CiAgICAgICAgIG9yaWdpbnNXaXRoUmVnaXN0cmF0aW9ucy5hZGQoU2VjdXJpdHlPcmlnaW5EYXRh
IHsga2V5LnNjb3BlKCkucHJvdG9jb2woKS50b1N0cmluZygpLCBrZXkuc2NvcGUoKS5ob3N0KCku
dG9TdHJpbmcoKSwga2V5LnNjb3BlKCkucG9ydCgpIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCAwYzU3YTM1N2Vm
ZTNlY2I0ZjQxOTdjYzkxZjA4NzAyMjBiNjY3MDBkLi44YjMxODg0Y2RlNjNiMTZkYzljZGQwNGVl
ZmExMjVjZjNkYTQzZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVibGljOgogCiAgICAgV0VC
Q09SRV9FWFBPUlQgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIGdldFJlZ2lzdHJhdGlvbihjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb24o
c3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmKTsKLSAgICB2b2lkIHJlbW92
ZVJlZ2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CisgICAg
dm9pZCByZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YT4gZ2V0UmVnaXN0cmF0aW9ucyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdp
biwgY29uc3QgVVJMJiBjbGllbnRVUkwpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hl
ZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iRGF0YSYmKTsKQEAgLTE5Myw2ICsxOTMsOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGRpc2FibGVTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVs
YXkoKSB7IG1fc2hvdWxkRGlzYWJsZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxh
eSA9IHRydWU7IH0KIAorICAgIHZvaWQgcmVtb3ZlRnJvbVNjb3BlVG9SZWdpc3RyYXRpb25NYXAo
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpOworCiBwcml2YXRlOgogICAgIHZv
aWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckZl
dGNoUmVzdWx0Jik7CiAKQEAgLTIyMSw4ICsyMjMsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdGVy
bWluYXRlV29ya2VySW50ZXJuYWwoU1dTZXJ2ZXJXb3JrZXImLCBUZXJtaW5hdGlvbk1vZGUpOwog
CiAgICAgSGFzaE1hcDxTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbnM7Ci0gICAgSGFzaE1hcDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBt
X3JlZ2lzdHJhdGlvbnM7Ci0gICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qPiBtX3JlZ2lzdHJhdGlvbnNCeUlEOworICAg
IEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXI+IG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcDsKKyAgICBIYXNoTWFw
PFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U1dT
ZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3JlZ2lzdHJhdGlvbnM7CiAgICAgSGFzaE1hcDxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJKb2JRdWV1ZT4+
IG1fam9iUXVldWVzOwogCiAgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVm
PFNXU2VydmVyV29ya2VyPj4gbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpv
YlF1ZXVlLmNwcAppbmRleCA0YWMyNDRhZWU2NWZkY2FmMmFhZTMxMmY2OTc3Yzg2YjdkNjhiNDI5
Li41ZjJjZjE5MDYzMjZkNTA4ZGE1NWExYjVjMzM5YmY2NGUxOGMxM2JiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5jcHAKQEAgLTI3Myw3ICsyNzMsNiBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blJl
Z2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiAKICAgICAvLyBJZiBy
ZWdpc3RyYXRpb24gaXMgbm90IG51bGwgKGluIG91ciBwYXJsYW5jZSAiZW1wdHkiKSwgdGhlbjoK
ICAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1f
cmVnaXN0cmF0aW9uS2V5KSkgewotICAgICAgICByZWdpc3RyYXRpb24tPnNldElzVW5pbnN0YWxs
aW5nKGZhbHNlKTsKICAgICAgICAgYXV0byogbmV3ZXN0V29ya2VyID0gcmVnaXN0cmF0aW9uLT5n
ZXROZXdlc3RXb3JrZXIoKTsKICAgICAgICAgaWYgKG5ld2VzdFdvcmtlciAmJiBlcXVhbElnbm9y
aW5nRnJhZ21lbnRJZGVudGlmaWVyKGpvYi5zY3JpcHRVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0
VVJMKCkpICYmIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlID09IHJlZ2lz
dHJhdGlvbi0+dXBkYXRlVmlhQ2FjaGUoKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0coU2Vy
dmljZVdvcmtlciwgIiVwIC0gU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2I6IEZvdW5k
IGRpcmVjdGx5IHJldXNhYmxlIHJlZ2lzdHJhdGlvbiAlbGx1IGZvciBqb2IgJXMgKERPTkUpIiwg
dGhpcywgcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgam9iLmlkZW50aWZp
ZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC0yODcsNiArMjg2LDcgQEAg
dm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYgam9iKQogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBT
V1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYjogRm91bmQgcmVnaXN0cmF0aW9uICVsbHUg
Zm9yIGpvYiAlcyBidXQgaXQgbmVlZHMgdXBkYXRpbmciLCB0aGlzLCByZWdpc3RyYXRpb24tPmlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBhdXRvIG5ld1JlZ2lzdHJhdGlv
biA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KG1fc2VydmVyLCBtX3JlZ2lzdHJh
dGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29w
ZVVSTCwgam9iLnNjcmlwdFVSTCk7CisgICAgICAgIAogICAgICAgICBtX3NlcnZlci5hZGRSZWdp
c3RyYXRpb24oV1RGTW92ZShuZXdSZWdpc3RyYXRpb24pKTsKIAogICAgICAgICBSRUxFQVNFX0xP
RyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYjog
Tm8gZXhpc3RpbmcgcmVnaXN0cmF0aW9uIGZvciBqb2IgJXMsIGNvbnN0cnVjdGluZyBhIG5ldyBv
bmUuIiwgdGhpcywgam9iLmlkZW50aWZpZXIoKS5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CkBAIC0zMDYsMTUgKzMwNiwxNSBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blVucmVn
aXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKICAgICBhdXRvKiByZWdp
c3RyYXRpb24gPSBtX3NlcnZlci5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOwog
CiAgICAgLy8gSWYgcmVnaXN0cmF0aW9uIGlzIG51bGwsIHRoZW46Ci0gICAgaWYgKCFyZWdpc3Ry
YXRpb24gfHwgcmVnaXN0cmF0aW9uLT5pc1VuaW5zdGFsbGluZygpKSB7CisgICAgaWYgKCFyZWdp
c3RyYXRpb24pIHsKICAgICAgICAgLy8gSW52b2tlIFJlc29sdmUgSm9iIFByb21pc2Ugd2l0aCBq
b2IgYW5kIGZhbHNlLgogICAgICAgICBtX3NlcnZlci5yZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2Io
am9iLCBtX3JlZ2lzdHJhdGlvbktleSwgZmFsc2UpOwogICAgICAgICBmaW5pc2hDdXJyZW50Sm9i
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICAvLyBTZXQgcmVnaXN0cmF0aW9uJ3Mg
dW5pbnN0YWxsaW5nIGZsYWcuCi0gICAgcmVnaXN0cmF0aW9uLT5zZXRJc1VuaW5zdGFsbGluZyh0
cnVlKTsKKyAgICAKKyAgICAvLyBSZW1vdmUgc2NvcGUgdG8gcmVnaXN0cmF0aW9uIG1hcFtqb2Li
gJlzIHNjb3BlIHVybF0uCisgICAgbV9zZXJ2ZXIucmVtb3ZlRnJvbVNjb3BlVG9SZWdpc3RyYXRp
b25NYXAobV9yZWdpc3RyYXRpb25LZXkpOwogCiAgICAgLy8gSW52b2tlIFJlc29sdmUgSm9iIFBy
b21pc2Ugd2l0aCBqb2IgYW5kIHRydWUuCiAgICAgbV9zZXJ2ZXIucmVzb2x2ZVVucmVnaXN0cmF0
aW9uSm9iKGpvYiwgbV9yZWdpc3RyYXRpb25LZXksIHRydWUpOwpAQCAtMzMzLDggKzMzMyw2IEBA
IHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuVXBkYXRlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJK
b2JEYXRhJiBqb2IpCiAgICAgLy8gSWYgcmVnaXN0cmF0aW9uIGlzIG51bGwgKGluIG91ciBwYXJs
YW5jZSAiZW1wdHkiKSBvciByZWdpc3RyYXRpb24ncyB1bmluc3RhbGxpbmcgZmxhZyBpcyBzZXQs
IHRoZW46CiAgICAgaWYgKCFyZWdpc3RyYXRpb24pCiAgICAgICAgIHJldHVybiByZWplY3RDdXJy
ZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsICJDYW5ub3QgdXBkYXRlIGEgbnVsbC9u
b25leGlzdGVudCBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb24iX3MgfSk7Ci0gICAgaWYgKHJl
Z2lzdHJhdGlvbi0+aXNVbmluc3RhbGxpbmcoKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdEN1cnJl
bnRKb2IoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgIkNhbm5vdCB1cGRhdGUgYSBzZXJ2aWNl
IHdvcmtlciByZWdpc3RyYXRpb24gdGhhdCBpcyB1bmluc3RhbGxpbmciX3MgfSk7CiAKICAgICAv
LyBMZXQgbmV3ZXN0V29ya2VyIGJlIHRoZSByZXN1bHQgb2YgcnVubmluZyBHZXQgTmV3ZXN0IFdv
cmtlciBhbGdvcml0aG0gcGFzc2luZyByZWdpc3RyYXRpb24gYXMgdGhlIGFyZ3VtZW50LgogICAg
IGF1dG8qIG5ld2VzdFdvcmtlciA9IHJlZ2lzdHJhdGlvbi0+Z2V0TmV3ZXN0V29ya2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGJmYmYwNjUxZDhlMGQxNTBkYmVhZDg1Mzg5
NjFmOTMzMTU5NTkxOGUuLmI0MDQzNzFlOGQ5Yjg0ZWY1ZDYyN2UxZjNlZjhjNmI3OGE0NGI5NTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBT
V1NlcnZlclJlZ2lzdHJhdGlvbjo6Y2xlYXIoKQogICAgICAgICB1cGRhdGVXb3JrZXJTdGF0ZSgq
YWN0aXZlV29ya2VyLCBTZXJ2aWNlV29ya2VyU3RhdGU6OlJlZHVuZGFudCk7CiAKICAgICAvLyBS
ZW1vdmUgc2NvcGUgdG8gcmVnaXN0cmF0aW9uIG1hcFtzY29wZVN0cmluZ10uCi0gICAgbV9zZXJ2
ZXIucmVtb3ZlUmVnaXN0cmF0aW9uKGtleSgpKTsKKyAgICBtX3NlcnZlci5yZW1vdmVSZWdpc3Ry
YXRpb24oaWRlbnRpZmllcigpKTsKIH0KIAogLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZp
Y2VXb3JrZXIvI3RyeS1hY3RpdmF0ZS1hbGdvcml0aG0KQEAgLTMzMywxMSArMzMzLDE2IEBAIHZv
aWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmhhbmRsZUNsaWVudFVubG9hZCgpCiB7CiAgICAgaWYg
KGhhc0NsaWVudHNVc2luZ1JlZ2lzdHJhdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYg
KGlzVW5pbnN0YWxsaW5nKCkgJiYgdHJ5Q2xlYXIoKSkKKyAgICBpZiAoaXNVbnJlZ2lzdGVyZWQo
KSAmJiB0cnlDbGVhcigpKQogICAgICAgICByZXR1cm47CiAgICAgdHJ5QWN0aXZhdGUoKTsKIH0K
IAorYm9vbCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6aXNVbnJlZ2lzdGVyZWQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3NlcnZlci5nZXRSZWdpc3RyYXRpb24oa2V5KCkpICE9IHRoaXM7Cit9CisK
IHZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmNvbnRyb2xDbGllbnQoU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXIgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoYWN0aXZlV29ya2VyKCkp
OwpAQCAtMzQ5LDE5ICszNTQsNiBAQCB2b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpjb250cm9s
Q2xpZW50KFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGlkZW50aWZpZQogICAgIG1fc2Vy
dmVyLmNvbm5lY3Rpb24oaWRlbnRpZmllci5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciktPm5v
dGlmeUNsaWVudHNPZkNvbnRyb2xsZXJDaGFuZ2UoaWRlbnRpZmllcnMsIGFjdGl2ZVdvcmtlcigp
LT5kYXRhKCkpOwogfQogCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzZXRJc1VuaW5zdGFs
bGluZyhib29sIHZhbHVlKQotewotICAgIGlmIChtX3VuaW5zdGFsbGluZyA9PSB2YWx1ZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV91bmluc3RhbGxpbmcgPSB2YWx1ZTsKLQotICAgIGlmICgh
bV91bmluc3RhbGxpbmcgJiYgYWN0aXZlV29ya2VyKCkpIHsKLSAgICAgICAgLy8gUmVnaXN0cmF0
aW9uIHdpdGggYWN0aXZlIHdvcmtlciBoYXMgYmVlbiByZXN1cnJlY3RlZCwgd2UgbmVlZCB0byBj
aGVjayBpZiBhbnkgcmVhZHkgcHJvbWlzZXMgd2VyZSB3YWl0aW5nIGZvciB0aGlzLgotICAgICAg
ICBtX3NlcnZlci5yZXNvbHZlUmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0cygqdGhpcyk7Ci0gICAg
fQotfQotCiBib29sIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzaG91bGRTb2Z0VXBkYXRlKGNvbnN0
IEZldGNoT3B0aW9ucyYgb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucy5tb2RlID09
IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKaW5k
ZXggMDM3ZThmZDdjODUwZDliZWE1NzFhYThjZTllMDQ0YzcxNzIxNzRkYi4uZDBiNjJjMWNkODcz
NTQ5MzlhMzE2MTI5MTYwMTdhYTU2NDY4N2M2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1
ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CisjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSw3ICs0
Niw3IEBAIHN0cnVjdCBFeGNlcHRpb25EYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CiAKLWNsYXNzIFNXU2VydmVy
UmVnaXN0cmF0aW9uIHsKK2NsYXNzIFNXU2VydmVyUmVnaXN0cmF0aW9uIDogcHVibGljIENhbk1h
a2VXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24oU1dTZXJ2ZXImLCBjb25z
dCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNh
Y2hlLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCk7CkBAIC01Nyw5
ICs1OCw2IEBAIHB1YmxpYzoKICAgICBTV1NlcnZlcldvcmtlciogZ2V0TmV3ZXN0V29ya2VyKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgZGF0YSgp
IGNvbnN0OwogCi0gICAgYm9vbCBpc1VuaW5zdGFsbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdW5p
bnN0YWxsaW5nOyB9Ci0gICAgdm9pZCBzZXRJc1VuaW5zdGFsbGluZyhib29sKTsKLQogICAgIHZv
aWQgc2V0TGFzdFVwZGF0ZVRpbWUoV2FsbFRpbWUpOwogICAgIFdhbGxUaW1lIGxhc3RVcGRhdGVU
aW1lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VXBkYXRlVGltZTsgfQogICAgIGJvb2wgaXNTdGFs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFVwZGF0ZVRpbWUgJiYgKFdhbGxUaW1lOjpub3coKSAt
IG1fbGFzdFVwZGF0ZVRpbWUpID4gODY0MDBfczsgfQpAQCAtOTQsMTEgKzkyLDE1IEBAIHB1Ymxp
YzoKICAgICBib29sIHRyeUNsZWFyKCk7CiAgICAgdm9pZCB0cnlBY3RpdmF0ZSgpOwogICAgIHZv
aWQgZGlkRmluaXNoQWN0aXZhdGlvbihTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgCisg
ICAgYm9vbCBpc1VucmVnaXN0ZXJlZCgpIGNvbnN0OwogCiAgICAgdm9pZCBmb3JFYWNoQ29ubmVj
dGlvbihjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mKT4mKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkU29mdFVwZGF0ZShjb25zdCBGZXRjaE9w
dGlvbnMmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNvZnRVcGRhdGUoKTsKKyAg
ICAKKyAgICBTdHJpbmcgc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBt
X3Njb3BlVVJMOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBhY3RpdmF0ZSgpOwpAQCAtMTEwLDcg
KzExMiw2IEBAIHByaXZhdGU6CiAgICAgVVJMIG1fc2NvcGVVUkw7CiAgICAgVVJMIG1fc2NyaXB0
VVJMOwogCi0gICAgYm9vbCBtX3VuaW5zdGFsbGluZyB7IGZhbHNlIH07CiAgICAgUmVmUHRyPFNX
U2VydmVyV29ya2VyPiBtX3ByZUluc3RhbGxhdGlvbldvcmtlcjsgLy8gSW1wbGVtZW50YXRpb24g
ZGV0YWlsLCBub3QgcGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbi4KICAgICBSZWZQdHI8U1dTZXJ2
ZXJXb3JrZXI+IG1faW5zdGFsbGluZ1dvcmtlcjsKICAgICBSZWZQdHI8U1dTZXJ2ZXJXb3JrZXI+
IG1fd2FpdGluZ1dvcmtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggODJlMjkyOGM4YWY4M2U2OGIw
OGVmYmI4ZDM3ZDcyYzIzZjE0OTcyMy4uODIwYjMwZjdhNWVlMjY4YmE3MjRjZTM4NDdhNzIxMzk3
ZWE1N2IwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgU1dTZXJ2ZXJXb3Jr
ZXIqIFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoU2VydmljZVdv
cmtlcklkZW50aWYKIFNXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2Vy
dmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHNjcmlw
dFVSTCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJl
c3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlclBv
bGljeSwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
LCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4m
JiBzY3JpcHRSZXNvdXJjZU1hcCkKICAgICA6IG1fc2VydmVyKG1ha2VXZWFrUHRyKHNlcnZlcikp
CiAgICAgLCBtX3JlZ2lzdHJhdGlvbktleShyZWdpc3RyYXRpb24ua2V5KCkpCisgICAgLCBtX3Jl
Z2lzdHJhdGlvbihtYWtlV2Vha1B0cihyZWdpc3RyYXRpb24pKQogICAgICwgbV9kYXRhIHsgaWRl
bnRpZmllciwgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyU3RhdGU6OlJlZHVuZGFudCwgdHlwZSwg
cmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSB9CiAgICAgLCBtX3NjcmlwdChzY3JpcHQpCiAgICAg
LCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeShjb250ZW50U2VjdXJpdHlQb2xpY3kpCkBAIC02Myw3
ICs2NCw3IEBAIFNXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVy
LCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0CiAgICAgYXV0byByZXN1bHQgPSBhbGxX
b3JrZXJzKCkuYWRkKGlkZW50aWZpZXIsIHRoaXMpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAKLSAgICBBU1NFUlQobV9zZXJ2ZXItPmdldFJlZ2lzdHJh
dGlvbihtX3JlZ2lzdHJhdGlvbktleSkpOworICAgIEFTU0VSVChtX3NlcnZlci0+Z2V0UmVnaXN0
cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KSA9PSAmcmVnaXN0cmF0aW9uKTsKIH0KIAogU1dTZXJ2
ZXJXb3JrZXI6On5TV1NlcnZlcldvcmtlcigpCkBAIC03NiwxMCArNzcsOSBAQCBTV1NlcnZlcldv
cmtlcjo6flNXU2VydmVyV29ya2VyKCkKIAogU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNXU2Vy
dmVyV29ya2VyOjpjb250ZXh0RGF0YSgpIGNvbnN0CiB7Ci0gICAgYXV0byogcmVnaXN0cmF0aW9u
ID0gbV9zZXJ2ZXItPmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7Ci0gICAgQVNT
RVJUKHJlZ2lzdHJhdGlvbik7CisgICAgQVNTRVJUKG1fcmVnaXN0cmF0aW9uKTsKIAotICAgIHJl
dHVybiB7IFdURjo6bnVsbG9wdCwgcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlm
aWVyLCBtX3NjcmlwdCwgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fcmVmZXJyZXJQb2xpY3ks
IG1fZGF0YS5zY3JpcHRVUkwsIG1fZGF0YS50eXBlLCBtX3NlcnZlci0+c2Vzc2lvbklEKCksIGZh
bHNlLCBtX3NjcmlwdFJlc291cmNlTWFwIH07CisgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBt
X3JlZ2lzdHJhdGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQsIG1fY29u
dGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBt
X2RhdGEudHlwZSwgbV9zZXJ2ZXItPnNlc3Npb25JRCgpLCBmYWxzZSwgbV9zY3JpcHRSZXNvdXJj
ZU1hcCB9OwogfQogCiB2b2lkIFNXU2VydmVyV29ya2VyOjp0ZXJtaW5hdGUoKQpAQCAtMTc3LDEw
ICsxNzcsOSBAQCB2b2lkIFNXU2VydmVyV29ya2VyOjpza2lwV2FpdGluZygpCiB7CiAgICAgbV9p
c1NraXBXYWl0aW5nRmxhZ1NldCA9IHRydWU7CiAKLSAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBt
X3NlcnZlci0+Z2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKLSAgICBBU1NFUlQo
cmVnaXN0cmF0aW9uIHx8IGlzVGVybWluYXRpbmcoKSk7Ci0gICAgaWYgKHJlZ2lzdHJhdGlvbikK
LSAgICAgICAgcmVnaXN0cmF0aW9uLT50cnlBY3RpdmF0ZSgpOworICAgIEFTU0VSVChtX3JlZ2lz
dHJhdGlvbiB8fCBpc1Rlcm1pbmF0aW5nKCkpOworICAgIGlmIChtX3JlZ2lzdHJhdGlvbikKKyAg
ICAgICAgbV9yZWdpc3RyYXRpb24tPnRyeUFjdGl2YXRlKCk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXJX
b3JrZXI6OnNldEhhc1BlbmRpbmdFdmVudHMoYm9vbCBoYXNQZW5kaW5nRXZlbnRzKQpAQCAtMTkz
LDEzICsxOTIsMTIgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6c2V0SGFzUGVuZGluZ0V2ZW50cyhi
b29sIGhhc1BlbmRpbmdFdmVudHMpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIERvIHRyeUNs
ZWFyL3RyeUFjdGl2YXRlLCBhcyBwZXIgaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3Jr
ZXIvI3dhaXQtdW50aWwtbWV0aG9kLgotICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVy
LT5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOwotICAgIGlmICghcmVnaXN0cmF0
aW9uKQorICAgIGlmICghbV9yZWdpc3RyYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChyZWdpc3RyYXRpb24tPmlzVW5pbnN0YWxsaW5nKCkgJiYgcmVnaXN0cmF0aW9uLT50cnlDbGVh
cigpKQorICAgIGlmIChtX3JlZ2lzdHJhdGlvbi0+aXNVbnJlZ2lzdGVyZWQoKSAmJiBtX3JlZ2lz
dHJhdGlvbi0+dHJ5Q2xlYXIoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHJlZ2lzdHJhdGlvbi0+
dHJ5QWN0aXZhdGUoKTsKKyAgICBtX3JlZ2lzdHJhdGlvbi0+dHJ5QWN0aXZhdGUoKTsKIH0KIAog
dm9pZCBTV1NlcnZlcldvcmtlcjo6d2hlbkFjdGl2YXRlZChXVEY6OkZ1bmN0aW9uPHZvaWQoYm9v
bCk+JiYgaGFuZGxlcikKQEAgLTIxOCwxMCArMjE2LDkgQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6
c2V0U3RhdGUoU2VydmljZVdvcmtlclN0YXRlIHN0YXRlKQogCiAgICAgbV9kYXRhLnN0YXRlID0g
c3RhdGU7CiAKLSAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci0+Z2V0UmVnaXN0cmF0
aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKLSAgICBBU1NFUlQocmVnaXN0cmF0aW9uIHx8IHN0YXRl
ID09IFNlcnZpY2VXb3JrZXJTdGF0ZTo6UmVkdW5kYW50KTsKLSAgICBpZiAocmVnaXN0cmF0aW9u
KSB7Ci0gICAgICAgIHJlZ2lzdHJhdGlvbi0+Zm9yRWFjaENvbm5lY3Rpb24oWyZdKGF1dG8mIGNv
bm5lY3Rpb24pIHsKKyAgICBBU1NFUlQobV9yZWdpc3RyYXRpb24gfHwgc3RhdGUgPT0gU2Vydmlj
ZVdvcmtlclN0YXRlOjpSZWR1bmRhbnQpOworICAgIGlmIChtX3JlZ2lzdHJhdGlvbikgeworICAg
ICAgICBtX3JlZ2lzdHJhdGlvbi0+Zm9yRWFjaENvbm5lY3Rpb24oWyZdKGF1dG8mIGNvbm5lY3Rp
b24pIHsKICAgICAgICAgICAgIGNvbm5lY3Rpb24udXBkYXRlV29ya2VyU3RhdGVJbkNsaWVudCh0
aGlzLT5pZGVudGlmaWVyKCksIHN0YXRlKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMjM5LDEz
ICsyMzYsMTggQEAgdm9pZCBTV1NlcnZlcldvcmtlcjo6Y2FsbFdoZW5BY3RpdmF0ZWRIYW5kbGVy
KGJvb2wgc3VjY2VzcykKIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6c2V0U3RhdGUoU3RhdGUgc3Rh
dGUpCiB7Ci0gICAgQVNTRVJUKHN0YXRlICE9IFN0YXRlOjpSdW5uaW5nIHx8IG1fc2VydmVyLT5n
ZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpKTsKKyAgICBBU1NFUlQoc3RhdGUgIT0g
U3RhdGU6OlJ1bm5pbmcgfHwgbV9yZWdpc3RyYXRpb24pOwogICAgIG1fc3RhdGUgPSBzdGF0ZTsK
IAogICAgIGlmIChzdGF0ZSA9PSBTdGF0ZTo6UnVubmluZykKICAgICAgICAgbV9zaG91bGRTa2lw
SGFuZGxlRmV0Y2ggPSBmYWxzZTsKIH0KIAorU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIFNXU2VydmVy
V29ya2VyOjpyZWdpc3RyYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX3JlZ2lzdHJhdGlv
bi5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IGI2YTBlNjIxZWM5MWZmNzVhN2NjZTk0
MGMxNmU4ZjU5ZWEyMjE0NDcuLjY3NjdmYzZmMGE2YjE2YzM0MzI5Y2JhYjUzY2IwMjY0YjIxZDI0
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmgKQEAgLTExMyw2ICsxMTMsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IHVzZXJBZ2VudCgpIGNvbnN0OwogCiAgICAgYm9vbCBzaG91bGRTa2lwRmV0Y2hFdmVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2hvdWxkU2tpcEhhbmRsZUZldGNoOyB9CisgICAgCisgICAgU1dTZXJ2
ZXJSZWdpc3RyYXRpb24qIHJlZ2lzdHJhdGlvbigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFNX
U2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJ
bXBvcnRlZFNjcmlwdD4mJik7CkBAIC0xMjEsNiArMTIzLDcgQEAgcHJpdmF0ZToKIAogICAgIFdl
YWtQdHI8U1dTZXJ2ZXI+IG1fc2VydmVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkgbV9yZWdpc3RyYXRpb25LZXk7CisgICAgV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4g
bV9yZWdpc3RyYXRpb247CiAgICAgU2VydmljZVdvcmtlckRhdGEgbV9kYXRhOwogICAgIFN0cmlu
ZyBtX3NjcmlwdDsKICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgbV9j
b250ZW50U2VjdXJpdHlQb2xpY3k7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA3
NzUzNjgwOTg4MjVjOGY2MzE4ZDgyZDY1MmU3YjRjMzJkNDI2NTg2Li41ZWJhNGZmMjJmYjczNTMx
NjRkNzFhYmJmY2RiN2RiOWViYmQ4OTc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAxOS0wOS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFtTZXJ2aWNlIFdvcmtlcnNdIERyb3Agc3VwcG9ydCBmb3IgcmVnaXN0
cmF0aW9uIHJlc3VycmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAxNTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmUtc3luYyBhIGNvdXBsZSBvZiBvdXRkYXRlZCBXUFQgdGVzdHMgZnJvbSB1
cHN0cmVhbSA4MjBmMGY4NjA0N2U2ZS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLW5l
dy1zY3JpcHQuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVy
LW5ldy1zY3JpcHQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci5odHRw
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXIuaHR0cHMuaHRtbDoK
KwogMjAxOS0wOS0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBwb3N0TWVzc2FnZSBidWZmZXJpbmcgYmV0d2VlbiB0aGUgc2Vydmlj
ZSB3b3JrZXIgYW5kIHdpbmRvdwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdW5yZWdp
c3Rlci10aGVuLXJlZ2lzdGVyLW5ldy1zY3JpcHQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLW5ldy1zY3JpcHQuaHR0cHMtZXhw
ZWN0ZWQudHh0CmluZGV4IDQ0YmM1YzczNTQ5OTNjYjBiOWZjMGNiZDVhMDM0OWFiMDA5NjQyNWUu
LjE5ODhmZWU3MzhmZDFkMjdkMWY3YzA1ZDdhZGRkZTY3ZDQ3N2U2YmEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci1uZXctc2NyaXB0Lmh0dHBz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLXRoZW4tcmVn
aXN0ZXItbmV3LXNjcmlwdC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiAKIFBB
U1MgUmVnaXN0ZXJpbmcgYSBuZXcgc2NyaXB0IFVSTCB3aGlsZSBhbiB1bnJlZ2lzdGVyZWQgcmVn
aXN0cmF0aW9uIGlzIGluIHVzZSAKLUZBSUwgUmVnaXN0ZXJpbmcgYSBuZXcgc2NyaXB0IFVSTCB0
aGF0IDQwNHMgZG9lcyBub3QgcmVzdXJyZWN0IHVucmVnaXN0ZXJlZCByZWdpc3RyYXRpb24gYXNz
ZXJ0X2VxdWFsczogRG9jdW1lbnQgc2hvdWxkIG5vdCBiZSBjb250cm9sbGVkIGV4cGVjdGVkIG51
bGwgYnV0IGdvdCBvYmplY3QgIltvYmplY3QgU2VydmljZVdvcmtlcl0iCi1GQUlMIFJlZ2lzdGVy
aW5nIGEgbmV3IHNjcmlwdCBVUkwgdGhhdCBmYWlscyB0byBpbnN0YWxsIGRvZXMgbm90IHJlc3Vy
cmVjdCB1bnJlZ2lzdGVyZWQgcmVnaXN0cmF0aW9uIGFzc2VydF9lcXVhbHM6IHJlZ2lzdHJhdGlv
bi5hY3RpdmUgZXhwZWN0ZWQgbnVsbCBidXQgZ290IG9iamVjdCAiW29iamVjdCBTZXJ2aWNlV29y
a2VyXSIKK1BBU1MgUmVnaXN0ZXJpbmcgYSBuZXcgc2NyaXB0IFVSTCB0aGF0IDQwNHMgZG9lcyBu
b3QgcmVzdXJyZWN0IHVucmVnaXN0ZXJlZCByZWdpc3RyYXRpb24gCitQQVNTIFJlZ2lzdGVyaW5n
IGEgbmV3IHNjcmlwdCBVUkwgdGhhdCBmYWlscyB0byBpbnN0YWxsIGRvZXMgbm90IHJlc3VycmVj
dCB1bnJlZ2lzdGVyZWQgcmVnaXN0cmF0aW9uIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci91bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXItbmV3LXNjcmlwdC5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLW5ldy1zY3JpcHQuaHR0cHMu
aHRtbAppbmRleCBhMDdkYTdkMzk4ZmE2ODY5NTJlOWI3ZTAwZGY2MmEwN2QwN2ZkZTdiLi40NDRh
NWMzNjU3NzZiZWFmM2YxODYyMzQxMzQ0ZTk1Yjc1M2FmY2FlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci91bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXItbmV3LXNjcmlwdC5odHRwcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci1uZXctc2Ny
aXB0Lmh0dHBzLmh0bWwKQEAgLTIyLDggKzIyLDggQEAgcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0
aW9uKHQpIHsKICAgdC5hZGRfY2xlYW51cCgoKSA9PiBuZXdSZWdpc3RyYXRpb24udW5yZWdpc3Rl
cigpKTsKIAogICBhc3NlcnRfZXF1YWxzKAotICAgIHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLnNj
cmlwdFVSTCwKLSAgICBub3JtYWxpemVVUkwobmV3V29ya2VyVVJMKSwKKyAgICByZWdpc3RyYXRp
b24uaW5zdGFsbGluZywKKyAgICBudWxsLAogICAgICdiZWZvcmUgYWN0aXZhdGVkIHJlZ2lzdHJh
dGlvbi5pbnN0YWxsaW5nJwogICApOwogICBhc3NlcnRfZXF1YWxzKApAQCAtNDcsMTMgKzQ3LDEz
IEBAIHByb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbih0KSB7CiAgICAgJ2JlZm9yZSBhY3RpdmF0
ZWQgbmV3UmVnaXN0cmF0aW9uLndhaXRpbmcnCiAgICk7CiAgIGFzc2VydF9lcXVhbHMoCi0gICAg
bmV3UmVnaXN0cmF0aW9uLmFjdGl2ZS5zY3JpcHRVUkwsCi0gICAgbm9ybWFsaXplVVJMKHdvcmtl
cl91cmwpLAorICAgIG5ld1JlZ2lzdHJhdGlvbi5hY3RpdmUsCisgICAgbnVsbCwKICAgICAnYmVm
b3JlIGFjdGl2YXRlZCBuZXdSZWdpc3RyYXRpb24uYWN0aXZlJwogICApOwogICBpZnJhbWUucmVt
b3ZlKCk7CiAKLSAgYXdhaXQgd2FpdF9mb3Jfc3RhdGUodCwgcmVnaXN0cmF0aW9uLmluc3RhbGxp
bmcsICdhY3RpdmF0ZWQnKTsKKyAgYXdhaXQgd2FpdF9mb3Jfc3RhdGUodCwgbmV3UmVnaXN0cmF0
aW9uLmluc3RhbGxpbmcsICdhY3RpdmF0ZWQnKTsKIAogICBhc3NlcnRfZXF1YWxzKAogICAgIG5l
d1JlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLApAQCAtMTI5LDcgKzEyOSw4IEBAIHByb21pc2VfdGVz
dChhc3luYyBmdW5jdGlvbih0KSB7CiAKICAgYXNzZXJ0X2VxdWFscyhyZWdpc3RyYXRpb24uaW5z
dGFsbGluZywgbnVsbCwgJ3JlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nJyk7CiAgIGFzc2VydF9lcXVh
bHMocmVnaXN0cmF0aW9uLndhaXRpbmcsIG51bGwsICdyZWdpc3RyYXRpb24ud2FpdGluZycpOwot
ICBhc3NlcnRfZXF1YWxzKHJlZ2lzdHJhdGlvbi5hY3RpdmUsIG51bGwsICdyZWdpc3RyYXRpb24u
YWN0aXZlJyk7CisgIGFzc2VydF9lcXVhbHMocmVnaXN0cmF0aW9uLmFjdGl2ZS5zY3JpcHRVUkws
IG5vcm1hbGl6ZVVSTCh3b3JrZXJfdXJsKSwKKyAgICAgICAgICAgICAgICAncmVnaXN0cmF0aW9u
LmFjdGl2ZScpOwogICBhc3NlcnRfbm90X2VxdWFscyhyZWdpc3RyYXRpb24sIG5ld1JlZ2lzdHJh
dGlvbiwgJ05ldyByZWdpc3RyYXRpb24gaXMgZGlmZmVyZW50Jyk7CiB9LCAnUmVnaXN0ZXJpbmcg
YSBuZXcgc2NyaXB0IFVSTCB0aGF0IGZhaWxzIHRvIGluc3RhbGwgZG9lcyBub3QgcmVzdXJyZWN0
IHVucmVnaXN0ZXJlZCByZWdpc3RyYXRpb24nKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLmh0dHBzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci5odHRwcy1leHBl
Y3RlZC50eHQKaW5kZXggZTM1MGNiMDM4YTBmMGVjODQ3MjdjMzEzYjRmZmRiMjQzNjFhMTlmYy4u
NWZhOTljMzI5MjI1Mzk5NWM5MDVlNmU3YzQwMzJmYzViZTYwZjBlMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLmh0dHBzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXIuaHR0cHMt
ZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNiBAQAogCiBQQVNTIFVucmVnaXN0ZXIgdGhlbiByZWdp
c3RlciByZXNvbHZlcyB0byBhIG5ldyB2YWx1ZSAKLUZBSUwgVW5yZWdpc3RlciB0aGVuIHJlZ2lz
dGVyIGRvZXMgbm90IHJlc29sdmUgdG8gdGhlIG9yaWdpbmFsIHZhbHVlIGV2ZW4gaWYgdGhlIHJl
Z2lzdHJhdGlvbiBpcyBpbiB1c2UuIGFzc2VydF9ub3RfZXF1YWxzOiBVbnJlZ2lzdGVyIGFuZCBy
ZWdpc3RlciBzaG91bGQgYWx3YXlzIGNyZWF0ZSBhIG5ldyByZWdpc3RyYXRpb24gZ290IGRpc2Fs
bG93ZWQgdmFsdWUgb2JqZWN0ICJbb2JqZWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25dIgor
UEFTUyBVbnJlZ2lzdGVyIHRoZW4gcmVnaXN0ZXIgZG9lcyBub3QgcmVzb2x2ZSB0byB0aGUgb3Jp
Z2luYWwgdmFsdWUgZXZlbiBpZiB0aGUgcmVnaXN0cmF0aW9uIGlzIGluIHVzZS4gCiBQQVNTIFVu
cmVnaXN0ZXIgdGhlbiByZWdpc3RlciBkb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgY29udHJvbGxl
ZSAKLUZBSUwgVW5yZWdpc3RlciB0aGVuIHJlZ2lzdGVyIGRvZXMgbm90IHJlc3VycmVjdCB0aGUg
cmVnaXN0cmF0aW9uIGFzc2VydF9lcXVhbHM6IFJlZ2lzdHJhdGlvbiBpcyBuZXcgZXhwZWN0ZWQg
bnVsbCBidXQgZ290IG9iamVjdCAiW29iamVjdCBTZXJ2aWNlV29ya2VyXSIKK1BBU1MgVW5yZWdp
c3RlciB0aGVuIHJlZ2lzdGVyIGRvZXMgbm90IHJlc3VycmVjdCB0aGUgcmVnaXN0cmF0aW9uIAog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXIu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci5o
dHRwcy5odG1sCmluZGV4IDVmZDJjZjk3MDk1MGJmOTQ5Njg4NjdjNzVjNDFlMGFhOTcyMDVmNzYu
LmI2MTYwOGM4NDE5ZmQ0ZjM2MmRlZTUzMzA0MDRlMjc0M2EyZjA1ZjYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci5odHRwcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci5odHRwcy5odG1sCkBA
IC02Niw3ICs2Niw3IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7CiAgICAgICAudGhlbihm
dW5jdGlvbigpIHsKICAgICAgICAgICByZXR1cm4gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVn
aXN0ZXIod29ya2VyX3VybCwgeyBzY29wZTogc2NvcGUgfSk7CiAgICAgICAgIH0pCi0gICAgICAu
dGhlbihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsKKyAgICAgIC50aGVuKGZ1bmN0aW9uKG5ld1Jl
Z2lzdHJhdGlvbikgewogICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVnaXN0cmF0aW9uLmluc3Rh
bGxpbmcsIG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAnaW5zdGFsbGluZyB2ZXJzaW9u
IGlzIG51bGwnKTsKICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlZ2lzdHJhdGlvbi53YWl0aW5n
LCBudWxsLCAnd2FpdGluZyB2ZXJzaW9uIGlzIG51bGwnKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378309</attachid>
            <date>2019-09-07 18:10:39 -0700</date>
            <delta_ts>2019-09-07 18:57:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201584-20190907181024.patch</filename>
            <type>text/plain</type>
            <size>37091</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2MmU2NmY2MzAzMWVh
ODk2YTQzZWIwNTNmYWJhMjFjMGU5M2M2MC4uMTU1ZTgzZjVkNDUxMTRkNTk4NGZlMjA2NjdhNjI0
OTQ4NWI5MDY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE5LTA5LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1NlcnZpY2UgV29ya2Vyc10g
RHJvcCBzdXBwb3J0IGZvciByZWdpc3RyYXRpb24gcmVzdXJyZWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1ODQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIHN1cHBvcnQgZm9yIHJlZ2lz
dHJhdGlvbiByZXN1cnJlY3Rpb24gKFVucmVnaXN0ZXJpbmcgdGhlbiBxdWlja2x5IHJlLXJlZ2lz
dGVyaW5nIHdvdWxkIHJlc3VycmVjdAorICAgICAgICB0aGUgb3JpZ2luYWwgcmVnaXN0cmF0aW9u
IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lKS4gVGhpcyBiZWhhdmlvciBpcyBubyBsb25n
ZXIgaW4gdGhlCisgICAgICAgIHNwZWNpZmljYXRpb24gKE5vIG1vcmUgImlzVW5pbnN0YWxsaW5n
IiBmbGFnIG9uIHRoZSByZWdpc3RyYXRpb24sIGFuZCB0aGUgcmVnaXN0cmF0aW9uIGlzIHJlbW92
ZWQKKyAgICAgICAgZnJvbSB0aGUgInNjb3BlIHRvIHJlZ2lzdHJhdGlvbiBtYXAiIHJpZ2h0IGF3
YXkgdXBvbiB1bnJlZ2lzdGVyaW5nKS4KKworICAgICAgICBUaGlzIHJlc3VycmVjdGlvbiBiZWhh
dmlvciB3YXMgY2F1c2luZyBhIGxvdCBvZiBmbGFraW5lc3MgaW4gdGhlIHRlc3RzIHNvIGl0IGlz
IGxpa2VseSB3ZSB3aWxsIGJlIGFibGUKKyAgICAgICAgdG8gdW5za2lwIHNvbWUgdGVzdHMuIFRo
aXMgaXMgYWxzbyB3aGF0IHdhcyBjYXVzaW5nIHRoZSBmbGFraW5lc3MgdGhhdCBjYXVzZWQgQnVn
IDIwMTE2OSB0byBiZSByb2xsZWQKKyAgICAgICAgb3V0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgdXBkYXRlZCBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmFjdGl2ZVdv
cmtlckZyb21SZWdpc3RyYXRpb25JRCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Z2V0
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdpc3RyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Z2V0UmVnaXN0cmF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6Y2xlYXJBbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp0ZXJtaW5hdGVQcmVpbnN0YWxs
YXRpb25Xb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRpZEZpbmlzaEFjdGl2
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmNsYWltKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyOjphZGRDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpyZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjppbnN0YWxsQ29udGV4dERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRvUmVnaXN0cmF0aW9uTWF0Y2hpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6OnJlZ2lzdHJhdGlvbkZyb21TZXJ2aWNlV29ya2VySWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVtb3ZlRnJvbVNjb3BlVG9S
ZWdpc3RyYXRpb25NYXApOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnBlcmZvcm1HZXRP
cmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnNDYWxsYmFja3MpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1
ZTo6cnVuUmVnaXN0ZXJKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6
cnVuVW5yZWdpc3RlckpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpy
dW5VcGRhdGVKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjpoYW5kbGVD
bGllbnRVbmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246Omlz
VW5yZWdpc3RlcmVkIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJh
dGlvbjo6c2NvcGVVUkxXaXRob3V0RnJhZ21lbnQgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6Om1fc2NyaXB0
UmVzb3VyY2VNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpza2lwV2FpdGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2V0SGFzUGVuZGluZ0V2ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2V0U3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OnJlZ2lzdHJhdGlvbiBjb25zdCk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDE5LTA5LTA3
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHBvc3RNZXNzYWdlIGJ1ZmZlcmluZyBiZXR3ZWVuIHRoZSBzZXJ2aWNlIHdvcmtlciBhbmQg
d2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwCmluZGV4IDkzMjZhM2JhYzY1OWEyNDY3MDVlOTIwYTg4ODQ2ZGY0ZDBlOTY5YjAu
LjQ2ODRhYTUxMmNmODYyY2UxZjk5MDRkMjE5Nzk2YjVhNWM2ZWRjMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xMTEs
MTMgKzExMSwxMyBAQCBTdHJpbmcgU1dTZXJ2ZXI6OnNlcnZpY2VXb3JrZXJDbGllbnRVc2VyQWdl
bnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4pCiAKIFNXU2VydmVyV29ya2VyKiBT
V1NlcnZlcjo6YWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byogcmVnaXN0cmF0aW9u
ID0gbV9yZWdpc3RyYXRpb25zQnlJRC5nZXQoaWRlbnRpZmllcik7CisgICAgYXV0byogcmVnaXN0
cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChpZGVudGlmaWVyKTsKICAgICByZXR1cm4gcmVn
aXN0cmF0aW9uID8gcmVnaXN0cmF0aW9uLT5hY3RpdmVXb3JrZXIoKSA6IG51bGxwdHI7CiB9CiAK
IFNXU2VydmVyUmVnaXN0cmF0aW9uKiBTV1NlcnZlcjo6Z2V0UmVnaXN0cmF0aW9uKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKIHsKLSAgICByZXR1
cm4gbV9yZWdpc3RyYXRpb25zLmdldChyZWdpc3RyYXRpb25LZXkpOworICAgIHJldHVybiBtX3Nj
b3BlVG9SZWdpc3RyYXRpb25NYXAuZ2V0KHJlZ2lzdHJhdGlvbktleSkuZ2V0KCk7CiB9CiAKIHZv
aWQgU1dTZXJ2ZXI6OnJlZ2lzdHJhdGlvblN0b3JlSW1wb3J0Q29tcGxldGUoKQpAQCAtMTQyLDcg
KzE0Miw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdHJhdGlvblN0b3JlRGF0YWJhc2VGYWlsZWRU
b09wZW4oKQogdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiB7CiAgICAgLy8gUGFnZXMgc2hvdWxkIG5vdCBoYXZl
IGJlZW4gYWJsZSB0byBtYWtlIGEgbmV3IHJlZ2lzdHJhdGlvbiB0byB0aGlzIGtleSB3aGlsZSB0
aGUgaW1wb3J0IHdhcyBzdGlsbCB0YWtpbmcgcGxhY2UuCi0gICAgQVNTRVJUKCFtX3JlZ2lzdHJh
dGlvbnMuY29udGFpbnMoZGF0YS5yZWdpc3RyYXRpb24ua2V5KSk7CisgICAgQVNTRVJUKCFtX3Nj
b3BlVG9SZWdpc3RyYXRpb25NYXAuY29udGFpbnMoZGF0YS5yZWdpc3RyYXRpb24ua2V5KSk7CiAK
ICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+
KCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZp
YUNhY2hlLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0YS5zY3JpcHRVUkwpOwogICAg
IHJlZ2lzdHJhdGlvbi0+c2V0TGFzdFVwZGF0ZVRpbWUoZGF0YS5yZWdpc3RyYXRpb24ubGFzdFVw
ZGF0ZVRpbWUpOwpAQCAtMTU2LDM2ICsxNTYsMzggQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0
cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAKIHZvaWQg
U1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3Ry
YXRpb24+JiYgcmVnaXN0cmF0aW9uKQogewotICAgIGF1dG8ga2V5ID0gcmVnaXN0cmF0aW9uLT5r
ZXkoKTsKLSAgICBhdXRvKiByZWdpc3RyYXRpb25QdHIgPSByZWdpc3RyYXRpb24uZ2V0KCk7Ci0g
ICAgYXV0byBhZGRSZXN1bHQxID0gbV9yZWdpc3RyYXRpb25zLmFkZChrZXksIFdURk1vdmUocmVn
aXN0cmF0aW9uKSk7CisgICAgbV9vcmlnaW5TdG9yZS0+YWRkKHJlZ2lzdHJhdGlvbi0+a2V5KCku
dG9wT3JpZ2luKCkpOworICAgIGF1dG8gcmVnaXN0cmF0aW9uSUQgPSByZWdpc3RyYXRpb24tPmlk
ZW50aWZpZXIoKTsKKyAgICBBU1NFUlQoIW1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5jb250YWlu
cyhyZWdpc3RyYXRpb24tPmtleSgpKSk7CisgICAgbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLnNl
dChyZWdpc3RyYXRpb24tPmtleSgpLCBtYWtlV2Vha1B0cigqcmVnaXN0cmF0aW9uKSk7CisgICAg
YXV0byBhZGRSZXN1bHQxID0gbV9yZWdpc3RyYXRpb25zLmFkZChyZWdpc3RyYXRpb25JRCwgV1RG
TW92ZShyZWdpc3RyYXRpb24pKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdDEsIGFkZFJl
c3VsdDEuaXNOZXdFbnRyeSk7Ci0KLSAgICBhdXRvIGFkZFJlc3VsdDIgPSBtX3JlZ2lzdHJhdGlv
bnNCeUlELmFkZChyZWdpc3RyYXRpb25QdHItPmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9uUHRy
KTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdDIsIGFkZFJlc3VsdDIuaXNOZXdFbnRyeSk7
Ci0KLSAgICBtX29yaWdpblN0b3JlLT5hZGQoa2V5LnRvcE9yaWdpbigpKTsKIH0KIAotdm9pZCBT
V1NlcnZlcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIGtleSkKK3ZvaWQgU1dTZXJ2ZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3RyYXRpb25JRCkKIHsKLSAgICBhdXRvIHRv
cE9yaWdpbiA9IGtleS50b3BPcmlnaW4oKTsKLSAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1fcmVn
aXN0cmF0aW9ucy50YWtlKGtleSk7CisgICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJh
dGlvbnMudGFrZShyZWdpc3RyYXRpb25JRCk7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7Ci0g
ICAgYm9vbCB3YXNSZW1vdmVkID0gbV9yZWdpc3RyYXRpb25zQnlJRC5yZW1vdmUocmVnaXN0cmF0
aW9uLT5pZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVt
b3ZlZCk7CisgICAgCisgICAgYXV0byBpdCA9IG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5maW5k
KHJlZ2lzdHJhdGlvbi0+a2V5KCkpOworICAgIGlmIChpdCAhPSBtX3Njb3BlVG9SZWdpc3RyYXRp
b25NYXAuZW5kKCkgJiYgaXQtPnZhbHVlID09IHJlZ2lzdHJhdGlvbi5nZXQoKSkKKyAgICAgICAg
bV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLnJlbW92ZShpdCk7CiAKLSAgICBtX29yaWdpblN0b3Jl
LT5yZW1vdmUodG9wT3JpZ2luKTsKKyAgICBtX29yaWdpblN0b3JlLT5yZW1vdmUocmVnaXN0cmF0
aW9uLT5rZXkoKS50b3BPcmlnaW4oKSk7CiAgICAgaWYgKG1fcmVnaXN0cmF0aW9uU3RvcmUpCi0g
ICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUtPnJlbW92ZVJlZ2lzdHJhdGlvbihrZXkpOworICAg
ICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlLT5yZW1vdmVSZWdpc3RyYXRpb24ocmVnaXN0cmF0aW9u
LT5rZXkoKSk7CiB9CiAKIFZlY3RvcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gU1dT
ZXJ2ZXI6OmdldFJlZ2lzdHJhdGlvbnMoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmln
aW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMKQogewogICAgIFZlY3RvcjxTV1NlcnZlclJlZ2lzdHJh
dGlvbio+IG1hdGNoaW5nUmVnaXN0cmF0aW9uczsKLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX3Jl
Z2lzdHJhdGlvbnMpIHsKLSAgICAgICAgaWYgKCFpdGVtLnZhbHVlLT5pc1VuaW5zdGFsbGluZygp
ICYmIGl0ZW0ua2V5Lm9yaWdpbklzTWF0Y2hpbmcodG9wT3JpZ2luLCBjbGllbnRVUkwpKQotICAg
ICAgICAgICAgbWF0Y2hpbmdSZWdpc3RyYXRpb25zLmFwcGVuZChpdGVtLnZhbHVlLmdldCgpKTsK
KyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXApIHsKKyAgICAg
ICAgaWYgKGl0ZW0ua2V5Lm9yaWdpbklzTWF0Y2hpbmcodG9wT3JpZ2luLCBjbGllbnRVUkwpKSB7
CisgICAgICAgICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBpdGVtLnZhbHVlLmdldCgpOworICAg
ICAgICAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7CisgICAgICAgICAgICBpZiAocmVnaXN0cmF0
aW9uKQorICAgICAgICAgICAgICAgIG1hdGNoaW5nUmVnaXN0cmF0aW9ucy5hcHBlbmQocmVnaXN0
cmF0aW9uKTsKKyAgICAgICAgfQogICAgIH0KICAgICAvLyBUaGUgc3BlY2lmaWNhdGlvbiBtYW5k
YXRlcyB0aGF0IHJlZ2lzdHJhdGlvbnMgYXJlIHJldHVybmVkIGluIHRoZSBpbnNlcnRpb24gb3Jk
ZXIuCiAgICAgc3RkOjpzb3J0KG1hdGNoaW5nUmVnaXN0cmF0aW9ucy5iZWdpbigpLCBtYXRjaGlu
Z1JlZ2lzdHJhdGlvbnMuZW5kKCksIFtdKGF1dG8mIGEsIGF1dG8mIGIpIHsKQEAgLTIxMSw3ICsy
MTMsNiBAQCB2b2lkIFNXU2VydmVyOjpjbGVhckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgbV9qb2JRdWV1ZXMuY2xlYXIoKTsKICAgICB3aGls
ZSAoIW1fcmVnaXN0cmF0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVnaXN0cmF0aW9ucy5i
ZWdpbigpLT52YWx1ZS0+Y2xlYXIoKTsKLSAgICBBU1NFUlQobV9yZWdpc3RyYXRpb25zQnlJRC5p
c0VtcHR5KCkpOwogICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5jbGVhcigpOwogICAgIG1fb3Jp
Z2luU3RvcmUtPmNsZWFyQWxsKCk7CiAgICAgaWYgKG1fcmVnaXN0cmF0aW9uU3RvcmUpCkBAIC0y
NDgsOSArMjQ5LDkgQEAgdm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXIKICAgICB9KTsKIAogICAgIFZl
Y3RvcjxTV1NlcnZlclJlZ2lzdHJhdGlvbio+IHJlZ2lzdHJhdGlvbnNUb1JlbW92ZTsKLSAgICBm
b3IgKGF1dG8mIGtleUFuZFZhbHVlIDogbV9yZWdpc3RyYXRpb25zKSB7Ci0gICAgICAgIGlmIChr
ZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKLSAgICAgICAg
ICAgIHJlZ2lzdHJhdGlvbnNUb1JlbW92ZS5hcHBlbmQoa2V5QW5kVmFsdWUudmFsdWUuZ2V0KCkp
OworICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogbV9yZWdpc3RyYXRpb25zLnZhbHVlcygp
KSB7CisgICAgICAgIGlmIChyZWdpc3RyYXRpb24tPmtleSgpLnJlbGF0ZXNUb09yaWdpbihzZWN1
cml0eU9yaWdpbikpCisgICAgICAgICAgICByZWdpc3RyYXRpb25zVG9SZW1vdmUuYXBwZW5kKHJl
Z2lzdHJhdGlvbi5nZXQoKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBjb250ZXh0RGF0YXMg
OiBtX3BlbmRpbmdDb250ZXh0RGF0YXMudmFsdWVzKCkpIHsKQEAgLTQxMyw3ICs0MTQsNyBAQCB2
b2lkIFNXU2VydmVyOjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBPcHRpb25hbDxTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZQogdm9pZCBTV1NlcnZlcjo6dGVybWluYXRlUHJlaW5zdGFs
bGF0aW9uV29ya2VyKFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCiB7CiAgICAgd29ya2VyLnRlcm1p
bmF0ZSgpOwotICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IGdldFJlZ2lzdHJhdGlvbih3b3JrZXIu
cmVnaXN0cmF0aW9uS2V5KCkpOworICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHdvcmtlci5yZWdp
c3RyYXRpb24oKTsKICAgICBpZiAocmVnaXN0cmF0aW9uICYmIHJlZ2lzdHJhdGlvbi0+cHJlSW5z
dGFsbGF0aW9uV29ya2VyKCkgPT0gJndvcmtlcikKICAgICAgICAgcmVnaXN0cmF0aW9uLT5zZXRQ
cmVJbnN0YWxsYXRpb25Xb3JrZXIobnVsbHB0cik7CiB9CkBAIC00MzYsNyArNDM3LDcgQEAgdm9p
ZCBTV1NlcnZlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbihTV1NlcnZlcldvcmtlciYgd29ya2VyKQog
ewogICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVyOjpkaWRGaW5p
c2hBY3RpdmF0aW9uOiBGaW5pc2hlZCBhY3RpdmF0aW9uIGZvciBzZXJ2aWNlIHdvcmtlciAlbGx1
IiwgdGhpcywgd29ya2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAotICAgIGF1dG8qIHJl
Z2lzdHJhdGlvbiA9IGdldFJlZ2lzdHJhdGlvbih3b3JrZXIucmVnaXN0cmF0aW9uS2V5KCkpOwor
ICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHdvcmtlci5yZWdpc3RyYXRpb24oKTsKICAgICBpZiAo
IXJlZ2lzdHJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCkBAIC00OTQsNyArNDk1LDcgQEAgdm9p
ZCBTV1NlcnZlcjo6Y2xhaW0oU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKICAgICAgICAgICAgIGlm
IChwcmV2aW91c0lkZW50aWZpZXIgPT0gcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpOwotICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRy
b2xsaW5nUmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zQnlJRC5nZXQocHJldmlvdXNJZGVu
dGlmaWVyKSkKKyAgICAgICAgICAgIGlmIChhdXRvKiBjb250cm9sbGluZ1JlZ2lzdHJhdGlvbiA9
IG1fcmVnaXN0cmF0aW9ucy5nZXQocHJldmlvdXNJZGVudGlmaWVyKSkKICAgICAgICAgICAgICAg
ICBjb250cm9sbGluZ1JlZ2lzdHJhdGlvbi0+cmVtb3ZlQ2xpZW50VXNpbmdSZWdpc3RyYXRpb24o
Y2xpZW50RGF0YS5pZGVudGlmaWVyKTsKICAgICAgICAgfQogICAgICAgICByZWdpc3RyYXRpb24t
PmNvbnRyb2xDbGllbnQoY2xpZW50RGF0YS5pZGVudGlmaWVyKTsKQEAgLTUxMSw3ICs1MTIsNyBA
QCB2b2lkIFNXU2VydmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aQogCiB2b2lkIFNXU2VydmVyOjphZGRDbGllbnRTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byogcmVnaXN0
cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zQnlJRC5nZXQoaWRlbnRpZmllcik7CisgICAgYXV0byog
cmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChpZGVudGlmaWVyKTsKICAgICBpZiAo
IXJlZ2lzdHJhdGlvbikgewogICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gYWRkIGNsaWVu
dC1zaWRlIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gdG8gbm9uLWV4aXN0ZW50IHNlcnZlci1z
aWRlIHJlZ2lzdHJhdGlvbiIpOwogICAgICAgICByZXR1cm47CkBAIC01MjIsNyArNTIzLDcgQEAg
dm9pZCBTV1NlcnZlcjo6YWRkQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBTZXJ2aWMKIAogdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiBy
ZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnNCeUlELmdldChpZGVudGlmaWVyKSkKKyAgICBp
ZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChpZGVudGlmaWVyKSkK
ICAgICAgICAgcmVnaXN0cmF0aW9uLT5yZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKTsKIH0KIApAQCAtNTczLDkgKzU3NCw3IEBAIHZv
aWQgU1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmIGRhdGEpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byogcmVn
aXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChkYXRhLnJlZ2lzdHJhdGlvbi5rZXkpOwot
ICAgIFJFTEVBU0VfQVNTRVJUKHJlZ2lzdHJhdGlvbik7Ci0KKyAgICBhdXRvKiByZWdpc3RyYXRp
b24gPSBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuZ2V0KGRhdGEucmVnaXN0cmF0aW9uLmtleSku
Z2V0KCk7CiAgICAgYXV0byB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6Y3JlYXRlKCp0aGlzLCAq
cmVnaXN0cmF0aW9uLCBkYXRhLnNjcmlwdFVSTCwgZGF0YS5zY3JpcHQsIGRhdGEuY29udGVudFNl
Y3VyaXR5UG9saWN5LCBTdHJpbmcgeyBkYXRhLnJlZmVycmVyUG9saWN5IH0sIGRhdGEud29ya2Vy
VHlwZSwgZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHsgZGF0YS5zY3JpcHRSZXNvdXJjZU1h
cCB9KTsKIAogICAgIGF1dG8qIGNvbm5lY3Rpb24gPSB3b3JrZXItPmNvbnRleHRDb25uZWN0aW9u
KCk7CkBAIC02MjUsOSArNjI0LDkgQEAgYm9vbCBTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIGlmICghd29ya2VyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBJZiB0aGUgcmVnaXN0cmF0aW9uIGZvciBhIHdv
cmtpbmcgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIHRoZSByZXF1ZXN0IHRvIHJ1bgorICAgIC8vIElm
IHRoZSByZWdpc3RyYXRpb24gZm9yIGEgd29ya2VyIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiB0aGUg
cmVxdWVzdCB0byBydW4KICAgICAvLyB0aGUgd29ya2VyIGlzIG1vb3QuCi0gICAgaWYgKCFnZXRS
ZWdpc3RyYXRpb24od29ya2VyLT5yZWdpc3RyYXRpb25LZXkoKSkpCisgICAgaWYgKCF3b3JrZXIt
PnJlZ2lzdHJhdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmFkZChpZGVudGlmaWVyLCAqd29y
a2VyKTsKQEAgLTc0OCwxNCArNzQ3LDE0IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNvbm5lY3Rp
b24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllCiBTV1Nl
cnZlclJlZ2lzdHJhdGlvbiogU1dTZXJ2ZXI6OmRvUmVnaXN0cmF0aW9uTWF0Y2hpbmcoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMKQogewog
ICAgIFNXU2VydmVyUmVnaXN0cmF0aW9uKiBzZWxlY3RlZFJlZ2lzdHJhdGlvbiA9IG51bGxwdHI7
Ci0gICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiBtX3JlZ2lzdHJhdGlvbnMudmFsdWVzKCkp
IHsKLSAgICAgICAgaWYgKCFyZWdpc3RyYXRpb24tPmtleSgpLmlzTWF0Y2hpbmcodG9wT3JpZ2lu
LCBjbGllbnRVUkwpKQorICAgIGZvciAoYXV0byYgcGFpciA6IG1fc2NvcGVUb1JlZ2lzdHJhdGlv
bk1hcCkgeworICAgICAgICBpZiAoIXBhaXIua2V5LmlzTWF0Y2hpbmcodG9wT3JpZ2luLCBjbGll
bnRVUkwpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghc2VsZWN0ZWRSZWdp
c3RyYXRpb24gfHwgc2VsZWN0ZWRSZWdpc3RyYXRpb24tPmtleSgpLnNjb3BlTGVuZ3RoKCkgPCBy
ZWdpc3RyYXRpb24tPmtleSgpLnNjb3BlTGVuZ3RoKCkpCi0gICAgICAgICAgICBzZWxlY3RlZFJl
Z2lzdHJhdGlvbiA9IHJlZ2lzdHJhdGlvbi5nZXQoKTsKKyAgICAgICAgaWYgKCFzZWxlY3RlZFJl
Z2lzdHJhdGlvbiB8fCBzZWxlY3RlZFJlZ2lzdHJhdGlvbi0+a2V5KCkuc2NvcGVMZW5ndGgoKSA8
IHBhaXIua2V5LnNjb3BlTGVuZ3RoKCkpCisgICAgICAgICAgICBzZWxlY3RlZFJlZ2lzdHJhdGlv
biA9IHBhaXIudmFsdWUuZ2V0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIChzZWxlY3RlZFJlZ2lz
dHJhdGlvbiAmJiAhc2VsZWN0ZWRSZWdpc3RyYXRpb24tPmlzVW5pbnN0YWxsaW5nKCkpID8gc2Vs
ZWN0ZWRSZWdpc3RyYXRpb24gOiBudWxscHRyOworICAgIHJldHVybiBzZWxlY3RlZFJlZ2lzdHJh
dGlvbjsKIH0KIAogU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIFNXU2VydmVyOjpyZWdpc3RyYXRpb25G
cm9tU2VydmljZVdvcmtlcklkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKQEAgLTc2Myw4ICs3NjIsNyBAQCBTV1NlcnZlclJlZ2lzdHJhdGlvbiogU1dTZXJ2ZXI6
OnJlZ2lzdHJhdGlvbkZyb21TZXJ2aWNlV29ya2VySWRlbnRpZmllcihTZXJ2aWNlVwogICAgIGF1
dG8gaXRlcmF0b3IgPSBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5maW5kKGlkZW50aWZp
ZXIpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5l
bmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gbV9yZWdpc3RyYXRp
b25zLmdldChpdGVyYXRvci0+dmFsdWUtPnJlZ2lzdHJhdGlvbktleSgpKTsKKyAgICByZXR1cm4g
aXRlcmF0b3ItPnZhbHVlLT5yZWdpc3RyYXRpb24oKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6cmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2Vy
dmljZVdvcmtlckNsaWVudERhdGEmJiBkYXRhLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIsIFN0cmluZyYmIHVzZXJBZ2VudCkKQEAgLTc5NCw3ICs3OTIsNyBAQCB2
b2lkIFNXU2VydmVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2luJiYg
Y2xpZW50T3JpZ2luLCBTZXJ2aWNlVwogICAgIGlmICghY29udHJvbGxpbmdTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogY29u
dHJvbGxpbmdSZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnNCeUlELmdldCgqY29udHJvbGxp
bmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CisgICAgYXV0byogY29udHJv
bGxpbmdSZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KCpjb250cm9sbGluZ1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKICAgICBpZiAoIWNvbnRyb2xsaW5nUmVn
aXN0cmF0aW9uIHx8ICFjb250cm9sbGluZ1JlZ2lzdHJhdGlvbi0+YWN0aXZlV29ya2VyKCkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtODUwLDEyICs4NDgsMTcgQEAgdm9pZCBTV1NlcnZlcjo6dW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmln
aW4sIFMKICAgICBpZiAocmVnaXN0cmF0aW9uSXRlcmF0b3IgPT0gbV9jbGllbnRUb0NvbnRyb2xs
aW5nUmVnaXN0cmF0aW9uLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoYXV0byog
cmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zQnlJRC5nZXQocmVnaXN0cmF0aW9uSXRlcmF0
b3ItPnZhbHVlKSkKKyAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25z
LmdldChyZWdpc3RyYXRpb25JdGVyYXRvci0+dmFsdWUpKQogICAgICAgICByZWdpc3RyYXRpb24t
PnJlbW92ZUNsaWVudFVzaW5nUmVnaXN0cmF0aW9uKGNsaWVudElkZW50aWZpZXIpOwogCiAgICAg
bV9jbGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLnJlbW92ZShyZWdpc3RyYXRpb25JdGVy
YXRvcik7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUZyb21TY29wZVRvUmVnaXN0cmF0aW9u
TWFwKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSkKK3sKKyAgICBtX3Nj
b3BlVG9SZWdpc3RyYXRpb25NYXAucmVtb3ZlKGtleSk7Cit9CisKIGJvb2wgU1dTZXJ2ZXI6Om5l
ZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKIHsKICAgICByZXR1cm4g
bV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbik7
CkBAIC05MTUsNyArOTE4LDcgQEAgdm9pZCBTV1NlcnZlcjo6cGVyZm9ybUdldE9yaWdpbnNXaXRo
UmVnaXN0cmF0aW9uc0NhbGxiYWNrcygpCiAgICAgICAgIHJldHVybjsKIAogICAgIEhhc2hTZXQ8
U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnM7Ci0gICAgZm9yIChh
dXRvJiBrZXkgOiBtX3JlZ2lzdHJhdGlvbnMua2V5cygpKSB7CisgICAgZm9yIChhdXRvJiBrZXkg
OiBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAua2V5cygpKSB7CiAgICAgICAgIG9yaWdpbnNXaXRo
UmVnaXN0cmF0aW9ucy5hZGQoa2V5LnRvcE9yaWdpbigpKTsKICAgICAgICAgb3JpZ2luc1dpdGhS
ZWdpc3RyYXRpb25zLmFkZChTZWN1cml0eU9yaWdpbkRhdGEgeyBrZXkuc2NvcGUoKS5wcm90b2Nv
bCgpLnRvU3RyaW5nKCksIGtleS5zY29wZSgpLmhvc3QoKS50b1N0cmluZygpLCBrZXkuc2NvcGUo
KS5wb3J0KCkgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDBjNTdhMzU3ZWZlM2VjYjRmNDE5N2NjOTFmMDg3MDIy
MGI2NjcwMGQuLjMwZTJhZjVjYWUwNGQ3ZmVhMzI4NzQ2NDA1N2UxNWM4NzQ3NjZjYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAg
LTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlclJl
Z2lzdHJhdGlvbiogZ2V0UmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmKTsKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2
ZXJSZWdpc3RyYXRpb24+JiYpOwotICAgIHZvaWQgcmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKKyAgICB2b2lkIHJlbW92ZVJlZ2lzdHJhdGlv
bihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiBnZXRSZWdpc3RyYXRpb25z
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVS
TCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJK
b2JEYXRhJiYpOwpAQCAtMTkzLDYgKzE5Myw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzYWJs
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpIHsgbV9zaG91bGREaXNhYmxl
U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gdHJ1ZTsgfQogCisgICAgdm9p
ZCByZW1vdmVGcm9tU2NvcGVUb1JlZ2lzdHJhdGlvbk1hcChjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5Jik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVk
KENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKIApAQCAtMjIx
LDggKzIyMyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXJJbnRlcm5hbChT
V1NlcnZlcldvcmtlciYsIFRlcm1pbmF0aW9uTW9kZSk7CiAKICAgICBIYXNoTWFwPFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPj4gbV9jb25u
ZWN0aW9uczsKLSAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIHN0ZDo6
dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fcmVnaXN0cmF0aW9uczsKLSAgICBI
YXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lz
dHJhdGlvbio+IG1fcmVnaXN0cmF0aW9uc0J5SUQ7CisgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LCBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9zY29wZVRv
UmVnaXN0cmF0aW9uTWFwOworICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fcmVnaXN0
cmF0aW9uczsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIHN0ZDo6
dW5pcXVlX3B0cjxTV1NlcnZlckpvYlF1ZXVlPj4gbV9qb2JRdWV1ZXM7CiAKICAgICBIYXNoTWFw
PFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U1dTZXJ2ZXJXb3JrZXI+PiBtX3J1bm5pbmdP
clRlcm1pbmF0aW5nV29ya2VyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDRhYzI0NGFlZTY1
ZmRjYWYyYWFlMzEyZjY5NzdjODZiN2Q2OGI0MjkuLjYxNmJjOTZkMzkyYTdiNjI3NDljZTk3NmM1
MTRjOTFlMDBlMzE3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMjczLDcgKzI3Myw2IEBA
IHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGEmIGpvYikKIAogICAgIC8vIElmIHJlZ2lzdHJhdGlvbiBpcyBub3QgbnVsbCAoaW4g
b3VyIHBhcmxhbmNlICJlbXB0eSIpLCB0aGVuOgogICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24g
PSBtX3NlcnZlci5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpKSB7Ci0gICAgICAg
IHJlZ2lzdHJhdGlvbi0+c2V0SXNVbmluc3RhbGxpbmcoZmFsc2UpOwogICAgICAgICBhdXRvKiBu
ZXdlc3RXb3JrZXIgPSByZWdpc3RyYXRpb24tPmdldE5ld2VzdFdvcmtlcigpOwogICAgICAgICBp
ZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoam9iLnNj
cmlwdFVSTCwgbmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSkgJiYgam9iLnJlZ2lzdHJhdGlvbk9w
dGlvbnMudXBkYXRlVmlhQ2FjaGUgPT0gcmVnaXN0cmF0aW9uLT51cGRhdGVWaWFDYWNoZSgpKSB7
CiAgICAgICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpv
YlF1ZXVlOjpydW5SZWdpc3RlckpvYjogRm91bmQgZGlyZWN0bHkgcmV1c2FibGUgcmVnaXN0cmF0
aW9uICVsbHUgZm9yIGpvYiAlcyAoRE9ORSkiLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKQEAgLTMwNiwxNSArMzA1LDE1IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVu
VW5yZWdpc3RlckpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogICAgIGF1dG8q
IHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktl
eSk7CiAKICAgICAvLyBJZiByZWdpc3RyYXRpb24gaXMgbnVsbCwgdGhlbjoKLSAgICBpZiAoIXJl
Z2lzdHJhdGlvbiB8fCByZWdpc3RyYXRpb24tPmlzVW5pbnN0YWxsaW5nKCkpIHsKKyAgICBpZiAo
IXJlZ2lzdHJhdGlvbikgewogICAgICAgICAvLyBJbnZva2UgUmVzb2x2ZSBKb2IgUHJvbWlzZSB3
aXRoIGpvYiBhbmQgZmFsc2UuCiAgICAgICAgIG1fc2VydmVyLnJlc29sdmVVbnJlZ2lzdHJhdGlv
bkpvYihqb2IsIG1fcmVnaXN0cmF0aW9uS2V5LCBmYWxzZSk7CiAgICAgICAgIGZpbmlzaEN1cnJl
bnRKb2IoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIC8vIFNldCByZWdpc3RyYXRp
b24ncyB1bmluc3RhbGxpbmcgZmxhZy4KLSAgICByZWdpc3RyYXRpb24tPnNldElzVW5pbnN0YWxs
aW5nKHRydWUpOworICAgIAorICAgIC8vIFJlbW92ZSBzY29wZSB0byByZWdpc3RyYXRpb24gbWFw
W2pvYuKAmXMgc2NvcGUgdXJsXS4KKyAgICBtX3NlcnZlci5yZW1vdmVGcm9tU2NvcGVUb1JlZ2lz
dHJhdGlvbk1hcChtX3JlZ2lzdHJhdGlvbktleSk7CiAKICAgICAvLyBJbnZva2UgUmVzb2x2ZSBK
b2IgUHJvbWlzZSB3aXRoIGpvYiBhbmQgdHJ1ZS4KICAgICBtX3NlcnZlci5yZXNvbHZlVW5yZWdp
c3RyYXRpb25Kb2Ioam9iLCBtX3JlZ2lzdHJhdGlvbktleSwgdHJ1ZSk7CkBAIC0zMzMsOCArMzMy
LDYgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5VcGRhdGVKb2IoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmIGpvYikKICAgICAvLyBJZiByZWdpc3RyYXRpb24gaXMgbnVsbCAoaW4gb3Vy
IHBhcmxhbmNlICJlbXB0eSIpIG9yIHJlZ2lzdHJhdGlvbidzIHVuaW5zdGFsbGluZyBmbGFnIGlz
IHNldCwgdGhlbjoKICAgICBpZiAoIXJlZ2lzdHJhdGlvbikKICAgICAgICAgcmV0dXJuIHJlamVj
dEN1cnJlbnRKb2IoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgIkNhbm5vdCB1cGRhdGUgYSBu
dWxsL25vbmV4aXN0ZW50IHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbiJfcyB9KTsKLSAgICBp
ZiAocmVnaXN0cmF0aW9uLT5pc1VuaW5zdGFsbGluZygpKQotICAgICAgICByZXR1cm4gcmVqZWN0
Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAiQ2Fubm90IHVwZGF0ZSBhIHNl
cnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbiB0aGF0IGlzIHVuaW5zdGFsbGluZyJfcyB9KTsKIAog
ICAgIC8vIExldCBuZXdlc3RXb3JrZXIgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIEdldCBOZXdl
c3QgV29ya2VyIGFsZ29yaXRobSBwYXNzaW5nIHJlZ2lzdHJhdGlvbiBhcyB0aGUgYXJndW1lbnQu
CiAgICAgYXV0byogbmV3ZXN0V29ya2VyID0gcmVnaXN0cmF0aW9uLT5nZXROZXdlc3RXb3JrZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggYmZiZjA2NTFkOGUwZDE1MGRiZWFk
ODUzODk2MWY5MzMxNTk1OTE4ZS4uYjQwNDM3MWU4ZDliODRlZjVkNjI3ZTFmM2VmOGM2Yjc4YTQ0
Yjk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCB2
b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpjbGVhcigpCiAgICAgICAgIHVwZGF0ZVdvcmtlclN0
YXRlKCphY3RpdmVXb3JrZXIsIFNlcnZpY2VXb3JrZXJTdGF0ZTo6UmVkdW5kYW50KTsKIAogICAg
IC8vIFJlbW92ZSBzY29wZSB0byByZWdpc3RyYXRpb24gbWFwW3Njb3BlU3RyaW5nXS4KLSAgICBt
X3NlcnZlci5yZW1vdmVSZWdpc3RyYXRpb24oa2V5KCkpOworICAgIG1fc2VydmVyLnJlbW92ZVJl
Z2lzdHJhdGlvbihpZGVudGlmaWVyKCkpOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jdHJ5LWFjdGl2YXRlLWFsZ29yaXRobQpAQCAtMzMzLDExICszMzMsMTYg
QEAgdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6aGFuZGxlQ2xpZW50VW5sb2FkKCkKIHsKICAg
ICBpZiAoaGFzQ2xpZW50c1VzaW5nUmVnaXN0cmF0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBpZiAoaXNVbmluc3RhbGxpbmcoKSAmJiB0cnlDbGVhcigpKQorICAgIGlmIChpc1VucmVnaXN0
ZXJlZCgpICYmIHRyeUNsZWFyKCkpCiAgICAgICAgIHJldHVybjsKICAgICB0cnlBY3RpdmF0ZSgp
OwogfQogCitib29sIFNXU2VydmVyUmVnaXN0cmF0aW9uOjppc1VucmVnaXN0ZXJlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbihrZXkoKSkgIT0gdGhpczsK
K30KKwogdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6Y29udHJvbENsaWVudChTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChhY3RpdmVXb3Jr
ZXIoKSk7CkBAIC0zNDksMTkgKzM1NCw2IEBAIHZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmNv
bnRyb2xDbGllbnQoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllCiAgICAg
bV9zZXJ2ZXIuY29ubmVjdGlvbihpZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KS0+bm90aWZ5Q2xpZW50c09mQ29udHJvbGxlckNoYW5nZShpZGVudGlmaWVycywgYWN0aXZlV29y
a2VyKCktPmRhdGEoKSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNldElzVW5p
bnN0YWxsaW5nKGJvb2wgdmFsdWUpCi17Ci0gICAgaWYgKG1fdW5pbnN0YWxsaW5nID09IHZhbHVl
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3VuaW5zdGFsbGluZyA9IHZhbHVlOwotCi0gICAg
aWYgKCFtX3VuaW5zdGFsbGluZyAmJiBhY3RpdmVXb3JrZXIoKSkgewotICAgICAgICAvLyBSZWdp
c3RyYXRpb24gd2l0aCBhY3RpdmUgd29ya2VyIGhhcyBiZWVuIHJlc3VycmVjdGVkLCB3ZSBuZWVk
IHRvIGNoZWNrIGlmIGFueSByZWFkeSBwcm9taXNlcyB3ZXJlIHdhaXRpbmcgZm9yIHRoaXMuCi0g
ICAgICAgIG1fc2VydmVyLnJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzKCp0aGlzKTsK
LSAgICB9Ci19Ci0KIGJvb2wgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNob3VsZFNvZnRVcGRhdGUo
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zKSBjb25zdAogewogICAgIGlmIChvcHRpb25zLm1v
ZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24u
aAppbmRleCAwMzdlOGZkN2M4NTBkOWJlYTU3MWFhOGNlOWUwNDRjNzE3MjE3NGRiLi5kMGI2MmMx
Y2Q4NzM1NDkzOWEzMTYxMjkxNjAxN2FhNTY0Njg3YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlv
bi5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1
LDcgKzQ2LDcgQEAgc3RydWN0IEV4Y2VwdGlvbkRhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKIAotY2xhc3MgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24geworY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb24gOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1NlcnZlciYs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VyVXBkYXRl
VmlhQ2FjaGUsIGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKTsKQEAg
LTU3LDkgKzU4LDYgQEAgcHVibGljOgogICAgIFNXU2VydmVyV29ya2VyKiBnZXROZXdlc3RXb3Jr
ZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSBk
YXRhKCkgY29uc3Q7CiAKLSAgICBib29sIGlzVW5pbnN0YWxsaW5nKCkgY29uc3QgeyByZXR1cm4g
bV91bmluc3RhbGxpbmc7IH0KLSAgICB2b2lkIHNldElzVW5pbnN0YWxsaW5nKGJvb2wpOwotCiAg
ICAgdm9pZCBzZXRMYXN0VXBkYXRlVGltZShXYWxsVGltZSk7CiAgICAgV2FsbFRpbWUgbGFzdFVw
ZGF0ZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RVcGRhdGVUaW1lOyB9CiAgICAgYm9vbCBp
c1N0YWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VXBkYXRlVGltZSAmJiAoV2FsbFRpbWU6Om5v
dygpIC0gbV9sYXN0VXBkYXRlVGltZSkgPiA4NjQwMF9zOyB9CkBAIC05NCwxMSArOTIsMTUgQEAg
cHVibGljOgogICAgIGJvb2wgdHJ5Q2xlYXIoKTsKICAgICB2b2lkIHRyeUFjdGl2YXRlKCk7CiAg
ICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAg
ICAKKyAgICBib29sIGlzVW5yZWdpc3RlcmVkKCkgY29uc3Q7CiAKICAgICB2b2lkIGZvckVhY2hD
b25uZWN0aW9uKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYp
PiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRTb2Z0VXBkYXRlKGNvbnN0IEZl
dGNoT3B0aW9ucyYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc29mdFVwZGF0ZSgp
OworICAgIAorICAgIFN0cmluZyBzY29wZVVSTFdpdGhvdXRGcmFnbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NvcGVVUkw7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGFjdGl2YXRlKCk7CkBAIC0x
MTAsNyArMTEyLDYgQEAgcHJpdmF0ZToKICAgICBVUkwgbV9zY29wZVVSTDsKICAgICBVUkwgbV9z
Y3JpcHRVUkw7CiAKLSAgICBib29sIG1fdW5pbnN0YWxsaW5nIHsgZmFsc2UgfTsKICAgICBSZWZQ
dHI8U1dTZXJ2ZXJXb3JrZXI+IG1fcHJlSW5zdGFsbGF0aW9uV29ya2VyOyAvLyBJbXBsZW1lbnRh
dGlvbiBkZXRhaWwsIG5vdCBwYXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uLgogICAgIFJlZlB0cjxT
V1NlcnZlcldvcmtlcj4gbV9pbnN0YWxsaW5nV29ya2VyOwogICAgIFJlZlB0cjxTV1NlcnZlcldv
cmtlcj4gbV93YWl0aW5nV29ya2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCA4MmUyOTI4YzhhZjgz
ZTY4YjA4ZWZiYjhkMzdkNzJjMjNmMTQ5NzIzLi44MjBiMzBmN2E1ZWUyNjhiYTcyNGNlMzg0N2E3
MjEzOTdlYTU3YjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtNTEsNiArNTEsNyBAQCBTV1NlcnZl
cldvcmtlciogU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihTZXJ2
aWNlV29ya2VySWRlbnRpZgogU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVy
JiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYg
c2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIFN0cmluZyYmIHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2Ny
aXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogICAgIDogbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2Vy
dmVyKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uS2V5KHJlZ2lzdHJhdGlvbi5rZXkoKSkKKyAgICAs
IG1fcmVnaXN0cmF0aW9uKG1ha2VXZWFrUHRyKHJlZ2lzdHJhdGlvbikpCiAgICAgLCBtX2RhdGEg
eyBpZGVudGlmaWVyLCBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJTdGF0ZTo6UmVkdW5kYW50LCB0
eXBlLCByZWdpc3RyYXRpb24uaWRlbnRpZmllcigpIH0KICAgICAsIG1fc2NyaXB0KHNjcmlwdCkK
ICAgICAsIG1fY29udGVudFNlY3VyaXR5UG9saWN5KGNvbnRlbnRTZWN1cml0eVBvbGljeSkKQEAg
LTYzLDcgKzY0LDcgQEAgU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBz
ZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXQKICAgICBhdXRvIHJlc3VsdCA9
IGFsbFdvcmtlcnMoKS5hZGQoaWRlbnRpZmllciwgdGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAgIEFTU0VSVChtX3NlcnZlci0+Z2V0UmVn
aXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KSk7CisgICAgQVNTRVJUKG1fc2VydmVyLT5nZXRS
ZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpID09ICZyZWdpc3RyYXRpb24pOwogfQogCiBT
V1NlcnZlcldvcmtlcjo6flNXU2VydmVyV29ya2VyKCkKQEAgLTc2LDEwICs3Nyw5IEBAIFNXU2Vy
dmVyV29ya2VyOjp+U1dTZXJ2ZXJXb3JrZXIoKQogCiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
U1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHREYXRhKCkgY29uc3QKIHsKLSAgICBhdXRvKiByZWdpc3Ry
YXRpb24gPSBtX3NlcnZlci0+Z2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKLSAg
ICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKKyAgICBBU1NFUlQobV9yZWdpc3RyYXRpb24pOwogCi0g
ICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCByZWdpc3RyYXRpb24tPmRhdGEoKSwgbV9kYXRhLmlk
ZW50aWZpZXIsIG1fc2NyaXB0LCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9yZWZlcnJlclBv
bGljeSwgbV9kYXRhLnNjcmlwdFVSTCwgbV9kYXRhLnR5cGUsIG1fc2VydmVyLT5zZXNzaW9uSUQo
KSwgZmFsc2UsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBXVEY6Om51bGxv
cHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwg
bV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fcmVmZXJyZXJQb2xpY3ksIG1fZGF0YS5zY3JpcHRV
UkwsIG1fZGF0YS50eXBlLCBtX3NlcnZlci0+c2Vzc2lvbklEKCksIGZhbHNlLCBtX3NjcmlwdFJl
c291cmNlTWFwIH07CiB9CiAKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZSgpCkBAIC0x
NzcsMTAgKzE3Nyw5IEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNraXBXYWl0aW5nKCkKIHsKICAg
ICBtX2lzU2tpcFdhaXRpbmdGbGFnU2V0ID0gdHJ1ZTsKIAotICAgIGF1dG8qIHJlZ2lzdHJhdGlv
biA9IG1fc2VydmVyLT5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOwotICAgIEFT
U0VSVChyZWdpc3RyYXRpb24gfHwgaXNUZXJtaW5hdGluZygpKTsKLSAgICBpZiAocmVnaXN0cmF0
aW9uKQotICAgICAgICByZWdpc3RyYXRpb24tPnRyeUFjdGl2YXRlKCk7CisgICAgQVNTRVJUKG1f
cmVnaXN0cmF0aW9uIHx8IGlzVGVybWluYXRpbmcoKSk7CisgICAgaWYgKG1fcmVnaXN0cmF0aW9u
KQorICAgICAgICBtX3JlZ2lzdHJhdGlvbi0+dHJ5QWN0aXZhdGUoKTsKIH0KIAogdm9pZCBTV1Nl
cnZlcldvcmtlcjo6c2V0SGFzUGVuZGluZ0V2ZW50cyhib29sIGhhc1BlbmRpbmdFdmVudHMpCkBA
IC0xOTMsMTMgKzE5MiwxMiBAQCB2b2lkIFNXU2VydmVyV29ya2VyOjpzZXRIYXNQZW5kaW5nRXZl
bnRzKGJvb2wgaGFzUGVuZGluZ0V2ZW50cykKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRG8g
dHJ5Q2xlYXIvdHJ5QWN0aXZhdGUsIGFzIHBlciBodHRwczovL3czYy5naXRodWIuaW8vU2Vydmlj
ZVdvcmtlci8jd2FpdC11bnRpbC1tZXRob2QuCi0gICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9z
ZXJ2ZXItPmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7Ci0gICAgaWYgKCFyZWdp
c3RyYXRpb24pCisgICAgaWYgKCFtX3JlZ2lzdHJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKHJlZ2lzdHJhdGlvbi0+aXNVbmluc3RhbGxpbmcoKSAmJiByZWdpc3RyYXRpb24tPnRy
eUNsZWFyKCkpCisgICAgaWYgKG1fcmVnaXN0cmF0aW9uLT5pc1VucmVnaXN0ZXJlZCgpICYmIG1f
cmVnaXN0cmF0aW9uLT50cnlDbGVhcigpKQogICAgICAgICByZXR1cm47Ci0gICAgcmVnaXN0cmF0
aW9uLT50cnlBY3RpdmF0ZSgpOworICAgIG1fcmVnaXN0cmF0aW9uLT50cnlBY3RpdmF0ZSgpOwog
fQogCiB2b2lkIFNXU2VydmVyV29ya2VyOjp3aGVuQWN0aXZhdGVkKFdURjo6RnVuY3Rpb248dm9p
ZChib29sKT4mJiBoYW5kbGVyKQpAQCAtMjE4LDEwICsyMTYsOSBAQCB2b2lkIFNXU2VydmVyV29y
a2VyOjpzZXRTdGF0ZShTZXJ2aWNlV29ya2VyU3RhdGUgc3RhdGUpCiAKICAgICBtX2RhdGEuc3Rh
dGUgPSBzdGF0ZTsKIAotICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLT5nZXRSZWdp
c3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOwotICAgIEFTU0VSVChyZWdpc3RyYXRpb24gfHwg
c3RhdGUgPT0gU2VydmljZVdvcmtlclN0YXRlOjpSZWR1bmRhbnQpOwotICAgIGlmIChyZWdpc3Ry
YXRpb24pIHsKLSAgICAgICAgcmVnaXN0cmF0aW9uLT5mb3JFYWNoQ29ubmVjdGlvbihbJl0oYXV0
byYgY29ubmVjdGlvbikgeworICAgIEFTU0VSVChtX3JlZ2lzdHJhdGlvbiB8fCBzdGF0ZSA9PSBT
ZXJ2aWNlV29ya2VyU3RhdGU6OlJlZHVuZGFudCk7CisgICAgaWYgKG1fcmVnaXN0cmF0aW9uKSB7
CisgICAgICAgIG1fcmVnaXN0cmF0aW9uLT5mb3JFYWNoQ29ubmVjdGlvbihbJl0oYXV0byYgY29u
bmVjdGlvbikgewogICAgICAgICAgICAgY29ubmVjdGlvbi51cGRhdGVXb3JrZXJTdGF0ZUluQ2xp
ZW50KHRoaXMtPmlkZW50aWZpZXIoKSwgc3RhdGUpOwogICAgICAgICB9KTsKICAgICB9CkBAIC0y
MzksMTMgKzIzNiwxOCBAQCB2b2lkIFNXU2VydmVyV29ya2VyOjpjYWxsV2hlbkFjdGl2YXRlZEhh
bmRsZXIoYm9vbCBzdWNjZXNzKQogCiB2b2lkIFNXU2VydmVyV29ya2VyOjpzZXRTdGF0ZShTdGF0
ZSBzdGF0ZSkKIHsKLSAgICBBU1NFUlQoc3RhdGUgIT0gU3RhdGU6OlJ1bm5pbmcgfHwgbV9zZXJ2
ZXItPmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSkpOworICAgIEFTU0VSVChzdGF0
ZSAhPSBTdGF0ZTo6UnVubmluZyB8fCBtX3JlZ2lzdHJhdGlvbik7CiAgICAgbV9zdGF0ZSA9IHN0
YXRlOwogCiAgICAgaWYgKHN0YXRlID09IFN0YXRlOjpSdW5uaW5nKQogICAgICAgICBtX3Nob3Vs
ZFNraXBIYW5kbGVGZXRjaCA9IGZhbHNlOwogfQogCitTV1NlcnZlclJlZ2lzdHJhdGlvbiogU1dT
ZXJ2ZXJXb3JrZXI6OnJlZ2lzdHJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVnaXN0
cmF0aW9uLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggYjZhMGU2MjFlYzkxZmY3NWE3
Y2NlOTQwYzE2ZThmNTllYTIyMTQ0Ny4uNjc2N2ZjNmYwYTZiMTZjMzQzMjljYmFiNTNjYjAyNjRi
MjFkMjQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMTEzLDYgKzExMyw4IEBAIHB1YmxpYzoKICAgICBT
dHJpbmcgdXNlckFnZW50KCkgY29uc3Q7CiAKICAgICBib29sIHNob3VsZFNraXBGZXRjaEV2ZW50
KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTa2lwSGFuZGxlRmV0Y2g7IH0KKyAgICAKKyAgICBT
V1NlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKQEAgLTEyMSw2ICsxMjMsNyBAQCBwcml2YXRlOgogCiAg
ICAgV2Vha1B0cjxTV1NlcnZlcj4gbV9zZXJ2ZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSBtX3JlZ2lzdHJhdGlvbktleTsKKyAgICBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0
aW9uPiBtX3JlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBtX2RhdGE7CiAgICAg
U3RyaW5nIG1fc2NyaXB0OwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmlu
ZGV4IDc3NTM2ODA5ODgyNWM4ZjYzMThkODJkNjUyZTdiNGMzMmQ0MjY1ODYuLjVlYmE0ZmYyMmZi
NzM1MzE2NGQ3MWFiYmZjZGI3ZGI5ZWJiZDg5NzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA5LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgW1NlcnZpY2UgV29ya2Vyc10gRHJvcCBzdXBwb3J0IGZvciBy
ZWdpc3RyYXRpb24gcmVzdXJyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDE1ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZS1zeW5jIGEgY291cGxlIG9mIG91dGRhdGVkIFdQVCB0ZXN0cyBm
cm9tIHVwc3RyZWFtIDgyMGYwZjg2MDQ3ZTZlLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLXRoZW4tcmVnaXN0
ZXItbmV3LXNjcmlwdC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLXRoZW4tcmVn
aXN0ZXItbmV3LXNjcmlwdC5odHRwcy5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVy
Lmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci5odHRwcy5o
dG1sOgorCiAyMDE5LTA5LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHBvc3RNZXNzYWdlIGJ1ZmZlcmluZyBiZXR3ZWVuIHRoZSBz
ZXJ2aWNlIHdvcmtlciBhbmQgd2luZG93CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91
bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXItbmV3LXNjcmlwdC5odHRwcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXItbmV3LXNjcmlwdC5odHRw
cy1leHBlY3RlZC50eHQKaW5kZXggNDRiYzVjNzM1NDk5M2NiMGI5ZmMwY2JkNWEwMzQ5YWIwMDk2
NDI1ZS4uMTk4OGZlZTczOGZkMWQyN2QxZjdjMDVkN2FkZGRlNjdkNDc3ZTZiYSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLW5ldy1zY3JpcHQu
aHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhl
bi1yZWdpc3Rlci1uZXctc2NyaXB0Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAK
IAogUEFTUyBSZWdpc3RlcmluZyBhIG5ldyBzY3JpcHQgVVJMIHdoaWxlIGFuIHVucmVnaXN0ZXJl
ZCByZWdpc3RyYXRpb24gaXMgaW4gdXNlIAotRkFJTCBSZWdpc3RlcmluZyBhIG5ldyBzY3JpcHQg
VVJMIHRoYXQgNDA0cyBkb2VzIG5vdCByZXN1cnJlY3QgdW5yZWdpc3RlcmVkIHJlZ2lzdHJhdGlv
biBhc3NlcnRfZXF1YWxzOiBEb2N1bWVudCBzaG91bGQgbm90IGJlIGNvbnRyb2xsZWQgZXhwZWN0
ZWQgbnVsbCBidXQgZ290IG9iamVjdCAiW29iamVjdCBTZXJ2aWNlV29ya2VyXSIKLUZBSUwgUmVn
aXN0ZXJpbmcgYSBuZXcgc2NyaXB0IFVSTCB0aGF0IGZhaWxzIHRvIGluc3RhbGwgZG9lcyBub3Qg
cmVzdXJyZWN0IHVucmVnaXN0ZXJlZCByZWdpc3RyYXRpb24gYXNzZXJ0X2VxdWFsczogcmVnaXN0
cmF0aW9uLmFjdGl2ZSBleHBlY3RlZCBudWxsIGJ1dCBnb3Qgb2JqZWN0ICJbb2JqZWN0IFNlcnZp
Y2VXb3JrZXJdIgorUEFTUyBSZWdpc3RlcmluZyBhIG5ldyBzY3JpcHQgVVJMIHRoYXQgNDA0cyBk
b2VzIG5vdCByZXN1cnJlY3QgdW5yZWdpc3RlcmVkIHJlZ2lzdHJhdGlvbiAKK1BBU1MgUmVnaXN0
ZXJpbmcgYSBuZXcgc2NyaXB0IFVSTCB0aGF0IGZhaWxzIHRvIGluc3RhbGwgZG9lcyBub3QgcmVz
dXJyZWN0IHVucmVnaXN0ZXJlZCByZWdpc3RyYXRpb24gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci1uZXctc2NyaXB0Lmh0dHBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXItbmV3LXNjcmlwdC5o
dHRwcy5odG1sCmluZGV4IGEwN2RhN2QzOThmYTY4Njk1MmU5YjdlMDBkZjYyYTA3ZDA3ZmRlN2Iu
LjQ0NGE1YzM2NTc3NmJlYWYzZjE4NjIzNDEzNDRlOTViNzUzYWZjYWUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci1uZXctc2NyaXB0Lmh0dHBz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLW5l
dy1zY3JpcHQuaHR0cHMuaHRtbApAQCAtMjIsOCArMjIsOCBAQCBwcm9taXNlX3Rlc3QoYXN5bmMg
ZnVuY3Rpb24odCkgewogICB0LmFkZF9jbGVhbnVwKCgpID0+IG5ld1JlZ2lzdHJhdGlvbi51bnJl
Z2lzdGVyKCkpOwogCiAgIGFzc2VydF9lcXVhbHMoCi0gICAgcmVnaXN0cmF0aW9uLmluc3RhbGxp
bmcuc2NyaXB0VVJMLAotICAgIG5vcm1hbGl6ZVVSTChuZXdXb3JrZXJVUkwpLAorICAgIHJlZ2lz
dHJhdGlvbi5pbnN0YWxsaW5nLAorICAgIG51bGwsCiAgICAgJ2JlZm9yZSBhY3RpdmF0ZWQgcmVn
aXN0cmF0aW9uLmluc3RhbGxpbmcnCiAgICk7CiAgIGFzc2VydF9lcXVhbHMoCkBAIC00NywxMyAr
NDcsMTMgQEAgcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uKHQpIHsKICAgICAnYmVmb3JlIGFj
dGl2YXRlZCBuZXdSZWdpc3RyYXRpb24ud2FpdGluZycKICAgKTsKICAgYXNzZXJ0X2VxdWFscygK
LSAgICBuZXdSZWdpc3RyYXRpb24uYWN0aXZlLnNjcmlwdFVSTCwKLSAgICBub3JtYWxpemVVUkwo
d29ya2VyX3VybCksCisgICAgbmV3UmVnaXN0cmF0aW9uLmFjdGl2ZSwKKyAgICBudWxsLAogICAg
ICdiZWZvcmUgYWN0aXZhdGVkIG5ld1JlZ2lzdHJhdGlvbi5hY3RpdmUnCiAgICk7CiAgIGlmcmFt
ZS5yZW1vdmUoKTsKIAotICBhd2FpdCB3YWl0X2Zvcl9zdGF0ZSh0LCByZWdpc3RyYXRpb24uaW5z
dGFsbGluZywgJ2FjdGl2YXRlZCcpOworICBhd2FpdCB3YWl0X2Zvcl9zdGF0ZSh0LCBuZXdSZWdp
c3RyYXRpb24uaW5zdGFsbGluZywgJ2FjdGl2YXRlZCcpOwogCiAgIGFzc2VydF9lcXVhbHMoCiAg
ICAgbmV3UmVnaXN0cmF0aW9uLmluc3RhbGxpbmcsCkBAIC0xMjksNyArMTI5LDggQEAgcHJvbWlz
ZV90ZXN0KGFzeW5jIGZ1bmN0aW9uKHQpIHsKIAogICBhc3NlcnRfZXF1YWxzKHJlZ2lzdHJhdGlv
bi5pbnN0YWxsaW5nLCBudWxsLCAncmVnaXN0cmF0aW9uLmluc3RhbGxpbmcnKTsKICAgYXNzZXJ0
X2VxdWFscyhyZWdpc3RyYXRpb24ud2FpdGluZywgbnVsbCwgJ3JlZ2lzdHJhdGlvbi53YWl0aW5n
Jyk7Ci0gIGFzc2VydF9lcXVhbHMocmVnaXN0cmF0aW9uLmFjdGl2ZSwgbnVsbCwgJ3JlZ2lzdHJh
dGlvbi5hY3RpdmUnKTsKKyAgYXNzZXJ0X2VxdWFscyhyZWdpc3RyYXRpb24uYWN0aXZlLnNjcmlw
dFVSTCwgbm9ybWFsaXplVVJMKHdvcmtlcl91cmwpLAorICAgICAgICAgICAgICAgICdyZWdpc3Ry
YXRpb24uYWN0aXZlJyk7CiAgIGFzc2VydF9ub3RfZXF1YWxzKHJlZ2lzdHJhdGlvbiwgbmV3UmVn
aXN0cmF0aW9uLCAnTmV3IHJlZ2lzdHJhdGlvbiBpcyBkaWZmZXJlbnQnKTsKIH0sICdSZWdpc3Rl
cmluZyBhIG5ldyBzY3JpcHQgVVJMIHRoYXQgZmFpbHMgdG8gaW5zdGFsbCBkb2VzIG5vdCByZXN1
cnJlY3QgdW5yZWdpc3RlcmVkIHJlZ2lzdHJhdGlvbicpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXIuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLmh0dHBz
LWV4cGVjdGVkLnR4dAppbmRleCBlMzUwY2IwMzhhMGYwZWM4NDcyN2MzMTNiNGZmZGIyNDM2MWEx
OWZjLi41ZmE5OWMzMjkyMjUzOTk1YzkwNWU2ZTdjNDAzMmZjNWJlNjBmMGUxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXIuaHR0cHMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci5o
dHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiAKIFBBU1MgVW5yZWdpc3RlciB0aGVu
IHJlZ2lzdGVyIHJlc29sdmVzIHRvIGEgbmV3IHZhbHVlIAotRkFJTCBVbnJlZ2lzdGVyIHRoZW4g
cmVnaXN0ZXIgZG9lcyBub3QgcmVzb2x2ZSB0byB0aGUgb3JpZ2luYWwgdmFsdWUgZXZlbiBpZiB0
aGUgcmVnaXN0cmF0aW9uIGlzIGluIHVzZS4gYXNzZXJ0X25vdF9lcXVhbHM6IFVucmVnaXN0ZXIg
YW5kIHJlZ2lzdGVyIHNob3VsZCBhbHdheXMgY3JlYXRlIGEgbmV3IHJlZ2lzdHJhdGlvbiBnb3Qg
ZGlzYWxsb3dlZCB2YWx1ZSBvYmplY3QgIltvYmplY3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bl0iCitQQVNTIFVucmVnaXN0ZXIgdGhlbiByZWdpc3RlciBkb2VzIG5vdCByZXNvbHZlIHRvIHRo
ZSBvcmlnaW5hbCB2YWx1ZSBldmVuIGlmIHRoZSByZWdpc3RyYXRpb24gaXMgaW4gdXNlLiAKIFBB
U1MgVW5yZWdpc3RlciB0aGVuIHJlZ2lzdGVyIGRvZXMgbm90IGFmZmVjdCBleGlzdGluZyBjb250
cm9sbGVlIAotRkFJTCBVbnJlZ2lzdGVyIHRoZW4gcmVnaXN0ZXIgZG9lcyBub3QgcmVzdXJyZWN0
IHRoZSByZWdpc3RyYXRpb24gYXNzZXJ0X2VxdWFsczogUmVnaXN0cmF0aW9uIGlzIG5ldyBleHBl
Y3RlZCBudWxsIGJ1dCBnb3Qgb2JqZWN0ICJbb2JqZWN0IFNlcnZpY2VXb3JrZXJdIgorUEFTUyBV
bnJlZ2lzdGVyIHRoZW4gcmVnaXN0ZXIgZG9lcyBub3QgcmVzdXJyZWN0IHRoZSByZWdpc3RyYXRp
b24gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdp
c3Rlci5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lz
dGVyLmh0dHBzLmh0bWwKaW5kZXggNWZkMmNmOTcwOTUwYmY5NDk2ODg2N2M3NWM0MWUwYWE5NzIw
NWY3Ni4uYjYxNjA4Yzg0MTlmZDRmMzYyZGVlNTMzMDQwNGUyNzQzYTJmMDVmNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLmh0dHBzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLmh0dHBzLmh0
bWwKQEAgLTY2LDcgKzY2LDcgQEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgIC50
aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgIHJldHVybiBuYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5yZWdpc3Rlcih3b3JrZXJfdXJsLCB7IHNjb3BlOiBzY29wZSB9KTsKICAgICAgICAgfSkKLSAg
ICAgIC50aGVuKGZ1bmN0aW9uKHJlZ2lzdHJhdGlvbikgeworICAgICAgLnRoZW4oZnVuY3Rpb24o
bmV3UmVnaXN0cmF0aW9uKSB7CiAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWdpc3RyYXRpb24u
aW5zdGFsbGluZywgbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICdpbnN0YWxsaW5nIHZl
cnNpb24gaXMgbnVsbCcpOwogICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVnaXN0cmF0aW9uLndh
aXRpbmcsIG51bGwsICd3YWl0aW5nIHZlcnNpb24gaXMgbnVsbCcpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378311</attachid>
            <date>2019-09-07 18:57:52 -0700</date>
            <delta_ts>2019-09-07 22:42:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201584-20190907185737.patch</filename>
            <type>text/plain</type>
            <size>38840</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2MmU2NmY2MzAzMWVh
ODk2YTQzZWIwNTNmYWJhMjFjMGU5M2M2MC4uMTU1ZTgzZjVkNDUxMTRkNTk4NGZlMjA2NjdhNjI0
OTQ4NWI5MDY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE5LTA5LTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1NlcnZpY2UgV29ya2Vyc10g
RHJvcCBzdXBwb3J0IGZvciByZWdpc3RyYXRpb24gcmVzdXJyZWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1ODQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIHN1cHBvcnQgZm9yIHJlZ2lz
dHJhdGlvbiByZXN1cnJlY3Rpb24gKFVucmVnaXN0ZXJpbmcgdGhlbiBxdWlja2x5IHJlLXJlZ2lz
dGVyaW5nIHdvdWxkIHJlc3VycmVjdAorICAgICAgICB0aGUgb3JpZ2luYWwgcmVnaXN0cmF0aW9u
IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lKS4gVGhpcyBiZWhhdmlvciBpcyBubyBsb25n
ZXIgaW4gdGhlCisgICAgICAgIHNwZWNpZmljYXRpb24gKE5vIG1vcmUgImlzVW5pbnN0YWxsaW5n
IiBmbGFnIG9uIHRoZSByZWdpc3RyYXRpb24sIGFuZCB0aGUgcmVnaXN0cmF0aW9uIGlzIHJlbW92
ZWQKKyAgICAgICAgZnJvbSB0aGUgInNjb3BlIHRvIHJlZ2lzdHJhdGlvbiBtYXAiIHJpZ2h0IGF3
YXkgdXBvbiB1bnJlZ2lzdGVyaW5nKS4KKworICAgICAgICBUaGlzIHJlc3VycmVjdGlvbiBiZWhh
dmlvciB3YXMgY2F1c2luZyBhIGxvdCBvZiBmbGFraW5lc3MgaW4gdGhlIHRlc3RzIHNvIGl0IGlz
IGxpa2VseSB3ZSB3aWxsIGJlIGFibGUKKyAgICAgICAgdG8gdW5za2lwIHNvbWUgdGVzdHMuIFRo
aXMgaXMgYWxzbyB3aGF0IHdhcyBjYXVzaW5nIHRoZSBmbGFraW5lc3MgdGhhdCBjYXVzZWQgQnVn
IDIwMTE2OSB0byBiZSByb2xsZWQKKyAgICAgICAgb3V0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgdXBkYXRlZCBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmFjdGl2ZVdv
cmtlckZyb21SZWdpc3RyYXRpb25JRCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Z2V0
UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjphZGRSZWdpc3RyYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Z2V0UmVnaXN0cmF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6Y2xlYXJBbGwpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp0ZXJtaW5hdGVQcmVpbnN0YWxs
YXRpb25Xb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRpZEZpbmlzaEFjdGl2
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmNsYWltKToKKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVyOjphZGRDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpyZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjppbnN0YWxsQ29udGV4dERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmRvUmVnaXN0cmF0aW9uTWF0Y2hpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6U1dTZXJ2ZXI6OnJlZ2lzdHJhdGlvbkZyb21TZXJ2aWNlV29ya2VySWRlbnRpZmll
cik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6cmVtb3ZlRnJvbVNjb3BlVG9S
ZWdpc3RyYXRpb25NYXApOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnBlcmZvcm1HZXRP
cmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnNDYWxsYmFja3MpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1
ZTo6cnVuUmVnaXN0ZXJKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6
cnVuVW5yZWdpc3RlckpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpy
dW5VcGRhdGVKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246
OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjpoYW5kbGVD
bGllbnRVbmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246Omlz
VW5yZWdpc3RlcmVkIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJh
dGlvbjo6c2NvcGVVUkxXaXRob3V0RnJhZ21lbnQgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6Om1fc2NyaXB0
UmVzb3VyY2VNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHRE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpza2lwV2FpdGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2V0SGFzUGVuZGluZ0V2ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2V0U3RhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OnJlZ2lzdHJhdGlvbiBjb25zdCk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDE5LTA5LTA3
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQg
Zm9yIHBvc3RNZXNzYWdlIGJ1ZmZlcmluZyBiZXR3ZWVuIHRoZSBzZXJ2aWNlIHdvcmtlciBhbmQg
d2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwCmluZGV4IDkzMjZhM2JhYzY1OWEyNDY3MDVlOTIwYTg4ODQ2ZGY0ZDBlOTY5YjAu
LjQ2ODRhYTUxMmNmODYyY2UxZjk5MDRkMjE5Nzk2YjVhNWM2ZWRjMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xMTEs
MTMgKzExMSwxMyBAQCBTdHJpbmcgU1dTZXJ2ZXI6OnNlcnZpY2VXb3JrZXJDbGllbnRVc2VyQWdl
bnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4pCiAKIFNXU2VydmVyV29ya2VyKiBT
V1NlcnZlcjo6YWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byogcmVnaXN0cmF0aW9u
ID0gbV9yZWdpc3RyYXRpb25zQnlJRC5nZXQoaWRlbnRpZmllcik7CisgICAgYXV0byogcmVnaXN0
cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChpZGVudGlmaWVyKTsKICAgICByZXR1cm4gcmVn
aXN0cmF0aW9uID8gcmVnaXN0cmF0aW9uLT5hY3RpdmVXb3JrZXIoKSA6IG51bGxwdHI7CiB9CiAK
IFNXU2VydmVyUmVnaXN0cmF0aW9uKiBTV1NlcnZlcjo6Z2V0UmVnaXN0cmF0aW9uKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKIHsKLSAgICByZXR1
cm4gbV9yZWdpc3RyYXRpb25zLmdldChyZWdpc3RyYXRpb25LZXkpOworICAgIHJldHVybiBtX3Nj
b3BlVG9SZWdpc3RyYXRpb25NYXAuZ2V0KHJlZ2lzdHJhdGlvbktleSkuZ2V0KCk7CiB9CiAKIHZv
aWQgU1dTZXJ2ZXI6OnJlZ2lzdHJhdGlvblN0b3JlSW1wb3J0Q29tcGxldGUoKQpAQCAtMTQyLDcg
KzE0Miw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlZ2lzdHJhdGlvblN0b3JlRGF0YWJhc2VGYWlsZWRU
b09wZW4oKQogdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiB7CiAgICAgLy8gUGFnZXMgc2hvdWxkIG5vdCBoYXZl
IGJlZW4gYWJsZSB0byBtYWtlIGEgbmV3IHJlZ2lzdHJhdGlvbiB0byB0aGlzIGtleSB3aGlsZSB0
aGUgaW1wb3J0IHdhcyBzdGlsbCB0YWtpbmcgcGxhY2UuCi0gICAgQVNTRVJUKCFtX3JlZ2lzdHJh
dGlvbnMuY29udGFpbnMoZGF0YS5yZWdpc3RyYXRpb24ua2V5KSk7CisgICAgQVNTRVJUKCFtX3Nj
b3BlVG9SZWdpc3RyYXRpb25NYXAuY29udGFpbnMoZGF0YS5yZWdpc3RyYXRpb24ua2V5KSk7CiAK
ICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1ha2VVbmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+
KCp0aGlzLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXksIGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZp
YUNhY2hlLCBkYXRhLnJlZ2lzdHJhdGlvbi5zY29wZVVSTCwgZGF0YS5zY3JpcHRVUkwpOwogICAg
IHJlZ2lzdHJhdGlvbi0+c2V0TGFzdFVwZGF0ZVRpbWUoZGF0YS5yZWdpc3RyYXRpb24ubGFzdFVw
ZGF0ZVRpbWUpOwpAQCAtMTU2LDM2ICsxNTYsMzggQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0
cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAKIHZvaWQg
U1dTZXJ2ZXI6OmFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3Ry
YXRpb24+JiYgcmVnaXN0cmF0aW9uKQogewotICAgIGF1dG8ga2V5ID0gcmVnaXN0cmF0aW9uLT5r
ZXkoKTsKLSAgICBhdXRvKiByZWdpc3RyYXRpb25QdHIgPSByZWdpc3RyYXRpb24uZ2V0KCk7Ci0g
ICAgYXV0byBhZGRSZXN1bHQxID0gbV9yZWdpc3RyYXRpb25zLmFkZChrZXksIFdURk1vdmUocmVn
aXN0cmF0aW9uKSk7CisgICAgbV9vcmlnaW5TdG9yZS0+YWRkKHJlZ2lzdHJhdGlvbi0+a2V5KCku
dG9wT3JpZ2luKCkpOworICAgIGF1dG8gcmVnaXN0cmF0aW9uSUQgPSByZWdpc3RyYXRpb24tPmlk
ZW50aWZpZXIoKTsKKyAgICBBU1NFUlQoIW1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5jb250YWlu
cyhyZWdpc3RyYXRpb24tPmtleSgpKSk7CisgICAgbV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLnNl
dChyZWdpc3RyYXRpb24tPmtleSgpLCBtYWtlV2Vha1B0cigqcmVnaXN0cmF0aW9uKSk7CisgICAg
YXV0byBhZGRSZXN1bHQxID0gbV9yZWdpc3RyYXRpb25zLmFkZChyZWdpc3RyYXRpb25JRCwgV1RG
TW92ZShyZWdpc3RyYXRpb24pKTsKICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdDEsIGFkZFJl
c3VsdDEuaXNOZXdFbnRyeSk7Ci0KLSAgICBhdXRvIGFkZFJlc3VsdDIgPSBtX3JlZ2lzdHJhdGlv
bnNCeUlELmFkZChyZWdpc3RyYXRpb25QdHItPmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9uUHRy
KTsKLSAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdDIsIGFkZFJlc3VsdDIuaXNOZXdFbnRyeSk7
Ci0KLSAgICBtX29yaWdpblN0b3JlLT5hZGQoa2V5LnRvcE9yaWdpbigpKTsKIH0KIAotdm9pZCBT
V1NlcnZlcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIGtleSkKK3ZvaWQgU1dTZXJ2ZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3RyYXRpb25JRCkKIHsKLSAgICBhdXRvIHRv
cE9yaWdpbiA9IGtleS50b3BPcmlnaW4oKTsKLSAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1fcmVn
aXN0cmF0aW9ucy50YWtlKGtleSk7CisgICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJh
dGlvbnMudGFrZShyZWdpc3RyYXRpb25JRCk7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7Ci0g
ICAgYm9vbCB3YXNSZW1vdmVkID0gbV9yZWdpc3RyYXRpb25zQnlJRC5yZW1vdmUocmVnaXN0cmF0
aW9uLT5pZGVudGlmaWVyKCkpOwotICAgIEFTU0VSVF9VTlVTRUQod2FzUmVtb3ZlZCwgd2FzUmVt
b3ZlZCk7CisgICAgCisgICAgYXV0byBpdCA9IG1fc2NvcGVUb1JlZ2lzdHJhdGlvbk1hcC5maW5k
KHJlZ2lzdHJhdGlvbi0+a2V5KCkpOworICAgIGlmIChpdCAhPSBtX3Njb3BlVG9SZWdpc3RyYXRp
b25NYXAuZW5kKCkgJiYgaXQtPnZhbHVlID09IHJlZ2lzdHJhdGlvbi5nZXQoKSkKKyAgICAgICAg
bV9zY29wZVRvUmVnaXN0cmF0aW9uTWFwLnJlbW92ZShpdCk7CiAKLSAgICBtX29yaWdpblN0b3Jl
LT5yZW1vdmUodG9wT3JpZ2luKTsKKyAgICBtX29yaWdpblN0b3JlLT5yZW1vdmUocmVnaXN0cmF0
aW9uLT5rZXkoKS50b3BPcmlnaW4oKSk7CiAgICAgaWYgKG1fcmVnaXN0cmF0aW9uU3RvcmUpCi0g
ICAgICAgIG1fcmVnaXN0cmF0aW9uU3RvcmUtPnJlbW92ZVJlZ2lzdHJhdGlvbihrZXkpOworICAg
ICAgICBtX3JlZ2lzdHJhdGlvblN0b3JlLT5yZW1vdmVSZWdpc3RyYXRpb24ocmVnaXN0cmF0aW9u
LT5rZXkoKSk7CiB9CiAKIFZlY3RvcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gU1dT
ZXJ2ZXI6OmdldFJlZ2lzdHJhdGlvbnMoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmln
aW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMKQogewogICAgIFZlY3RvcjxTV1NlcnZlclJlZ2lzdHJh
dGlvbio+IG1hdGNoaW5nUmVnaXN0cmF0aW9uczsKLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX3Jl
Z2lzdHJhdGlvbnMpIHsKLSAgICAgICAgaWYgKCFpdGVtLnZhbHVlLT5pc1VuaW5zdGFsbGluZygp
ICYmIGl0ZW0ua2V5Lm9yaWdpbklzTWF0Y2hpbmcodG9wT3JpZ2luLCBjbGllbnRVUkwpKQotICAg
ICAgICAgICAgbWF0Y2hpbmdSZWdpc3RyYXRpb25zLmFwcGVuZChpdGVtLnZhbHVlLmdldCgpKTsK
KyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXApIHsKKyAgICAg
ICAgaWYgKGl0ZW0ua2V5Lm9yaWdpbklzTWF0Y2hpbmcodG9wT3JpZ2luLCBjbGllbnRVUkwpKSB7
CisgICAgICAgICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBpdGVtLnZhbHVlLmdldCgpOworICAg
ICAgICAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7CisgICAgICAgICAgICBpZiAocmVnaXN0cmF0
aW9uKQorICAgICAgICAgICAgICAgIG1hdGNoaW5nUmVnaXN0cmF0aW9ucy5hcHBlbmQocmVnaXN0
cmF0aW9uKTsKKyAgICAgICAgfQogICAgIH0KICAgICAvLyBUaGUgc3BlY2lmaWNhdGlvbiBtYW5k
YXRlcyB0aGF0IHJlZ2lzdHJhdGlvbnMgYXJlIHJldHVybmVkIGluIHRoZSBpbnNlcnRpb24gb3Jk
ZXIuCiAgICAgc3RkOjpzb3J0KG1hdGNoaW5nUmVnaXN0cmF0aW9ucy5iZWdpbigpLCBtYXRjaGlu
Z1JlZ2lzdHJhdGlvbnMuZW5kKCksIFtdKGF1dG8mIGEsIGF1dG8mIGIpIHsKQEAgLTIxMSw3ICsy
MTMsNiBAQCB2b2lkIFNXU2VydmVyOjpjbGVhckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgbV9qb2JRdWV1ZXMuY2xlYXIoKTsKICAgICB3aGls
ZSAoIW1fcmVnaXN0cmF0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgIG1fcmVnaXN0cmF0aW9ucy5i
ZWdpbigpLT52YWx1ZS0+Y2xlYXIoKTsKLSAgICBBU1NFUlQobV9yZWdpc3RyYXRpb25zQnlJRC5p
c0VtcHR5KCkpOwogICAgIG1fcGVuZGluZ0NvbnRleHREYXRhcy5jbGVhcigpOwogICAgIG1fb3Jp
Z2luU3RvcmUtPmNsZWFyQWxsKCk7CiAgICAgaWYgKG1fcmVnaXN0cmF0aW9uU3RvcmUpCkBAIC0y
NDgsOSArMjQ5LDkgQEAgdm9pZCBTV1NlcnZlcjo6Y2xlYXIoY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXIKICAgICB9KTsKIAogICAgIFZl
Y3RvcjxTV1NlcnZlclJlZ2lzdHJhdGlvbio+IHJlZ2lzdHJhdGlvbnNUb1JlbW92ZTsKLSAgICBm
b3IgKGF1dG8mIGtleUFuZFZhbHVlIDogbV9yZWdpc3RyYXRpb25zKSB7Ci0gICAgICAgIGlmIChr
ZXlBbmRWYWx1ZS5rZXkucmVsYXRlc1RvT3JpZ2luKHNlY3VyaXR5T3JpZ2luKSkKLSAgICAgICAg
ICAgIHJlZ2lzdHJhdGlvbnNUb1JlbW92ZS5hcHBlbmQoa2V5QW5kVmFsdWUudmFsdWUuZ2V0KCkp
OworICAgIGZvciAoYXV0byYgcmVnaXN0cmF0aW9uIDogbV9yZWdpc3RyYXRpb25zLnZhbHVlcygp
KSB7CisgICAgICAgIGlmIChyZWdpc3RyYXRpb24tPmtleSgpLnJlbGF0ZXNUb09yaWdpbihzZWN1
cml0eU9yaWdpbikpCisgICAgICAgICAgICByZWdpc3RyYXRpb25zVG9SZW1vdmUuYXBwZW5kKHJl
Z2lzdHJhdGlvbi5nZXQoKSk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBjb250ZXh0RGF0YXMg
OiBtX3BlbmRpbmdDb250ZXh0RGF0YXMudmFsdWVzKCkpIHsKQEAgLTQxMyw3ICs0MTQsNyBAQCB2
b2lkIFNXU2VydmVyOjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBPcHRpb25hbDxTZXJ2aWNl
V29ya2VySm9iRGF0YUlkZW50aWZpZQogdm9pZCBTV1NlcnZlcjo6dGVybWluYXRlUHJlaW5zdGFs
bGF0aW9uV29ya2VyKFNXU2VydmVyV29ya2VyJiB3b3JrZXIpCiB7CiAgICAgd29ya2VyLnRlcm1p
bmF0ZSgpOwotICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IGdldFJlZ2lzdHJhdGlvbih3b3JrZXIu
cmVnaXN0cmF0aW9uS2V5KCkpOworICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHdvcmtlci5yZWdp
c3RyYXRpb24oKTsKICAgICBpZiAocmVnaXN0cmF0aW9uICYmIHJlZ2lzdHJhdGlvbi0+cHJlSW5z
dGFsbGF0aW9uV29ya2VyKCkgPT0gJndvcmtlcikKICAgICAgICAgcmVnaXN0cmF0aW9uLT5zZXRQ
cmVJbnN0YWxsYXRpb25Xb3JrZXIobnVsbHB0cik7CiB9CkBAIC00MzYsNyArNDM3LDcgQEAgdm9p
ZCBTV1NlcnZlcjo6ZGlkRmluaXNoQWN0aXZhdGlvbihTV1NlcnZlcldvcmtlciYgd29ya2VyKQog
ewogICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVyOjpkaWRGaW5p
c2hBY3RpdmF0aW9uOiBGaW5pc2hlZCBhY3RpdmF0aW9uIGZvciBzZXJ2aWNlIHdvcmtlciAlbGx1
IiwgdGhpcywgd29ya2VyLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAotICAgIGF1dG8qIHJl
Z2lzdHJhdGlvbiA9IGdldFJlZ2lzdHJhdGlvbih3b3JrZXIucmVnaXN0cmF0aW9uS2V5KCkpOwor
ICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHdvcmtlci5yZWdpc3RyYXRpb24oKTsKICAgICBpZiAo
IXJlZ2lzdHJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCkBAIC00OTQsNyArNDk1LDcgQEAgdm9p
ZCBTV1NlcnZlcjo6Y2xhaW0oU1dTZXJ2ZXJXb3JrZXImIHdvcmtlcikKICAgICAgICAgICAgIGlm
IChwcmV2aW91c0lkZW50aWZpZXIgPT0gcmVnaXN0cmF0aW9uLT5pZGVudGlmaWVyKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9
IHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpOwotICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRy
b2xsaW5nUmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zQnlJRC5nZXQocHJldmlvdXNJZGVu
dGlmaWVyKSkKKyAgICAgICAgICAgIGlmIChhdXRvKiBjb250cm9sbGluZ1JlZ2lzdHJhdGlvbiA9
IG1fcmVnaXN0cmF0aW9ucy5nZXQocHJldmlvdXNJZGVudGlmaWVyKSkKICAgICAgICAgICAgICAg
ICBjb250cm9sbGluZ1JlZ2lzdHJhdGlvbi0+cmVtb3ZlQ2xpZW50VXNpbmdSZWdpc3RyYXRpb24o
Y2xpZW50RGF0YS5pZGVudGlmaWVyKTsKICAgICAgICAgfQogICAgICAgICByZWdpc3RyYXRpb24t
PmNvbnRyb2xDbGllbnQoY2xpZW50RGF0YS5pZGVudGlmaWVyKTsKQEAgLTUxMSw3ICs1MTIsNyBA
QCB2b2lkIFNXU2VydmVyOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aQogCiB2b2lkIFNXU2VydmVyOjphZGRDbGllbnRTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byogcmVnaXN0
cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zQnlJRC5nZXQoaWRlbnRpZmllcik7CisgICAgYXV0byog
cmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChpZGVudGlmaWVyKTsKICAgICBpZiAo
IXJlZ2lzdHJhdGlvbikgewogICAgICAgICBMT0dfRVJST1IoIlJlcXVlc3QgdG8gYWRkIGNsaWVu
dC1zaWRlIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gdG8gbm9uLWV4aXN0ZW50IHNlcnZlci1z
aWRlIHJlZ2lzdHJhdGlvbiIpOwogICAgICAgICByZXR1cm47CkBAIC01MjIsNyArNTIzLDcgQEAg
dm9pZCBTV1NlcnZlcjo6YWRkQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBTZXJ2aWMKIAogdm9pZCBTV1NlcnZlcjo6cmVtb3ZlQ2xpZW50U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQogewotICAgIGlmIChhdXRvKiBy
ZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnNCeUlELmdldChpZGVudGlmaWVyKSkKKyAgICBp
ZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChpZGVudGlmaWVyKSkK
ICAgICAgICAgcmVnaXN0cmF0aW9uLT5yZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKTsKIH0KIApAQCAtNTczLDkgKzU3NCw3IEBAIHZv
aWQgU1dTZXJ2ZXI6Omluc3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmIGRhdGEpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byogcmVn
aXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChkYXRhLnJlZ2lzdHJhdGlvbi5rZXkpOwot
ICAgIFJFTEVBU0VfQVNTRVJUKHJlZ2lzdHJhdGlvbik7Ci0KKyAgICBhdXRvKiByZWdpc3RyYXRp
b24gPSBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAuZ2V0KGRhdGEucmVnaXN0cmF0aW9uLmtleSku
Z2V0KCk7CiAgICAgYXV0byB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6Y3JlYXRlKCp0aGlzLCAq
cmVnaXN0cmF0aW9uLCBkYXRhLnNjcmlwdFVSTCwgZGF0YS5zY3JpcHQsIGRhdGEuY29udGVudFNl
Y3VyaXR5UG9saWN5LCBTdHJpbmcgeyBkYXRhLnJlZmVycmVyUG9saWN5IH0sIGRhdGEud29ya2Vy
VHlwZSwgZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHsgZGF0YS5zY3JpcHRSZXNvdXJjZU1h
cCB9KTsKIAogICAgIGF1dG8qIGNvbm5lY3Rpb24gPSB3b3JrZXItPmNvbnRleHRDb25uZWN0aW9u
KCk7CkBAIC02MjUsOSArNjI0LDkgQEAgYm9vbCBTV1NlcnZlcjo6cnVuU2VydmljZVdvcmtlcihT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIGlmICghd29ya2VyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBJZiB0aGUgcmVnaXN0cmF0aW9uIGZvciBhIHdv
cmtpbmcgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIHRoZSByZXF1ZXN0IHRvIHJ1bgorICAgIC8vIElm
IHRoZSByZWdpc3RyYXRpb24gZm9yIGEgd29ya2VyIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiB0aGUg
cmVxdWVzdCB0byBydW4KICAgICAvLyB0aGUgd29ya2VyIGlzIG1vb3QuCi0gICAgaWYgKCFnZXRS
ZWdpc3RyYXRpb24od29ya2VyLT5yZWdpc3RyYXRpb25LZXkoKSkpCisgICAgaWYgKCF3b3JrZXIt
PnJlZ2lzdHJhdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmFkZChpZGVudGlmaWVyLCAqd29y
a2VyKTsKQEAgLTc0OCwxNCArNzQ3LDE0IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNvbm5lY3Rp
b24oU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllCiBTV1Nl
cnZlclJlZ2lzdHJhdGlvbiogU1dTZXJ2ZXI6OmRvUmVnaXN0cmF0aW9uTWF0Y2hpbmcoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMKQogewog
ICAgIFNXU2VydmVyUmVnaXN0cmF0aW9uKiBzZWxlY3RlZFJlZ2lzdHJhdGlvbiA9IG51bGxwdHI7
Ci0gICAgZm9yIChhdXRvJiByZWdpc3RyYXRpb24gOiBtX3JlZ2lzdHJhdGlvbnMudmFsdWVzKCkp
IHsKLSAgICAgICAgaWYgKCFyZWdpc3RyYXRpb24tPmtleSgpLmlzTWF0Y2hpbmcodG9wT3JpZ2lu
LCBjbGllbnRVUkwpKQorICAgIGZvciAoYXV0byYgcGFpciA6IG1fc2NvcGVUb1JlZ2lzdHJhdGlv
bk1hcCkgeworICAgICAgICBpZiAoIXBhaXIua2V5LmlzTWF0Y2hpbmcodG9wT3JpZ2luLCBjbGll
bnRVUkwpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghc2VsZWN0ZWRSZWdp
c3RyYXRpb24gfHwgc2VsZWN0ZWRSZWdpc3RyYXRpb24tPmtleSgpLnNjb3BlTGVuZ3RoKCkgPCBy
ZWdpc3RyYXRpb24tPmtleSgpLnNjb3BlTGVuZ3RoKCkpCi0gICAgICAgICAgICBzZWxlY3RlZFJl
Z2lzdHJhdGlvbiA9IHJlZ2lzdHJhdGlvbi5nZXQoKTsKKyAgICAgICAgaWYgKCFzZWxlY3RlZFJl
Z2lzdHJhdGlvbiB8fCBzZWxlY3RlZFJlZ2lzdHJhdGlvbi0+a2V5KCkuc2NvcGVMZW5ndGgoKSA8
IHBhaXIua2V5LnNjb3BlTGVuZ3RoKCkpCisgICAgICAgICAgICBzZWxlY3RlZFJlZ2lzdHJhdGlv
biA9IHBhaXIudmFsdWUuZ2V0KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIChzZWxlY3RlZFJlZ2lz
dHJhdGlvbiAmJiAhc2VsZWN0ZWRSZWdpc3RyYXRpb24tPmlzVW5pbnN0YWxsaW5nKCkpID8gc2Vs
ZWN0ZWRSZWdpc3RyYXRpb24gOiBudWxscHRyOworICAgIHJldHVybiBzZWxlY3RlZFJlZ2lzdHJh
dGlvbjsKIH0KIAogU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIFNXU2VydmVyOjpyZWdpc3RyYXRpb25G
cm9tU2VydmljZVdvcmtlcklkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKQEAgLTc2Myw4ICs3NjIsNyBAQCBTV1NlcnZlclJlZ2lzdHJhdGlvbiogU1dTZXJ2ZXI6
OnJlZ2lzdHJhdGlvbkZyb21TZXJ2aWNlV29ya2VySWRlbnRpZmllcihTZXJ2aWNlVwogICAgIGF1
dG8gaXRlcmF0b3IgPSBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5maW5kKGlkZW50aWZp
ZXIpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5l
bmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gbV9yZWdpc3RyYXRp
b25zLmdldChpdGVyYXRvci0+dmFsdWUtPnJlZ2lzdHJhdGlvbktleSgpKTsKKyAgICByZXR1cm4g
aXRlcmF0b3ItPnZhbHVlLT5yZWdpc3RyYXRpb24oKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6cmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2Vy
dmljZVdvcmtlckNsaWVudERhdGEmJiBkYXRhLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mIGNvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIsIFN0cmluZyYmIHVzZXJBZ2VudCkKQEAgLTc5NCw3ICs3OTIsNyBAQCB2
b2lkIFNXU2VydmVyOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoQ2xpZW50T3JpZ2luJiYg
Y2xpZW50T3JpZ2luLCBTZXJ2aWNlVwogICAgIGlmICghY29udHJvbGxpbmdTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogY29u
dHJvbGxpbmdSZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnNCeUlELmdldCgqY29udHJvbGxp
bmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CisgICAgYXV0byogY29udHJv
bGxpbmdSZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KCpjb250cm9sbGluZ1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKICAgICBpZiAoIWNvbnRyb2xsaW5nUmVn
aXN0cmF0aW9uIHx8ICFjb250cm9sbGluZ1JlZ2lzdHJhdGlvbi0+YWN0aXZlV29ya2VyKCkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtODUwLDEyICs4NDgsMTcgQEAgdm9pZCBTV1NlcnZlcjo6dW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmln
aW4sIFMKICAgICBpZiAocmVnaXN0cmF0aW9uSXRlcmF0b3IgPT0gbV9jbGllbnRUb0NvbnRyb2xs
aW5nUmVnaXN0cmF0aW9uLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoYXV0byog
cmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zQnlJRC5nZXQocmVnaXN0cmF0aW9uSXRlcmF0
b3ItPnZhbHVlKSkKKyAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25z
LmdldChyZWdpc3RyYXRpb25JdGVyYXRvci0+dmFsdWUpKQogICAgICAgICByZWdpc3RyYXRpb24t
PnJlbW92ZUNsaWVudFVzaW5nUmVnaXN0cmF0aW9uKGNsaWVudElkZW50aWZpZXIpOwogCiAgICAg
bV9jbGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLnJlbW92ZShyZWdpc3RyYXRpb25JdGVy
YXRvcik7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUZyb21TY29wZVRvUmVnaXN0cmF0aW9u
TWFwKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSkKK3sKKyAgICBtX3Nj
b3BlVG9SZWdpc3RyYXRpb25NYXAucmVtb3ZlKGtleSk7Cit9CisKIGJvb2wgU1dTZXJ2ZXI6Om5l
ZWRzU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKIHsKICAgICByZXR1cm4g
bV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbik7
CkBAIC05MTUsNyArOTE4LDcgQEAgdm9pZCBTV1NlcnZlcjo6cGVyZm9ybUdldE9yaWdpbnNXaXRo
UmVnaXN0cmF0aW9uc0NhbGxiYWNrcygpCiAgICAgICAgIHJldHVybjsKIAogICAgIEhhc2hTZXQ8
U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zV2l0aFJlZ2lzdHJhdGlvbnM7Ci0gICAgZm9yIChh
dXRvJiBrZXkgOiBtX3JlZ2lzdHJhdGlvbnMua2V5cygpKSB7CisgICAgZm9yIChhdXRvJiBrZXkg
OiBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXAua2V5cygpKSB7CiAgICAgICAgIG9yaWdpbnNXaXRo
UmVnaXN0cmF0aW9ucy5hZGQoa2V5LnRvcE9yaWdpbigpKTsKICAgICAgICAgb3JpZ2luc1dpdGhS
ZWdpc3RyYXRpb25zLmFkZChTZWN1cml0eU9yaWdpbkRhdGEgeyBrZXkuc2NvcGUoKS5wcm90b2Nv
bCgpLnRvU3RyaW5nKCksIGtleS5zY29wZSgpLmhvc3QoKS50b1N0cmluZygpLCBrZXkuc2NvcGUo
KS5wb3J0KCkgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDBjNTdhMzU3ZWZlM2VjYjRmNDE5N2NjOTFmMDg3MDIy
MGI2NjcwMGQuLjMwZTJhZjVjYWUwNGQ3ZmVhMzI4NzQ2NDA1N2UxNWM4NzQ3NjZjYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAg
LTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlclJl
Z2lzdHJhdGlvbiogZ2V0UmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmKTsKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2
ZXJSZWdpc3RyYXRpb24+JiYpOwotICAgIHZvaWQgcmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKKyAgICB2b2lkIHJlbW92ZVJlZ2lzdHJhdGlv
bihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiBnZXRSZWdpc3RyYXRpb25z
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVS
TCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJK
b2JEYXRhJiYpOwpAQCAtMTkzLDYgKzE5Myw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzYWJs
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheSgpIHsgbV9zaG91bGREaXNhYmxl
U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5ID0gdHJ1ZTsgfQogCisgICAgdm9p
ZCByZW1vdmVGcm9tU2NvcGVUb1JlZ2lzdHJhdGlvbk1hcChjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5Jik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVk
KENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKIApAQCAtMjIx
LDggKzIyMyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXJJbnRlcm5hbChT
V1NlcnZlcldvcmtlciYsIFRlcm1pbmF0aW9uTW9kZSk7CiAKICAgICBIYXNoTWFwPFNXU2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPj4gbV9jb25u
ZWN0aW9uczsKLSAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIHN0ZDo6
dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fcmVnaXN0cmF0aW9uczsKLSAgICBI
YXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lz
dHJhdGlvbio+IG1fcmVnaXN0cmF0aW9uc0J5SUQ7CisgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5LCBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9zY29wZVRv
UmVnaXN0cmF0aW9uTWFwOworICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fcmVnaXN0
cmF0aW9uczsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIHN0ZDo6
dW5pcXVlX3B0cjxTV1NlcnZlckpvYlF1ZXVlPj4gbV9qb2JRdWV1ZXM7CiAKICAgICBIYXNoTWFw
PFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U1dTZXJ2ZXJXb3JrZXI+PiBtX3J1bm5pbmdP
clRlcm1pbmF0aW5nV29ya2VyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDRhYzI0NGFlZTY1
ZmRjYWYyYWFlMzEyZjY5NzdjODZiN2Q2OGI0MjkuLjYxNmJjOTZkMzkyYTdiNjI3NDljZTk3NmM1
MTRjOTFlMDBlMzE3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMjczLDcgKzI3Myw2IEBA
IHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGEmIGpvYikKIAogICAgIC8vIElmIHJlZ2lzdHJhdGlvbiBpcyBub3QgbnVsbCAoaW4g
b3VyIHBhcmxhbmNlICJlbXB0eSIpLCB0aGVuOgogICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24g
PSBtX3NlcnZlci5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpKSB7Ci0gICAgICAg
IHJlZ2lzdHJhdGlvbi0+c2V0SXNVbmluc3RhbGxpbmcoZmFsc2UpOwogICAgICAgICBhdXRvKiBu
ZXdlc3RXb3JrZXIgPSByZWdpc3RyYXRpb24tPmdldE5ld2VzdFdvcmtlcigpOwogICAgICAgICBp
ZiAobmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoam9iLnNj
cmlwdFVSTCwgbmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSkgJiYgam9iLnJlZ2lzdHJhdGlvbk9w
dGlvbnMudXBkYXRlVmlhQ2FjaGUgPT0gcmVnaXN0cmF0aW9uLT51cGRhdGVWaWFDYWNoZSgpKSB7
CiAgICAgICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpv
YlF1ZXVlOjpydW5SZWdpc3RlckpvYjogRm91bmQgZGlyZWN0bHkgcmV1c2FibGUgcmVnaXN0cmF0
aW9uICVsbHUgZm9yIGpvYiAlcyAoRE9ORSkiLCB0aGlzLCByZWdpc3RyYXRpb24tPmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKQEAgLTMwNiwxNSArMzA1LDE1IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVu
VW5yZWdpc3RlckpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogICAgIGF1dG8q
IHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktl
eSk7CiAKICAgICAvLyBJZiByZWdpc3RyYXRpb24gaXMgbnVsbCwgdGhlbjoKLSAgICBpZiAoIXJl
Z2lzdHJhdGlvbiB8fCByZWdpc3RyYXRpb24tPmlzVW5pbnN0YWxsaW5nKCkpIHsKKyAgICBpZiAo
IXJlZ2lzdHJhdGlvbikgewogICAgICAgICAvLyBJbnZva2UgUmVzb2x2ZSBKb2IgUHJvbWlzZSB3
aXRoIGpvYiBhbmQgZmFsc2UuCiAgICAgICAgIG1fc2VydmVyLnJlc29sdmVVbnJlZ2lzdHJhdGlv
bkpvYihqb2IsIG1fcmVnaXN0cmF0aW9uS2V5LCBmYWxzZSk7CiAgICAgICAgIGZpbmlzaEN1cnJl
bnRKb2IoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIC8vIFNldCByZWdpc3RyYXRp
b24ncyB1bmluc3RhbGxpbmcgZmxhZy4KLSAgICByZWdpc3RyYXRpb24tPnNldElzVW5pbnN0YWxs
aW5nKHRydWUpOworICAgIAorICAgIC8vIFJlbW92ZSBzY29wZSB0byByZWdpc3RyYXRpb24gbWFw
W2pvYuKAmXMgc2NvcGUgdXJsXS4KKyAgICBtX3NlcnZlci5yZW1vdmVGcm9tU2NvcGVUb1JlZ2lz
dHJhdGlvbk1hcChtX3JlZ2lzdHJhdGlvbktleSk7CiAKICAgICAvLyBJbnZva2UgUmVzb2x2ZSBK
b2IgUHJvbWlzZSB3aXRoIGpvYiBhbmQgdHJ1ZS4KICAgICBtX3NlcnZlci5yZXNvbHZlVW5yZWdp
c3RyYXRpb25Kb2Ioam9iLCBtX3JlZ2lzdHJhdGlvbktleSwgdHJ1ZSk7CkBAIC0zMzMsOCArMzMy
LDYgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5VcGRhdGVKb2IoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmIGpvYikKICAgICAvLyBJZiByZWdpc3RyYXRpb24gaXMgbnVsbCAoaW4gb3Vy
IHBhcmxhbmNlICJlbXB0eSIpIG9yIHJlZ2lzdHJhdGlvbidzIHVuaW5zdGFsbGluZyBmbGFnIGlz
IHNldCwgdGhlbjoKICAgICBpZiAoIXJlZ2lzdHJhdGlvbikKICAgICAgICAgcmV0dXJuIHJlamVj
dEN1cnJlbnRKb2IoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgIkNhbm5vdCB1cGRhdGUgYSBu
dWxsL25vbmV4aXN0ZW50IHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbiJfcyB9KTsKLSAgICBp
ZiAocmVnaXN0cmF0aW9uLT5pc1VuaW5zdGFsbGluZygpKQotICAgICAgICByZXR1cm4gcmVqZWN0
Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCAiQ2Fubm90IHVwZGF0ZSBhIHNl
cnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbiB0aGF0IGlzIHVuaW5zdGFsbGluZyJfcyB9KTsKIAog
ICAgIC8vIExldCBuZXdlc3RXb3JrZXIgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIEdldCBOZXdl
c3QgV29ya2VyIGFsZ29yaXRobSBwYXNzaW5nIHJlZ2lzdHJhdGlvbiBhcyB0aGUgYXJndW1lbnQu
CiAgICAgYXV0byogbmV3ZXN0V29ya2VyID0gcmVnaXN0cmF0aW9uLT5nZXROZXdlc3RXb3JrZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggYmZiZjA2NTFkOGUwZDE1MGRiZWFk
ODUzODk2MWY5MzMxNTk1OTE4ZS4uYjQwNDM3MWU4ZDliODRlZjVkNjI3ZTFmM2VmOGM2Yjc4YTQ0
Yjk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTI1OSw3ICsyNTksNyBAQCB2
b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpjbGVhcigpCiAgICAgICAgIHVwZGF0ZVdvcmtlclN0
YXRlKCphY3RpdmVXb3JrZXIsIFNlcnZpY2VXb3JrZXJTdGF0ZTo6UmVkdW5kYW50KTsKIAogICAg
IC8vIFJlbW92ZSBzY29wZSB0byByZWdpc3RyYXRpb24gbWFwW3Njb3BlU3RyaW5nXS4KLSAgICBt
X3NlcnZlci5yZW1vdmVSZWdpc3RyYXRpb24oa2V5KCkpOworICAgIG1fc2VydmVyLnJlbW92ZVJl
Z2lzdHJhdGlvbihpZGVudGlmaWVyKCkpOwogfQogCiAvLyBodHRwczovL3czYy5naXRodWIuaW8v
U2VydmljZVdvcmtlci8jdHJ5LWFjdGl2YXRlLWFsZ29yaXRobQpAQCAtMzMzLDExICszMzMsMTYg
QEAgdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6aGFuZGxlQ2xpZW50VW5sb2FkKCkKIHsKICAg
ICBpZiAoaGFzQ2xpZW50c1VzaW5nUmVnaXN0cmF0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBpZiAoaXNVbmluc3RhbGxpbmcoKSAmJiB0cnlDbGVhcigpKQorICAgIGlmIChpc1VucmVnaXN0
ZXJlZCgpICYmIHRyeUNsZWFyKCkpCiAgICAgICAgIHJldHVybjsKICAgICB0cnlBY3RpdmF0ZSgp
OwogfQogCitib29sIFNXU2VydmVyUmVnaXN0cmF0aW9uOjppc1VucmVnaXN0ZXJlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbihrZXkoKSkgIT0gdGhpczsK
K30KKwogdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6Y29udHJvbENsaWVudChTZXJ2aWNlV29y
a2VyQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChhY3RpdmVXb3Jr
ZXIoKSk7CkBAIC0zNDksMTkgKzM1NCw2IEBAIHZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmNv
bnRyb2xDbGllbnQoU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllCiAgICAg
bV9zZXJ2ZXIuY29ubmVjdGlvbihpZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
KS0+bm90aWZ5Q2xpZW50c09mQ29udHJvbGxlckNoYW5nZShpZGVudGlmaWVycywgYWN0aXZlV29y
a2VyKCktPmRhdGEoKSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNldElzVW5p
bnN0YWxsaW5nKGJvb2wgdmFsdWUpCi17Ci0gICAgaWYgKG1fdW5pbnN0YWxsaW5nID09IHZhbHVl
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3VuaW5zdGFsbGluZyA9IHZhbHVlOwotCi0gICAg
aWYgKCFtX3VuaW5zdGFsbGluZyAmJiBhY3RpdmVXb3JrZXIoKSkgewotICAgICAgICAvLyBSZWdp
c3RyYXRpb24gd2l0aCBhY3RpdmUgd29ya2VyIGhhcyBiZWVuIHJlc3VycmVjdGVkLCB3ZSBuZWVk
IHRvIGNoZWNrIGlmIGFueSByZWFkeSBwcm9taXNlcyB3ZXJlIHdhaXRpbmcgZm9yIHRoaXMuCi0g
ICAgICAgIG1fc2VydmVyLnJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzKCp0aGlzKTsK
LSAgICB9Ci19Ci0KIGJvb2wgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNob3VsZFNvZnRVcGRhdGUo
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zKSBjb25zdAogewogICAgIGlmIChvcHRpb25zLm1v
ZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24u
aAppbmRleCAwMzdlOGZkN2M4NTBkOWJlYTU3MWFhOGNlOWUwNDRjNzE3MjE3NGRiLi5kMGI2MmMx
Y2Q4NzM1NDkzOWEzMTYxMjkxNjAxN2FhNTY0Njg3YzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlv
bi5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1
LDcgKzQ2LDcgQEAgc3RydWN0IEV4Y2VwdGlvbkRhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKIAotY2xhc3MgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24geworY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb24gOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1NlcnZlciYs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2VyVXBkYXRl
VmlhQ2FjaGUsIGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKTsKQEAg
LTU3LDkgKzU4LDYgQEAgcHVibGljOgogICAgIFNXU2VydmVyV29ya2VyKiBnZXROZXdlc3RXb3Jr
ZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSBk
YXRhKCkgY29uc3Q7CiAKLSAgICBib29sIGlzVW5pbnN0YWxsaW5nKCkgY29uc3QgeyByZXR1cm4g
bV91bmluc3RhbGxpbmc7IH0KLSAgICB2b2lkIHNldElzVW5pbnN0YWxsaW5nKGJvb2wpOwotCiAg
ICAgdm9pZCBzZXRMYXN0VXBkYXRlVGltZShXYWxsVGltZSk7CiAgICAgV2FsbFRpbWUgbGFzdFVw
ZGF0ZVRpbWUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RVcGRhdGVUaW1lOyB9CiAgICAgYm9vbCBp
c1N0YWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0VXBkYXRlVGltZSAmJiAoV2FsbFRpbWU6Om5v
dygpIC0gbV9sYXN0VXBkYXRlVGltZSkgPiA4NjQwMF9zOyB9CkBAIC05NCwxMSArOTIsMTUgQEAg
cHVibGljOgogICAgIGJvb2wgdHJ5Q2xlYXIoKTsKICAgICB2b2lkIHRyeUFjdGl2YXRlKCk7CiAg
ICAgdm9pZCBkaWRGaW5pc2hBY3RpdmF0aW9uKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAg
ICAKKyAgICBib29sIGlzVW5yZWdpc3RlcmVkKCkgY29uc3Q7CiAKICAgICB2b2lkIGZvckVhY2hD
b25uZWN0aW9uKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYp
PiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRTb2Z0VXBkYXRlKGNvbnN0IEZl
dGNoT3B0aW9ucyYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc29mdFVwZGF0ZSgp
OworICAgIAorICAgIFN0cmluZyBzY29wZVVSTFdpdGhvdXRGcmFnbWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fc2NvcGVVUkw7IH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGFjdGl2YXRlKCk7CkBAIC0x
MTAsNyArMTEyLDYgQEAgcHJpdmF0ZToKICAgICBVUkwgbV9zY29wZVVSTDsKICAgICBVUkwgbV9z
Y3JpcHRVUkw7CiAKLSAgICBib29sIG1fdW5pbnN0YWxsaW5nIHsgZmFsc2UgfTsKICAgICBSZWZQ
dHI8U1dTZXJ2ZXJXb3JrZXI+IG1fcHJlSW5zdGFsbGF0aW9uV29ya2VyOyAvLyBJbXBsZW1lbnRh
dGlvbiBkZXRhaWwsIG5vdCBwYXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uLgogICAgIFJlZlB0cjxT
V1NlcnZlcldvcmtlcj4gbV9pbnN0YWxsaW5nV29ya2VyOwogICAgIFJlZlB0cjxTV1NlcnZlcldv
cmtlcj4gbV93YWl0aW5nV29ya2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCA4MmUyOTI4YzhhZjgz
ZTY4YjA4ZWZiYjhkMzdkNzJjMjNmMTQ5NzIzLi44MjBiMzBmN2E1ZWUyNjhiYTcyNGNlMzg0N2E3
MjEzOTdlYTU3YjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtNTEsNiArNTEsNyBAQCBTV1NlcnZl
cldvcmtlciogU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihTZXJ2
aWNlV29ya2VySWRlbnRpZgogU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVy
JiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYg
c2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIFN0cmluZyYmIHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2Ny
aXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQogICAgIDogbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2Vy
dmVyKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uS2V5KHJlZ2lzdHJhdGlvbi5rZXkoKSkKKyAgICAs
IG1fcmVnaXN0cmF0aW9uKG1ha2VXZWFrUHRyKHJlZ2lzdHJhdGlvbikpCiAgICAgLCBtX2RhdGEg
eyBpZGVudGlmaWVyLCBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJTdGF0ZTo6UmVkdW5kYW50LCB0
eXBlLCByZWdpc3RyYXRpb24uaWRlbnRpZmllcigpIH0KICAgICAsIG1fc2NyaXB0KHNjcmlwdCkK
ICAgICAsIG1fY29udGVudFNlY3VyaXR5UG9saWN5KGNvbnRlbnRTZWN1cml0eVBvbGljeSkKQEAg
LTYzLDcgKzY0LDcgQEAgU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBz
ZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXQKICAgICBhdXRvIHJlc3VsdCA9
IGFsbFdvcmtlcnMoKS5hZGQoaWRlbnRpZmllciwgdGhpcyk7CiAgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAgIEFTU0VSVChtX3NlcnZlci0+Z2V0UmVn
aXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KSk7CisgICAgQVNTRVJUKG1fc2VydmVyLT5nZXRS
ZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpID09ICZyZWdpc3RyYXRpb24pOwogfQogCiBT
V1NlcnZlcldvcmtlcjo6flNXU2VydmVyV29ya2VyKCkKQEAgLTc2LDEwICs3Nyw5IEBAIFNXU2Vy
dmVyV29ya2VyOjp+U1dTZXJ2ZXJXb3JrZXIoKQogCiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
U1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHREYXRhKCkgY29uc3QKIHsKLSAgICBhdXRvKiByZWdpc3Ry
YXRpb24gPSBtX3NlcnZlci0+Z2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKLSAg
ICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKKyAgICBBU1NFUlQobV9yZWdpc3RyYXRpb24pOwogCi0g
ICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCByZWdpc3RyYXRpb24tPmRhdGEoKSwgbV9kYXRhLmlk
ZW50aWZpZXIsIG1fc2NyaXB0LCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9yZWZlcnJlclBv
bGljeSwgbV9kYXRhLnNjcmlwdFVSTCwgbV9kYXRhLnR5cGUsIG1fc2VydmVyLT5zZXNzaW9uSUQo
KSwgZmFsc2UsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBXVEY6Om51bGxv
cHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwg
bV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1fcmVmZXJyZXJQb2xpY3ksIG1fZGF0YS5zY3JpcHRV
UkwsIG1fZGF0YS50eXBlLCBtX3NlcnZlci0+c2Vzc2lvbklEKCksIGZhbHNlLCBtX3NjcmlwdFJl
c291cmNlTWFwIH07CiB9CiAKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnRlcm1pbmF0ZSgpCkBAIC0x
NzcsMTAgKzE3Nyw5IEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNraXBXYWl0aW5nKCkKIHsKICAg
ICBtX2lzU2tpcFdhaXRpbmdGbGFnU2V0ID0gdHJ1ZTsKIAotICAgIGF1dG8qIHJlZ2lzdHJhdGlv
biA9IG1fc2VydmVyLT5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOwotICAgIEFT
U0VSVChyZWdpc3RyYXRpb24gfHwgaXNUZXJtaW5hdGluZygpKTsKLSAgICBpZiAocmVnaXN0cmF0
aW9uKQotICAgICAgICByZWdpc3RyYXRpb24tPnRyeUFjdGl2YXRlKCk7CisgICAgQVNTRVJUKG1f
cmVnaXN0cmF0aW9uIHx8IGlzVGVybWluYXRpbmcoKSk7CisgICAgaWYgKG1fcmVnaXN0cmF0aW9u
KQorICAgICAgICBtX3JlZ2lzdHJhdGlvbi0+dHJ5QWN0aXZhdGUoKTsKIH0KIAogdm9pZCBTV1Nl
cnZlcldvcmtlcjo6c2V0SGFzUGVuZGluZ0V2ZW50cyhib29sIGhhc1BlbmRpbmdFdmVudHMpCkBA
IC0xOTMsMTMgKzE5MiwxMiBAQCB2b2lkIFNXU2VydmVyV29ya2VyOjpzZXRIYXNQZW5kaW5nRXZl
bnRzKGJvb2wgaGFzUGVuZGluZ0V2ZW50cykKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gRG8g
dHJ5Q2xlYXIvdHJ5QWN0aXZhdGUsIGFzIHBlciBodHRwczovL3czYy5naXRodWIuaW8vU2Vydmlj
ZVdvcmtlci8jd2FpdC11bnRpbC1tZXRob2QuCi0gICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9z
ZXJ2ZXItPmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7Ci0gICAgaWYgKCFyZWdp
c3RyYXRpb24pCisgICAgaWYgKCFtX3JlZ2lzdHJhdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKHJlZ2lzdHJhdGlvbi0+aXNVbmluc3RhbGxpbmcoKSAmJiByZWdpc3RyYXRpb24tPnRy
eUNsZWFyKCkpCisgICAgaWYgKG1fcmVnaXN0cmF0aW9uLT5pc1VucmVnaXN0ZXJlZCgpICYmIG1f
cmVnaXN0cmF0aW9uLT50cnlDbGVhcigpKQogICAgICAgICByZXR1cm47Ci0gICAgcmVnaXN0cmF0
aW9uLT50cnlBY3RpdmF0ZSgpOworICAgIG1fcmVnaXN0cmF0aW9uLT50cnlBY3RpdmF0ZSgpOwog
fQogCiB2b2lkIFNXU2VydmVyV29ya2VyOjp3aGVuQWN0aXZhdGVkKFdURjo6RnVuY3Rpb248dm9p
ZChib29sKT4mJiBoYW5kbGVyKQpAQCAtMjE4LDEwICsyMTYsOSBAQCB2b2lkIFNXU2VydmVyV29y
a2VyOjpzZXRTdGF0ZShTZXJ2aWNlV29ya2VyU3RhdGUgc3RhdGUpCiAKICAgICBtX2RhdGEuc3Rh
dGUgPSBzdGF0ZTsKIAotICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLT5nZXRSZWdp
c3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOwotICAgIEFTU0VSVChyZWdpc3RyYXRpb24gfHwg
c3RhdGUgPT0gU2VydmljZVdvcmtlclN0YXRlOjpSZWR1bmRhbnQpOwotICAgIGlmIChyZWdpc3Ry
YXRpb24pIHsKLSAgICAgICAgcmVnaXN0cmF0aW9uLT5mb3JFYWNoQ29ubmVjdGlvbihbJl0oYXV0
byYgY29ubmVjdGlvbikgeworICAgIEFTU0VSVChtX3JlZ2lzdHJhdGlvbiB8fCBzdGF0ZSA9PSBT
ZXJ2aWNlV29ya2VyU3RhdGU6OlJlZHVuZGFudCk7CisgICAgaWYgKG1fcmVnaXN0cmF0aW9uKSB7
CisgICAgICAgIG1fcmVnaXN0cmF0aW9uLT5mb3JFYWNoQ29ubmVjdGlvbihbJl0oYXV0byYgY29u
bmVjdGlvbikgewogICAgICAgICAgICAgY29ubmVjdGlvbi51cGRhdGVXb3JrZXJTdGF0ZUluQ2xp
ZW50KHRoaXMtPmlkZW50aWZpZXIoKSwgc3RhdGUpOwogICAgICAgICB9KTsKICAgICB9CkBAIC0y
MzksMTMgKzIzNiwxOCBAQCB2b2lkIFNXU2VydmVyV29ya2VyOjpjYWxsV2hlbkFjdGl2YXRlZEhh
bmRsZXIoYm9vbCBzdWNjZXNzKQogCiB2b2lkIFNXU2VydmVyV29ya2VyOjpzZXRTdGF0ZShTdGF0
ZSBzdGF0ZSkKIHsKLSAgICBBU1NFUlQoc3RhdGUgIT0gU3RhdGU6OlJ1bm5pbmcgfHwgbV9zZXJ2
ZXItPmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSkpOworICAgIEFTU0VSVChzdGF0
ZSAhPSBTdGF0ZTo6UnVubmluZyB8fCBtX3JlZ2lzdHJhdGlvbik7CiAgICAgbV9zdGF0ZSA9IHN0
YXRlOwogCiAgICAgaWYgKHN0YXRlID09IFN0YXRlOjpSdW5uaW5nKQogICAgICAgICBtX3Nob3Vs
ZFNraXBIYW5kbGVGZXRjaCA9IGZhbHNlOwogfQogCitTV1NlcnZlclJlZ2lzdHJhdGlvbiogU1dT
ZXJ2ZXJXb3JrZXI6OnJlZ2lzdHJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVnaXN0
cmF0aW9uLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggYjZhMGU2MjFlYzkxZmY3NWE3
Y2NlOTQwYzE2ZThmNTllYTIyMTQ0Ny4uNjc2N2ZjNmYwYTZiMTZjMzQzMjljYmFiNTNjYjAyNjRi
MjFkMjQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMTEzLDYgKzExMyw4IEBAIHB1YmxpYzoKICAgICBT
dHJpbmcgdXNlckFnZW50KCkgY29uc3Q7CiAKICAgICBib29sIHNob3VsZFNraXBGZXRjaEV2ZW50
KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTa2lwSGFuZGxlRmV0Y2g7IH0KKyAgICAKKyAgICBT
V1NlcnZlclJlZ2lzdHJhdGlvbiogcmVnaXN0cmF0aW9uKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKQEAgLTEyMSw2ICsxMjMsNyBAQCBwcml2YXRlOgogCiAg
ICAgV2Vha1B0cjxTV1NlcnZlcj4gbV9zZXJ2ZXI7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSBtX3JlZ2lzdHJhdGlvbktleTsKKyAgICBXZWFrUHRyPFNXU2VydmVyUmVnaXN0cmF0
aW9uPiBtX3JlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBtX2RhdGE7CiAgICAg
U3RyaW5nIG1fc2NyaXB0OwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmlu
ZGV4IDc3NTM2ODA5ODgyNWM4ZjYzMThkODJkNjUyZTdiNGMzMmQ0MjY1ODYuLjVlYmE0ZmYyMmZi
NzM1MzE2NGQ3MWFiYmZjZGI3ZGI5ZWJiZDg5NzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA5LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgW1NlcnZpY2UgV29ya2Vyc10gRHJvcCBzdXBwb3J0IGZvciBy
ZWdpc3RyYXRpb24gcmVzdXJyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDE1ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZS1zeW5jIGEgY291cGxlIG9mIG91dGRhdGVkIFdQVCB0ZXN0cyBm
cm9tIHVwc3RyZWFtIDgyMGYwZjg2MDQ3ZTZlLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLXRoZW4tcmVnaXN0
ZXItbmV3LXNjcmlwdC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLXRoZW4tcmVn
aXN0ZXItbmV3LXNjcmlwdC5odHRwcy5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVy
Lmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci5odHRwcy5o
dG1sOgorCiAyMDE5LTA5LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHBvc3RNZXNzYWdlIGJ1ZmZlcmluZyBiZXR3ZWVuIHRoZSBz
ZXJ2aWNlIHdvcmtlciBhbmQgd2luZG93CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy11bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXItYWdhaW4t
cmV1c2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvYmFzaWMtdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLWFnYWluLXJldXNlLWV4cGVjdGVkLnR4
dAppbmRleCA1ODY3NmUzNjBiZjgyNzY5YWU5NTM3ODAzZTVlOTQwMjQ5MDEyYjE1Li40Yjg1OTNm
NTJkOWE5Njg2MTE0ZDU2MjY2NzE1NjU5M2UwMTkxMDRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy11bnJlZ2lzdGVyLXRoZW4tcmVnaXN0
ZXItYWdhaW4tcmV1c2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXVucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci1hZ2Fpbi1yZXVz
ZS1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiBQQVNTOiByZWdpc3RyYXRpb24xIHNob3Vs
ZCBub3QgaGF2ZSBhbiBpbnN0YWxsaW5nIHdvcmtlcgogUEFTUzogcmVnaXN0cmF0aW9uMSBzaG91
bGQgbm90IGhhdmUgYSB3YWl0aW5nIHdvcmtlcgogUEFTUzogcmVnaXN0cmF0aW9uMSBzaG91bGQg
aGF2ZSBhbiBhY3RpdmUgd29ya2VyCi1QQVNTOiBSZWdpc3RyYXRpb24gd2FzIHJldXNlZAorUEFT
UzogUmVnaXN0cmF0aW9uIHdhcyBub3QgcmV1c2VkCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2ljLXVucmVnaXN0ZXItdGhlbi1yZWdpc3Rl
ci1hZ2Fpbi1yZXVzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvYmFzaWMtdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLWFnYWluLXJldXNlLmh0bWwKaW5kZXgg
YWU3YjIxZDY4NTg3NTlhMWUwNmI0ZTBkMWVjMDQyZGZhNDNjZTk0MC4uNzZjZGIzMjU1NmIxOTBm
MDI5NTkyNzQ4NWZjYzM4NmQxZWJmNTlmZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLWFnYWlu
LXJldXNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
YmFzaWMtdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLWFnYWluLXJldXNlLmh0bWwKQEAgLTQwLDkg
KzQwLDkgQEAgYXN5bmMgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgIGxldCByZWdpc3RyYXRp
b24yID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9i
YXNpYy11bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXItYWdhaW4tcmV1c2Utd29ya2VyLmpzIiwgeyB9
KTsKICAgICAgICAgIGlmIChyZWdpc3RyYXRpb24xID09PSByZWdpc3RyYXRpb24yKQotICAgICAg
ICAgICAgIGxvZygiUEFTUzogUmVnaXN0cmF0aW9uIHdhcyByZXVzZWQiKTsKKyAgICAgICAgICAg
ICBsb2coIkZBSUw6IFJlZ2lzdHJhdGlvbiB3YXMgcmV1c2VkIik7CiAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgbG9nKCJGQUlMOiBSZWdpc3RyYXRpb24gd2FzIG5vdCByZXVzZWQiKTsKKyAg
ICAgICAgICAgICBsb2coIlBBU1M6IFJlZ2lzdHJhdGlvbiB3YXMgbm90IHJldXNlZCIpOwogICAg
IH0gY2F0Y2ggKGUpIHsKICAgICAgICAgbG9nKCJGQUlMOiBHb3QgZXhjZXB0aW9uICIgKyBlKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLXRoZW4tcmVn
aXN0ZXItbmV3LXNjcmlwdC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91
bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXItbmV3LXNjcmlwdC5odHRwcy1leHBlY3RlZC50eHQKaW5k
ZXggNDRiYzVjNzM1NDk5M2NiMGI5ZmMwY2JkNWEwMzQ5YWIwMDk2NDI1ZS4uMTk4OGZlZTczOGZk
MWQyN2QxZjdjMDVkN2FkZGRlNjdkNDc3ZTZiYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLW5ldy1zY3JpcHQuaHR0cHMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci1uZXctc2Ny
aXB0Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAogUEFTUyBSZWdpc3Rlcmlu
ZyBhIG5ldyBzY3JpcHQgVVJMIHdoaWxlIGFuIHVucmVnaXN0ZXJlZCByZWdpc3RyYXRpb24gaXMg
aW4gdXNlIAotRkFJTCBSZWdpc3RlcmluZyBhIG5ldyBzY3JpcHQgVVJMIHRoYXQgNDA0cyBkb2Vz
IG5vdCByZXN1cnJlY3QgdW5yZWdpc3RlcmVkIHJlZ2lzdHJhdGlvbiBhc3NlcnRfZXF1YWxzOiBE
b2N1bWVudCBzaG91bGQgbm90IGJlIGNvbnRyb2xsZWQgZXhwZWN0ZWQgbnVsbCBidXQgZ290IG9i
amVjdCAiW29iamVjdCBTZXJ2aWNlV29ya2VyXSIKLUZBSUwgUmVnaXN0ZXJpbmcgYSBuZXcgc2Ny
aXB0IFVSTCB0aGF0IGZhaWxzIHRvIGluc3RhbGwgZG9lcyBub3QgcmVzdXJyZWN0IHVucmVnaXN0
ZXJlZCByZWdpc3RyYXRpb24gYXNzZXJ0X2VxdWFsczogcmVnaXN0cmF0aW9uLmFjdGl2ZSBleHBl
Y3RlZCBudWxsIGJ1dCBnb3Qgb2JqZWN0ICJbb2JqZWN0IFNlcnZpY2VXb3JrZXJdIgorUEFTUyBS
ZWdpc3RlcmluZyBhIG5ldyBzY3JpcHQgVVJMIHRoYXQgNDA0cyBkb2VzIG5vdCByZXN1cnJlY3Qg
dW5yZWdpc3RlcmVkIHJlZ2lzdHJhdGlvbiAKK1BBU1MgUmVnaXN0ZXJpbmcgYSBuZXcgc2NyaXB0
IFVSTCB0aGF0IGZhaWxzIHRvIGluc3RhbGwgZG9lcyBub3QgcmVzdXJyZWN0IHVucmVnaXN0ZXJl
ZCByZWdpc3RyYXRpb24gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0
ZXItdGhlbi1yZWdpc3Rlci1uZXctc2NyaXB0Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci91bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXItbmV3LXNjcmlwdC5odHRwcy5odG1sCmluZGV4IGEw
N2RhN2QzOThmYTY4Njk1MmU5YjdlMDBkZjYyYTA3ZDA3ZmRlN2IuLjQ0NGE1YzM2NTc3NmJlYWYz
ZjE4NjIzNDEzNDRlOTViNzUzYWZjYWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Vu
cmVnaXN0ZXItdGhlbi1yZWdpc3Rlci1uZXctc2NyaXB0Lmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLW5ldy1zY3JpcHQuaHR0cHMuaHRt
bApAQCAtMjIsOCArMjIsOCBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24odCkgewogICB0
LmFkZF9jbGVhbnVwKCgpID0+IG5ld1JlZ2lzdHJhdGlvbi51bnJlZ2lzdGVyKCkpOwogCiAgIGFz
c2VydF9lcXVhbHMoCi0gICAgcmVnaXN0cmF0aW9uLmluc3RhbGxpbmcuc2NyaXB0VVJMLAotICAg
IG5vcm1hbGl6ZVVSTChuZXdXb3JrZXJVUkwpLAorICAgIHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5n
LAorICAgIG51bGwsCiAgICAgJ2JlZm9yZSBhY3RpdmF0ZWQgcmVnaXN0cmF0aW9uLmluc3RhbGxp
bmcnCiAgICk7CiAgIGFzc2VydF9lcXVhbHMoCkBAIC00NywxMyArNDcsMTMgQEAgcHJvbWlzZV90
ZXN0KGFzeW5jIGZ1bmN0aW9uKHQpIHsKICAgICAnYmVmb3JlIGFjdGl2YXRlZCBuZXdSZWdpc3Ry
YXRpb24ud2FpdGluZycKICAgKTsKICAgYXNzZXJ0X2VxdWFscygKLSAgICBuZXdSZWdpc3RyYXRp
b24uYWN0aXZlLnNjcmlwdFVSTCwKLSAgICBub3JtYWxpemVVUkwod29ya2VyX3VybCksCisgICAg
bmV3UmVnaXN0cmF0aW9uLmFjdGl2ZSwKKyAgICBudWxsLAogICAgICdiZWZvcmUgYWN0aXZhdGVk
IG5ld1JlZ2lzdHJhdGlvbi5hY3RpdmUnCiAgICk7CiAgIGlmcmFtZS5yZW1vdmUoKTsKIAotICBh
d2FpdCB3YWl0X2Zvcl9zdGF0ZSh0LCByZWdpc3RyYXRpb24uaW5zdGFsbGluZywgJ2FjdGl2YXRl
ZCcpOworICBhd2FpdCB3YWl0X2Zvcl9zdGF0ZSh0LCBuZXdSZWdpc3RyYXRpb24uaW5zdGFsbGlu
ZywgJ2FjdGl2YXRlZCcpOwogCiAgIGFzc2VydF9lcXVhbHMoCiAgICAgbmV3UmVnaXN0cmF0aW9u
Lmluc3RhbGxpbmcsCkBAIC0xMjksNyArMTI5LDggQEAgcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0
aW9uKHQpIHsKIAogICBhc3NlcnRfZXF1YWxzKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCBudWxs
LCAncmVnaXN0cmF0aW9uLmluc3RhbGxpbmcnKTsKICAgYXNzZXJ0X2VxdWFscyhyZWdpc3RyYXRp
b24ud2FpdGluZywgbnVsbCwgJ3JlZ2lzdHJhdGlvbi53YWl0aW5nJyk7Ci0gIGFzc2VydF9lcXVh
bHMocmVnaXN0cmF0aW9uLmFjdGl2ZSwgbnVsbCwgJ3JlZ2lzdHJhdGlvbi5hY3RpdmUnKTsKKyAg
YXNzZXJ0X2VxdWFscyhyZWdpc3RyYXRpb24uYWN0aXZlLnNjcmlwdFVSTCwgbm9ybWFsaXplVVJM
KHdvcmtlcl91cmwpLAorICAgICAgICAgICAgICAgICdyZWdpc3RyYXRpb24uYWN0aXZlJyk7CiAg
IGFzc2VydF9ub3RfZXF1YWxzKHJlZ2lzdHJhdGlvbiwgbmV3UmVnaXN0cmF0aW9uLCAnTmV3IHJl
Z2lzdHJhdGlvbiBpcyBkaWZmZXJlbnQnKTsKIH0sICdSZWdpc3RlcmluZyBhIG5ldyBzY3JpcHQg
VVJMIHRoYXQgZmFpbHMgdG8gaW5zdGFsbCBkb2VzIG5vdCByZXN1cnJlY3QgdW5yZWdpc3RlcmVk
IHJlZ2lzdHJhdGlvbicpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci91bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRl
eCBlMzUwY2IwMzhhMGYwZWM4NDcyN2MzMTNiNGZmZGIyNDM2MWExOWZjLi41ZmE5OWMzMjkyMjUz
OTk1YzkwNWU2ZTdjNDAzMmZjNWJlNjBmMGUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci91bnJlZ2lzdGVyLXRoZW4tcmVnaXN0ZXIuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci5odHRwcy1leHBlY3RlZC50eHQK
QEAgLTEsNiArMSw2IEBACiAKIFBBU1MgVW5yZWdpc3RlciB0aGVuIHJlZ2lzdGVyIHJlc29sdmVz
IHRvIGEgbmV3IHZhbHVlIAotRkFJTCBVbnJlZ2lzdGVyIHRoZW4gcmVnaXN0ZXIgZG9lcyBub3Qg
cmVzb2x2ZSB0byB0aGUgb3JpZ2luYWwgdmFsdWUgZXZlbiBpZiB0aGUgcmVnaXN0cmF0aW9uIGlz
IGluIHVzZS4gYXNzZXJ0X25vdF9lcXVhbHM6IFVucmVnaXN0ZXIgYW5kIHJlZ2lzdGVyIHNob3Vs
ZCBhbHdheXMgY3JlYXRlIGEgbmV3IHJlZ2lzdHJhdGlvbiBnb3QgZGlzYWxsb3dlZCB2YWx1ZSBv
YmplY3QgIltvYmplY3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbl0iCitQQVNTIFVucmVnaXN0
ZXIgdGhlbiByZWdpc3RlciBkb2VzIG5vdCByZXNvbHZlIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZSBl
dmVuIGlmIHRoZSByZWdpc3RyYXRpb24gaXMgaW4gdXNlLiAKIFBBU1MgVW5yZWdpc3RlciB0aGVu
IHJlZ2lzdGVyIGRvZXMgbm90IGFmZmVjdCBleGlzdGluZyBjb250cm9sbGVlIAotRkFJTCBVbnJl
Z2lzdGVyIHRoZW4gcmVnaXN0ZXIgZG9lcyBub3QgcmVzdXJyZWN0IHRoZSByZWdpc3RyYXRpb24g
YXNzZXJ0X2VxdWFsczogUmVnaXN0cmF0aW9uIGlzIG5ldyBleHBlY3RlZCBudWxsIGJ1dCBnb3Qg
b2JqZWN0ICJbb2JqZWN0IFNlcnZpY2VXb3JrZXJdIgorUEFTUyBVbnJlZ2lzdGVyIHRoZW4gcmVn
aXN0ZXIgZG9lcyBub3QgcmVzdXJyZWN0IHRoZSByZWdpc3RyYXRpb24gCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItdGhlbi1yZWdpc3Rlci5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLmh0dHBzLmh0bWwKaW5k
ZXggNWZkMmNmOTcwOTUwYmY5NDk2ODg2N2M3NWM0MWUwYWE5NzIwNWY3Ni4uYjYxNjA4Yzg0MTlm
ZDRmMzYyZGVlNTMzMDQwNGUyNzQzYTJmMDVmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvdW5yZWdpc3Rlci10aGVuLXJlZ2lzdGVyLmh0dHBzLmh0bWwKQEAgLTY2LDcgKzY2LDcg
QEAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKICAgICAgIC50aGVuKGZ1bmN0aW9uKCkgewog
ICAgICAgICAgIHJldHVybiBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcih3b3JrZXJf
dXJsLCB7IHNjb3BlOiBzY29wZSB9KTsKICAgICAgICAgfSkKLSAgICAgIC50aGVuKGZ1bmN0aW9u
KHJlZ2lzdHJhdGlvbikgeworICAgICAgLnRoZW4oZnVuY3Rpb24obmV3UmVnaXN0cmF0aW9uKSB7
CiAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWdpc3RyYXRpb24uaW5zdGFsbGluZywgbnVsbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICdpbnN0YWxsaW5nIHZlcnNpb24gaXMgbnVsbCcpOwog
ICAgICAgICAgIGFzc2VydF9lcXVhbHMocmVnaXN0cmF0aW9uLndhaXRpbmcsIG51bGwsICd3YWl0
aW5nIHZlcnNpb24gaXMgbnVsbCcpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>